From e52a80c9c3fb09d3880e640fdc79324fe0388283 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Sat, 12 Mar 2011 11:23:42 +0100 Subject: [PATCH 001/190] rename httpbooks.sqlite to bibles_resources.sqlite and change database scheme moved the content of biblegateway.csv, bibleserver.csv and crosswalkbooks.csv into bibles_resources.sqlite adapt loadWebBibles() process according to the changes above remove class HTTPBible from http.py and add the functions to a new class BiblesResourcesDB in db.py which now handels the reading of bibles_resources.sqlite --- .../plugins/bibles/forms/bibleimportform.py | 44 ++-- openlp/plugins/bibles/lib/db.py | 192 ++++++++++++++++++ openlp/plugins/bibles/lib/http.py | 146 +------------ .../plugins/bibles/resources/biblegateway.csv | 81 -------- .../bibles/resources/bibles_resources.sqlite | Bin 0 -> 63488 bytes .../plugins/bibles/resources/bibleserver.csv | 39 ---- .../bibles/resources/crosswalkbooks.csv | 27 --- .../plugins/bibles/resources/httpbooks.sqlite | Bin 45056 -> 0 bytes 8 files changed, 210 insertions(+), 319 deletions(-) delete mode 100644 openlp/plugins/bibles/resources/biblegateway.csv create mode 100644 openlp/plugins/bibles/resources/bibles_resources.sqlite delete mode 100644 openlp/plugins/bibles/resources/bibleserver.csv delete mode 100644 openlp/plugins/bibles/resources/crosswalkbooks.csv delete mode 100644 openlp/plugins/bibles/resources/httpbooks.sqlite diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index 7967b2ec4..9fee25654 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -39,6 +39,7 @@ 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, string_is_unicode from openlp.plugins.bibles.lib.manager import BibleFormat +from openlp.plugins.bibles.lib.db import BiblesResourcesDB log = logging.getLogger(__name__) @@ -634,46 +635,27 @@ class BibleImportForm(OpenLPWizard): """ Load the lists of Crosswalk, BibleGateway and Bibleserver bibles. """ - filepath = AppLocation.get_directory(AppLocation.PluginsDir) - filepath = os.path.join(filepath, u'bibles', u'resources') # Load Crosswalk Bibles. - self.loadBibleResourceFile( - os.path.join(filepath, u'crosswalkbooks.csv'), - WebDownload.Crosswalk) + self.loadBibleResource(WebDownload.Crosswalk) # Load BibleGateway Bibles. - self.loadBibleResourceFile(os.path.join(filepath, u'biblegateway.csv'), - WebDownload.BibleGateway) + self.loadBibleResource(WebDownload.BibleGateway) # Load and Bibleserver Bibles. - self.loadBibleResourceFile(os.path.join(filepath, u'bibleserver.csv'), - WebDownload.Bibleserver) + self.loadBibleResource(WebDownload.Bibleserver) - def loadBibleResourceFile(self, file_path_name, download_type): + def loadBibleResource(self, download_type): """ - Loads a web bible resource file. - - ``file_path_name`` - The file to load including the file's path. + Loads a web bible from bible_resources.sqlite. ``download_type`` - The WebDownload type this file is for. + The WebDownload type e.g. bibleserver. """ self.web_bible_list[download_type] = {} - books_file = None - try: - books_file = open(file_path_name, 'rb') - dialect = csv.Sniffer().sniff(books_file.read(1024)) - books_file.seek(0) - books_reader = csv.reader(books_file, dialect) - for line in books_reader: - ver = string_is_unicode(line[0]) - name = string_is_unicode(line[1]) - self.web_bible_list[download_type][ver] = name.strip() - except IOError: - log.exception(u'%s resources missing' % - WebDownload.Names[download_type]) - finally: - if books_file: - books_file.close() + bibles = BiblesResourcesDB.get_webbibles( + WebDownload.Names[download_type]) + for bible in bibles: + ver = bible[u'name'] + name = bible[u'abbreviation'] + self.web_bible_list[download_type][ver] = name.strip() def preWizard(self): """ diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 5cf000ee1..a1c8fb9a1 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -26,7 +26,9 @@ import logging import chardet +import os import re +import sqlite3 from PyQt4 import QtCore from sqlalchemy import Column, ForeignKey, or_, Table, types @@ -36,6 +38,7 @@ from sqlalchemy.orm.exc import UnmappedClassError from openlp.core.lib import Receiver, translate from openlp.core.lib.db import BaseModel, init_db, Manager from openlp.core.lib.ui import critical_error_message_box +from openlp.core.utils import AppLocation log = logging.getLogger(__name__) @@ -444,3 +447,192 @@ class BibleDB(QtCore.QObject, Manager): log.debug(u'...............................Verses ') verses = self.session.query(Verse).all() log.debug(verses) + + +class BiblesResourcesDB(QtCore.QObject, Manager): + """ + This class represents the database-bound Bible Resources. It provide + some resources which are used in the Bibles plugin. + A wrapper class around a small SQLite database which contains the download + resources, a biblelist from the different download resources, the books, + chapter counts and verse counts for the web download Bibles, a language + reference, the testament reference and some basic spelling variants. This + class contains a singleton "cursor" so that only one connection to the + SQLite database is ever used. + """ + cursor = None + + @staticmethod + def get_cursor(): + """ + Return the cursor object. Instantiate one if it doesn't exist yet. + """ + if BiblesResourcesDB.cursor is None: + filepath = os.path.join( + AppLocation.get_directory(AppLocation.PluginsDir), u'bibles', + u'resources', u'bibles_resources.sqlite') + conn = sqlite3.connect(filepath) + BiblesResourcesDB.cursor = conn.cursor() + return BiblesResourcesDB.cursor + + @staticmethod + def run_sql(query, parameters=()): + """ + Run an SQL query on the database, returning the results. + + ``query`` + The actual SQL query to run. + + ``parameters`` + Any variable parameters to add to the query. + """ + cursor = BiblesResourcesDB.get_cursor() + cursor.execute(query, parameters) + return cursor.fetchall() + + @staticmethod + def get_books(): + """ + Return a list of all the books of the Bible. + """ + books = BiblesResourcesDB.run_sql(u'SELECT id, testament_id, name, ' + u'abbreviation, chapters FROM book_reference ORDER BY id') + book_list = [] + for book in books: + book_list.append({ + u'id': book[0], + u'testament_id': book[1], + u'name': unicode(book[2]), + u'abbreviation': unicode(book[3]), + u'chapters': book[4] + }) + return book_list + + @staticmethod + def get_book(name): + """ + Return a book by name or abbreviation. + + ``name`` + The name or abbreviation of the book. + """ + if not isinstance(name, unicode): + name = unicode(name) + name = name.title() + books = BiblesResourcesDB.run_sql(u'SELECT id, testament_id, name, ' + u'abbreviation, chapters FROM book_reference WHERE name = ? OR ' + u'abbreviation = ?', (name, name)) + if books: + return { + u'id': books[0][0], + u'testament_id': books[0][1], + u'name': unicode(books[0][2]), + u'abbreviation': unicode(books[0][3]), + u'chapters': books[0][4] + } + else: + return None + + @staticmethod + def get_chapter(name, chapter): + """ + Return the chapter details for a specific chapter of a book. + + ``name`` + The name or abbreviation of a book. + + ``chapter`` + The chapter number. + """ + if not isinstance(name, int): + chapter = int(chapter) + book = BiblesResourcesDB.get_book(name) + chapters = BiblesResourcesDB.run_sql(u'SELECT id, book_reference_id, ' + u'chapter, verse_count FROM chapters WHERE book_reference_id = ?', + (book[u'id'],)) + if chapters: + return { + u'id': chapters[chapter-1][0], + u'book_reference_id': chapters[chapter-1][1], + u'chapter': chapters[chapter-1][2], + u'verse_count': chapters[chapter-1][3] + } + else: + return None + + @staticmethod + def get_chapter_count(book): + """ + Return the number of chapters in a book. + + ``book`` + The name or abbreviation of the book. + """ + details = BiblesResourcesDB.get_book(book) + if details: + return details[u'chapters'] + return 0 + + @staticmethod + def get_verse_count(book, chapter): + """ + Return the number of verses in a chapter. + + ``book`` + The name or abbreviation of the book. + + ``chapter`` + The number of the chapter. + """ + details = BiblesResourcesDB.get_chapter(book, chapter) + if details: + return details[u'verse_count'] + return 0 + + @staticmethod + def get_download_source(source): + """ + Return a download_source by source. + + ``name`` + The name or abbreviation of the book. + """ + if not isinstance(source, unicode): + source = unicode(source) + source = source.title() + #source = source.lower() + log.debug(u'Test: %s' % source) + dl_source = BiblesResourcesDB.run_sql(u'SELECT id, source FROM ' + u'download_source WHERE source = ?', (source.lower(),)) + if dl_source: + return { + u'id': dl_source[0][0], + u'source': dl_source[0][1] + } + else: + return None + + @staticmethod + def get_webbibles(source): + """ + Return the chapter details for a specific chapter of a book. + + ``name`` + The name of the webbible. + """ + if not isinstance(source, unicode): + source = unicode(source) + source = BiblesResourcesDB.get_download_source(source) + bibles = BiblesResourcesDB.run_sql(u'SELECT id, name, abbreviation, ' + u'language_id, download_source_id FROM webbibles WHERE ' + u'download_source_id = ?', (source[u'id'],)) + bibles_temp = [] + for bible in bibles: + bibles_temp.append({ + u'id': bible[0], + u'name': bible[1], + u'abbreviation': bible[2], + u'language_id': bible[3], + u'download_source_id': bible[4] + }) + return bibles_temp diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index e2dde59fd..d2202909c 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -41,146 +41,10 @@ from openlp.core.lib import Receiver, translate from openlp.core.lib.ui import critical_error_message_box from openlp.core.utils import AppLocation, get_web_page from openlp.plugins.bibles.lib import SearchResults -from openlp.plugins.bibles.lib.db import BibleDB, Book +from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB, Book log = logging.getLogger(__name__) -class HTTPBooks(object): - """ - A wrapper class around a small SQLite database which contains the books, - chapter counts and verse counts for the web download Bibles. This class - contains a singleton "cursor" so that only one connection to the SQLite - database is ever used. - """ - cursor = None - - @staticmethod - def get_cursor(): - """ - Return the cursor object. Instantiate one if it doesn't exist yet. - """ - if HTTPBooks.cursor is None: - filepath = os.path.join( - AppLocation.get_directory(AppLocation.PluginsDir), u'bibles', - u'resources', u'httpbooks.sqlite') - conn = sqlite3.connect(filepath) - HTTPBooks.cursor = conn.cursor() - return HTTPBooks.cursor - - @staticmethod - def run_sql(query, parameters=()): - """ - Run an SQL query on the database, returning the results. - - ``query`` - The actual SQL query to run. - - ``parameters`` - Any variable parameters to add to the query. - """ - cursor = HTTPBooks.get_cursor() - cursor.execute(query, parameters) - return cursor.fetchall() - - @staticmethod - def get_books(): - """ - Return a list of all the books of the Bible. - """ - books = HTTPBooks.run_sql(u'SELECT id, testament_id, name, ' - u'abbreviation, chapters FROM books ORDER BY id') - book_list = [] - for book in books: - book_list.append({ - u'id': book[0], - u'testament_id': book[1], - u'name': unicode(book[2]), - u'abbreviation': unicode(book[3]), - u'chapters': book[4] - }) - return book_list - - @staticmethod - def get_book(name): - """ - Return a book by name or abbreviation. - - ``name`` - The name or abbreviation of the book. - """ - if not isinstance(name, unicode): - name = unicode(name) - name = name.title() - books = HTTPBooks.run_sql(u'SELECT id, testament_id, name, ' - u'abbreviation, chapters FROM books WHERE name = ? OR ' - u'abbreviation = ?', (name, name)) - if books: - return { - u'id': books[0][0], - u'testament_id': books[0][1], - u'name': unicode(books[0][2]), - u'abbreviation': unicode(books[0][3]), - u'chapters': books[0][4] - } - else: - return None - - @staticmethod - def get_chapter(name, chapter): - """ - Return the chapter details for a specific chapter of a book. - - ``name`` - The name or abbreviation of a book. - - ``chapter`` - The chapter number. - """ - if not isinstance(name, int): - chapter = int(chapter) - book = HTTPBooks.get_book(name) - chapters = HTTPBooks.run_sql(u'SELECT id, book_id, chapter, ' - u'verses FROM chapters WHERE book_id = ?', (book[u'id'],)) - if chapters: - return { - u'id': chapters[chapter-1][0], - u'book_id': chapters[chapter-1][1], - u'chapter': chapters[chapter-1][2], - u'verses': chapters[chapter-1][3] - } - else: - return None - - @staticmethod - def get_chapter_count(book): - """ - Return the number of chapters in a book. - - ``book`` - The name or abbreviation of the book. - """ - details = HTTPBooks.get_book(book) - if details: - return details[u'chapters'] - return 0 - - @staticmethod - def get_verse_count(book, chapter): - """ - Return the number of verses in a chapter. - - ``book`` - The name or abbreviation of the book. - - ``chapter`` - The number of the chapter. - """ - details = HTTPBooks.get_chapter(book, chapter) - if details: - return details[u'verses'] - return 0 - - class BGExtract(object): """ Extract verses from BibleGateway @@ -447,7 +311,7 @@ class HTTPBible(BibleDB): book = reference[0] db_book = self.get_book(book) if not db_book: - book_details = HTTPBooks.get_book(book) + book_details = BiblesResourcesDB.get_book(book) if not book_details: critical_error_message_box( translate('BiblesPlugin', 'No Book Found'), @@ -497,13 +361,13 @@ class HTTPBible(BibleDB): Return the list of books. """ return [Book.populate(name=book['name']) - for book in HTTPBooks.get_books()] + for book in BiblesResourcesDB.get_books()] def get_chapter_count(self, book): """ Return the number of chapters in a particular book. """ - return HTTPBooks.get_chapter_count(book) + return BiblesResourcesDB.get_chapter_count(book) def get_verse_count(self, book, chapter): """ @@ -515,7 +379,7 @@ class HTTPBible(BibleDB): ``chapter`` The chapter whose verses are being counted. """ - return HTTPBooks.get_verse_count(book, chapter) + return BiblesResourcesDB.get_verse_count(book, chapter) def get_soup_for_bible_ref(reference_url, header=None, pre_parse_regex=None, pre_parse_substitute=None, cleaner=None): diff --git a/openlp/plugins/bibles/resources/biblegateway.csv b/openlp/plugins/bibles/resources/biblegateway.csv deleted file mode 100644 index ad8052704..000000000 --- a/openlp/plugins/bibles/resources/biblegateway.csv +++ /dev/null @@ -1,81 +0,0 @@ -João Ferreira de Almeida Atualizada,AA -التفسير التطبيقى للكتاب المقدس,ALAB -Shqip,ALB -Amplified Bible,AMP -Amuzgo de Guerrero,AMU -American Standard Version,ASV -La Bible du Semeur,BDS -Български 1940,BG1940 -Български,BULG -Chinanteco de Comaltepec,CCO -Contemporary English Version,CEV -Cakchiquel Occidental,CKW -Hrvatski,CRO -Castilian,CST -聖經和合本 (简体中文),CUVS -聖經和合本 (繁体中文),CUV -Darby Translation,DARBY -Dette er Biblen på dansk,DN1933 -Det Norsk Bibelselskap 1930,DNB1930 -English Standard Version,ESV -GOD’S WORD Translation,GW -Holman Christian Standard Bible,HCSB -Kreyòl ayisyen bib,HCV -Hiligaynon Bible,HLGN -Hoffnung für Alle,HOF -Het Boek,HTB -Icelandic Bible,ICELAND -Jacalteco – Oriental,JAC -Károlyi-biblia,KAR -Kekchi,KEK -21st Century King James Version,KJ21 -King James Version,KJV -La Biblia de las Américas,LBLA -Levande Bibeln,LB -La Parola è Vita,LM -La Nuova Diodati,LND -Louis Segond,LSG -Luther Bibel 1545,LUTH1545 -Māori Bible,MAORI -Македонски Новиот Завет,MNT -The Message,MSG -Mam de Comitancillo Central,MVC -Mam de Todos Santos Cuchumatán,MVJ -New American Standard Bible,NASB -New Century Version,NCV -Náhuatl de Guerrero,NGU -New International Reader's Version,NIRV -New International Version 1984,NIV1984 -New International Version 2010,NIV -New International Version - UK,NIVUK -New King James Version,NKJV -New Living Translation,NLT -Nádej pre kazdého,NPK -Nueva Versión Internacional,NVI -O Livro,OL -Quiché – Centro Occidental,QUT -Reimer 2001,REIMER -Română Cornilescu,RMNN -Новый перевод на русский язык,RUSV -Reina-Valera Antigua,RVA -Reina-Valera 1960,RVR1960 -Reina-Valera 1995,RVR1995 -Slovo na cestu,SNC -Ang Salita ng Diyos,SND -Swahili New Testament,SNT -Svenska 1917,SV1917 -Levande Bibeln,SVL -Создать страницу,SZ -Traducción en lenguaje actual,TLA -New Romanian Translation,TLCR -Today’s New International Version 2005,TNIV -Textus Receptus Stephanus 1550,TR1550 -Textus Receptus Scrivener 1894,TR1894 -Українська Біблія. Переклад Івана Огієнка,UKR -Uspanteco,USP -Kinh Thánh tiếng Việt 1934,VIET -Worldwide English (New Testament),WE -Codex Vaticanus Westcott-Hort 1881,WHNU -Westminster Leningrad Codex,WLC -Wycliffe New Testament,WYC -Young's Literal Translation,YLT diff --git a/openlp/plugins/bibles/resources/bibles_resources.sqlite b/openlp/plugins/bibles/resources/bibles_resources.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..bcb45b8015c5cb6855a3c2d6c0aa821ce2324151 GIT binary patch literal 63488 zcmeIb34C1HStok#y;Y@ClBy(Cl~kqD;?nBUW?S+myKT3%*_Q3L-CnxmB%O}8w%uOa zOLx1oR+YBW3tLDaFd1gZFuVXWkYRf;c!4#MvFMIHm6ZwwgBy02omNniueU(cA+4EUwPs`Zm6=nlrC@*BdiO&4d{-$MK!R_lOxa z2Yq_wZ1c$el(~We`WK4qF{M$bqOGmXnVDFu+-Y+S|1KfUBIQ23(Do(K+EJmrsl>Pb zwWEz^G3at;(j4+DycZQcit8izo-|LO@<+`{TpvIsJMZ)Jcw@?UM&fHC2R3j5yMwF%(>}#e~NF@zc4p z`v!NNn{xiU^J(X&oPX<-oRiLgQ)m9ve8PN>`8pJIvLhWa18sFqJNSMRbzloFG&W~i zBF1THah&~V%Q=kL;MdDE<4#+n-sUg z7yK+Ikbrb$Yb^^znnMWZy?_O}j%8|apIt}h-avs&$=}L+9Cz5LAvAgnX<1=*RM5bo zh0xA?Y$4|0Lt+jt#B6D;Moe}r^E`mOuA1{GZwNGh8(XUu?lY&w`-2Pj8*-JnPxdkW zG1T%3#37k9v~ZQlMHgZ)hovzF7p~T1EMl<5N0F913VuV)6}UrA?#G?8s1ds^pzE6> zckgm2U+_z2ACS&;hjDis(vBk)^JT}9U)NB_I~dpsZEp@CUXR}&w{hpRAMYka7Oy%n z8I3cDy9W_Y0YUL_2KP9m8Pe43F4SVeyo|ih`u74l-|Q^pz8A5ta-zo$;H!ENUzM4d zH)F!y8;$o_@8`XL>io4)lh-lg@*H1(nWo_~WlY8_{(r9r6arU za1nn}8Rk3MJ#W%Ei;4XbqF=`EDNJ!9ziXK2Hy{em8L!^;2HeZIL*YsBM?q!2E$4U> zPJqOo^-Ek{@qO`_0+@7m+E0zxKZOvX*RAAxt(3u#Yqt?3oM4*j{@xSYH`(L++RV+!J2UCzH3gD9PrLAgBqEZR#`mkYX&mcGXnyJJ4fOSczUey@3a?{&>e zEWbB0EAo}Ge5GBA2X_c{d!V^l?!)&4$U4R*!w5uPEq0H;q33wN&xs%Re&0Lhe%8Fr z%XquY$DQwYe$D$<_Zj#5yw5maa6jq&q4TV>)%gW?z|FY-+W86d|2XgUX1v?Zm%X1e zpL1g756xd=f8dt;QSS$x?{r^rzrp;7cfsA|Q=M zC*k$@7q|Rk&p`&}gCKS`$L&S4w!s^8-iWjs#;hiGH%vEcun**U{Nt8KR}k+y?rQIX z@j6r9fFJKP0x#hoE7B47+MGiOV9YC~otIA_k28Ky8!uUX_V@*pW1SBJ+Huim4KGHJ zh6~KCykJCblC&_@;(kgq>$h|hrHM@o_DZy`k|m1|BHssXmNc^B_wJBnnCsGQk#ws! z;skpi_wR)?u!LZngX`u?w?FDxLa@UT?0BSD!qQESWTn^WH}bSe@LsTo!31^8;odEb zT5=`Wx2RbhV)t)V#21Iy{WoLe*YXXCY6dOegQ#K+?%j5%WZ=C!4N+Dr*i^7=Nw9}N zzEmh+aSI`m^|qn^9<*x^W;L`m5Ns5LIQZ`09q`1k#VrA2su;Aa2f2ywX#cNEKVLNr zuv*Y62Ua=oPr!i=3RNkK=9u>Ztp0t>m_K!Du(N;Ix#GOv`61_%&hNW1cfEVqz2<(K z`!nuux_|36d4t|T@2dHj_p{#T{t2r6;3C&?Pks`ctc!Z+@ZCLm?v_wnUd3t$zt0;MQXgR}cEzpSN8S)#aa(!iE$N4EWj}BmoZ#W^HuwX#(i!9KR{E=L z#=qKT{-e7EJi4pF!`&5L&Cy|HH;D(kR;=KQ@#>BokM0zL!QTI^SCkWX{Ncqr}qVnUo4^eUZBnrDrHSAu^R81 zR;=_g^JxV<&U!x7$YDkkU?;oKw^&TQiU1}2lvQn%bR z4%!Q1aWXFlzH)cfp%)$!LxXzzM}0yyfq51;V92*Rk0J+kBAt2iL8tlv+ffmzXH8ImbI~a=O$40>zQ2P^N7m-QsG4s0#1B zCc7j@t_dvU*xG?K^cB2!Wa-*#@5KE<)RK!N%NIX_5HH(>ICSe=IuJ#>?cGb#FJEK{ zmR-E&wTMIiIL`IOwHaN7TJyY%zUKAfVoq??oaw=R@X^1|l^@>WZ*8V`;ZCqX6#Ql~ zeG7L2VIKU}XZjcJ1j|jqZ*z74chE|A>B^Mo+TL}z$MG0Q#rqWy{UNEC=$l(fA4_+r zbq!L{Gcs8Jp-{d6M`o=CIk^qE56?jNe)*t~NN#W;#{CjpArY?sXU+2lt9_q#{u;i% zr`;L%d);4fzvNl3-5d2zdqwX<-cMr<@V(B9&YPXxPN(^6^DE{%kmxmih7O=E6FrW1 z6eEQaF<3BKDj!F%%5~QFH>Jd^*sz~zy6#W2R5&Y*LcIJWQfzB;JkEUf^l}t1bT_Of zzi%PtgSE)u-I%r6y@-jP^_J=}(UI()g?q=KGU+4BF)VsxW&-yxPrc*lS^9L{g6<|2 z&yFvodK#fO(PEk@qLbONg?m~dVyX)O6=(5V+dYJP@F;bUAnYRM!bQxv>-d&d2tq^c z8xe0aM#h6wy23(3n-FKROJnjl@?)>u4;}_l=ipv=X!Amvl>x`lk~CiX7NmiM@W=jg z?83YWaU$(o7vd=2rLc#2@jBEzj5v^OF0XF^P2BYFi1KpVa2H;{cR53^W=cNtgbveA z^LE656mj>VrHg1wSFy}v%pG_4gO^+prI#n_~yLcKZ80y#2xmkPH&zHp!EgZo2wDW`S!!u_T2bK~Ou%n0sNzG=Li!yS4m zpEFMTDDH3+aK>>zg|hP&xJSMytfA67ZMw~08t0GQo$gVr_CN2w{)=TV}`U`UK;b0HYvj}bBkLL-aG{SVVA12gf++i; zn-#>!4_N`1^JrSjs(%^WG1c zSkPB%#PAzv>f&P__iuWz^-Bh;@%Ojx?jAtv#uvxOBB!J&#>k8SIuYn-d~^rF*C7u% z#ueO2|KE`I{{|PH|M52iUz2KIjl9Z%RSvukI51S8d9m>lzBcd0SH6q*|G4=vgQs%; z!27)S>)tP6b^kwlAMw81`=Iw;Z_azCcguU;d#m>p*8WGmVQ-z+>1DCC7;*o`{WJFq z?q}Ukx&PVyDfdU+e~0G+W;zn}H|xxx3s=ZZB368r*8vb^glvBjL z`rB=vsJ?dFE2_8K_K51)X7i%*X}ea`+O+K!)!k~lM0IsqXeRWB)7fV`M0K>-c2VtX zY@4XIl+B6CEJQIQ6V=Xu$VaL$HAg|gNYMx*t%tS%b0FaAU2)Ir^~D+E&gwF{gstHX9NU-j57r_z?y zWjnouEvwIVx~PLXZKs1A)N4CfUv=A#P|}vwZ#!6Db=(egVcGb7xC51(dzVi>7Eal@ zcZv+v*|~R!L}_zx7wKm0+}lJtO?K`TpWGfp4tGRWx7fLtMONkQ+)E-W*V?%kMMj(L z+-;HI`rIv%6$rg4GJ-nX5Q$dIy&y7FYv-h0WFkzo{ZMkH%?TBHZ^ zlt`BLR*@JFbI2&b`?uH-*86H;D`(?i)pVVAM&GE;4(ANQ{TM zr+soG<31(QL(NWzbklb3xJU=xa?B@(LI^!7(nEuu6zR6wxg#PSkcWM8Fp{xzheU?k z?A#L~LpeKlP^4GS`TwN($Um0;-|Oyh2i_0s2Y;t;>RwoI~|F`DP%wjf;*_K<^= zMcD1K1!;@0v(6SIjY6Fcl18D%ge^!Kg)(S`q){l{Y73G^p@tq? zkTeR_ci4iYQ7DC)Ng9QcV3ed$C;|3K8inf6AW5T8?T{@<8ii_*nWRxDK41%yMxhvZ zCTSF^Mk^$ZLRB4B!YEYPX(fw7(X^E)3fZicBnnlWv=T(2NRyQu3We8LiJ=fWK~gB> zZL|_XA-CO128En0RwBr2YPXU=UUr?80P-5QTFDH@t&sfPG zFV$ovdc0(pmE`dftyY4^18$St@oL+x#Ew_fW+ipJ_%qO3-*tot2z% z^W9cr#$DTIC1u?1HC95#?P{@-F>YtKm56aWIynDbXV^Hy?$2n3t$sfW2THa^KK<0ooA|5kV7}5*6|c?bpAP6;Wn20v`fJaDtFT;$e{~o3 z;`Z8#wv#8F(vowC9__jNM~hXzQnx)?7GLeoe01i$PVoQS0Ra}k<+=SL9RQ(8pWF}u ze%dE84CuF4B+T8pJtCpW=O#qD08Qf}9l)b8pIjdU{2UcojR+$ms{opIi>yQukBf`~ z8}1Tmk;6`r6#$PrM6x=MiG+bLw_PMb-ZqiMk;5X1Be#lVb+-8Ax>}H%Mb>P$bDKoQ zfyg(Ci~&*(iL6F52Srx3+qn%QD^d0JBBMb1>qHW=4~VQlX8j@w+51F>5usNk44Szf zkser`7YV&Hw^pQsg1dckpcX|4mkmHQ&Iy+d#F4B+5y)TRvH|i}xNM-R)6NN(4OAjj zxNIPb9E8gTEDR6fvH>h@%n6qbM3Ap=*#P+~Ts9Cw1mUs)4>c1m8-M{eCtNn*0QU-) z^#fqd377RZ_1ih&vi>Y02$%IYqCvuC{TYzLW&P<6J11P$-vE>?T-IL?P70Uxr@HN& za9Mw{$Ic0t^(SBz2$%KOp@)Ra`fHI)xU3%lYfiYVKaRMDc22mgzZz{5F6*yC z!NO(zl^g7w=kvEe+Gpp4%la+y6)x+q*kR{{%lacVc2>ZwKiq3)h0OXx{`#NieV_4u z8+-iU_b8fgHO?vrRypubz=3+tGlL_*nAhNBaswOJ+RAHjJu||M$d~*rbM9Ibk_Jz8 zwK%wa7=Y~T18=`h^#803$bK(tXJtY5yX)<&Ovru*p|TKpB>jL5#!8apd1vM&jd zCo{4yk+-w5Bm3%*Oon7%ZJV8yCE15H`B|BgeOQ#Al`Yv9>$bBpCi|*~?5wQGzN&3@ zR_0`1C5n(e*%$4xvoa|A>|=IT7G+<>W;-jBvM;jN&dR3j3!@b>D*HlP?5wQHKCjcx z%B<|eO5d#P%06eKot0tPn?Yu>EPK<#cJ_>~1$rBhuWZZSdem3OWp4^a$hz!JZm_d5 zFMAVxc2@RfZ(Wz2m4Vq?ix$hm?5)Y!S(%u<@eVsH8?!eCQbuNPHQFXCv$qOWmzmj1 zKFH4Ojqb9uGBkTFDtTO$tN{CtiHr=|*`p%EYwhflB18Rl_J~LitvD>w-DGDEiFA(G z*(ZFmr#5A04~ncoGldd+;`{8ZP-0IEZ4*lDsYbp+i9G;zvqFhImB?2pu_ua}2_^Pe z6fBh3Q-K`DR73==5K8O`gMC7YJt1_rP-2eJ%Ry$svYj4AZMEO{PArVi3d?q4X?<2$wgYSWv%<0+SmB-(mhHgG z)U2>)BoEZbIrWS(C{Tcp;`3d^>I5kXkCErevkvTaykn-P|6LuNC= zvTfKEn30yqVUK4y> zG)KS^X^Cbqbw*mEIfNl%Ow{`%;mnTUY;N!O;0fTL0QgUUa#o96<-jTj{$3n-tiZDX zw-oqn|E3%G+Ij|G+mGXG+c>_4hw!y7hp)cc*NOh05teQC!gfYjwi&8wMp(Alfp8O+ zZK{Sa7M5+Q8n83MvQ1cBnh}<5!fM!zuxyhBDJcX;F?D5P9%Vs+u z?}cTv@SK?umd&=c*%@KkEPQ8Xgk`gEn3@rm&9&Irq9 zvxp!pn{9+95|+(k8*#u=f+Yz(AOVzwGA5lYNff$ROs4BNyrLW$WZ#*R>8 z)}rx3iP;KNT_`b2r7x724Wn&BiCOqp%m^iBJ;W7C%o1ViK_U!s=(01ONOu@OshzFjU~z znCXRhlr5X-fwYz_o5{n@ku959i%{9JnQllw*|M1~=qK5-nNFybYGu}uv@^10GwsM% zwrr*i8cw!sCf9FgWXopO$jeYzAJY)3RkV@di6BTQ(CzT-maj>N-0uTQ*aL%x)@&%0@daTQ(ET+G*Lc z8919x%a+YlwA*RfvKhFlOv{$d04Pn%md#+-b^5Y0gD=~(Y}pL_r>14gW}Kv*mMxne z&Dd$#vgr}Tl`WgzU2Ugj%cdVkT-mbeT?myeo8DPvr)A5gcc5mnWz&zL#X^bc?O>l! zVtN}wg%Z=l$U!JEy)|a1g%ZlJqYdy zC8psTJuQ@&UXNr#iRpDHLMSl}xHm17nC@@3(?W^qK9E9*>0U$-N=)~(*lD4}bRL`( zO2qP?ofb+=ccV0+#B^7;ofb+=cOq0MG2KyVr-c&J?P!}&V!92i7D`O#Qg&J>F})`G zI+_2|!m{bsHajgWn{Gjigk{ssV4AROx(RF-mQ4ecP7BMX8_~1EvS~PlO$*DW)0kSq zvgro&fUs=39!wLKO{XGuT39v>kN)Xx8U=|8J1s1muERhRmQB}!6qZfbMD4V&Y&xE^ z)55Z8`1MZ<%ciT5udr;os@6^m%cd(awS;BU@NJ$JmQ8c+3CpIj1wJh-n~tEF!m{Zw zrlGKG8f%c#!m?>>luQfDrhzV}g=N#&vY!@~ZNM_ow6JVL1u_$sZD78_vJGL>Ojx!7 zKC;uovJD=lfUs->);6bwWgD=bHZ3e$kEN<xTW^s} zShgN(vD1w{f9oUYEMeJtI5bZS%ht0F!m{=7gPsAL@J9=X^B)LNNI^w2Hhepk;4A}w6sL30ri!ZNY$e> zX^B({eIYH8N+N=^L@I%iDlL(!L%z}yDQr1SOG~8SGcheKk-}EXw6sJDZrRh)5-C_Q zQ_>Qtsx@{>S|Ww#0;Z%TQef(ov_uMCg;UZJDOfR6(h{jihnxd`d9Jv-+z8E>u!sSXX`531_zy~CGScYk9a z^e%|kk}uEyP53WPEbUx$&s_NxIxF98TZ#QEC;e)7#ZCAJ1n&iUb>~UW|AXec{xP2a zx!>>q|8_p+{D|{C&cAfN$(eTUI9KrW&k1MJ!BM|Xm(%FP@b1ySFki&8Kc6%|Xa1x4 z0aOehJ0&EW!uINvkZcM{ZAwTs<+Meoh-6(SX}%>Aog$Pa{r+fliddHP`{L0lf?3kv zoQh5n&60j^Wps*gmh?B(N2iEqNq=Kabc%qM^fy#Tr!FthUtbZOBBW*b*C8!2E$R2f zqEiI5r2n@}bc(2!^t_Eu5!R9}qdw0q&~w@76oD32u$lmKq>U12*VfSY_LLIrS>??9*kZu0HcP6^;9 z-xjh{0=UUnqIOCEH+csU1aOltqy0X>b(1fdkJu?8+~kWbc1j30dE2#9Lb%CWNjoKk zo4g7AB!rv1f!u^}lP{nQA>8EkN;@Tlo4f|{All(L$*UE1N(eW31$s{iH+eZ`r-X2m zm-_6K5N`7M4R%ThH+gZuPVG?+7cgXm9h2uVWP}})&q1FGJ0{PeI>L_0v*3xaWAY4Y zChV9z4N}-Kd8*n@2|Fg=iaH28CZDacQ^JnPw?MTDJ0_n&X2OoiH`mxHVaMc~YVDM; zWAcr4c1qYWd2*AT5_U|!0gMuMOg@dq3p*yCLR?|TIgd~k0F_`WAZ2( zB z3pY6i2`mdYIf@));U-5QKV{)2ccWlgxXH(%1!UnSu~aoB3pcqF!dMn=atA_X;U*u0 zIG2T++>T_jaFg3W%EC5vT&0_ zNG1z6If$yu!cA_7+bLPN$@NH9E$*yC!Lo3Z1E`rS++=^&PRYVe_JL8daFe}=D+@Q- zgGxq}LmtUw;U?E2R2FU$OI1^{aFbnmJ0%M@*$F<#!cBIdhh*Uf0=g_~>xDGN85 ztFk3oxJkUDw`a!396=_AY>B`TWL=Fd5jTRYMRf=p zLDqzA>9WXpg)I>@A~c55h#5iRDZvsUBgiU5AYufG=S)fjj3A>aTOwWrX;BBlMUZeu zDiJM$jGz?+iy*^jCb1&O5b`Bd1nGe!QUvKD0)Zk(2X!D$beu$Q9p}I2{Re}$e*PkU zRzIs8SmnUi2nRMks2+`Y3Sisfatn{CyRmSXSQDNE*tvM?Je~sJ+R97#y<_U}9Kax- z8_@aA47`j(P+uqdza(Qe(bH~AGG-HbCJ zW)mH?wj^UV(cWcCzA@`0;0;rfEt|+eO~{r_VAHQ8TQ<=O-5^^w(b8y3vSkxkM=r^h zP2fTOl5E*T7HUGaY@!je_Ml`f9@H<%mQAD~!)41Ru<2KlEt|lhG9}rv2|TD@k}aFS zI&w+2Y$8!_OR{AXcqqLjTQ*UP`i`lHnhsl%Et|lmUrDxXB8E!JmQCO}vXX4sL>07) zY}o|7VM?-P6F5|;BwIFtjfawK*+c~jmMxpWre8_6YyvK@CE2nGJS$j|Et|l`LrJ!5 z0?xT5*|G_^wUlJb)>V48BwMyFnzJR@vUS)BD9M(stAJXQEn5fQo04qVIvgfak}X>Y z-IL@aelvo4Dqmoc!O$eh}D6t0Tij;&B zYur7yB$Qag(u5M@ov4{mV!Q*LC6pL%$5O4+~{?Cn{kqd#W`Syy*GO2aQ6Q@ym_4e`62HIa3c68 zaC*>h;S{02c#zmy4g1>W01vKQe)#eMo-DcaY~}qt4|DMVHQMPOx9yvwXvhhkJlPw#MuCYbgvT^9AqHNiC1#*xr8;|tbqHNhX)MZh&Y#ctP zMcJ}(JjGO$EgQ$#TSeKjaqQj~Wy{7|T5VCbY^=H77G=xEaLi6owrmW~$QNbH#u`x_ z*|M<=NZGQnG$P2BjWwX^vSnlS$XB*(EM;v`wrnhk2(o2k3Dn_?&)*mvnu@YzW3_#@ zC|fpG(_)LVWn*!~l`R{?xdKJmva#yCEea*ZaO_S|C^1%v2ttXmXumBACC2cKd{HPd zhI0^#LW!}+leQ?77{f6VMWMu42z3xjjNxFnqEKSY-D-rsSIVs#3v7D}wf2}DJq#Oee{p~ULC9$OSjti}_MMWMv% znr>SZO0159J3@)oa2qHJC0668g`!Ymbrr}lpTE^On5ig~SRL)6{_k=hH|`<#B=r9^ zoZUI?zSsR%?)SStfwutszwYPU-*^AY^Kjy4iwaYM;=HL~);cV_Q6!JQ_Za2wao`Nsap233 z0cRwJ^F<gm;hm=0$L3`cQDew-9X8g$@8uS+5?^ zZW{kBr#ifSlv(QR?*YcWd+ImCb&UKTh6e|LH?Rj558NMSG#xHKK~e|Hk26JZCU|#n z!Q%ruUnly%C|kDLLe9ySt;Q3hMcJ~|kv3bDEn5wvv?yD)8qbjzWy@CM5sjj3*=jsb zUz9Cd4Ue&+Y}u-Y&9*38wyGXQ$d;{2LG;U(tx7_EZuaG8Rbrhj%9gFdLn%esvQ;=7 zt|(i!ss^NN*(#hMP?RlO6+@_O*{W*PSGH_b6^f88TZN;2i?U^_aLQ&;wrrIhwME&o zRTUd;QMPPV1fpNIY*iSokS$vkLJ_iMt32c&TeiwYePzp5IcR2w--=2sM-*ktR>Hls zC|kC&0Y%7`t*i%ZkS$w@gN=)_Wh;}YuWZ>$9CKTgEn8WKs>_zGtOazDEn8Uw1twdz zGLE>iWh-MSO}1<$jxH+7maVKp57nz?L_D%(E2A-6lr39H#3Ng_625{(*|L>53aBVs zwi0K07KIWkL)Eq@lvwGZG@-;wJaAhSO02};r$wQ}=o%Culo-VtPf;i_ihYHmP-3(h z`3faQn~<+iVl<0Tp~Pq-#+guJGy|S_ek-DBR8lB0+JH(5B}VIk{DcytDI5qXlo(BB zY(Xe7igO1GLW$A3?Y1D47zI-cLWxnV@f3s-qw!6)Ae0!z6Hf)9#3gT6wNa}uPbn#MnPD%q6UYM3d>f+K?=)O0Id~-Wh<)DTf(vxID5As zEL(vMp@Oh%MRc1j2+LMji~?cV3U~zutNG2>>0gwEGuxtfZj0(cC6*w5Ha6&a> zGlgX<9B@ZiHj=@ip2D(`G!FF?mW?#va8qH~NIeb!6_$-)W2_)78%b`o1!36;4!bG{ z%SP%@bz#{^ZKW*;%SLJ*w*_I@2<)JOuxx~f)leQo&5pD!2 zEfI#;C`e0$)96iUi7=Li3(^wddhkJ7BAh~L(h_0lq=K|WIDs6bCBk)xAT1Hb(r`gq zB3y$Uq$R?z6$;W4;aGz6zYDO-`z+4?`Uu|S`3m0nbm!s)#~ic|Zioab?J_im@(NtwSgpEW;ge$afonL<_%{WNriOi%qDfIq(U ziZ39!ikI8mF{#dw>GH$5X2BO|J%>0A9g5AfH2Jy`V!r3_TiYHoEr@;5JdeNU@SSN3 znE`~HG6a@{k=zw|4pb(`I}^CRg{$C=n0#$hc1_3(`geFnCl^}yj#8$*W*S;q@&rQ8 zqd6*>HA}RFOk4f9zjnh~Ud7#1GwU9_@P~Cgi@Xv|j5%hwHp7@_P=idCbs6((NPMaG zbNwpQs5@M~B47C0Qt|;c$*?9|Igxjl{o3%glow5^Rb%^HohpYwJKz`)sOgnp%9K7m2wK9 zsY>QHf_7f<>vRg=cT6VAJ{j>jq{Fm0rkHoe>dp~aEqesKh_GHG zh#j<<;a5y1tb8u}wG8rMi?Si|d&Hjw7ts>di0`O9g^*g0qo4PfH}7O!#XgOgEa8=f z8nF&Jhkc$mihtGg;0&w z*|K!+9;lSEbnhNK>{gcU-2>HHmhRnyrM2?Yssj#VFH84MVAZND-8+Frzp`}iL^Vk1 z-U;l;m8E+pD)EW|>E4NGwJl5cPT$v# zqMBe3j@8uKvUKlQ9Heyb7nq(mhJCuSbnlpLwq@zwF}!u7EZsYX<5SDhy<=E5EKB!};nbzF zbnh6>D=JI(j&W#6_l{wouH5CfVzdFJb&9M<<2yvAP;k3Q_E4KhJWN#1i3GkXuMvqS zKg+EmaU?>yMI>-$xmhIMFj8(3i6=kHS&>yq&VR>UZ}5Nhv&w-7bHMq{AiQ)a=|8?S zv*fv&m!Jku`wH(gR5U@#{UMo^o}alt`d9mznMXY@yC3?q9XgiHCE|I}*R{lQL_V+f zw2e{|5B>d)Mql}Pqu2JJ6z6}fnK0hRy(w=TZ}s|Bx8&}{yE;CBXLO!)(&l%}|7qTa z2rGRy)ke%o|9#Xtg>($8A)Mx8NO!=pr*JK3OEwXzzGzyV-8B*O0#fPyvU*$m6&z~H zF+{&5z73W634rI!C@77vGXQX>kwa%ZVzw>G;R(doJ8aK`x&rzg=kDm@7!B zB;7%@j>D5f?O}DM0dtEzVbv2snUj87*k_y=K?@1M@9#^Ng3>EgI{T8qn;he-Gx;(E zjs?P7E|V|i^(|bp7oUh!m_ig)-v?H6k(_MeaG-5O1_riL4lh=|mx+sAM;nXT4TaU+ z2ar~cUwozSz16>jfyC<}mDNxCZrq^_+f`T&AhVAM<0rJfyG&f6Qa`v&w;04*U~vK=^;i;H|&!fnQGoZ}fc0 z%{l+g`C+`DbC1()e%E{$XpZxG;j5F#}81W?UTyAFa95AbQci8h17{E>FQyPy4yE-HY5|{Z9L33}=K7gEF{Z!L@K2 zXAd@K&iZ#-ofBz*^ZF&wcqQ9_9l_3JHP)g+_rh&j0qm4k=U4->twXl-RpDs3vydP_ zuqzd_97W#(r(}eT*GJ49^wLS6|HS^P1Wh6Gk0XyJ%!6Be2lv3!Fn9o02k!pGHk?;4Wvy@|eqeiTwxDFCo)!AM()p!b?bZ2&Hk% z+|N$#K#`f->oofIVr_pMZ9axnPlG;+tB1ArJjTXZq~-h%d7rv_{zov&SASPIu*!kg zCkO1j_Dl}ql?e0NGdWOU?Y#C(4n(4MUVA17!mpR}zvs2Ha{!)Q^V-=tfL)b&?d%+I z(Kzkw9B@K*UOPMcalrDtc6Ro=J$7C@JNvQNHLsnW$(prxUOPLJ@pX1yJ3EuuHk{Ya z&Sdp~o!8FJWL3AF*UrvlB}nb;OyV8G^V->}v;+S!?`=(Y3O*_n*2vGdy5nS^KJ ze22g7G8r1O^X($Nyq(w1&LsTP=C!jk36Gq4?diH?q&p$3=!Q&|)HSeENK~NW9Z$zDlIqVdpDF z!qsX%>XUmmw%U0satQpb5IKmk91*#p(awiOt_K+sxh`erJ&^RcC@#Rlv(k&TFORU}R( zEMF0s#uAP9Qgk;2bv4;yBcgf0c3q07@O7@y|rk&F{HBq=c|#%5!^Tf;Llx*TY%Gh0qE&) zbjdem&zSZCe6e;m9s$ZfXM&c%K1J+1X!m(Ji8 z{IYr)iSp_HMBDE&isDsm0S;M>jeH#83jXmsRen;%5Wf*V-;&J^H=#r#<>=KqJN z=_UWFxd30R!A9+Vmw-|N25eLJ2GIu0Me4!73%vhx||XPobMz71Z0$DAEFyRX*#rTJ;|op3%nxiDl} z3-I;Y+_(?5qjg08tvhHJ*9f>pbQ%1G+t)-rpH8HCCO0Z>`;fof2;vhKFvtq<0^8h3 zpEfn^;)2iDWi*swLj|~lJ%b2zX9^lfr@k}b!I)nd*%@^28HB^Jt^jYbE_Ch{@cb3j z?i!+yP88rS*3$S!keB^iw~feB9e2Davc^Ooq0Kc)edRmb5 z)_V^2+BF2iX^eq> z;5pV-e*$fx)q2TqZfyZBV=V~e9^P&IyJ4~g91u5%pi8)5X9d1$EGO|U<-s0iS?%$^;qNdU%)A07C;o{RRTgIG?>@|8s*1p8%(YDvHyI@i;sx+=(sna<_ z61P=h`?_4w4 z%j~~neobCP4nhCXH%qi7~H6aJI=E=#PdaGK+I~>In0r0DRHVEZvqEf+U^ergAk#2@l&$Jus% zfgjXAsiUkL*BRLk){iqQ@g#FUgb+zFj+g8a=JEv6uxHd3^7ab;vWJ6vT-`f`u`Q0X zw;B$yR#e-RmmFi#(}^co2E$o*hCxmp4B|>NlY>`~CVN2nvxZbF`XvmwY!dr}d~}aa zESX96Kl5f7<<3o{x&o?sAA5>-*w^$O3P#5jj6=@<8nc`JKi}@1^?KdEaeu}A5Y7Ur zhnN3pCvLvi%;NS#KNB~wTH4||@|d8Wqip?cltG&F`aiXjdt3^>Xnwwx5Q_T)8?isT^ooQ}};(C*NN(9@xvp^?x*Tx|&D zOkL=y&|v5>d>;<2Lm_KIn-Oa>?mmY5n-C)s8UnS`kKG#Dh?vK5#ndOv0Za+=ZujUl zlo9T7o#SBD%cwqwpf(uDJPvJzaH_KlB~Ce@*{oqSY!e!E^e$~a;2ypD$azxn=%vnA z7s}yA$YyM%C{NMI^O-BivuoM%d1H<>eeKKVIqdChz`xBX;}AOJDbwoiz6^(!C2RhR z;vzt44_-n)j-#aM==Y2}c?lK7iOyi8_IqxFVVt9Xj**c=Gx;soAWDu?kS*MY;TR>0 zIf|Lth`H+aKOZqq)H_aFXjf<}I&wp36rG+kBlzVo*cloQ?Fo&Aj+r-_x469*BW42S z9z=fBH`El&S*!Sz$X79-oG+HNoRelzIs3_BY(#b81PT zx3BqenSw)+CEfPpj+rKR_$+pWdK~9rJ7H?mHgxh)w4K9q8~$wucRBytF~RWU{x1Um zf5#iiF4qz`5c?scM z#=XQiWuIa)7fQR#7-b*Bq|t-&Ac;p=-T`oma8|hx=cY!e0}l9dm|Ir#N}>O3tYqFi{V5i7lD{Bp|@Ih@yQZNK1%2t{>WfD(W#v(h0kOV`S7WfOD3~}wLO3k zYB%Zt3KHU?hR0M6>qGs+d@g~?Y-b8ua2nClv(FPDZVT=R2?lpgnTBEJH3{BntT9iH zxWrcSZ_+Q5<+B(1w}i|Igi+`a!7?8AFKM$(pk9{{LcP|5Um$|b%9*jRBZPHi{aZJY z8_b1bjJsayW#R%FAgvo8cArT6l-V>CGUxpC(ot-Sdh&kTi8-@2XH9mHdUDdA6C4Zb zHA)(w$ql#%3zU7yc9PGG!Eu>0iS^{fK7=U^`?Y@^Ik9~I?Owa>BKY2eJb)PnlmjsX zksJ|Lrk_2s7a@GcNcvy4Q9~d3#ybjUf6!^PwU>MemK8LjgH~Ju7ZW`!CAd$c9#5U+ zIkNVGCU#S+&za0xl}+>c2J%*GDbq6Dx}&i`?l2AaEjj;d%^ribzo)%AocHk!?rnF# z`CI4baYFwYXFXODK5nKFVa3mm0$dpBKuG~aD8#A5%5f-g>yr;T@tT|F1WcqEeh`8= z@9iqUf00hJi&9z|;=1{-h;{*4G6ClU4~^olP;?HG@_=dfItvE)q0Mmy4$Yo>&vARa z|GfR5?|$2{!_oiAHGmTkddE!0+x;%-wdEVg6f+d7DxAZXS7a5l*VP!(A2-9^&^sY$ z(atttiNm2u;ESF3w+p{S9K*mPQb@d}COl@|;^p1}=K-YIhbC|W(?H;qQH;YT>+OEK z>Q(J<&|flti+eK2Wh~Q(Q0R4Y5^*>zC?1%@1mtd$x9M$gdPNy^q5Z%+8&Qkhs0*>p zDE^3!hJAE2j9Rm$2VtNjy>+id%p_6;EoWcR>X$_hRsawE5^}xl8w}^n*`Rq)NUjfOW7%oat(+wDUL382=P!5A(Pb2IQ1~Gu&;hV^} z4rpl6vw*8C!Z;Itr8s~o*(o&xICwuc=|Qd&Xs+=8n86u7$Gr;oN8Oj*9d4!bv(ASx z`?ol*`4RIDv}mQz@R>&eA6tMi7r_UwuDV-J%i-bSuw?{IBFh94nI0kTfm1}67(gwU zdPAWDp=}t{k1qiJA%qd`3+V3#G92-z!muCfFfil+OpK%8Cvo6g+@ZH>N({dsa~2I5A!=Yv@k_?oRq={(h5bK=HS8TzfK*Hn%iK^Fx4 zS~)}ZJN?}P^Xb@A%nWe+E2$l!`7o?VWfokux+hK`(|;&OEN0Hhr1_sfk$C?9`@Og0 zWY3KICHMXA9=G55J3Iq4i}n3B=%bH<8T8*>{A?SdIYa?R0LW3jxG?|Vu{;J&KW)s{ zyL$#B<{jWQWuv&v$9^dFh>YlycCRE`uCS@}Sog;_5H+w0ES%$7xlxu|#t4KH)X96?{$2n8 z^aK-eg^qrW1a5>Di=cqfkAUBqo(T4yXfI#D+91~fN5G^}6Lz1-bHsy_Ya`>4-pEK~ zBeeP;^t!IM`dWT8GKr9J#27=IwFuMwiO6VVJyI~U5oA~49$Sm-8X@g?DA@1#y}9RZ z186T1ps9aHP;1Ix>Oh8$V4!OKfL5Aps1byobo;y2)?>bC<=m$C92pYWNL1-ukAKm$ zIQgy!Hvb4{wa7zQBzv75Jp`wAE&mKV!<||e*o&B2A&JXF$+$|$x-8|p2G}4<<5m>TBXicZV=V-=dKjQ)-MExPkbN5Qb8TE!qt*xj z3;`$sI9D35>g`bfClKHJocEJB{o}H?#r+ek|DAU8&aXKia<1XsTrKAJ%=eojB7LQw zrtt_i+qg(b>?&Dt0F(HDG4FMI$F$CI0D6am^D-pBMF{EB_@@6Y0r&y*;8C-|-8xFZ z;9^`*hXu1*^PLLyu-_|->T^HR0la*ZyJ-ZS4~cxgp}3UclZZ^4WCYT8+zh&{yXE#v zgOGr16xCx3_CY6)nihA%{HaY|o)Nv5yK>v;3nH-)35c^QIJtprC?m`Cw7Silw z(`c3k+oDTrvd@=3hm83~cjHb?>;uS<-o<~0gfvgcC9d(ZwYddu?Lz~eGUglH!#gm8 zqL`4Z+E@Ne9rHVernb7nk3nB!M#{&uG507wrh6goTispTW!v2=(=`u+)e=gasnG`ULqn+#K{3cSljys$Q8!;Eg5r6dV)iHN`7`1^oS8kL7 zG_{t`JMvSO=c1*_e3a)#)9h~AijD{T7)NO<`%#bkBX<M-z|?vb9QMw7_@F~ljb*-Fz2%d74@JD)~jyo#$X69 zH$G{c!t``y|KFhf|2A){7ju8h{Q-B@J%DEbKJR?gx$Ueqzh%A$jr<4uY(CD_P}d>O z)CwW@Mgw_%uc|r()e2Shes|Nc*Yb?S?K?{hm3uk`ry6R6Q%jJh3%BIY7ST{9K}w!=o+1p9~^ zC)=?kkTbHNh7mT3t2E*aA3nNJ$?&F*$Q zg7)Nq<2*>6adL7}ZiWKf4B1AjX5ZcGyxV<1Q{y1oODl;iiakU)dX{|^@<1%t(D>&l5cz49zL`htI8G*qyv`0AcQB0q^hR?);T<1axXZ+&e z;8G2-^P^_R9EAVtP$8V&|MlKUZxhx4KkNPr`1(BN);Yi8yzFemD*q?V2NC5}KTi~r zoF)Er)1&s>0n{Q1X9Fi5&jd0}l_~ns0hE+tIW5DwSC@qMX*?$}h zT)SjuG+y)GXn_Y8_|rZ9AS<<8Q?ggLO zEG1H&k`HDN`S`!p)HvvSo^nP!LPoScCkNUsL`Eld@AKo{5=e<4d zU%8)fvB8WJK)!(B)z8-|2l@+mB60%bE6~PLK1-h%SZdwiC*YcY-s>;msYvo;rTuc|PiWZW9Vleb ziu@L@wUEa0EDB$~JWGjl6tz1ES=k_22{;KHMPJUGd7H!S3H93%Xd_5g=pa1ANFDU4 z@F&Ax2>+Mxm%=&oDg1sh{JHR_Kp#ea>%2V$Jf$dLOCe9IeyLV?wKZRA41d+v`&u2| ZtMyvtz$yn;Ik3usRSv9j;2)0z{|gx&Ns|Bo literal 0 HcmV?d00001 diff --git a/openlp/plugins/bibles/resources/bibleserver.csv b/openlp/plugins/bibles/resources/bibleserver.csv deleted file mode 100644 index 942d43116..000000000 --- a/openlp/plugins/bibles/resources/bibleserver.csv +++ /dev/null @@ -1,39 +0,0 @@ -عربي, ARA -Bible – překlad 21. století, B21 -Bible du Semeur, BDS -Българската Библия, BLG -Český ekumenický překlad, CEP -Hrvatski, CRO -Священное Писание, CRS -Version La Biblia al Dia, CST -中文和合本(简体), CUVS -Bibelen på hverdagsdansk, DK -Revidierte Elberfelder, ELB -Einheitsübersetzung, EU -Gute Nachricht Bibel, GNB -Hoffnung für alle, HFA -Hungarian, HUN -Het Boek, HTB -La Parola è Vita, ITA -IBS-fordítás (Új Károli), KAR -King James Version, KJV -Luther 1984, LUT -Septuaginta, LXX -Neue Genfer Übersetzung, NGU -New International Readers Version, NIRV -New International Version, NIV -Neues Leben, NL -En Levende Bok (NOR), NOR -Nádej pre kazdého, NPK -Noua traducere în limba românã, NTR -Nueva Versión Internacional, NVI -הברית הישנה, OT -Słowo Życia, POL -O Livro, PRT -Новый перевод на русский язык, RUS -Slovo na cestu, SNC -Schlachter 2000, SLT -En Levande Bok (SWE), SVL -Today's New International Version, TNIV -Türkçe, TR -Biblia Vulgata, VUL diff --git a/openlp/plugins/bibles/resources/crosswalkbooks.csv b/openlp/plugins/bibles/resources/crosswalkbooks.csv deleted file mode 100644 index 7957bfdc8..000000000 --- a/openlp/plugins/bibles/resources/crosswalkbooks.csv +++ /dev/null @@ -1,27 +0,0 @@ -New American Standard,nas -American Standard Version,asv -English Standard Version,esv -New King James Version,nkj -King James Version,kjv -Holman Christian Standard Bible,csb -Third Millennium Bible,tmb -New International Version,niv -New Living Translation,nlt -New Revised Standard,nrs -Revised Standard Version,rsv -Good News Translation,gnt -Douay-Rheims Bible,rhe -The Message,msg -The Complete Jewish Bible,cjb -New Century Version,ncv -GOD'S WORD Translation,gwd -Hebrew Names Version,hnv -World English Bible,web -The Bible in Basic English,bbe -Young's Literal Translation,ylt -Today's New International Version,tnv -New International Reader's Version,nrv -The Darby Translation,dby -The Webster Bible,wbt -The Latin Vulgate,vul -Weymouth New Testament,wnt diff --git a/openlp/plugins/bibles/resources/httpbooks.sqlite b/openlp/plugins/bibles/resources/httpbooks.sqlite deleted file mode 100644 index 406914b63cd5d3159f437b850840db4832113d13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45056 zcmeHw2Y6h?x%Qcvv%9m})k@lxw5#5`ELn2zwrt~qZHx=ufGakxxY9vdX?F!A0YVyS zq>|nX=^=si21!V{Bq5}bMo7O2r2OwUuNS$)&ArM0bAQW^=Y6M~bLPyP^UXKkd~HR_aj0k|k=eWxu!H+u-f+HhcTLD}dX){ot1%wi)pQ2zPlKpE1|W_f~ley?Ndm zg!KsLc>~@u$4`CQcAS2_w-XoWK77dzFFl|_4Gj${vv90(8@%24w;g51m_GSM8;>Z~ zhzhlP1qk`C5%;*slhh^N3RmGpsOT!hS0Y^EEl1^7dFLa3Cej7xd23PbELWb_T#g($ zwjSYGhjA@#co}Zv$SX-(?n8_67I%SNa?-1x`b_y|l6p%cpZ6@TEf6wWyWG7$+jDI6w&KV=?y1;|dpS|N9b0qH3k2ld)aFm}#1)#S%%99fX11v}LH%R> zDg9bKq|ehmx>Wr^J)}OV-k{Rzd^Jv$c)#^N@4eZ39xil#Q!?m{Yba5TX!m`ngWSQ^ zit1EN&{H)vN-f2`Y{nCtN0X{XPD6!Ki;*MG?|P3cR#}Cd7UV2I+Af?)jw6rORwAzh z=UeDqjr8q@bMvwBtrf_hg=3fDSb0#T7suLiANpL<1GOoX8;5dBQAXN)Cu@xQNjy-A z+i`U`;%*M#*+6GG^5&rqt6l$GhCbfyZ9$li?|Yir_A;rDtM5jPGuS;q=k2&&XT*&^IlvUM^=Tqo!vM{8hL}) zSzRIrxQol>wz^X;!~wz!YK!H9IA#UXB`@Cuj2EVgkS|>)jk^~Ylp_TT+GEI(o9f3+ z&&RP+Vd<#+4fY>SZEi0-T(a*ZCHoGStf`Hnq;#yD^Guv;mvn4dUSEKGX+AlAHEOvN;!ql?|8Oi-A3j_{&TwRjzQeJ)ltl@-<5f6T+9;2HbqG1q zl1q`Z2{n?g%k#48;M2MCC~tLFmOc=kY7HQF8jf9nqvX8OvC>|O<}_q>F$M@vsqj@<>ZcRkc1`i-q2mIQJ%(m*?%(>hReY zq4X~N--qKpFWQHoAXSJ^o9}q$HwaGuoo<2CE%3ji16{+pPL_<@0o9z2h11E{pJ(qL*~8a?dEQ?%nX>RrpGj!N>dCC;jj94 z`e*w4`WyNS`jh$t`fbn`UaFt3hxOHZkKUp$(yR1hJzG!Iow{C^>!{Z1&+6Ce$LhQ4 zYw9!Vqv}2CP3l$Z4t0~dQ5{q})CP5)TA>!G>1w=cRn;o4toL{C58f}lN4$r;FL|Hx z?#XwKT@%1eMd`*SyPB*aX;+ceH`%kv>f&}KS#7I5i>#){t{|)KvdhV;%Iq?-$`*Sj zSw*{DN|uV-C1lA4yO^xJ&MqP=Yqn>Ql~&q?WQhv9fGl2R=aZEbTeP;+xwzTRBP*)1 zbID?Lb`Du#xt&cGonU8?MGEXpvVs~rgDl)+r<2)wJB=(YwZ-WK+;Yo^Xu#+ zGE;6RlIaRNflQU#e#caQrR^i@Yp~9n zb++0LvW{uCovb}++sN9Iww0{4*0zwfG}~sf<}TYr)>LB~$r|fy16f0K7 zQ*13+ZI`Vft7)>;WYy)iima-~R+3dV*$T3XMw=o_&9_OiWT`DDD^J-nva&{7N>&=T z39>}1jg!S2YzbLOl`SSKF1AHvMP)Wd7E9SevckBHl0{2xge+2T3&;xUEgt)h(F%lZ zxib;AX0Jooob5%}m|2goK9fLLJF*aA_3$BtRl{8fE7I!_CeuX-%ZKJ6EFFa2=#>n% zAS_-Z|ti2l=m{=-jn9Bbm>{ICxS@zEBQe0uQYPv6N7X@_<$W}0s3*qfk@i?xKOLwm&os8WL( zTq1LvP0+-zM5!xbYRHermmr;!*L=!8&mLU~v4t$agzP*_WyC^q;=^V3FB6UWr%$~P ze9VX=wvyGDfOUBC{zCwq{yW_Qr(59v!xoVD-*}IC-ec-*W|lYf?{9*1EEH-OH%^Tl zVMac7-g0c*KUydrX~%AaZRB`U=-@yw)Ud8W4TVoGdrvl&j>+Qi(U(27EI!%kP9~dA zR(?!Y|65w>|CR|p-^%~2;r-}de>Udtqctg-UBw*z?2PA51Db0?4d;(jgV!DVR2^NL zeHi19PB}WZ&ntT7C+pZljy>hrb9HP<8TpS+8+)c?5l@+4%4;7pzcj1$_q}UO%FOmY zqu!yuWnQA!>9?AP)z9<;=5ck2nxa0Z$LW;5OMS%qy1LzD%mMY3x!-$46?%_*Phx#w zzy7Fsk9rMk059;~Z?@{$s$MOI9pLzX)n?XVJMwPWMWqGB@+yY^eO|9*(sX=$W>2wc zfu&Zgs4P7$YHHLx+~a;6+AR^W!EVKwx+Jm;2GQ;4*iMNo$1!^m?TDKW7uoMFyV*PB zwda#|po}!wHm|MR^r;JQEZa}2iPa6SRcf#p^fLUDC6AVTxjo3`+J%&BE;Zv^xeZ9% zj(<{-rWi~xE07>1cY2KyU5;~XbV&^omFkNsxYetdI-dnKZap-{I*H7~F=Ak@m53CS zMUomhYHU5FTIzS?B1)CqT7IpB>nfGf#3x%UsgQ~vyF!wZvmUuDlB_lJRDSK___dI7 zxk7%KgLdb!<&QGCLVkrKzv59US2%K!BT--~+)Zxq;*z%zH=bY5D3LQ9yM$3Jt&(52 zC>ndjj$f*XjXh$=XBJ9(9lanCm87HBARw; zj4dGqE6p_Y--%WY0#Xew4dfRJe0lheUmbvvP8w`%Nx<_Wl5|uL7U0Dn@b2@>I`t** zNpnb*o7>clYJ*v+KH>e+T&}`qSnXD8y@%D0_3i35{XuiT{+oKUnQywx&-AC%`^+Ep zT0Kkk!2b6W)ug{`>h-JDZ}mZQkM~vcR{d4;J@t3pq9c$R+x4ZeAU>!^)GO39Q(%(b zed;^rRr)vT3_V^i79sS{{K+%23XOHp8{j)3D>a+FdGbz7a7$t$3g$|*|LN!)iS|7m zoh?W9V^M80p08OF={p>m$wyG0+!;a_qsRttx)fQ77gQGGrpdY1;1%BQmR_dvT#~TU zo5FK3GFjTcA4|fr>b4L6CP_ly5eXCJ67%s^@9-w%FR=}geo0^GiFoM~x(EVchc}*A zlJa}KUS5fj9w|f_`A0f{z)0f)5=>?EtK-DO0JxjY?YEunN}f`5-cT@PkmBK=OtD-59Km!nMCsPsMMM= zCx?!dKP*l8QzECN>^UrPxI$Vah4PD_F^S~YISZM?Ma?L47>O{43zG%RVdQA3Avt-e z5n_ZABPfx)viU%%Klkur+SfkuX;fJ zQWxr8eU{#>U#35;zo-9Zs!Si&0Csuzn)}Qn|IB;(FFB@1*5sF9ku~3|_3-q_ugUMg ziy@=sE?7Gxyv(yFTn^pmu{rury_EVamSRu2l>4j~gipDweCj3XlP_hTa2Z^bho_gp zPq>sWC7xbNf2PIwXIjjE_HF^s-qqmb?h4Q3=x}N`i4(h4oWd95nH@Qvy;BI@mF{Qj zYH})d}8s`sj07@dEj-m35Pexau6Z>S6PW9m~_qiffHHDPT{ zxoI;4y1`sx_LxC)hk1>;2kV57s6q4Flk5LSs`ibzo=C{uW6Ig_D*nGf{})|VbTy8T z`RRt}^KQZ+*~d>f^4V_6F#$*CCl+%#l8+_K;YdD~Fgve8Ql}6VcUE4797~!hNmMDs z8R-xPx9OtJNlmFU?8XSZ749NaBw1>Bbn@gzv*d8;yiy?pwMe^s2n$ ze1|HqxURJ7R7=$s=>B(_SE#S3U#a(D)qbwtq;J%(hcDoxc>l}Ic(c@O@g6cCHQ)c2 zjOPDCC++NoQUFIief%?$f3Teh!aG^`tQ`lR!2$79&Wk5^c|3)iWG(JNeA4nyWgf$+ zM&yVCB^7H?^~g+hz2r2Aw_4tSFvk2;!{Ot`tPNx#bGui0#2MF*ow2qF$B3`su}>D` zrm-3MeW;~O3XV2@i zT=aE*x*{^}5Zr?~d8tlyARq1M^2PEaIfBKh&ciu*15qARsjkC0d2ye|vQ+osoV?)3 zV|C>?HWI zL*}*SQ|96Sp;z7^){H(Rb+9T(ZGJf?`l!0v15~rbMjG6jr$b}d1(=8)j%_0M(O~gi{s;8p_qzLRxV!+93 zTZ|Q^X2{u*yA{Jbs6)XqkJ3+gTJ zeqN4@8J+^Qa}MXr@%j8QJC&-PdpQ3{^>fUurBd^dFY=AHfz3Dv?O&>K06Fp$&^RVK z4|ND>7p9dLmf*LH&>k4m{Bg;Uw#&u12}}<5nN!D#sY-&3nDVd|%bE!S~`;$F_MKzvv-%f8@jJEVxgv9^g%@ z8+$&E-GEXqjgeQKMA6~%(V9=*19>PJ{cakSH%UZ__ubTg@Bw)#@g5m)@_2&7FFey58KOx2h}6^YsR` z*W~m?YKIxp=cp~_TD?+TY7Xk9>H@PzFHmdD=cBbq8PnUH=*0%fHe;)sN`! z>Td*$QUy0i7`|RYd!2-#Yb6X`BVpib3H_@iG*?Qf4@syFN?3J3!pi*;R_v27wO7LA z6%v;3k+5vHgr&PAOze~}zC*&2?GhGWE@9C&31eF&EWAv@=oSehne5}I`q>Wd^)7fRTEfrM@6OW1mzge~Vv*nEzJO=~4=Tq9w_Y6J<`JEtjxznS>Q*N|;(IVRDIt<%=aOTO?uW84@NIN*G@tVaa?6 ziw7hunkQjwu7rhiB#h3MFfvQRf|(MAXGjQNXM~|?5(cMA7?>iVKUqRENkTnQLN!6c z{(cGj`Xn4bUc%m9343}Z95+tF?rsUYx+LuEl(3^i!uECv+u9^-ZI!U4MZ)H037eWE zY;2UUp+Um>dI{_5B&@BKu%<@B>S_tAswAwel(3>AVDP4u1&zYI`_-Tcp*|FF&ubBy zP_>{bp%L>N&`zOY?>;%MK+X}E0#+xf>-8Ma8lfHPd!VjnH8o(KyM<&DtWxreJlTHR zB{Zbp2pSiv%?m{TUjw&#?EL$cdDMK{dZ-{VjWOVswc4f=R2@2ep=n5-mYG&UZQSMgV_7CU0tfy z!u~i%O;jDKRwc0W=WpKc;F$QZ_ki~q?<1(9`?G`GA`*z!+d=LT31FwhV3WI{KtZ`3 z#7L;|+d4sxGJAXI4wxltq#tgwUJDG~@Y*gkb6Y}24~=Ak$`To zgWN3=P(5~#+eQ55LOaO)B7Re&9pr`)zY&LV$B5rB)edsYh+p4n2f1g&ubXTKxoO0& zEw*qAmp=1r+U+2>jri4dc98o<{HmlK>ziK_+?FYkdKdFikk8H@e^n$K0tmP&BrImFToA*5%P=s?I52azX&JeL*&QC z*+D)pK|wTEA6#pq4VuEWWg$XHCdp}UPXpZ zxRT6Fu!qQWqdiEbCffs!nW{#+pRBUS?jx(1V)v4zlJ*L+WVhWzR^DKDla;0HF0#@p zyOS)@Vt0_mYwdP2?AyAWthmu`BP(jKTghV6>}6zyGwc?!sI{BPBE5DKSwX4YNES{( zcazpIw%M*H3$@xy$*^zh60$(TUQFgU*>z;5#9lEL4m~L;i=aaQ{+4IO+ z>+HE?Ej9KWvgTI1maM5s{C_s9g`QfbR$=$u#cC7Y#l7k(b)(9v=ffA^73y{BE$ZEP zUq1o;|I6wd>Oa(@>gVb=>OWx%2w+!VLRabr-41Vo$*>_T&}YJqaK64&U#55I1NvH> z);Hw?_%stgkLx?wS*=DuV5}=Y$t)&GgmQoHQ{=~2q8zfnecqVtprxk zyq2+#6TU+DDd8yxev;5em_k@USV~w)SVK6Eu#RvkVGH4M0`I}!#n?538wsqu&&vDH zVzd*WByJv)x2~MH(At|N3mlHll_$I+MsrG*DVyckfba}02Fy<<*)fJ4ri12E{ z+Xx>ZJmNsRr%`K`)URRUn+d;kVB8Eq8}}G$!z&oq7}~h|)`r(J?)J60fyZSCql8)Kgj} z6NUd%??2xDa#Mrd#a*V~Ofz%MBD2D*#rH@yV*YW3xzgMKZ{z1dO59=YG?T}G7$mUu{84#MjBz2Ro|0$$+gao`2j(!am(A;#_zA*S z36Bx}>cDq%KJB+NHkGiDa3^46k5Zry1kA$rxVG zxZX16MjntQ+(dA%x-qVsjA50`>zVgS!q*5tBmB*QUqR>~Oe35@SVmYyIEQcn;S$0I z!dAi#f|IVszmBmX0;}uaB#)KvyUZ;QFmtTYQ@|L?`y zSz%(vz(>uvgCy&B&Bvvj|1)782}2h~&17Jhj(L)i1bUY(=PRCCoN_#f1%QWeII|KEE*^S++gEt<++s2Hi# z_CiINgizfJ#Xza=g$i+ADtw`6ksYMQ7m8pmK$S04fSOU~3x%iIK`MPA3#Fb~UkH2t z2dVajf;fzNUkJMNAQiumpR$A0{6Yq)RQ*D7n`@jF7*c4R)s6;JQ0iBaCZW`yO=8#G|%qE2%JvfV0BXuUJ zLVagA8fe55HJ!8plcs5;^%L#jRMI;1{1nn!^yXyJ8kC(xTD`yyP9&{D%_fjmChTB8 zX$5E>X$sHTc+w<#vzN3Sm*^oaLpzKkEydNkNfUU$yGY|WLnmno3UrVbBek8h2xn*` zjiHjQq=j)A|Ibx-dnX*@pVC@~F>_DqT6pkx>j`?go`-k)EPW1E3OB)@f3Lm@{y|xM z_2WhQ75a7R9q=7^7bL<*PpsoVyD=Uk{LA5U@Mc&cKL}}bzxk5+y7{j8p}O1r%>3H? z!901KZg9OBHa9)v%-}Ch==m2CHWIcGoU-Km*E5zT+$=&EA4!wYnVV^34>)x=;Jr#p z1w1!+1iWuE_FD(4nBa!_dbfInYk#2Q*9icSxe|ztDlY zhw!KaeI#gaZBzj13cRkw-Wf zbfH^4;hItKn&-&)KSaqMwKaB#l06zKwL_Hb(O`oeqGXQ-s_YOYd(`i?LzL`MgH%fP zD2$&&l|@5Svy3@9*OtZAxid0Ny-jUvPWPX z8lq&66oFE*NAOvnAxid0AyO&XBT>|sl06c^B`Db=__WUuC3_@XZHFk?BX+SUQY;v>!cEh1Y(qx+*Y9KAg zCF)7b%I#1cDL!m8R7;vbeQQYZnVX?%(h^j?inKUshbl>nTI^5-X$)mkq=mRzk~E6e zDJPAfhssC`5_YJRG+bzh5~LQl87B?lY9*vWT&Zv;Zp60a8()_LJK3=g9k?X3xgz8*G|A8>=g`Y4&Waw#ug2v$2|Hn`Y0( zs*%c`ja7whnmrq)9l$;3T4@|u_VsRo{g19ZJIqBD=W2W_H3-Q#irS_ zu|&kC*|V{DqfN7CVpuz#)^>2o{d589b(VM@U^cY_G}DR^da_a40`Vn zdp0I-1A8_W#`DRZjmg`?NdyxXp`6qwRKR9VyK2Ll==2 zpumNsVZ5gokXn>IpELw|9%=AwJ9I8-021#UQXh3#ONu45p*5s>iXB=_isgu*RgOk0 zaGPh7rZ7CMBuzpNo<&-Y)D@&ok zrG5{8V5O}t!ngZsbhGZljD8w+1T4}ku;ce4y-{DT-iVp}P3l^G1-u5YgQb5|-wMyc zSLrukH}HG)hhZJ~oc^kQ2>SBNr0sb&sV0$;6eQ)zX; zoB=O`RsUs+|Fc~g5cP*nGzCsQD)5}1T;Sa=T2g`cJ;I+Hs4~Jh!hC|$wF;Ee%L~*i znRqwheT0t_oDr!&U+-d?CH1>q%mx0-1j4@4?F;-vj2&d&T*l@wHlDFw#_CdmelWJ>~{`~(?G+9=QNiwk*7B9 z9>T_1?ZW0W%zKF7bmOpZT+DY)G6l|&h3-B7FZ750y;QEixYjE$>|^6Bb_K?DQ-N_) zsRHv^mi!js2?w;*MI!Qe(Q_%XSu!HtjRZGYhrkN4- zCdNKNa5Jumb`Nkwzse=*_YnTzz_>>?Vt5wgCb$uEC-dBlC1O6u*tef6<3A;PyaS^w zC40O*Wz&@G@wQr_9>=0|nvy*ZBTt%=Jr3P4 zP01dQA$6V;^6^4caxN)!!}J`|2o##xq;Q%@&mzS~Mbk4$;bD@VK^nq^r;}oRIz5dP zQ?2w=QXd7TkeW)Ho=mC>ZF&+ZEUD>V*V}YIsYR3Yk%kIvdOT?mE!j&7 zg(lrY>Z9y9Qd4Bp-J~#Rrn^YxYMqW27oy)fNTaTme@vG&}P%Eq~TVZZXtz! zm2M^tEwSk)(qO`-8%eP`pKc)aap8JWgBz+N)o9;ZQUxus#?hjJZkw(q4WsH+q;LdC zSCWR%Srw#k=SinX1GwWPDXf_3a#Dl#EhE)u*mNnWTrJ^ftQj?nlQyBVN=O^=tQV6u zRLJhRClV^z@PV>@cjQ6toL7355j-v5%n0p zP(4AVm0t-9RZrba^wdMzr+!93;dMt#17;)nRl8Gn2*78@r&?Ceh^-a-+$U0;7HGazi@%1$e$$AFXm4a zDE3A_W6e#rFco_9xF0qL31Zkn~gmaXuG7;YmgoVD-5~98ve?15MQX0b_r5pppcq2t?IF#x5pYLwGa6*(9UN z*^;8#jYCoWYL}z)KbBG!@@bxYFJr%Spk0F% zYNvJ;YNxdo8rL?3X1gn5T+bDncQEz^!gmQyuPO9HF6K88oKHwBCig+N2#W}p5}algQ=ek&R}Qpmo0xt-V@@H68P^Okv%@7C_XNhw zI~n^T;XepYYl->R#rWLfnU<;-6}ixPR~NbQzsPfzz#{KWQo6`6$(~ryWQQr)6Z1oMn36p)fHP3CC*~E}VM_MITwIuvJuxR@hbh?;vr#ij_QWh} zhbh?;Gm%Qko|sW$hbh?;({UIjdtw?WC3|8jE+btu^rlY(}bl07jo zY=M_#sF*{sH+Ka=Yq&>KBgmfHgRzTWaX@|q4U1%sv z+KI9u(hgKINZO9W0;Fw7^+{XH?XV$jX}80gv>EN7NSn|@9%&;6yBkOwK(8mQ$5?h9 zDSo3PeJyD%%re)I!cLdInzR}=o~uZ!petNST8XlUNGovOgQO{_7zap`(9rgi;+yX2 zeWYa=TKAG-nKOL_X#(fnLmKb5>D{Cy7|3^#7Na^lNs9tDy@NCsvgz%lg}B<~r0^0< zZzGMMz*bT$_ogo+4MT(2LTXWm&7@cXPj4a(;x0ClVg)?Cfz-!&*OMC1OGz~fTtcc) zhl?GJcb3Tezs!66zheFWc)#B-t9!A|_-6G=%=Sm1W9-E0|5}Xq_|%_jQ5C8XzdiOx z@8?+if55xn`>^*;R1AN1m_1l(@M^LLOEsP?_F$=M2oFmSYL)O_91IUj7Yct-I6N$U zDEy9Ccvw17_zO$J!_tewZ!ZWBOE(I?tt>n&{V4p_qVTYEr0^F+!^6^(!k-@s4@*}H ze;$sNz7&2-VR%?NQ~1rP@UZlz@SALSSh`dADC#5qDLhvh9+nOjp2c;gM}=ohcv!kr z_z1Z4sqo==cvw1BcpB-_tHOtHe(6@>gW%Gy!f%9pSO<=+H#gwry@>RBq+UpR9a1kK zy%sX+e9~)tJA5AL)sPS8l3s-Z=a62B`(Ga9?eHqn{SZfI zlkSV#;gzI&akjHaufR1{knVvbT~4|ibQ$R`NW3#ich=eArKCF`VwR9@@3O;-NiQF7 zhZm7<8)t{lAl-^bW+CZicw`okZh_#LPr4b^86e$+Hkn7d5jC4jx&d?!>3WE+*`$}E z4zoxvfk>Q5dNHK#4AONt*>uv2itO+-(hH02@Kn+ZATy_so@xSwmgl+0?^U0LC;vCq!|F%s z7wWh8ZI6HGpz{Z;z?VbX@GXH!@cy5#m+G_ixhL=!c=-ut0zWv?BiMNhRO2fI9r*6Z z6#OpPLRbe^oAZzI2hN%2V<++}%}&cxoZFsszQNEqoi^TV zoSNBWoDSV?mWo!?W|j!F8n=I~<}8WSc()Ti;6Q~5y9u`t9w0pBK;K5V&w+7ja*c7D z+qgNbcBSOhdM_k=(19u-Jdf}o;ja#~t3s{5-^GkmSZj^jG{;S6b!SUXop%S}9tSEy zcs}9lgugk^?%H+wGcIPF23cpEx>)Zvv(>MXoOqg_Y8gi>%(^|=C@?PpdxyEc#-*Pdn2u>YtGEo;ZZnq+L`!$~n`? z+IKPiWe3J-^xTu!cD^LFDK`yhqf2X>{)$U9#nO1(!PtI*B($*Mv-LK&W{EVCn&;mL}q9ia?QVpGTn zWq2|fw(3+Y!p}WI>}Hp$t!kQFY4jB+PIll;KHu z`i)SACxf_6%J5{M){b;Jah~*X-cC}O;YK=0p(>5Eld3v9(&lKnMSWXILpWIrshqc& zG=Q2lk@}#Gq$XlV8b~!7s-6@ph$D55mPK*iT2lOK(MSy`w!e&2lZMgiRirTbjZ~6i zO@E|Fbhkp^&Bl2qzYPKsYI8Yv^yxXn^hcyo*-94)QGZN^FEfhi%asj?%*q_EqL z6p>aTHAY&A)Iw4$4Ua@gQ|OimX|l8}~ag@-I`|3($n!0K44SU#-$=RNac*dS&>% zuGg!#;+MN(@Z{x=pb+*1eOLWZ{R~>f6SN9?e}P>v?>BgYbwjKdUI}mEjDDWJL%$rq z8}?>+4SrC69A6yylKwh&$v{ExhqIvcT%Z{zRCJ~0`h;n zal>4%apPx?aRc)>;|Bh2vqFk=ndJhVW|=^TIn#l5V{nK58WZCpOFKJVLG^tH+Ks85 z`T-X+2`SOlC6O-ehRQDepo^JO$?EQwNVj$)V7GRIb+;*#ta0NcYn*li+c@n8-*Ki~ zvU++Xt4F(Gt4F&rwZ|kStG8FOdbJyrdbJxWdreBR#*de*@!AbQ7g5 zLpKX7(k%jub*sP<-6pV9w+o!9I|P<#_na)(?qOJ=UB{oLT_>;9u0zk(uJcxD*HNpr z>y$Oxb--FZLC$iHo+xmxo+NOdo-A;_o+5C8o+@ymo+faSo-VLX&k(p+&lI>s&l0#) z&wh@K{~1d5RA;%(P_m~w;xKJx6M$pr?3>5p=3|hrfi0iJynB~QL?A1OKgUcJynI1 zQL?8hQI?WDRnclQlBO7;|fWp3n<6Y?o61&$mfEkxM^q*08$`$^$#G_sGh0AtQx z(lCbBD@a8L*+Uw_Xt5$slmy%lVbn$$mOIeVMn$(njFBu zxRrDs%3ek~7vujH(m5!*nG{CVkxittpo45Aor#)lAf16bUQaq5&37s3G^AcaIu&QQ zm~;x%oOPs=(GC}pPC|hTNhhMIFCd+O);XWF9~VB4v=6OwE-8K*apWA*UL3ZTvvW|C97VPalN;&al2&-;VEn-=*)?@6hju7yqa6 z+nx{TZ|fi6OF570Kj^27#@E1#u{Kw0T1>Z@fL%fJ%wp^hIuG9n*@~69E6t7gYRIkT zrP!nQCd|k0F`vW^-LGLy?h$zJ|Hk|o7d-v<|9K0@;Il!`71*ff32f2>0-N=Gfh~H0 zz-8K*XSV7yB(_a261ZG17TB(r2<*^H1$JtunC;TbB(_^SrEQOPD%=&?DRg`FO3B-& zowB!IuaejSy;|U)c6NqC+L;Qj)Nay$m3GtjtF@b!U!&cu`&#WL)z|3@<+$thMFKbI zbs>ZO!8huQ9S-VC91iJA9j5hqhr@b{YtYW+>UK6fQx@UOB$WW+>S!dr?VB_R1cp z0+j5P7!Wd)?3LZP1SNZA7pg?;JcqOf_coif z8mY5LtD0?QCMirUnHi)N(1WIv!l^nljWmg>PbI}FTV@Jr87@4Tv=jv}telfnln(?$w6oJ=bze2_9Nq}W`NX(rWB?3zfi&otBMXhi^5YaoR$cBY=x z4A@K^DJ(RZT2iDH8YSIaFZKjH}zsF`ON&DJtrh;^Qug#=LdqXypB<(>R z%1OuJ#VI50#`9ZB+Epmy|7B{92QQzy58L%m=miWvpgn2>e1XgGEuT|-?E@Y|+whwK z;tBi$?g_+>z<29=^e6OZ^q28l;s2o@gJ7DpTOGSa_AH*;O}#RSr4sZ zw>gL}6Aqi3u_yUu<}P);Is?B){`M1p{{y><<+Eu2oE@xtv@Fl{Z9B5bbl>UT^8E1M=8TVm7`7mDoQ-T%yB)`IYKH)tM zRDiIGu$_=2e3|f{4z#Olh5n?A8BK5>5#&esDwoN%D)&o9rS}5DdmUhloFu9pgi*p* z2!D2=})>{|ntyW)S>`4dO)udW~+QqmER&Aau^ZzU* zdwZxU%QnI%ehHaLTy%m=8EG2tu1cyMMUH)qz628(T0lVbON zR+0KR%p)~Xo4J7$C(B$(umn;3}Vy*vC*!fTD`wNrj zN*Eg(q%@3I9)SkE>mF`Zsg(iM( zIpNd{_?k(vg!eYWR|r2P{Np(?|IbpgcVk&QOUd4?du^7Iy;~ublD!Mx>B&;Eca_%J zEG2ta0;&Kddsn>OW+~abN^lq@dlwdCvy|*zMO8LS$=-$C`&ml%u0m)Kl8TVwDcQS%i)@yXy(@sbpk(jzC)+F~dzXQl zL&@HS?-gVz*}K#Po26v$OyOjd?48M}HcQFgS&s8kvUirDzU!Tk?<~b7E+tJsx4DEg z-et2Fla{pD>^f3>uPA#FX;Hn+UPy{X>Ffohg`nq?MsaWFkw#GUb4jHg&LIuYw%N6$ z7L{B>8bb4}CJpx4>?+bgo6Vk0itjdLSCSgs#aX0!qRp-#RV!_FxuYG}4Vzs?T7=s? zlQg#2W|xu{;@*~!MseQ7q!D!YBGLk!_YBf7YPOKn;=&6^LpZ~H(je|)fHZ*Sn@8%S zyXTU^K{Y#vR9D;VY*IDOW@kCtUXA+BB&`~-*%_pjXWHy^(uy9Nokp5McTXk77aFot zNXt=RGHDs;B+^pouMrO{^!`UeXx||*t2~q zX>;t^@xi#wv1i9)<93ccJ02@hIri*$e91S*o*l2tY>quUUZre~J==?Y_iFE&l* z*t5NOOmghmUif9_*t5M*6Laj@UW+rZXM3S*<=C^mQXTeeZvZD_&-VIAWzY6vf{pHmy7SCJ{sl{RANU`rd*G(EMwYe_R019-HVozVLgVdm@+ex9;=GsW%Oq6SNbX+km z(LxGemRvI_EONOfQfc2tQfc1?Qf$M^)sw7UQrmDL$~Av!pSU4Ura3 zw7DQD_HE_@q?q95eA0sPHfKn~T{fpl@oj^gA`Q*7IgeDPhBuG~Afc}(_1*sewdw=j zsrL1$FT$H+I$R{q(989jXWrAN?!&IWZ{zE}r`Yp&pE%hz?igzh0o!f1T6l{MR~AlL^ZRn+ZdN&k}y?Ks)6%p`F<=p`HGpFiuZR7-zOh zm`7Ym<0c{r-)-_Mb#6=ib&pbKb}IFpxvbQCyOb{VoLQ^Xd(6d@t8%HTV{8gxIbjRI z&3a1J=NS8)1MQU8QtfP`rP`_brN-S{sd2WiQu9Ms(zrQCsqeP#l{wET{sKwaZpkn6 zZX&#c;A~@M-p^bNpT?3Rs-7^Fu!3+I!A)?=)aM!dy#wv;xJ-YPF{kR68FzDK#?9W! z%%d*Pxamci@4R@+o%0rdC8d0iY8|3@j=XF;JErDUH4 zOVlVO`%I}XCHqW2VMi(1XG(o3*=J%_FiOcj6P3(Svd@6KY>twB2G*x?*Eu0SL$r-+ zN#QP=yM`2>z{*|i=yW)m=B^@*Vz|7L6yG4t9U{dZ`P@NLe3>kFfK-%;{iIkv&Fv!< zWnwQW?jm;uDZF=cdq`ml%O;+0Mrz8$ z{x?gn^N#+G=kaTH_|oU5r`PQ8wf_IkmptLSvCjO^JZ2s@zc+t5J)HlqZ2=j0tp5^$ zkpE)F4luUgfp(*DNIRQX$aJ_wb3VZ-Eg^G|F*p8(j5|xnyorhT5xznAl>^@m<{{r% z+(Q01Cb|_g{CEy*Wc(>H{(zdjPO`1{8p5Xu|3Pr0sZ|LVQ(c64gbN6V2rnl%h0H2v zJhaMb1y(sro7LC4BAO-j-Hf^6-fE|bS<~qf4Nq;HR%8vYU|b_w^JW&gpYTn>;|_dH zs3r6e+|Q|n!*bvJAvOMdT=;s)4tuYa_kWr`;63}_={WV9uMfZj@L7G0_kZnEfBMFr zsRiWO3;Hi|;N4634#BDYK~>^n$_a#^n#0(61Sdg)>Sc_%X-`nSi!nEg3928vn7*38 zlG?qULG7j|LH&fwGwlSP+H7KsS1@iu5;Ux*aj$I9I1v#vUuVf*I`G}>Cg@i))=ij6 zSVC}Wd(d}6E$Hu)7cvxbp>w(jt#{l>iI8`f924?BMffhk%{f9U?qbRbi;$Yj7)2(3 z#U`ZgWa8@y?3VJ4OGGnrlzG|Noh~@^t>`7C7Ak|6B{$QQAxg$}#h! z&2*rw%8t@zI#60 Date: Sun, 13 Mar 2011 20:45:46 +0100 Subject: [PATCH 002/190] filled tables language, testament_reference, webbibles, download_source in bibles_resources.sqlite with data and extend tables book_reference and chapters add method reload_spelling() in manager.py add class SpellingDB and extend class BiblesResourcesDB --- openlp/plugins/bibles/lib/db.py | 198 ++++++++++++++++-- openlp/plugins/bibles/lib/manager.py | 22 +- .../bibles/resources/bibles_resources.sqlite | Bin 63488 -> 63488 bytes 3 files changed, 205 insertions(+), 15 deletions(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index a1c8fb9a1..3eb7c3af1 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -69,6 +69,12 @@ class Verse(BaseModel): """ pass +class Spelling(BaseModel): + """ + Spelling model + """ + pass + def init_schema(url): """ @@ -123,6 +129,29 @@ def init_schema(url): metadata.create_all(checkfirst=True) return session +def init_schema_spelling_extension(url): + """ + Setup a spelling database connection and initialise the database schema. + + ``url`` + The database to setup. + """ + session, metadata = init_db(url) + + spelling_table = Table(u'spelling', metadata, + Column(u'id', types.Integer, primary_key=True), + Column(u'book_reference_id', types.Integer), + Column(u'language_id', types.Integer), + Column(u'name', types.Unicode(50), index=True), + ) + + try: + class_mapper(Spelling) + except UnmappedClassError: + mapper(Spelling, spelling_table) + + metadata.create_all(checkfirst=True) + return session class BibleDB(QtCore.QObject, Manager): """ @@ -592,7 +621,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager): @staticmethod def get_download_source(source): """ - Return a download_source by source. + Return a download_source_id by source. ``name`` The name or abbreviation of the book. @@ -600,8 +629,6 @@ class BiblesResourcesDB(QtCore.QObject, Manager): if not isinstance(source, unicode): source = unicode(source) source = source.title() - #source = source.lower() - log.debug(u'Test: %s' % source) dl_source = BiblesResourcesDB.run_sql(u'SELECT id, source FROM ' u'download_source WHERE source = ?', (source.lower(),)) if dl_source: @@ -615,7 +642,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager): @staticmethod def get_webbibles(source): """ - Return the chapter details for a specific chapter of a book. + Return the bibles a webbible provide for download. ``name`` The name of the webbible. @@ -626,13 +653,156 @@ class BiblesResourcesDB(QtCore.QObject, Manager): bibles = BiblesResourcesDB.run_sql(u'SELECT id, name, abbreviation, ' u'language_id, download_source_id FROM webbibles WHERE ' u'download_source_id = ?', (source[u'id'],)) - bibles_temp = [] - for bible in bibles: - bibles_temp.append({ - u'id': bible[0], - u'name': bible[1], - u'abbreviation': bible[2], - u'language_id': bible[3], - u'download_source_id': bible[4] - }) - return bibles_temp + if bibles: + bibles_temp = [] + for bible in bibles: + bibles_temp.append({ + u'id': bible[0], + u'name': bible[1], + u'abbreviation': bible[2], + u'language_id': bible[3], + u'download_source_id': bible[4] + }) + return bibles_temp + else: + return None + + @staticmethod + def get_spelling(name, language_id=None): + """ + Return a book_reference_id if the name matches. + """ + if language_id: + id = BiblesResourcesDB.run_sql(u'SELECT book_reference_id ' + u'FROM spelling WHERE name = ? and language_id = ? ORDER BY id', + (name, language_id)) + else: + id = BiblesResourcesDB.run_sql(u'SELECT book_reference_id ' + u'FROM spelling WHERE name = ? ORDER BY id', (name, )) + if id: + return int(id[0][0]) + else: + return None + + @staticmethod + def get_language(name): + """ + Return a dict containing the language id, name and code by name or + abbreviation. + + ``name`` + The name or abbreviation of the language. + """ + if not isinstance(name, unicode): + name = unicode(name) + name = name.title() + language = BiblesResourcesDB.run_sql(u'SELECT id, name, code FROM ' + u'language WHERE name = ? OR code = ?', (name, name.lower())) + if language: + return { + u'id': language[0][0], + u'name': unicode(language[0][1]), + u'code': unicode(language[0][2]) + } + else: + return None + + @staticmethod + def get_testament_reference(): + """ + Return a list of all testaments and their id of the Bible. + """ + testaments = BiblesResourcesDB.run_sql(u'SELECT id, name FROM ' + u'testament_reference ORDER BY id') + testament_list = [] + for testament in testaments: + testament_list.append({ + u'id': testament[0], + u'name': unicode(testament[1]) + }) + return testament_list + +class SpellingDB(QtCore.QObject, Manager): + """ + This class represents a database-bound spelling. + """ + + def __init__(self, parent, **kwargs): + """ + The constructor loads up the database and creates and initialises the + tables if the database doesn't exist. + + **Required keyword arguments:** + + ``path`` + The path to the bible database file. + + ``name`` + The name of the database. This is also used as the file name for + SQLite databases. + """ + log.info(u'SpellingDB loaded') + QtCore.QObject.__init__(self) + self.bible_plugin = parent + if u'path' not in kwargs: + raise KeyError(u'Missing keyword argument "path".') + self.stop_import_flag = False + self.name = u'spelling_extension.sqlite' + if not isinstance(self.name, unicode): + self.name = unicode(self.name, u'utf-8') + self.file = self.name + Manager.__init__(self, u'bibles/resources', + init_schema_spelling_extension, self.file) + self.wizard = None + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'openlp_stop_wizard'), self.stop_import) + + def stop_import(self): + """ + Stops the import of the Bible. + """ + log.debug(u'Stopping import') + self.stop_import_flag = True + + def get_book_reference_id(self, name, language=None): + """ + Return the book_reference_id of a name. + + ``name`` + The name to search the id. + + ``language`` + The language for which should be searched + """ + log.debug(u'SpellingDB.get_book_reference_id("%s")', name) + if language: + id = self.session.query(Spelling.book_reference_id)\ + .filter(Spelling.name.like(name))\ + .filter(Spelling.language_id.like(language)).first() + else: + id = self.get_object_filtered(Spelling.book_reference_id, + Spelling.name.like(name)) + if not id: + return None + else: + return id + + def create_spelling(self, name, book_reference_id, language_id): + """ + Add a spelling to the database. + + ``name`` + The name of the spelling. + + ``book_reference_id`` + The book_reference_id of the book. + + ``language_id`` + The language which the spelling of the book name is. + """ + log.debug(u'create_spelling %s, book_reference_id:%s, language_id:%s', + name, book_reference_id, language_id) + spelling = Spelling.populate(name=name, + book_reference_id=book_reference_id, language_id=language_id) + self.save_object(spelling) + return spelling diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index dcbad3e63..46dc0ce3b 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -31,7 +31,8 @@ from PyQt4 import QtCore from openlp.core.lib import Receiver, SettingsManager, translate from openlp.core.utils import AppLocation from openlp.plugins.bibles.lib import parse_reference -from openlp.plugins.bibles.lib.db import BibleDB, BibleMeta +from openlp.plugins.bibles.lib.db import BibleDB, BibleMeta, SpellingDB, \ + Spelling, BiblesResourcesDB from csvbible import CSVBible from http import HTTPBible @@ -129,6 +130,7 @@ class BibleManager(object): self.suffix = u'.sqlite' self.import_wizard = None self.reload_bibles() + self.reload_spelling() self.media = None def reload_bibles(self): @@ -162,6 +164,24 @@ class BibleManager(object): self.db_cache[name] = web_bible log.debug(u'Bibles reloaded') + def reload_spelling(self): + """ + Reloads the Spelling from the Spelling table and spelling_extension + database on disk. + """ + log.debug(u'Reload spelling') + self.spelling_cache = {} + self.spelling_cache[u'spelling'] = SpellingDB(self.parent, + path=self.path) + #db_spelling = self.spelling_cache[u'spelling'].get_book_reference_id(u'Markus', 40) + #db_spelling = BiblesResourcesDB.get_spelling(u'1.Mose', 30) + #db_spelling = BiblesResourcesDB.get_language(u'de') + #db_spelling = BiblesResourcesDB.get_books() + #db_spelling = BiblesResourcesDB.get_testament_reference() + #db_spelling = self.spelling_cache[u'spelling'] .create_spelling(u'Johannes', 43, 40) + #log.debug(u'Spellings: %s' % db_spelling) + log.debug(u'Spelling reloaded') + def set_process_dialog(self, wizard): """ Sets the reference to the dialog with the progress bar on it. diff --git a/openlp/plugins/bibles/resources/bibles_resources.sqlite b/openlp/plugins/bibles/resources/bibles_resources.sqlite index bcb45b8015c5cb6855a3c2d6c0aa821ce2324151..3049657ecce5196e97303df41161553b81f203f1 100644 GIT binary patch delta 116 zcmZqpz})bGd4e=!!bBNo#)ORtOV|b2m|Yl{?=c@|Ud-IZ9L4OiS&_qlSz3gRS(mYx zp@1QkAqNOE8S)s?85p%#nIjn|J9w*YZso3zU}I!{&A|M6v!KXBW)WdVRt82!RYna% U20aE}hJ1!%hSbgf(-|iK0MDizRsaA1 delta 64 zcmV-G0Kfl$@B@JG1CSd5Uy&R`0bj9Tqz4WK16lwB-UG)2qXUWqTC*_>NCO2b1p`?D WlR!%*vxN(PShECpqXe_3XjzYlF%(k( From 1c59fd656f73a4cf01e35547a8be950b2d9204c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Thu, 17 Mar 2011 19:36:54 +0100 Subject: [PATCH 003/190] add download of all books a webbible contains add dialog while the import of a webbible if the book could not be assign to a reference_book add dialog while tho import of a webbible if the language is unknown change the bible database --- openlp/plugins/bibles/forms/__init__.py | 1 + .../bibles/forms/bibleimportrequestdialog.py | 95 ++++++++++ .../bibles/forms/bibleimportrequestform.py | 82 +++++++++ openlp/plugins/bibles/lib/csvbible.py | 3 + openlp/plugins/bibles/lib/db.py | 127 +++++++++++--- openlp/plugins/bibles/lib/http.py | 163 ++++++++++++++++-- openlp/plugins/bibles/lib/manager.py | 66 ++++++- openlp/plugins/bibles/lib/mediaitem.py | 6 + openlp/plugins/bibles/lib/openlp1.py | 3 + openlp/plugins/bibles/lib/opensong.py | 3 + openlp/plugins/bibles/lib/osis.py | 3 + .../bibles/resources/bibles_resources.sqlite | Bin 63488 -> 63488 bytes 12 files changed, 504 insertions(+), 48 deletions(-) create mode 100644 openlp/plugins/bibles/forms/bibleimportrequestdialog.py create mode 100644 openlp/plugins/bibles/forms/bibleimportrequestform.py diff --git a/openlp/plugins/bibles/forms/__init__.py b/openlp/plugins/bibles/forms/__init__.py index 15f14de9e..d0966c7ce 100644 --- a/openlp/plugins/bibles/forms/__init__.py +++ b/openlp/plugins/bibles/forms/__init__.py @@ -52,5 +52,6 @@ from the .ui files later if necessary. """ from bibleimportform import BibleImportForm +from bibleimportrequestform import BibleImportRequest __all__ = ['BibleImportForm'] diff --git a/openlp/plugins/bibles/forms/bibleimportrequestdialog.py b/openlp/plugins/bibles/forms/bibleimportrequestdialog.py new file mode 100644 index 000000000..d58c1df9f --- /dev/null +++ b/openlp/plugins/bibles/forms/bibleimportrequestdialog.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2011 Raoul Snyman # +# Portions copyright (c) 2008-2011 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 # +# --------------------------------------------------------------------------- # +# 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 the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + +from PyQt4 import QtCore, QtGui + +from openlp.core.lib import translate +from openlp.core.lib.ui import create_accept_reject_button_box + +class Ui_BibleImportRequest(object): + def setupUi(self, bibleImportRequest): + bibleImportRequest.setObjectName("BibleImportRequest") + bibleImportRequest.resize(400, 175) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, + QtGui.QSizePolicy.MinimumExpanding) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(bibleImportRequest.sizePolicy() + .hasHeightForWidth()) + bibleImportRequest.setSizePolicy(sizePolicy) + self.widget = QtGui.QWidget(bibleImportRequest) + self.widget.setGeometry(QtCore.QRect(10, 15, 381, 151)) + self.widget.setObjectName("widget") + self.verticalLayout = QtGui.QVBoxLayout(self.widget) + self.verticalLayout.setObjectName("verticalLayout") + self.headlineLabel = QtGui.QLabel(self.widget) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(11) + font.setWeight(75) + font.setBold(True) + self.headlineLabel.setFont(font) + self.headlineLabel.setObjectName("HeadlineLabel") + self.verticalLayout.addWidget(self.HeadlineLabel) + self.infoLabel = QtGui.QLabel(self.widget) + self.infoLabel.setObjectName("InfoLabel") + self.verticalLayout.addWidget(self.infoLabel) + self.formLayout = QtGui.QFormLayout() + self.formLayout.setObjectName("formLayout") + self.requestLabel = QtGui.QLabel(self.widget) + self.requestLabel.setObjectName("RequestLabel") + self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, + self.requestLabel) + self.requestComboBox = QtGui.QComboBox(self.widget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, + QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.requestComboBox.sizePolicy() + .hasHeightForWidth()) + self.requestComboBox.setSizePolicy(sizePolicy) + self.requestComboBox.setObjectName("RequestComboBox") + self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, + self.requestComboBox) + self.verticalLayout.addLayout(self.formLayout) + spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, + QtGui.QSizePolicy.Expanding) + self.verticalLayout.addItem(spacerItem) + self.formLayout.addWidget( + create_accept_reject_button_box(bibleImportRequest)) + self.retranslateUi(bibleImportRequest) + QtCore.QMetaObject.connectSlotsByName(bibleImportRequest) + + def retranslateUi(self, bibleImportRequest): + bibleImportRequest.setWindowTitle( + translate("BiblesPlugin.bibleImportRequest", "Dialog")) + self.headlineLabel.setText( + translate("BiblesPlugin.bibleImportRequest", "Choose Book:")) + self.infoLabel.setText(translate("BiblesPlugin.bibleImportRequest", + "The following books cannot be clearly attributed. \n" + "Please choose the book it is.")) + self.requestLabel.setText(translate("BiblesPlugin.bibleImportRequest", + "Book:")) diff --git a/openlp/plugins/bibles/forms/bibleimportrequestform.py b/openlp/plugins/bibles/forms/bibleimportrequestform.py new file mode 100644 index 000000000..caac8e83b --- /dev/null +++ b/openlp/plugins/bibles/forms/bibleimportrequestform.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2011 Raoul Snyman # +# Portions copyright (c) 2008-2011 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 # +# --------------------------------------------------------------------------- # +# 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 the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + +""" +Module implementing BibleImportRequest. +""" +import logging + +from PyQt4.QtGui import QDialog + +from openlp.core.lib import translate +from openlp.core.lib.ui import critical_error_message_box +from openlp.plugins.bibles.forms.bibleimportrequestdialog import \ + Ui_BibleImportRequest +from openlp.plugins.bibles.lib.db import BiblesResourcesDB + +log = logging.getLogger(__name__) + +class BibleImportRequest(QDialog, Ui_BibleImportRequest): + """ + Class documentation goes here. + """ + log.info(u'BibleImportRequest loaded') + + def __init__(self, parent = None): + """ + Constructor + """ + QDialog.__init__(self, parent) + self.setupUi(self) + + def exec_(self, case, name=None): + items = [] + self.requestComboBox.addItem(u'') + if case == u'language': + self.headlineLabel.setText(translate( + "BiblesPlugin.BibleImportRequest", "Choose Language:")) + self.infoLabel.setText(translate("BiblesPlugin.BibleImportRequest", + "Please choose the language the bible is.")) + self.requestLabel.setText( + translate("BiblesPlugin.BibleImportRequest", "Language:")) + items = BiblesResourcesDB.get_languages() + elif case == u'book': + self.requestLabel.setText( + translate("BiblesPlugin.BibleImportRequest", name)) + items = BiblesResourcesDB.get_books() + for item in items: + self.requestComboBox.addItem(item[u'name']) + return QDialog.exec_(self) + + def accept(self): + if self.requestComboBox.currentText() == u"": + critical_error_message_box( + message=translate('BiblesPlugin.BibleImportRequest', + 'You need to choose an item.')) + self.requestComboBox.setFocus() + return False + else: + return QDialog.accept(self) diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index b96382df2..b5644db81 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -135,6 +135,7 @@ class CSVBible(BibleDB): self.wizard.progressBar.setMinimum(0) self.wizard.progressBar.setMaximum(66) success = True + #TODO: include create_meta language books_file = None book_list = {} # Populate the Tables @@ -148,6 +149,8 @@ class CSVBible(BibleDB): self.wizard.incrementProgressBar(unicode( translate('BibleDB.Wizard', 'Importing books... %s')) % unicode(line[2], details['encoding'])) + #TODO: change create_book to the new database model + #(name, bk_ref_id, testament) self.create_book(unicode(line[2], details['encoding']), unicode(line[3], details['encoding']), int(line[1])) book_list[int(line[0])] = unicode(line[2], details['encoding']) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 3eb7c3af1..68edc55ef 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -95,9 +95,9 @@ def init_schema(url): ) book_table = Table(u'book', metadata, Column(u'id', types.Integer, primary_key=True), - Column(u'testament_id', types.Integer, ForeignKey(u'testament.id')), + Column(u'book_reference_id', types.Integer), + Column(u'testament_reference_id', types.Integer), Column(u'name', types.Unicode(50), index=True), - Column(u'abbreviation', types.Unicode(5), index=True), ) verse_table = Table(u'verse', metadata, Column(u'id', types.Integer, primary_key=True, index=True), @@ -114,8 +114,7 @@ def init_schema(url): try: class_mapper(Testament) except UnmappedClassError: - mapper(Testament, testament_table, - properties={'books': relation(Book, backref='testament')}) + mapper(Testament, testament_table) try: class_mapper(Book) except UnmappedClassError: @@ -251,22 +250,23 @@ class BibleDB(QtCore.QObject, Manager): self.save_object(Testament.populate(name=u'New Testament')) self.save_object(Testament.populate(name=u'Apocrypha')) - def create_book(self, name, abbrev, testament=1): + def create_book(self, name, bk_ref_id, testament=1): """ Add a book to the database. ``name`` The name of the book. - ``abbrev`` - The abbreviation of the book. + ``bk_ref_id`` + The book_reference_id from bibles_resources.sqlite of the book. ``testament`` - *Defaults to 1.* The id of the testament this book belongs to. + *Defaults to 1.* The testament_reference_id from + bibles_resources.sqlite of the testament this book belongs to. """ - log.debug(u'create_book %s,%s', name, abbrev) - book = Book.populate(name=name, abbreviation=abbrev, - testament_id=testament) + log.debug(u'create_book %s,%s', name, bk_ref_id) + book = Book.populate(name=name, book_reference_id=bk_ref_id, + testament_reference_id=testament) self.save_object(book) return book @@ -334,6 +334,8 @@ class BibleDB(QtCore.QObject, Manager): ``value`` The value for this instance. """ + if not isinstance(value, unicode): + value = unicode(value) log.debug(u'save_meta %s/%s', key, value) self.save_object(BibleMeta.populate(key=key, value=value)) @@ -346,9 +348,6 @@ class BibleDB(QtCore.QObject, Manager): """ log.debug(u'BibleDb.get_book("%s")', book) db_book = self.get_object_filtered(Book, Book.name.like(book + u'%')) - if db_book is None: - db_book = self.get_object_filtered(Book, - Book.abbreviation.like(book + u'%')) return db_book def get_books(self): @@ -358,7 +357,7 @@ class BibleDB(QtCore.QObject, Manager): """ return self.get_all_objects(Book, order_by_ref=Book.id) - def get_verses(self, reference_list): + def get_verses(self, reference_list, en_reference_list): """ This is probably the most used function. It retrieves the list of verses based on the user's query. @@ -376,15 +375,18 @@ class BibleDB(QtCore.QObject, Manager): [(u'Genesis', 1, 1, 1), (u'Genesis', 2, 2, 3)] """ - log.debug(u'BibleDB.get_verses: %s', reference_list) + log.debug(u'BibleDB.get_verses: %s - %s', reference_list, + en_reference_list) verse_list = [] - for book, chapter, start_verse, end_verse in reference_list: + for (book, chapter, start_verse, end_verse), (en_book, en_chapter, + en_start_verse, en_end_verse) in zip(reference_list, + en_reference_list): db_book = self.get_book(book) if db_book: book = db_book.name log.debug(u'Book name corrected to "%s"', book) if end_verse == -1: - end_verse = self.get_verse_count(book, chapter) + end_verse = self.get_verse_count(en_book, chapter) verses = self.session.query(Verse)\ .filter_by(book_id=db_book.id)\ .filter_by(chapter=chapter)\ @@ -545,9 +547,9 @@ class BiblesResourcesDB(QtCore.QObject, Manager): ``name`` The name or abbreviation of the book. """ + log.debug(u'get_book: %s', name) if not isinstance(name, unicode): name = unicode(name) - name = name.title() books = BiblesResourcesDB.run_sql(u'SELECT id, testament_id, name, ' u'abbreviation, chapters FROM book_reference WHERE name = ? OR ' u'abbreviation = ?', (name, name)) @@ -562,6 +564,30 @@ class BiblesResourcesDB(QtCore.QObject, Manager): else: return None + @staticmethod + def get_book_by_id(id): + """ + Return a book by id. + + ``id`` + The id of the book. + """ + if not isinstance(id, int): + id = int(id) + books = BiblesResourcesDB.run_sql(u'SELECT id, testament_id, name, ' + u'abbreviation, chapters FROM book_reference WHERE id = ?', + (id, )) + if books: + return { + u'id': books[0][0], + u'testament_id': books[0][1], + u'name': unicode(books[0][2]), + u'abbreviation': unicode(books[0][3]), + u'chapters': books[0][4] + } + else: + return None + @staticmethod def get_chapter(name, chapter): """ @@ -644,8 +670,8 @@ class BiblesResourcesDB(QtCore.QObject, Manager): """ Return the bibles a webbible provide for download. - ``name`` - The name of the webbible. + ``source`` + The source of the webbible. """ if not isinstance(source, unicode): source = unicode(source) @@ -668,7 +694,39 @@ class BiblesResourcesDB(QtCore.QObject, Manager): return None @staticmethod - def get_spelling(name, language_id=None): + def get_webbible(abbreviation, source): + """ + Return the bibles a webbible provide for download. + + ``abbreviation`` + The abbreviation of the webbible. + + ``source`` + The source of the webbible. + """ + if not isinstance(abbreviation, unicode): + abbreviation = unicode(abbreviation) + if not isinstance(source, unicode): + source = unicode(source) + source = BiblesResourcesDB.get_download_source(source) + bible = BiblesResourcesDB.run_sql(u'SELECT id, name, abbreviation, ' + u'language_id, download_source_id FROM webbibles WHERE ' + u'download_source_id = ? AND abbreviation = ?', (source[u'id'], + abbreviation)) + if bible: + bibles_temp = { + u'id': bible[0][0], + u'name': bible[0][1], + u'abbreviation': bible[0][2], + u'language_id': bible[0][3], + u'download_source_id': bible[0][4] + } + return bibles_temp + else: + return None + + @staticmethod + def get_spelling(name, language_id=None): """ Return a book_reference_id if the name matches. """ @@ -678,7 +736,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager): (name, language_id)) else: id = BiblesResourcesDB.run_sql(u'SELECT book_reference_id ' - u'FROM spelling WHERE name = ? ORDER BY id', (name, )) + u'FROM spelling WHERE name = ? ORDER BY id', (name, )) if id: return int(id[0][0]) else: @@ -707,6 +765,25 @@ class BiblesResourcesDB(QtCore.QObject, Manager): else: return None + @staticmethod + def get_languages(): + """ + Return a dict containing all languages with id, name and code. + """ + languages = BiblesResourcesDB.run_sql(u'SELECT id, name, code FROM ' + u'language ORDER by name') + if languages: + languages_temp = [] + for language in languages: + languages_temp.append({ + u'id': language[0], + u'name': unicode(language[1]), + u'code': unicode(language[2]) + }) + return languages_temp + else: + return None + @staticmethod def get_testament_reference(): """ @@ -766,7 +843,7 @@ class SpellingDB(QtCore.QObject, Manager): def get_book_reference_id(self, name, language=None): """ - Return the book_reference_id of a name. + Return the book_reference_id of a book by name. ``name`` The name to search the id. @@ -785,7 +862,7 @@ class SpellingDB(QtCore.QObject, Manager): if not id: return None else: - return id + return id[0] def create_spelling(self, name, book_reference_id, language_id): """ diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index d2202909c..29c86e0bd 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -41,7 +41,8 @@ from openlp.core.lib import Receiver, translate from openlp.core.lib.ui import critical_error_message_box from openlp.core.utils import AppLocation, get_web_page from openlp.plugins.bibles.lib import SearchResults -from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB, Book +from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB, \ + SpellingDB, Book log = logging.getLogger(__name__) @@ -123,6 +124,52 @@ class BGExtract(object): return None return SearchResults(bookname, chapter, verse_list) + def get_books_from_http(self, version): + """ + Load a list of all books a bible contaions from BibleGateway website. + + ``version`` + The version of the bible like NIV for New International Version + """ + log.debug(u'get_books_from_http %s', version) + url_params = urllib.urlencode( + {u'search': 'Bible-List', u'version': u'%s' % version}) + reference_url = u'http://www.biblegateway.com/passage/?%s' % url_params + page = get_web_page(reference_url) + if not page: + send_error_message(u'download') + return None + page_source = page.read() + page_source = unicode(page_source, 'utf8') + page_source_temp = re.search(u'.*?
', \ + page_source, re.DOTALL) + if page_source_temp: + soup = page_source_temp.group(0) + else: + soup = None + try: + soup = BeautifulSoup(soup) + except HTMLParseError: + log.exception(u'BeautifulSoup could not parse the bible page.') + if not soup: + send_error_message(u'parse') + return None + Receiver.send_message(u'openlp_process_events') + content = soup.find(u'table', {u'id': u'booklist'}) + content = content.findAll(u'tr') + #log.debug(content) + if not content: + log.exception(u'No books found in the Biblegateway response.') + send_error_message(u'parse') + return None + books = [] + for book in content: + book = book.find(u'td') + if book: + books.append(book.contents[0]) + log.debug(book.contents[0]) + return books + class BSExtract(object): """ @@ -168,6 +215,31 @@ class BSExtract(object): verses[versenumber] = verse.contents[1].rstrip(u'\n') return SearchResults(bookname, chapter, verses) + def get_books_from_http(self, version): + """ + Load a list of all books a bible contains from Bibleserver mobile + website. + + ``version`` + The version of the bible like NIV for New International Version + """ + log.debug(u'get_books_from_http %s', version) + chapter_url = u'http://m.bibleserver.com/overlay/selectBook?'\ + 'translation=%s' % (version) + soup = get_soup_for_bible_ref(chapter_url) + if not soup: + return None + content = soup.find(u'ul') + if not content: + log.exception(u'No books found in the Bibleserver response.') + send_error_message(u'parse') + return None + content = content.findAll(u'li') + books = [] + for book in content: + books.append(book.contents[0].contents[0]) + return books + class CWExtract(object): """ @@ -237,6 +309,33 @@ class CWExtract(object): verses[versenumber] = versetext return SearchResults(bookname, chapter, verses) + def get_books_from_http(self, version): + """ + Load a list of all books a bible contain from the Crosswalk website. + + ``version`` + The version of the bible like NIV for New International Version + """ + log.debug(u'get_books_from_http %s', version) + chapter_url = u'http://www.biblestudytools.com/%s/'\ + % (version) + soup = get_soup_for_bible_ref(chapter_url) + if not soup: + return None + content = soup.find(u'div', {u'class': u'Body'}) + content = content.find(u'ul', {u'class': u'parent'}) + if not content: + log.exception(u'No books found in the Crosswalk response.') + send_error_message(u'parse') + return None + content = content.findAll(u'li') + books = [] + for book in content: + book = book.find(u'a') + books.append(book.contents[0]) + log.debug(book.contents[0]) + return books + class HTTPBible(BibleDB): log.info(u'%s HTTPBible loaded' , __name__) @@ -252,6 +351,7 @@ class HTTPBible(BibleDB): Init confirms the bible exists and stores the database path. """ BibleDB.__init__(self, parent, **kwargs) + self.parent = parent self.download_source = kwargs[u'download_source'] self.download_name = kwargs[u'download_name'] # TODO: Clean up proxy stuff. We probably want one global proxy per @@ -259,6 +359,8 @@ class HTTPBible(BibleDB): self.proxy_server = None self.proxy_username = None self.proxy_password = None + if u'path' in kwargs: + self.path = kwargs[u'path'] if u'proxy_server' in kwargs: self.proxy_server = kwargs[u'proxy_server'] if u'proxy_username' in kwargs: @@ -283,9 +385,37 @@ class HTTPBible(BibleDB): if self.proxy_password: # Store the proxy password. self.create_meta(u'proxy password', self.proxy_password) + if self.download_source.lower() == u'crosswalk': + handler = CWExtract(self.proxy_server) + elif self.download_source.lower() == u'biblegateway': + handler = BGExtract(self.proxy_server) + elif self.download_source.lower() == u'bibleserver': + handler = BSExtract(self.proxy_server) + books = handler.get_books_from_http(self.download_name) + if not books: + log.exception(u'Importing books from %s - download name: "%s" '\ + 'failed' % (self.download_source, self.download_name)) + return False + bible = BiblesResourcesDB.get_webbible(self.download_name, + self.download_source.lower()) + if bible[u'language_id']: + language_id = bible[u'language_id'] + else: + language = self.parent.mediaItem.importRequest(u'language') + language = BiblesResourcesDB.get_language(language) + language_id = language[u'id'] + # Store the language_id. + self.create_meta(u'language_id', language_id) + for book in books: + book_ref_id = self.parent.manager.get_book_ref_id_by_name(book, + language_id) + book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) + log.debug(u'Book details: Name:%s; id:%s; testament_id:%s', + book, book_ref_id, book_details[u'testament_id']) + self.create_book(book, book_ref_id, book_details[u'testament_id']) return True - def get_verses(self, reference_list): + def get_verses(self, reference_list, en_reference_list): """ A reimplementation of the ``BibleDB.get_verses`` method, this one is specifically for web Bibles. It first checks to see if the particular @@ -298,6 +428,13 @@ class HTTPBible(BibleDB): a list of tuples, with the following format:: (book, chapter, start_verse, end_verse) + + ``en_reference_list`` + This is the list of references the media manager item wants. It is + a list of tuples, with the following format with englisch book + names:: + + (book, chapter, start_verse, end_verse) Therefore, when you are looking for multiple items, simply break them up into references like this, bundle them into a list. This @@ -311,17 +448,12 @@ class HTTPBible(BibleDB): book = reference[0] db_book = self.get_book(book) if not db_book: - book_details = BiblesResourcesDB.get_book(book) - if not book_details: - critical_error_message_box( - translate('BiblesPlugin', 'No Book Found'), - translate('BiblesPlugin', 'No matching ' - 'book could be found in this Bible. Check that you ' - 'have spelled the name of the book correctly.')) - return [] - db_book = self.create_book(book_details[u'name'], - book_details[u'abbreviation'], - book_details[u'testament_id']) + critical_error_message_box( + translate('BiblesPlugin', 'No Book Found'), + translate('BiblesPlugin', 'No matching ' + 'book could be found in this Bible. Check that you ' + 'have spelled the name of the book correctly.')) + return [] book = db_book.name if BibleDB.get_verse_count(self, book, reference[1]) == 0: Receiver.send_message(u'cursor_busy') @@ -340,7 +472,7 @@ class HTTPBible(BibleDB): Receiver.send_message(u'openlp_process_events') Receiver.send_message(u'cursor_normal') Receiver.send_message(u'openlp_process_events') - return BibleDB.get_verses(self, reference_list) + return BibleDB.get_verses(self, reference_list, en_reference_list) def get_chapter(self, book, chapter): """ @@ -360,8 +492,7 @@ class HTTPBible(BibleDB): """ Return the list of books. """ - return [Book.populate(name=book['name']) - for book in BiblesResourcesDB.get_books()] + return self.get_all_objects(Book, order_by_ref=Book.id) def get_chapter_count(self, book): """ diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 6a12c3877..de66c38e0 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -220,19 +220,28 @@ class BibleManager(object): Unicode. The Bible to get the list of books from. """ log.debug(u'BibleManager.get_books("%s")', bible) - return [ + language_id = self.get_meta_data(bible, u'language_id') + books = [] + for book in self.db_cache[bible].get_books(): + book_id = self.get_book_ref_id_by_name(book.name, int( + language_id.value)) + book_temp = BiblesResourcesDB.get_book_by_id(book_id) + book_ref = book_temp[u'name'] + books.append( { u'name': book.name, - u'chapters': self.db_cache[bible].get_chapter_count(book.name) - } - for book in self.db_cache[bible].get_books() - ] + u'chapters': self.db_cache[bible].get_chapter_count(book_ref) + }) + return books def get_chapter_count(self, bible, book): """ Returns the number of Chapters for a given book. """ - log.debug(u'get_book_chapter_count %s', book) + log.debug(u'BibleManager.get_book_chapter_count ("%s", "%s")', bible, + book) + language_id = self.get_meta_data(bible, u'language_id') + book = self.get_book_ref(book, int(language_id.value)) return self.db_cache[bible].get_chapter_count(book) def get_verse_count(self, bible, book, chapter): @@ -242,6 +251,8 @@ class BibleManager(object): """ log.debug(u'BibleManager.get_verse_count("%s", "%s", %s)', bible, book, chapter) + language_id = self.get_meta_data(bible, u'language_id') + book = self.get_book_ref(book, int(language_id.value)) return self.db_cache[bible].get_verse_count(book, chapter) def get_verses(self, bible, versetext): @@ -275,7 +286,14 @@ class BibleManager(object): return None reflist = parse_reference(versetext) if reflist: - return self.db_cache[bible].get_verses(reflist) + log.debug(u'reflist:%s', reflist) + en_reflist = [] + for item in reflist: + if item: + book = self.get_book_ref(item[0]) + en_reflist.append((book, item[1], item[2], item[3])) + log.debug(u'en_reflist:%s', en_reflist) + return self.db_cache[bible].get_verses(reflist, en_reflist) else: Receiver.send_message(u'openlp_information_message', { u'title': translate('BiblesPlugin.BibleManager', @@ -293,6 +311,40 @@ class BibleManager(object): }) return None + def get_book_ref(self, book, language_id=None): + log.debug(u'BibleManager.get_book_ref("%s", "%s")', book, language_id) + book_id = self.get_book_ref_id_by_name(book, language_id) + book_temp = BiblesResourcesDB.get_book_by_id(book_id) + log.debug(u'get_book_ref - Return:%s', book_temp[u'name']) + return book_temp[u'name'] + + def get_book_ref_id_by_name(self, book, language_id=None): + log.debug(u'BibleManager.get_book_ref_id_by_name:("%s", "%s")', book, + language_id) + if BiblesResourcesDB.get_book(book): + book_temp = BiblesResourcesDB.get_book(book) + book_id = book_temp[u'id'] + elif BiblesResourcesDB.get_spelling(book, language_id): + book_id = BiblesResourcesDB.get_spelling(book, language_id) + elif self.spelling_cache[u'spelling'].get_book_reference_id(book, + language_id): + book_id = self.spelling_cache[u'spelling'].\ + get_book_reference_id(book, language_id) + else: + book_ref = self.parent.mediaItem.importRequest(u'book', book) + log.debug(book_ref) + book_temp = BiblesResourcesDB.get_book(book_ref) + log.debug(book_temp) + book_id = book_temp[u'id'] + if book_id: + self.spelling_cache[u'spelling'].create_spelling(book, book_id, + language_id) + if book_id: + log.debug(u'get_book_ref_id_by_name - Return:%s', book_id) + return book_id + else: + return None + def verse_search(self, bible, second_bible, text): """ Does a verse search for the given bible and text. diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 2b2f6597e..58fa0eec7 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -36,6 +36,7 @@ from openlp.core.lib.ui import UiStrings, add_widget_completer, \ from openlp.plugins.bibles.forms import BibleImportForm from openlp.plugins.bibles.lib import LayoutStyle, DisplayStyle, \ get_reference_match +from openlp.plugins.bibles.forms import BibleImportRequest log = logging.getLogger(__name__) @@ -286,6 +287,11 @@ class BibleMediaItem(MediaManagerItem): if self.import_wizard.exec_(): self.reloadBibles() + def importRequest(self, case, name=None): + self.import_request = BibleImportRequest(self) + if self.import_request.exec_(case, name): + return unicode(self.import_request.RequestComboBox.currentText()) + def loadBibles(self): log.debug(u'Loading Bibles') self.quickVersionComboBox.clear() diff --git a/openlp/plugins/bibles/lib/openlp1.py b/openlp/plugins/bibles/lib/openlp1.py index 2d19db20c..f0e12481a 100644 --- a/openlp/plugins/bibles/lib/openlp1.py +++ b/openlp/plugins/bibles/lib/openlp1.py @@ -56,6 +56,7 @@ class OpenLP1Bible(BibleDB): cursor = connection.cursor() except: return False + #TODO: include create_meta language # Create all books. cursor.execute(u'SELECT id, testament_id, name, abbreviation FROM book') books = cursor.fetchall() @@ -68,6 +69,8 @@ class OpenLP1Bible(BibleDB): testament_id = int(book[1]) name = unicode(book[2], u'cp1252') abbreviation = unicode(book[3], u'cp1252') + #TODO: change create_book to the new database model + #(name, bk_ref_id, testament) self.create_book(name, abbreviation, testament_id) # Update the progess bar. self.wizard.incrementProgressBar(WizardStrings.ImportingType % name) diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index a7f1eff33..62cf12eaf 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -61,9 +61,12 @@ class OpenSongBible(BibleDB): file = open(self.filename, u'r') opensong = objectify.parse(file) bible = opensong.getroot() + #TODO: include create_meta language for book in bible.b: if self.stop_import_flag: break + #TODO: change create_book to the new database model + #(name, bk_ref_id, testament) db_book = self.create_book(unicode(book.attrib[u'n']), unicode(book.attrib[u'n'][:4])) for chapter in book.c: diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index 78e2551d9..05a57bbe4 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -104,6 +104,7 @@ class OSISBible(BibleDB): finally: if detect_file: detect_file.close() + #TODO: include create_meta language with try - except scheme try: osis = codecs.open(self.filename, u'r', details['encoding']) for file_record in osis: @@ -120,6 +121,8 @@ class OSISBible(BibleDB): log.debug(u'New book: "%s"', self.books[book][0]) if book == u'Matt' or book == u'Jdt': testament += 1 + #TODO: change create_book to the new database model + #(name, bk_ref_id, testament) db_book = self.create_book( unicode(self.books[book][0]), unicode(self.books[book][1]), diff --git a/openlp/plugins/bibles/resources/bibles_resources.sqlite b/openlp/plugins/bibles/resources/bibles_resources.sqlite index 3049657ecce5196e97303df41161553b81f203f1..102fe25b7b69699a415a795bf7e13f84d392da16 100644 GIT binary patch delta 1076 zcmXw2ZERCj7=F&Z-qXV9SSiC^ww6*mGU}M?l`Wl_Q?^c4SMIRwP-4){Sm$D#QkXgz zvhxcPNo1Uur~ys<;a@dNOw1DFe`5Tg!>^dY4`m;bE%Bex%;(-|nwy?H=Xu}vd7t+^ zv+L&Ux_P-tT%2p}7Z*Pp{rE<*&|rRIK52%HMdNMbbt8j<_(v>=_e4e9hrh9anK`w$ z?jX>1Mj~$up~rr0*=hn0DMO-S>m#-H@Bj+vLo3l9B_v*M)R$^bXAVPXCYDr?$i##= z;9jU)DhJDLY3L_ZMwVd5n-Wjhx^pq*^rJ}l z8G`Y15(g+{5LLW}F`ULJyo3pOjA88da?SX;-dgl>4d5u62s&paMr{4{;=cMm3OxToiw>Qxq~zAyrBm<9U!}Tt7>Pvh*Xj6MAMf z7#_r9%;FXAQup|-zO$MRA0~5i8y#gz9BcqlM^9%EeIbjYOe;L<} z_l;+bfLIX=^LvBWL?Er=5(BpW>W_H(7^4cvu|ibEBw9G3GM`12`*w#;c=Mg%Wl1&b z>Cf|#GE4tIkuKHbOM3opI$Yu~3OGq-o7(NYBmLpsM5sh;)4Q~?_0@0o*O8D{Q4Uhr zSJrx*BCBt%e6zY&Vn3}J_V;3fdtb#XT6#nizzRUCnI|Kgk_a+ZA(rE(-&oLdMAuxpj%5bS-Q~Rxffl$y!*~O_nhy1-**;w zXmN+G*Ne%ehT~%LtI5xQX-b2>pqDA)tT-PzC8t&VBYqH9#jE03{E6>z73n1vt$0y6 z5;LBDzuXq_(T5CDh*Osm5^vV(@5;gRK6){P28t<2bTkUln!PsjK_OIVnGNkOUdre8 z?fN*55sV^_8tT5nH$8o1B?y~v9t9*Rcu(RbPZw8Wfe8+C_!aWsm1y;Z7{CJF#uU!u z9EzC3UPcae)P333`u4wCeK>`BN?ei{@ieVASNRM!gML&~+dC42TuV>=7UjMv#+*lt z(ibHzdivOEvcUucbZ~*13lbjZcFGPJmnWo;Bz;VcH3!9(IMVD*kuC47V~0y~XW{d>Y`C6g+BDl1*n# zQev#LjCFxgPg#-%c(g2650q<}pWZUe4wD+d$59 z^$gBZo2oPB)}L!Zx?4fhYX g%;y|mZlkn%!fx0%kCOY1+eTU3d0G}byA=Ze0*BQ3^Z)<= From 7a15251ffc2a8e5c27a624ec755bc3f6c945b612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Thu, 17 Mar 2011 20:40:01 +0100 Subject: [PATCH 004/190] Clean up changed create_book in cscbible, openlp1, opensong and osis --- .../bibles/forms/bibleimportrequestdialog.py | 2 +- openlp/plugins/bibles/lib/csvbible.py | 15 +- openlp/plugins/bibles/lib/mediaitem.py | 2 +- openlp/plugins/bibles/lib/openlp1.py | 16 +- openlp/plugins/bibles/lib/opensong.py | 17 ++- openlp/plugins/bibles/lib/osis.py | 16 +- resources/forms/bibleimportrequestdialog.ui | 137 ++++++++++++++++++ 7 files changed, 183 insertions(+), 22 deletions(-) create mode 100644 resources/forms/bibleimportrequestdialog.ui diff --git a/openlp/plugins/bibles/forms/bibleimportrequestdialog.py b/openlp/plugins/bibles/forms/bibleimportrequestdialog.py index d58c1df9f..7fcc36932 100644 --- a/openlp/plugins/bibles/forms/bibleimportrequestdialog.py +++ b/openlp/plugins/bibles/forms/bibleimportrequestdialog.py @@ -53,7 +53,7 @@ class Ui_BibleImportRequest(object): font.setBold(True) self.headlineLabel.setFont(font) self.headlineLabel.setObjectName("HeadlineLabel") - self.verticalLayout.addWidget(self.HeadlineLabel) + self.verticalLayout.addWidget(self.headlineLabel) self.infoLabel = QtGui.QLabel(self.widget) self.infoLabel.setObjectName("InfoLabel") self.verticalLayout.addWidget(self.infoLabel) diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index b5644db81..7d1791281 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -70,7 +70,7 @@ import chardet import csv from openlp.core.lib import Receiver, translate -from openlp.plugins.bibles.lib.db import BibleDB, Testament +from openlp.plugins.bibles.lib.db import BibleDB, Testament, BiblesResourcesDB log = logging.getLogger(__name__) @@ -86,6 +86,7 @@ class CSVBible(BibleDB): """ log.info(self.__class__.__name__) BibleDB.__init__(self, parent, **kwargs) + self.parent = parent try: self.testamentsfile = kwargs[u'testamentsfile'] except KeyError: @@ -135,7 +136,10 @@ class CSVBible(BibleDB): self.wizard.progressBar.setMinimum(0) self.wizard.progressBar.setMaximum(66) success = True - #TODO: include create_meta language + language = self.parent.mediaItem.importRequest(u'language') + language = BiblesResourcesDB.get_language(language) + language_id = language[u'id'] + self.create_meta(u'language_id', language_id) books_file = None book_list = {} # Populate the Tables @@ -149,10 +153,11 @@ class CSVBible(BibleDB): self.wizard.incrementProgressBar(unicode( translate('BibleDB.Wizard', 'Importing books... %s')) % unicode(line[2], details['encoding'])) - #TODO: change create_book to the new database model - #(name, bk_ref_id, testament) + book_ref_id = self.parent.manager.get_book_ref_id_by_name( + unicode(line[2], details['encoding']), language_id) + book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) self.create_book(unicode(line[2], details['encoding']), - unicode(line[3], details['encoding']), int(line[1])) + book_ref_id, book_details[u'testament_id']) book_list[int(line[0])] = unicode(line[2], details['encoding']) Receiver.send_message(u'openlp_process_events') except (IOError, IndexError): diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 58fa0eec7..1f1a7e2a0 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -290,7 +290,7 @@ class BibleMediaItem(MediaManagerItem): def importRequest(self, case, name=None): self.import_request = BibleImportRequest(self) if self.import_request.exec_(case, name): - return unicode(self.import_request.RequestComboBox.currentText()) + return unicode(self.import_request.requestComboBox.currentText()) def loadBibles(self): log.debug(u'Loading Bibles') diff --git a/openlp/plugins/bibles/lib/openlp1.py b/openlp/plugins/bibles/lib/openlp1.py index f0e12481a..508add469 100644 --- a/openlp/plugins/bibles/lib/openlp1.py +++ b/openlp/plugins/bibles/lib/openlp1.py @@ -29,7 +29,7 @@ import sqlite from openlp.core.lib import Receiver from openlp.core.ui.wizard import WizardStrings -from openlp.plugins.bibles.lib.db import BibleDB +from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB log = logging.getLogger(__name__) @@ -43,6 +43,7 @@ class OpenLP1Bible(BibleDB): """ log.debug(self.__class__.__name__) BibleDB.__init__(self, parent, **kwargs) + self.parent = parent self.filename = kwargs[u'filename'] def do_import(self): @@ -56,7 +57,11 @@ class OpenLP1Bible(BibleDB): cursor = connection.cursor() except: return False - #TODO: include create_meta language + #Create the bible language + language = self.parent.mediaItem.importRequest(u'language') + language = BiblesResourcesDB.get_language(language) + language_id = language[u'id'] + self.create_meta(u'language_id', language_id) # Create all books. cursor.execute(u'SELECT id, testament_id, name, abbreviation FROM book') books = cursor.fetchall() @@ -69,9 +74,10 @@ class OpenLP1Bible(BibleDB): testament_id = int(book[1]) name = unicode(book[2], u'cp1252') abbreviation = unicode(book[3], u'cp1252') - #TODO: change create_book to the new database model - #(name, bk_ref_id, testament) - self.create_book(name, abbreviation, testament_id) + book_ref_id = self.parent.manager.get_book_ref_id_by_name(name, + language_id) + book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) + self.create_book(name, book_ref_id, book_details[u'testament_id']) # Update the progess bar. self.wizard.incrementProgressBar(WizardStrings.ImportingType % name) # Import the verses for this book. diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index 62cf12eaf..91b96abf2 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -28,7 +28,7 @@ import logging from lxml import objectify from openlp.core.lib import Receiver, translate -from openlp.plugins.bibles.lib.db import BibleDB +from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB log = logging.getLogger(__name__) @@ -43,6 +43,7 @@ class OpenSongBible(BibleDB): """ log.debug(self.__class__.__name__) BibleDB.__init__(self, parent, **kwargs) + self.parent = parent self.filename = kwargs['filename'] def do_import(self): @@ -61,14 +62,18 @@ class OpenSongBible(BibleDB): file = open(self.filename, u'r') opensong = objectify.parse(file) bible = opensong.getroot() - #TODO: include create_meta language + language = self.parent.mediaItem.importRequest(u'language') + language = BiblesResourcesDB.get_language(language) + language_id = language[u'id'] + self.create_meta(u'language_id', language_id) for book in bible.b: if self.stop_import_flag: break - #TODO: change create_book to the new database model - #(name, bk_ref_id, testament) - db_book = self.create_book(unicode(book.attrib[u'n']), - unicode(book.attrib[u'n'][:4])) + book_ref_id = self.parent.manager.get_book_ref_id_by_name( + unicode(book.attrib[u'n']), language_id) + book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) + db_book = self.create_book(unicode(book.attrib[u'n']), + book_ref_id, book_details[u'testament_id']) for chapter in book.c: if self.stop_import_flag: break diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index 05a57bbe4..6c8b2153b 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -33,7 +33,7 @@ import re from openlp.core.lib import Receiver, translate from openlp.core.utils import AppLocation -from openlp.plugins.bibles.lib.db import BibleDB +from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB log = logging.getLogger(__name__) @@ -46,6 +46,7 @@ class OSISBible(BibleDB): def __init__(self, parent, **kwargs): log.debug(self.__class__.__name__) BibleDB.__init__(self, parent, **kwargs) + self.parent = parent self.filename = kwargs[u'filename'] fbibles = None self.books = {} @@ -104,7 +105,11 @@ class OSISBible(BibleDB): finally: if detect_file: detect_file.close() - #TODO: include create_meta language with try - except scheme + # Set meta language_id + language = self.parent.mediaItem.importRequest(u'language') + language = BiblesResourcesDB.get_language(language) + language_id = language[u'id'] + self.create_meta(u'language_id', language_id) try: osis = codecs.open(self.filename, u'r', details['encoding']) for file_record in osis: @@ -123,10 +128,13 @@ class OSISBible(BibleDB): testament += 1 #TODO: change create_book to the new database model #(name, bk_ref_id, testament) + book_ref_id = self.parent.manager.get_book_ref_id_by_name( + unicode(self.books[book][0]), language_id) + book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) db_book = self.create_book( unicode(self.books[book][0]), - unicode(self.books[book][1]), - testament) + book_ref_id, + book_details[u'testament_id']) if last_chapter == 0: if book == u'Gen': self.wizard.progressBar.setMaximum(1188) diff --git a/resources/forms/bibleimportrequestdialog.ui b/resources/forms/bibleimportrequestdialog.ui new file mode 100644 index 000000000..5795300f9 --- /dev/null +++ b/resources/forms/bibleimportrequestdialog.ui @@ -0,0 +1,137 @@ + + + BibleImportRequest + + + + 0 + 0 + 400 + 175 + + + + + 0 + 0 + + + + Dialog + + + + + 10 + 15 + 381 + 151 + + + + + + + + Arial + 12 + 75 + true + + + + Choose Book: + + + + + + + The following books cannot be clearly attributed. +Please choose the book it is. + + + + + + + + + Book: + + + + + + + + 0 + 0 + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + + BibleImportRequestButtonBox + accepted() + BibleImportRequest + accept() + + + 248 + 254 + + + 157 + 274 + + + + + BibleImportRequestButtonBox + rejected() + BibleImportRequest + reject() + + + 316 + 260 + + + 286 + 274 + + + + + From a23d902fa57ac3901a36042e16486ffee148b38e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Thu, 17 Mar 2011 21:54:22 +0100 Subject: [PATCH 005/190] adapt the second_bible searchfunction to the new book name scheme --- openlp/plugins/bibles/lib/db.py | 31 ++++++++++++++++++++++++++ openlp/plugins/bibles/lib/manager.py | 22 +++++++++++++++--- openlp/plugins/bibles/lib/mediaitem.py | 4 ++-- 3 files changed, 52 insertions(+), 5 deletions(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 68edc55ef..6f2f2e2cb 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -357,6 +357,17 @@ class BibleDB(QtCore.QObject, Manager): """ return self.get_all_objects(Book, order_by_ref=Book.id) + def get_book_by_book_ref_id(self, id): + """ + Return a book object from the database. + + ``book`` + The name of the book to return. + """ + log.debug(u'BibleDb.get_book_by_book_ref_id("%s")', id) + db_book = self.get_object_filtered(Book, Book.book_reference_id.like(id)) + return db_book + def get_verses(self, reference_list, en_reference_list): """ This is probably the most used function. It retrieves the list of @@ -863,6 +874,26 @@ class SpellingDB(QtCore.QObject, Manager): return None else: return id[0] + + def get_book_name_by_reference_id(self, id, language): + """ + Return the name of a book by id and language. + + ``id`` + The name to search the id. + + ``language`` + The language for which should be searched + """ + log.debug(u'SpellingDB.get_book_name_by_reference_id("%s", "%s")', id, + language) + name = self.session.query(Spelling.name)\ + .filter(Spelling.book_reference_id.like(id))\ + .filter(Spelling.language_id.like(language)).first() + if not name: + return None + else: + return unicode(name[0]) def create_spelling(self, name, book_reference_id, language_id): """ diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index de66c38e0..44bb6dcd3 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -255,7 +255,7 @@ class BibleManager(object): book = self.get_book_ref(book, int(language_id.value)) return self.db_cache[bible].get_verse_count(book, chapter) - def get_verses(self, bible, versetext): + def get_verses(self, bible, versetext, secondbible=False): """ Parses a scripture reference, fetches the verses from the Bible specified, and returns a list of ``Verse`` objects. @@ -286,13 +286,29 @@ class BibleManager(object): return None reflist = parse_reference(versetext) if reflist: - log.debug(u'reflist:%s', reflist) + # if we use a second bible we have to rename the book names + if secondbible: + log.debug(u'BibleManager.get_verses("secondbible true")') + meta = self.db_cache[bible].get_object(BibleMeta, + u'language_id') + language_id = meta.value + new_reflist = [] + for item in reflist: + if item: + book = self.get_book_ref(item[0]) + book_ref_id = self.parent.manager.\ + get_book_ref_id_by_name(book, language_id) + book = self.db_cache[bible].get_book_by_book_ref_id( + book_ref_id) + new_reflist.append((book.name, item[1], item[2], item[3])) + reflist = new_reflist + log.debug(u'BibleManager.get_verses("reflist: %s")', reflist) en_reflist = [] for item in reflist: if item: book = self.get_book_ref(item[0]) en_reflist.append((book, item[1], item[2], item[3])) - log.debug(u'en_reflist:%s', en_reflist) + log.debug(u'BibleManager.get_verses("en_reflist: %s")', en_reflist) return self.db_cache[bible].get_verses(reflist, en_reflist) else: Receiver.send_message(u'openlp_information_message', { diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 1f1a7e2a0..d2753cfc5 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -482,7 +482,7 @@ class BibleMediaItem(MediaManagerItem): self.search_results = self.parent.manager.get_verses(bible, versetext) if second_bible: self.second_search_results = self.parent.manager.get_verses( - second_bible, versetext) + second_bible, versetext, True) if self.advancedClearComboBox.currentIndex() == 0: self.listView.clear() if self.listView.count() != 0: @@ -509,7 +509,7 @@ class BibleMediaItem(MediaManagerItem): self.search_results = self.parent.manager.get_verses(bible, text) if second_bible and self.search_results: self.second_search_results = self.parent.manager.get_verses( - second_bible, text) + second_bible, text, True) else: # We are doing a 'Text Search'. Receiver.send_message(u'cursor_busy') From 9a30a4ae6acd1b093dfde57090d638d162971524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Thu, 17 Mar 2011 22:04:54 +0100 Subject: [PATCH 006/190] Clean up --- openlp/plugins/bibles/lib/db.py | 23 ++--------------------- openlp/plugins/bibles/lib/manager.py | 3 ++- 2 files changed, 4 insertions(+), 22 deletions(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 6f2f2e2cb..2d1d1efad 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -365,7 +365,8 @@ class BibleDB(QtCore.QObject, Manager): The name of the book to return. """ log.debug(u'BibleDb.get_book_by_book_ref_id("%s")', id) - db_book = self.get_object_filtered(Book, Book.book_reference_id.like(id)) + db_book = self.get_object_filtered(Book, + Book.book_reference_id.like(id)) return db_book def get_verses(self, reference_list, en_reference_list): @@ -874,26 +875,6 @@ class SpellingDB(QtCore.QObject, Manager): return None else: return id[0] - - def get_book_name_by_reference_id(self, id, language): - """ - Return the name of a book by id and language. - - ``id`` - The name to search the id. - - ``language`` - The language for which should be searched - """ - log.debug(u'SpellingDB.get_book_name_by_reference_id("%s", "%s")', id, - language) - name = self.session.query(Spelling.name)\ - .filter(Spelling.book_reference_id.like(id))\ - .filter(Spelling.language_id.like(language)).first() - if not name: - return None - else: - return unicode(name[0]) def create_spelling(self, name, book_reference_id, language_id): """ diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 44bb6dcd3..4fa405c24 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -300,7 +300,8 @@ class BibleManager(object): get_book_ref_id_by_name(book, language_id) book = self.db_cache[bible].get_book_by_book_ref_id( book_ref_id) - new_reflist.append((book.name, item[1], item[2], item[3])) + new_reflist.append((book.name, item[1], item[2], + item[3])) reflist = new_reflist log.debug(u'BibleManager.get_verses("reflist: %s")', reflist) en_reflist = [] From 4071daec18cec5bdae0a0ae86defb6944568206f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Fri, 18 Mar 2011 10:52:54 +0100 Subject: [PATCH 007/190] add error handling if the user abort the dialog --- openlp/plugins/bibles/lib/csvbible.py | 8 ++++++++ openlp/plugins/bibles/lib/http.py | 8 ++++++++ openlp/plugins/bibles/lib/manager.py | 5 ++++- openlp/plugins/bibles/lib/openlp1.py | 8 ++++++++ openlp/plugins/bibles/lib/opensong.py | 8 ++++++++ openlp/plugins/bibles/lib/osis.py | 10 ++++++++-- 6 files changed, 44 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index 7d1791281..8884c436a 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -137,6 +137,10 @@ class CSVBible(BibleDB): self.wizard.progressBar.setMaximum(66) success = True language = self.parent.mediaItem.importRequest(u'language') + if not language: + log.exception(u'Importing books from %s " '\ + 'failed' % self.booksfile) + return False language = BiblesResourcesDB.get_language(language) language_id = language[u'id'] self.create_meta(u'language_id', language_id) @@ -155,6 +159,10 @@ class CSVBible(BibleDB): unicode(line[2], details['encoding'])) book_ref_id = self.parent.manager.get_book_ref_id_by_name( unicode(line[2], details['encoding']), language_id) + if not book_ref_id: + log.exception(u'Importing books from %s " '\ + 'failed' % self.booksfile) + return False book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) self.create_book(unicode(line[2], details['encoding']), book_ref_id, book_details[u'testament_id']) diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index cd5f5a2d9..9d91298d0 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -406,6 +406,10 @@ class HTTPBible(BibleDB): language_id = bible[u'language_id'] else: language = self.parent.mediaItem.importRequest(u'language') + if not language: + log.exception(u'Importing books from %s - download name: "%s" '\ + 'failed' % (self.download_source, self.download_name)) + return False language = BiblesResourcesDB.get_language(language) language_id = language[u'id'] # Store the language_id. @@ -413,6 +417,10 @@ class HTTPBible(BibleDB): for book in books: book_ref_id = self.parent.manager.get_book_ref_id_by_name(book, language_id) + if not book_ref_id: + log.exception(u'Importing books from %s - download name: "%s" '\ + 'failed' % (self.download_source, self.download_name)) + return False book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) log.debug(u'Book details: Name:%s; id:%s; testament_id:%s', book, book_ref_id, book_details[u'testament_id']) diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 4fa405c24..58e7b052f 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -352,7 +352,10 @@ class BibleManager(object): log.debug(book_ref) book_temp = BiblesResourcesDB.get_book(book_ref) log.debug(book_temp) - book_id = book_temp[u'id'] + if book_temp: + book_id = book_temp[u'id'] + else: + return None if book_id: self.spelling_cache[u'spelling'].create_spelling(book, book_id, language_id) diff --git a/openlp/plugins/bibles/lib/openlp1.py b/openlp/plugins/bibles/lib/openlp1.py index 508add469..2d7ed903b 100644 --- a/openlp/plugins/bibles/lib/openlp1.py +++ b/openlp/plugins/bibles/lib/openlp1.py @@ -59,6 +59,10 @@ class OpenLP1Bible(BibleDB): return False #Create the bible language language = self.parent.mediaItem.importRequest(u'language') + if not language: + log.exception(u'Importing books from %s " '\ + 'failed' % self.filename) + return False language = BiblesResourcesDB.get_language(language) language_id = language[u'id'] self.create_meta(u'language_id', language_id) @@ -76,6 +80,10 @@ class OpenLP1Bible(BibleDB): abbreviation = unicode(book[3], u'cp1252') book_ref_id = self.parent.manager.get_book_ref_id_by_name(name, language_id) + if not book_ref_id: + log.exception(u'Importing books from %s " '\ + 'failed' % self.filename) + return False book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) self.create_book(name, book_ref_id, book_details[u'testament_id']) # Update the progess bar. diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index 91b96abf2..f1a64c2e7 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -63,6 +63,10 @@ class OpenSongBible(BibleDB): opensong = objectify.parse(file) bible = opensong.getroot() language = self.parent.mediaItem.importRequest(u'language') + if not language: + log.exception(u'Importing books from %s " '\ + 'failed' % self.filename) + return False language = BiblesResourcesDB.get_language(language) language_id = language[u'id'] self.create_meta(u'language_id', language_id) @@ -71,6 +75,10 @@ class OpenSongBible(BibleDB): break book_ref_id = self.parent.manager.get_book_ref_id_by_name( unicode(book.attrib[u'n']), language_id) + if not book_ref_id: + log.exception(u'Importing books from %s " '\ + 'failed' % self.filename) + return False book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) db_book = self.create_book(unicode(book.attrib[u'n']), book_ref_id, book_details[u'testament_id']) diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index 6c8b2153b..277b73a23 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -107,6 +107,10 @@ class OSISBible(BibleDB): detect_file.close() # Set meta language_id language = self.parent.mediaItem.importRequest(u'language') + if not language: + log.exception(u'Importing books from %s " '\ + 'failed' % self.filename) + return False language = BiblesResourcesDB.get_language(language) language_id = language[u'id'] self.create_meta(u'language_id', language_id) @@ -126,10 +130,12 @@ class OSISBible(BibleDB): log.debug(u'New book: "%s"', self.books[book][0]) if book == u'Matt' or book == u'Jdt': testament += 1 - #TODO: change create_book to the new database model - #(name, bk_ref_id, testament) book_ref_id = self.parent.manager.get_book_ref_id_by_name( unicode(self.books[book][0]), language_id) + if not book_ref_id: + log.exception(u'Importing books from %s " '\ + 'failed' % self.filename) + return False book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) db_book = self.create_book( unicode(self.books[book][0]), From 599e87695590eb18829cbc1dcf14651f916ddbc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Wed, 23 Mar 2011 20:18:51 +0100 Subject: [PATCH 008/190] Bug fixes Changed book handling from name to book_reference_id Comment out unused function to fill the testament table in the local bible database --- openlp/plugins/bibles/lib/csvbible.py | 9 +- openlp/plugins/bibles/lib/db.py | 111 +++++++++++++++---------- openlp/plugins/bibles/lib/http.py | 84 ++++++++++--------- openlp/plugins/bibles/lib/manager.py | 67 +++++++-------- openlp/plugins/bibles/lib/mediaitem.py | 4 +- openlp/plugins/bibles/lib/openlp1.py | 5 +- openlp/plugins/bibles/lib/osis.py | 14 ++-- 7 files changed, 163 insertions(+), 131 deletions(-) diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index 8884c436a..2a3949dea 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -70,7 +70,7 @@ import chardet import csv from openlp.core.lib import Receiver, translate -from openlp.plugins.bibles.lib.db import BibleDB, Testament, BiblesResourcesDB +from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB#, Testament log = logging.getLogger(__name__) @@ -87,13 +87,16 @@ class CSVBible(BibleDB): log.info(self.__class__.__name__) BibleDB.__init__(self, parent, **kwargs) self.parent = parent + #TODO: Delete unused code + ''' try: self.testamentsfile = kwargs[u'testamentsfile'] except KeyError: self.testamentsfile = None + ''' self.booksfile = kwargs[u'booksfile'] self.versesfile = kwargs[u'versefile'] - + ''' def setup_testaments(self): """ Overrides parent method so we can handle importing a testament file. @@ -127,7 +130,7 @@ class CSVBible(BibleDB): 'BibleDB.Wizard', 'Importing testaments... done.')), 2) else: BibleDB.setup_testaments(self) - + ''' def do_import(self): """ Import the bible books and verses. diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 2d1d1efad..b4a5b0d3b 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -48,13 +48,14 @@ class BibleMeta(BaseModel): """ pass - +#TODO: Delete unused code +''' class Testament(BaseModel): """ Bible Testaments """ pass - +''' class Book(BaseModel): """ @@ -89,10 +90,13 @@ def init_schema(url): Column(u'key', types.Unicode(255), primary_key=True, index=True), Column(u'value', types.Unicode(255)), ) + #TODO: Delete unused code + ''' testament_table = Table(u'testament', metadata, Column(u'id', types.Integer, primary_key=True), Column(u'name', types.Unicode(50)), ) + ''' book_table = Table(u'book', metadata, Column(u'id', types.Integer, primary_key=True), Column(u'book_reference_id', types.Integer), @@ -101,7 +105,8 @@ def init_schema(url): ) verse_table = Table(u'verse', metadata, Column(u'id', types.Integer, primary_key=True, index=True), - Column(u'book_id', types.Integer, ForeignKey(u'book.id'), index=True), + Column(u'book_id', types.Integer, ForeignKey( + u'book.id'), index=True), Column(u'chapter', types.Integer, index=True), Column(u'verse', types.Integer, index=True), Column(u'text', types.UnicodeText, index=True), @@ -111,10 +116,13 @@ def init_schema(url): class_mapper(BibleMeta) except UnmappedClassError: mapper(BibleMeta, meta_table) + #TODO: Delete unused code + ''' try: class_mapper(Testament) except UnmappedClassError: mapper(Testament, testament_table) + ''' try: class_mapper(Book) except UnmappedClassError: @@ -239,9 +247,12 @@ class BibleDB(QtCore.QObject, Manager): """ self.wizard = wizard self.create_meta(u'dbversion', u'2') - self.setup_testaments() + #TODO: Delete unused code + #self.setup_testaments() return self.name + #TODO: Delete unused code + ''' def setup_testaments(self): """ Initialise the testaments section of a bible with suitable defaults. @@ -249,6 +260,7 @@ class BibleDB(QtCore.QObject, Manager): self.save_object(Testament.populate(name=u'Old Testament')) self.save_object(Testament.populate(name=u'New Testament')) self.save_object(Testament.populate(name=u'Apocrypha')) + ''' def create_book(self, name, bk_ref_id, testament=1): """ @@ -264,7 +276,7 @@ class BibleDB(QtCore.QObject, Manager): *Defaults to 1.* The testament_reference_id from bibles_resources.sqlite of the testament this book belongs to. """ - log.debug(u'create_book %s,%s', name, bk_ref_id) + log.debug(u'BibleDB.create_book("%s", "%s")', name, bk_ref_id) book = Book.populate(name=name, book_reference_id=bk_ref_id, testament_reference_id=testament) self.save_object(book) @@ -284,7 +296,7 @@ class BibleDB(QtCore.QObject, Manager): A dict of the verses to be inserted. The key is the verse number, and the value is the verse text. """ - log.debug(u'create_chapter %s,%s', book_id, chapter) + log.debug(u'BibleDBcreate_chapter("%s", "%s")', book_id, chapter) # Text list has book and chapter as first two elements of the array. for verse_number, verse_text in textlist.iteritems(): verse = Verse.populate( @@ -336,7 +348,7 @@ class BibleDB(QtCore.QObject, Manager): """ if not isinstance(value, unicode): value = unicode(value) - log.debug(u'save_meta %s/%s', key, value) + log.debug(u'BibleDB.save_meta("%s/%s")', key, value) self.save_object(BibleMeta.populate(key=key, value=value)) def get_book(self, book): @@ -346,7 +358,7 @@ class BibleDB(QtCore.QObject, Manager): ``book`` The name of the book to return. """ - log.debug(u'BibleDb.get_book("%s")', book) + log.debug(u'BibleDB.get_book("%s")', book) db_book = self.get_object_filtered(Book, Book.name.like(book + u'%')) return db_book @@ -361,15 +373,15 @@ class BibleDB(QtCore.QObject, Manager): """ Return a book object from the database. - ``book`` - The name of the book to return. + ``id`` + The reference id of the book to return. """ - log.debug(u'BibleDb.get_book_by_book_ref_id("%s")', id) + log.debug(u'BibleDB.get_book_by_book_ref_id("%s")', id) db_book = self.get_object_filtered(Book, Book.book_reference_id.like(id)) return db_book - def get_verses(self, reference_list, en_reference_list): + def get_verses(self, reference_list): """ This is probably the most used function. It retrieves the list of verses based on the user's query. @@ -378,27 +390,24 @@ class BibleDB(QtCore.QObject, Manager): This is the list of references the media manager item wants. It is a list of tuples, with the following format:: - (book, chapter, start_verse, end_verse) + (book_reference_id, chapter, start_verse, end_verse) Therefore, when you are looking for multiple items, simply break them up into references like this, bundle them into a list. This function then runs through the list, and returns an amalgamated list of ``Verse`` objects. For example:: - [(u'Genesis', 1, 1, 1), (u'Genesis', 2, 2, 3)] + [(u'35', 1, 1, 1), (u'35', 2, 2, 3)] """ - log.debug(u'BibleDB.get_verses: %s - %s', reference_list, - en_reference_list) + log.debug(u'BibleDB.get_verses("%s")', reference_list) verse_list = [] - for (book, chapter, start_verse, end_verse), (en_book, en_chapter, - en_start_verse, en_end_verse) in zip(reference_list, - en_reference_list): - db_book = self.get_book(book) + for book_id, chapter, start_verse, end_verse in reference_list: + db_book = self.get_book_by_book_ref_id(book_id) if db_book: - book = db_book.name - log.debug(u'Book name corrected to "%s"', book) + book_id = db_book.book_reference_id + log.debug(u'Book name corrected to "%s"', db_book.name) if end_verse == -1: - end_verse = self.get_verse_count(en_book, chapter) + end_verse = self.get_verse_count(book_id, chapter) verses = self.session.query(Verse)\ .filter_by(book_id=db_book.id)\ .filter_by(chapter=chapter)\ @@ -443,23 +452,23 @@ class BibleDB(QtCore.QObject, Manager): verses = verses.all() return verses - def get_chapter_count(self, book): + def get_chapter_count(self, book_id): """ Return the number of chapters in a book. ``book`` The book to get the chapter count for. """ - log.debug(u'BibleDB.get_chapter_count("%s")', book) + log.debug(u'BibleDB.get_chapter_count("%s")', book_id) count = self.session.query(Verse.chapter).join(Book)\ - .filter(Book.name==book)\ + .filter(Book.book_reference_id==book_id)\ .distinct().count() if not count: return 0 else: return count - def get_verse_count(self, book, chapter): + def get_verse_count(self, book_id, chapter): """ Return the number of verses in a chapter. @@ -469,9 +478,9 @@ class BibleDB(QtCore.QObject, Manager): ``chapter`` The chapter to get the verse count for. """ - log.debug(u'BibleDB.get_verse_count("%s", %s)', book, chapter) + log.debug(u'BibleDB.get_verse_count("%s", "%s")', book_id, chapter) count = self.session.query(Verse).join(Book)\ - .filter(Book.name==book)\ + .filter(Book.book_reference_id==book_id)\ .filter(Verse.chapter==chapter)\ .count() if not count: @@ -538,6 +547,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager): """ Return a list of all the books of the Bible. """ + log.debug(u'BiblesResourcesDB.get_books()') books = BiblesResourcesDB.run_sql(u'SELECT id, testament_id, name, ' u'abbreviation, chapters FROM book_reference ORDER BY id') book_list = [] @@ -559,7 +569,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager): ``name`` The name or abbreviation of the book. """ - log.debug(u'get_book: %s', name) + log.debug(u'BiblesResourcesDB.get_book("%s")', name) if not isinstance(name, unicode): name = unicode(name) books = BiblesResourcesDB.run_sql(u'SELECT id, testament_id, name, ' @@ -584,6 +594,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager): ``id`` The id of the book. """ + log.debug(u'BiblesResourcesDB.get_book_by_id("%s")', id) if not isinstance(id, int): id = int(id) books = BiblesResourcesDB.run_sql(u'SELECT id, testament_id, name, ' @@ -601,22 +612,22 @@ class BiblesResourcesDB(QtCore.QObject, Manager): return None @staticmethod - def get_chapter(name, chapter): + def get_chapter(book_id, chapter): """ Return the chapter details for a specific chapter of a book. - ``name`` - The name or abbreviation of a book. + ``book_id`` + The id of a book. ``chapter`` The chapter number. """ - if not isinstance(name, int): + log.debug(u'BiblesResourcesDB.get_chapter("%s", "%s")', book_id, chapter) + if not isinstance(chapter, int): chapter = int(chapter) - book = BiblesResourcesDB.get_book(name) chapters = BiblesResourcesDB.run_sql(u'SELECT id, book_reference_id, ' u'chapter, verse_count FROM chapters WHERE book_reference_id = ?', - (book[u'id'],)) + (book_id,)) if chapters: return { u'id': chapters[chapter-1][0], @@ -628,30 +639,33 @@ class BiblesResourcesDB(QtCore.QObject, Manager): return None @staticmethod - def get_chapter_count(book): + def get_chapter_count(book_id): """ Return the number of chapters in a book. - ``book`` - The name or abbreviation of the book. + ``book_id`` + The id of the book. """ - details = BiblesResourcesDB.get_book(book) + log.debug(u'BiblesResourcesDB.get_chapter_count("%s")', book_id) + details = BiblesResourcesDB.get_book_by_id(book_id) if details: return details[u'chapters'] return 0 @staticmethod - def get_verse_count(book, chapter): + def get_verse_count(book_id, chapter): """ Return the number of verses in a chapter. ``book`` - The name or abbreviation of the book. + The id of the book. ``chapter`` The number of the chapter. """ - details = BiblesResourcesDB.get_chapter(book, chapter) + log.debug(u'BiblesResourcesDB.get_verse_count("%s", "%s")', book_id, + chapter) + details = BiblesResourcesDB.get_chapter(book_id, chapter) if details: return details[u'verse_count'] return 0 @@ -664,6 +678,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager): ``name`` The name or abbreviation of the book. """ + log.debug(u'BiblesResourcesDB.get_download_source("%s")', source) if not isinstance(source, unicode): source = unicode(source) source = source.title() @@ -685,6 +700,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager): ``source`` The source of the webbible. """ + log.debug(u'BiblesResourcesDB.get_webbibles("%s")', source) if not isinstance(source, unicode): source = unicode(source) source = BiblesResourcesDB.get_download_source(source) @@ -716,6 +732,8 @@ class BiblesResourcesDB(QtCore.QObject, Manager): ``source`` The source of the webbible. """ + log.debug(u'BiblesResourcesDB.get_webbibles("%s", "%s")', abbreviation, + source) if not isinstance(abbreviation, unicode): abbreviation = unicode(abbreviation) if not isinstance(source, unicode): @@ -742,6 +760,8 @@ class BiblesResourcesDB(QtCore.QObject, Manager): """ Return a book_reference_id if the name matches. """ + log.debug(u'BiblesResourcesDB.get_spelling("%s", "%s")', name, + language_id) if language_id: id = BiblesResourcesDB.run_sql(u'SELECT book_reference_id ' u'FROM spelling WHERE name = ? and language_id = ? ORDER BY id', @@ -763,6 +783,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager): ``name`` The name or abbreviation of the language. """ + log.debug(u'BiblesResourcesDB.get_language("%s", "%s")', name) if not isinstance(name, unicode): name = unicode(name) name = name.title() @@ -782,6 +803,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager): """ Return a dict containing all languages with id, name and code. """ + log.debug(u'BiblesResourcesDB.get_languages()') languages = BiblesResourcesDB.run_sql(u'SELECT id, name, code FROM ' u'language ORDER by name') if languages: @@ -801,6 +823,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager): """ Return a list of all testaments and their id of the Bible. """ + log.debug(u'BiblesResourcesDB.get_testament_reference()') testaments = BiblesResourcesDB.run_sql(u'SELECT id, name FROM ' u'testament_reference ORDER BY id') testament_list = [] @@ -889,7 +912,7 @@ class SpellingDB(QtCore.QObject, Manager): ``language_id`` The language which the spelling of the book name is. """ - log.debug(u'create_spelling %s, book_reference_id:%s, language_id:%s', + log.debug(u'SpellingDBcreate_spelling("%s", "%s", "%s"', name, book_reference_id, language_id) spelling = Spelling.populate(name=name, book_reference_id=book_reference_id, language_id=language_id) diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 9d91298d0..39a2e3699 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -42,7 +42,7 @@ from openlp.core.lib.ui import critical_error_message_box from openlp.core.utils import AppLocation, get_web_page from openlp.plugins.bibles.lib import SearchResults from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB, \ - SpellingDB, Book + SpellingDB, Book, BibleMeta log = logging.getLogger(__name__) @@ -51,7 +51,7 @@ class BGExtract(object): Extract verses from BibleGateway """ def __init__(self, proxyurl=None): - log.debug(u'init %s', proxyurl) + log.debug(u'BGExtract.init("%s")', proxyurl) self.proxyurl = proxyurl socket.setdefaulttimeout(30) @@ -68,9 +68,11 @@ class BGExtract(object): ``chapter`` Chapter number. """ - log.debug(u'get_bible_chapter %s, %s, %s', version, bookname, chapter) + log.debug(u'BGExtract.get_bible_chapter("%s", "%s", "%s")', version, + bookname, chapter) + urlbookname = urllib.quote(bookname.encode("utf-8")) url_params = urllib.urlencode( - {u'search': u'%s %s' % (bookname, chapter), + {u'search': u'%s %s' % (urlbookname, chapter), u'version': u'%s' % version}) cleaner = [(re.compile(' |
|\'\+\''), lambda match: '')] soup = get_soup_for_bible_ref( @@ -135,7 +137,7 @@ class BGExtract(object): ``version`` The version of the bible like NIV for New International Version """ - log.debug(u'get_books_from_http %s', version) + log.debug(u'BGExtract.get_books_from_http("%s")', version) url_params = urllib.urlencode( {u'search': 'Bible-List', u'version': u'%s' % version}) reference_url = u'http://www.biblegateway.com/passage/?%s' % url_params @@ -161,7 +163,6 @@ class BGExtract(object): Receiver.send_message(u'openlp_process_events') content = soup.find(u'table', {u'id': u'booklist'}) content = content.findAll(u'tr') - #log.debug(content) if not content: log.exception(u'No books found in the Biblegateway response.') send_error_message(u'parse') @@ -171,7 +172,6 @@ class BGExtract(object): book = book.find(u'td') if book: books.append(book.contents[0]) - log.debug(book.contents[0]) return books @@ -180,7 +180,7 @@ class BSExtract(object): Extract verses from Bibleserver.com """ def __init__(self, proxyurl=None): - log.debug(u'init %s', proxyurl) + log.debug(u'BSExtract.init("%s")', proxyurl) self.proxyurl = proxyurl socket.setdefaulttimeout(30) @@ -197,9 +197,11 @@ class BSExtract(object): ``chapter`` Chapter number """ - log.debug(u'get_bible_chapter %s,%s,%s', version, bookname, chapter) + log.debug(u'BSExtract.get_bible_chapter("%s", "%s", "%s")', version, + bookname, chapter) + urlbookname = urllib.quote(bookname.encode("utf-8")) chapter_url = u'http://m.bibleserver.com/text/%s/%s%s' % \ - (version, bookname, chapter) + (version, urlbookname, chapter) header = (u'Accept-Language', u'en') soup = get_soup_for_bible_ref(chapter_url, header) if not soup: @@ -227,7 +229,7 @@ class BSExtract(object): ``version`` The version of the bible like NIV for New International Version """ - log.debug(u'get_books_from_http %s', version) + log.debug(u'BSExtract.get_books_from_http("%s")', version) chapter_url = u'http://m.bibleserver.com/overlay/selectBook?'\ 'translation=%s' % (version) soup = get_soup_for_bible_ref(chapter_url) @@ -250,7 +252,7 @@ class CWExtract(object): Extract verses from CrossWalk/BibleStudyTools """ def __init__(self, proxyurl=None): - log.debug(u'init %s', proxyurl) + log.debug(u'CWExtract.init("%s")', proxyurl) self.proxyurl = proxyurl socket.setdefaulttimeout(30) @@ -267,10 +269,13 @@ class CWExtract(object): ``chapter`` Chapter number """ - log.debug(u'get_bible_chapter %s,%s,%s', version, bookname, chapter) + log.debug(u'CWExtract.get_bible_chapter("%s", "%s", "%s")', version, + bookname, chapter) urlbookname = bookname.replace(u' ', u'-') + urlbookname = urlbookname.lower() + urlbookname = urllib.quote(urlbookname.encode("utf-8")) chapter_url = u'http://www.biblestudytools.com/%s/%s/%s.html' % \ - (version, urlbookname.lower(), chapter) + (version, urlbookname, chapter) soup = get_soup_for_bible_ref(chapter_url) if not soup: return None @@ -320,7 +325,7 @@ class CWExtract(object): ``version`` The version of the bible like NIV for New International Version """ - log.debug(u'get_books_from_http %s', version) + log.debug(u'CWExtract.get_books_from_http("%s")', version) chapter_url = u'http://www.biblestudytools.com/%s/'\ % (version) soup = get_soup_for_bible_ref(chapter_url) @@ -337,7 +342,6 @@ class CWExtract(object): for book in content: book = book.find(u'a') books.append(book.contents[0]) - log.debug(book.contents[0]) return books @@ -377,8 +381,10 @@ class HTTPBible(BibleDB): Run the import. This method overrides the parent class method. Returns ``True`` on success, ``False`` on failure. """ - self.wizard.progressBar.setMaximum(2) - self.wizard.incrementProgressBar('Registering bible...') + self.wizard.progressBar.setMaximum(68) + self.wizard.incrementProgressBar(unicode(translate( + 'BiblesPlugin.HTTPBible', + 'Registering bible and loading books...'))) self.create_meta(u'download source', self.download_source) self.create_meta(u'download name', self.download_name) if self.proxy_server: @@ -400,6 +406,9 @@ class HTTPBible(BibleDB): log.exception(u'Importing books from %s - download name: "%s" '\ 'failed' % (self.download_source, self.download_name)) return False + self.wizard.progressBar.setMaximum(len(books)+2) + self.wizard.incrementProgressBar(unicode(translate( + 'BiblesPlugin.HTTPBible', 'Registering Language...'))) bible = BiblesResourcesDB.get_webbible(self.download_name, self.download_source.lower()) if bible[u'language_id']: @@ -415,6 +424,9 @@ class HTTPBible(BibleDB): # Store the language_id. self.create_meta(u'language_id', language_id) for book in books: + self.wizard.incrementProgressBar(unicode(translate( + 'BiblesPlugin.HTTPBible', 'Importing %s...', + 'Importing ...')) % book) book_ref_id = self.parent.manager.get_book_ref_id_by_name(book, language_id) if not book_ref_id: @@ -427,7 +439,7 @@ class HTTPBible(BibleDB): self.create_book(book, book_ref_id, book_details[u'testament_id']) return True - def get_verses(self, reference_list, en_reference_list): + def get_verses(self, reference_list): """ A reimplementation of the ``BibleDB.get_verses`` method, this one is specifically for web Bibles. It first checks to see if the particular @@ -439,26 +451,19 @@ class HTTPBible(BibleDB): This is the list of references the media manager item wants. It is a list of tuples, with the following format:: - (book, chapter, start_verse, end_verse) - - ``en_reference_list`` - This is the list of references the media manager item wants. It is - a list of tuples, with the following format with englisch book - names:: - - (book, chapter, start_verse, end_verse) + (book_reference_id, chapter, start_verse, end_verse) Therefore, when you are looking for multiple items, simply break them up into references like this, bundle them into a list. This function then runs through the list, and returns an amalgamated list of ``Verse`` objects. For example:: - [(u'Genesis', 1, 1, 1), (u'Genesis', 2, 2, 3)] + [(u'35', 1, 1, 1), (u'35', 2, 2, 3)] """ + log.debug(u'HTTPBible.get_verses("%s")', reference_list) for reference in reference_list: - log.debug(u'Reference: %s', reference) - book = reference[0] - db_book = self.get_book(book) + book_id = reference[0] + db_book = self.get_book_by_book_ref_id(book_id) if not db_book: critical_error_message_box( translate('BiblesPlugin', 'No Book Found'), @@ -467,7 +472,7 @@ class HTTPBible(BibleDB): 'have spelled the name of the book correctly.')) return [] book = db_book.name - if BibleDB.get_verse_count(self, book, reference[1]) == 0: + if BibleDB.get_verse_count(self, book_id, reference[1]) == 0: Receiver.send_message(u'cursor_busy') search_results = self.get_chapter(book, reference[1]) if search_results and search_results.has_verselist(): @@ -484,13 +489,13 @@ class HTTPBible(BibleDB): Receiver.send_message(u'openlp_process_events') Receiver.send_message(u'cursor_normal') Receiver.send_message(u'openlp_process_events') - return BibleDB.get_verses(self, reference_list, en_reference_list) + return BibleDB.get_verses(self, reference_list) def get_chapter(self, book, chapter): """ Receive the request and call the relevant handler methods. """ - log.debug(u'get_chapter %s, %s', book, chapter) + log.debug(u'HTTPBible.get_chapter("%s", "%s")', book, chapter) log.debug(u'source = %s', self.download_source) if self.download_source.lower() == u'crosswalk': handler = CWExtract(self.proxy_server) @@ -504,15 +509,17 @@ class HTTPBible(BibleDB): """ Return the list of books. """ + log.debug(u'HTTPBible.get_books("%s")', Book.name) return self.get_all_objects(Book, order_by_ref=Book.id) - def get_chapter_count(self, book): + def get_chapter_count(self, book_id): """ Return the number of chapters in a particular book. """ - return BiblesResourcesDB.get_chapter_count(book) + log.debug(u'HTTPBible.get_chapter_count("%s")', book_id) + return BiblesResourcesDB.get_chapter_count(book_id) - def get_verse_count(self, book, chapter): + def get_verse_count(self, book_id, chapter): """ Return the number of verses for the specified chapter and book. @@ -522,7 +529,8 @@ class HTTPBible(BibleDB): ``chapter`` The chapter whose verses are being counted. """ - return BiblesResourcesDB.get_verse_count(book, chapter) + log.debug(u'HTTPBible.get_verse_count("%s", %s)', book_id, chapter) + return BiblesResourcesDB.get_verse_count(book_id, chapter) def get_soup_for_bible_ref(reference_url, header=None, pre_parse_regex=None, pre_parse_substitute=None, cleaner=None): diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 58e7b052f..5f0890f0e 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -30,10 +30,11 @@ import os 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.db import BibleDB, BibleMeta, SpellingDB, \ - Spelling, BiblesResourcesDB + BiblesResourcesDB from csvbible import CSVBible from http import HTTPBible from opensong import OpenSongBible @@ -223,14 +224,10 @@ class BibleManager(object): language_id = self.get_meta_data(bible, u'language_id') books = [] for book in self.db_cache[bible].get_books(): - book_id = self.get_book_ref_id_by_name(book.name, int( - language_id.value)) - book_temp = BiblesResourcesDB.get_book_by_id(book_id) - book_ref = book_temp[u'name'] books.append( { u'name': book.name, - u'chapters': self.db_cache[bible].get_chapter_count(book_ref) + u'chapters': self.db_cache[bible].get_chapter_count(book.book_reference_id) }) return books @@ -240,8 +237,6 @@ class BibleManager(object): """ log.debug(u'BibleManager.get_book_chapter_count ("%s", "%s")', bible, book) - language_id = self.get_meta_data(bible, u'language_id') - book = self.get_book_ref(book, int(language_id.value)) return self.db_cache[bible].get_chapter_count(book) def get_verse_count(self, bible, book, chapter): @@ -251,11 +246,11 @@ class BibleManager(object): """ log.debug(u'BibleManager.get_verse_count("%s", "%s", %s)', bible, book, chapter) - language_id = self.get_meta_data(bible, u'language_id') - book = self.get_book_ref(book, int(language_id.value)) - return self.db_cache[bible].get_verse_count(book, chapter) + db_book = self.db_cache[bible].get_book(book) + book_ref_id = db_book.book_reference_id + return self.db_cache[bible].get_verse_count(book_ref_id, chapter) - def get_verses(self, bible, versetext, secondbible=False): + def get_verses(self, bible, versetext, firstbible=False): """ Parses a scripture reference, fetches the verses from the Bible specified, and returns a list of ``Verse`` objects. @@ -286,31 +281,29 @@ class BibleManager(object): return None reflist = parse_reference(versetext) if reflist: - # if we use a second bible we have to rename the book names - if secondbible: - log.debug(u'BibleManager.get_verses("secondbible true")') - meta = self.db_cache[bible].get_object(BibleMeta, - u'language_id') - language_id = meta.value - new_reflist = [] - for item in reflist: - if item: - book = self.get_book_ref(item[0]) - book_ref_id = self.parent.manager.\ - get_book_ref_id_by_name(book, language_id) - book = self.db_cache[bible].get_book_by_book_ref_id( - book_ref_id) - new_reflist.append((book.name, item[1], item[2], - item[3])) - reflist = new_reflist - log.debug(u'BibleManager.get_verses("reflist: %s")', reflist) - en_reflist = [] + new_reflist = [] for item in reflist: if item: - book = self.get_book_ref(item[0]) - en_reflist.append((book, item[1], item[2], item[3])) - log.debug(u'BibleManager.get_verses("en_reflist: %s")', en_reflist) - return self.db_cache[bible].get_verses(reflist, en_reflist) + if firstbible: + db_book = self.db_cache[firstbible].get_book(item[0]) + db_book = self.db_cache[bible].get_book_by_book_ref_id( + db_book.book_reference_id) + else: + db_book = self.db_cache[bible].get_book(item[0]) + if db_book: + book_id = db_book.book_reference_id + log.debug(u'Book name corrected to "%s"', db_book.name) + new_reflist.append((book_id, item[1], item[2], + item[3])) + else: + log.debug(u'OpenLP failed to find book %s', item[0]) + critical_error_message_box( + translate('BiblesPlugin', 'No Book Found'), + translate('BiblesPlugin', 'No matching book ' + 'could be found in this Bible. Check that you have ' + 'spelled the name of the book correctly.')) + reflist = new_reflist + return self.db_cache[bible].get_verses(reflist) else: Receiver.send_message(u'openlp_information_message', { u'title': translate('BiblesPlugin.BibleManager', @@ -332,7 +325,8 @@ class BibleManager(object): log.debug(u'BibleManager.get_book_ref("%s", "%s")', book, language_id) book_id = self.get_book_ref_id_by_name(book, language_id) book_temp = BiblesResourcesDB.get_book_by_id(book_id) - log.debug(u'get_book_ref - Return:%s', book_temp[u'name']) + log.debug(u'BibleManager.get_book_ref("Return: %s")', + book_temp[u'name']) return book_temp[u'name'] def get_book_ref_id_by_name(self, book, language_id=None): @@ -360,7 +354,6 @@ class BibleManager(object): self.spelling_cache[u'spelling'].create_spelling(book, book_id, language_id) if book_id: - log.debug(u'get_book_ref_id_by_name - Return:%s', book_id) return book_id else: return None diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index d2753cfc5..43a20325f 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -482,7 +482,7 @@ class BibleMediaItem(MediaManagerItem): self.search_results = self.parent.manager.get_verses(bible, versetext) if second_bible: self.second_search_results = self.parent.manager.get_verses( - second_bible, versetext, True) + second_bible, versetext, bible) if self.advancedClearComboBox.currentIndex() == 0: self.listView.clear() if self.listView.count() != 0: @@ -509,7 +509,7 @@ class BibleMediaItem(MediaManagerItem): self.search_results = self.parent.manager.get_verses(bible, text) if second_bible and self.search_results: self.second_search_results = self.parent.manager.get_verses( - second_bible, text, True) + second_bible, text, bible) else: # We are doing a 'Text Search'. Receiver.send_message(u'cursor_busy') diff --git a/openlp/plugins/bibles/lib/openlp1.py b/openlp/plugins/bibles/lib/openlp1.py index 2d7ed903b..4cdb1e3fc 100644 --- a/openlp/plugins/bibles/lib/openlp1.py +++ b/openlp/plugins/bibles/lib/openlp1.py @@ -85,7 +85,8 @@ class OpenLP1Bible(BibleDB): 'failed' % self.filename) return False book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) - self.create_book(name, book_ref_id, book_details[u'testament_id']) + db_book = self.create_book(name, book_ref_id, + book_details[u'testament_id']) # Update the progess bar. self.wizard.incrementProgressBar(WizardStrings.ImportingType % name) # Import the verses for this book. @@ -99,7 +100,7 @@ class OpenLP1Bible(BibleDB): chapter = int(verse[0]) verse_number = int(verse[1]) text = unicode(verse[2], u'cp1252') - self.create_verse(book_id, chapter, verse_number, text) + self.create_verse(db_book.id, chapter, verse_number, text) Receiver.send_message(u'openlp_process_events') self.session.commit() connection.close() diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index 277b73a23..df9083da2 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -92,7 +92,8 @@ class OSISBible(BibleDB): osis = None success = True last_chapter = 0 - testament = 1 + #TODO: Delete unused code + #testament = 1 match_count = 0 self.wizard.incrementProgressBar(translate('BiblesPlugin.OsisImport', 'Detecting encoding (this may take a few minutes)...')) @@ -128,15 +129,18 @@ class OSISBible(BibleDB): verse_text = match.group(4) if not db_book or db_book.name != self.books[book][0]: log.debug(u'New book: "%s"', self.books[book][0]) - if book == u'Matt' or book == u'Jdt': - testament += 1 - book_ref_id = self.parent.manager.get_book_ref_id_by_name( + #TODO: Delete unused code + #if book == u'Matt' or book == u'Jdt': + # testament += 1 + book_ref_id = self.parent.manager.\ + get_book_ref_id_by_name( unicode(self.books[book][0]), language_id) if not book_ref_id: log.exception(u'Importing books from %s " '\ 'failed' % self.filename) return False - book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) + book_details = BiblesResourcesDB.get_book_by_id( + book_ref_id) db_book = self.create_book( unicode(self.books[book][0]), book_ref_id, From 27e635144dc7e8dfd1b0e56704d4463e635aa898 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Wed, 23 Mar 2011 21:08:49 +0100 Subject: [PATCH 009/190] rename spelling to alternative_book_name --- openlp/plugins/bibles/lib/db.py | 71 +++++++++--------- openlp/plugins/bibles/lib/http.py | 2 +- openlp/plugins/bibles/lib/manager.py | 32 ++++---- .../bibles/resources/bibles_resources.sqlite | Bin 63488 -> 63488 bytes 4 files changed, 54 insertions(+), 51 deletions(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index b4a5b0d3b..abd0ebb9b 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -70,9 +70,9 @@ class Verse(BaseModel): """ pass -class Spelling(BaseModel): +class AlternativeBookNames(BaseModel): """ - Spelling model + Alternative Book Names model """ pass @@ -136,16 +136,17 @@ def init_schema(url): metadata.create_all(checkfirst=True) return session -def init_schema_spelling_extension(url): +def init_schema_alternative_book_names(url): """ - Setup a spelling database connection and initialise the database schema. + Setup a alternative book names database connection and initialise the + database schema. ``url`` The database to setup. """ session, metadata = init_db(url) - spelling_table = Table(u'spelling', metadata, + alternative_book_names_table = Table(u'alternative_book_names', metadata, Column(u'id', types.Integer, primary_key=True), Column(u'book_reference_id', types.Integer), Column(u'language_id', types.Integer), @@ -153,9 +154,9 @@ def init_schema_spelling_extension(url): ) try: - class_mapper(Spelling) + class_mapper(AlternativeBookNames) except UnmappedClassError: - mapper(Spelling, spelling_table) + mapper(AlternativeBookNames, alternative_book_names_table) metadata.create_all(checkfirst=True) return session @@ -508,7 +509,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager): A wrapper class around a small SQLite database which contains the download resources, a biblelist from the different download resources, the books, chapter counts and verse counts for the web download Bibles, a language - reference, the testament reference and some basic spelling variants. This + reference, the testament reference and some alternative book names. This class contains a singleton "cursor" so that only one connection to the SQLite database is ever used. """ @@ -756,19 +757,20 @@ class BiblesResourcesDB(QtCore.QObject, Manager): return None @staticmethod - def get_spelling(name, language_id=None): + def get_alternative_book_name(name, language_id=None): """ Return a book_reference_id if the name matches. """ - log.debug(u'BiblesResourcesDB.get_spelling("%s", "%s")', name, - language_id) + log.debug(u'BiblesResourcesDB.get_alternative_book_name("%s", "%s")', + name, language_id) if language_id: id = BiblesResourcesDB.run_sql(u'SELECT book_reference_id ' - u'FROM spelling WHERE name = ? and language_id = ? ORDER BY id', - (name, language_id)) + u'FROM alternative_book_names WHERE name = ? and language_id ' + u'= ? ORDER BY id', (name, language_id)) else: id = BiblesResourcesDB.run_sql(u'SELECT book_reference_id ' - u'FROM spelling WHERE name = ? ORDER BY id', (name, )) + u'FROM alternative_book_names WHERE name = ? ORDER BY id', ( + name, )) if id: return int(id[0][0]) else: @@ -834,9 +836,9 @@ class BiblesResourcesDB(QtCore.QObject, Manager): }) return testament_list -class SpellingDB(QtCore.QObject, Manager): +class AlternativeBookNamesDB(QtCore.QObject, Manager): """ - This class represents a database-bound spelling. + This class represents a database-bound alternative book names system. """ def __init__(self, parent, **kwargs): @@ -853,18 +855,18 @@ class SpellingDB(QtCore.QObject, Manager): The name of the database. This is also used as the file name for SQLite databases. """ - log.info(u'SpellingDB loaded') + log.info(u'AlternativeBookNamesDB loaded') QtCore.QObject.__init__(self) self.bible_plugin = parent if u'path' not in kwargs: raise KeyError(u'Missing keyword argument "path".') self.stop_import_flag = False - self.name = u'spelling_extension.sqlite' + self.name = u'alternative_book_names.sqlite' if not isinstance(self.name, unicode): self.name = unicode(self.name, u'utf-8') self.file = self.name Manager.__init__(self, u'bibles/resources', - init_schema_spelling_extension, self.file) + init_schema_alternative_book_names, self.file) self.wizard = None QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'openlp_stop_wizard'), self.stop_import) @@ -886,35 +888,36 @@ class SpellingDB(QtCore.QObject, Manager): ``language`` The language for which should be searched """ - log.debug(u'SpellingDB.get_book_reference_id("%s")', name) + log.debug(u'AlternativeBookNamesDB.get_book_reference_id("%s")', name) if language: - id = self.session.query(Spelling.book_reference_id)\ - .filter(Spelling.name.like(name))\ - .filter(Spelling.language_id.like(language)).first() + id = self.session.query(AlternativeBookNames.book_reference_id)\ + .filter(AlternativeBookNames.name.like(name))\ + .filter(AlternativeBookNames.language_id.like(language)).first() else: - id = self.get_object_filtered(Spelling.book_reference_id, - Spelling.name.like(name)) + id = self.get_object_filtered(AlternativeBookNames.book_reference_id, + AlternativeBookNames.name.like(name)) if not id: return None else: return id[0] - def create_spelling(self, name, book_reference_id, language_id): + def create_alternative_book_name(self, name, book_reference_id, + language_id): """ - Add a spelling to the database. + Add an alternative book name to the database. ``name`` - The name of the spelling. + The name of the alternative book name. ``book_reference_id`` The book_reference_id of the book. ``language_id`` - The language which the spelling of the book name is. + The language to which the alternative book name belong. """ - log.debug(u'SpellingDBcreate_spelling("%s", "%s", "%s"', - name, book_reference_id, language_id) - spelling = Spelling.populate(name=name, + log.debug(u'AlternativeBookNamesDB.create_alternative_book_name("%s", ' + '"%s", "%s"', name, book_reference_id, language_id) + alternative_book_name = AlternativeBookNames.populate(name=name, book_reference_id=book_reference_id, language_id=language_id) - self.save_object(spelling) - return spelling + self.save_object(alternative_book_name) + return alternative_book_name diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 39a2e3699..9fe21c09e 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -42,7 +42,7 @@ from openlp.core.lib.ui import critical_error_message_box from openlp.core.utils import AppLocation, get_web_page from openlp.plugins.bibles.lib import SearchResults from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB, \ - SpellingDB, Book, BibleMeta + Book, BibleMeta log = logging.getLogger(__name__) diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 5f0890f0e..3657d1028 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -33,8 +33,8 @@ 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.db import BibleDB, BibleMeta, SpellingDB, \ - BiblesResourcesDB +from openlp.plugins.bibles.lib.db import BibleDB, BibleMeta, \ + AlternativeBookNamesDB, BiblesResourcesDB from csvbible import CSVBible from http import HTTPBible from opensong import OpenSongBible @@ -131,7 +131,7 @@ class BibleManager(object): self.suffix = u'.sqlite' self.import_wizard = None self.reload_bibles() - self.reload_spelling() + self.reload_alternative_book_names() self.media = None def reload_bibles(self): @@ -169,16 +169,15 @@ class BibleManager(object): self.db_cache[name] = web_bible log.debug(u'Bibles reloaded') - def reload_spelling(self): + def reload_alternative_book_names(self): """ - Reloads the Spelling from the Spelling table and spelling_extension + Reloads the alternative book names from the local alternative book names database on disk. """ - log.debug(u'Reload spelling') - self.spelling_cache = {} - self.spelling_cache[u'spelling'] = SpellingDB(self.parent, + log.debug(u'Reload AlternativeBookNames') + self.alternative_book_names_cache = AlternativeBookNamesDB(self.parent, path=self.path) - log.debug(u'Spelling reloaded') + log.debug(u'AlternativeBookNames reloaded') def set_process_dialog(self, wizard): """ @@ -335,12 +334,13 @@ class BibleManager(object): if BiblesResourcesDB.get_book(book): book_temp = BiblesResourcesDB.get_book(book) book_id = book_temp[u'id'] - elif BiblesResourcesDB.get_spelling(book, language_id): - book_id = BiblesResourcesDB.get_spelling(book, language_id) - elif self.spelling_cache[u'spelling'].get_book_reference_id(book, + elif BiblesResourcesDB.get_alternative_book_name(book, language_id): + book_id = BiblesResourcesDB.get_alternative_book_name(book, + language_id) + elif self.alternative_book_names_cache.get_book_reference_id(book, language_id): - book_id = self.spelling_cache[u'spelling'].\ - get_book_reference_id(book, language_id) + book_id = self.alternative_book_names_cache.get_book_reference_id( + book, language_id) else: book_ref = self.parent.mediaItem.importRequest(u'book', book) log.debug(book_ref) @@ -351,8 +351,8 @@ class BibleManager(object): else: return None if book_id: - self.spelling_cache[u'spelling'].create_spelling(book, book_id, - language_id) + self.alternative_book_names_cache.create_alternative_book_name( + book, book_id, language_id) if book_id: return book_id else: diff --git a/openlp/plugins/bibles/resources/bibles_resources.sqlite b/openlp/plugins/bibles/resources/bibles_resources.sqlite index 102fe25b7b69699a415a795bf7e13f84d392da16..47d136618a8b30aa35673472486e38a1cac239a3 100644 GIT binary patch delta 306 zcmZqpz})bGd4jZH7Xt%>9T4jRF*6V=Pt-AH?An;HjGa$|f%zWuapuL$UCdF;8k-e4 zM3~JD*qBop6B%+CN*GcZiWu@35`nBthB6>8o*{`L9|*I7ERc9EP^_4NQHzy1l5w(w zx7y}b?gkrnh9?XRPnZr*Y`l@%9K+A9n3~GiT37;9o&+>B6-X0rG%0GOCckHt(o`bW Z{K*rSm2T$r`YpMcrD8G5=H(fY{Q&wHNofE8 delta 224 zcmZqpz})bGd4jZH2Ll6x9T4jRF*6V=P1G@F?AVyFjGfPgf%zWuapuL$UCdF;E}IQ` z449=w*qC)0ix~RIdm9} zn>qN|6?JtPTP;f%5*dfhMPJ{-4e`0RXkvGWP%g From e2ae3025c99d8889e8bc3e0f73397e2c080fec41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Wed, 23 Mar 2011 22:07:04 +0100 Subject: [PATCH 010/190] fill up bibles_resources database with alternative book names in different languages (EN, DE, FR, IT, ES, PT, RU, SV, NO, NL, CS, SK, RO, HR, HU, BG, AR, TR, PL, DA, ZH) --- .../bibles/resources/bibles_resources.sqlite | Bin 63488 -> 101376 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/openlp/plugins/bibles/resources/bibles_resources.sqlite b/openlp/plugins/bibles/resources/bibles_resources.sqlite index 47d136618a8b30aa35673472486e38a1cac239a3..23c89b5df80e39da39e81eb94cc6a0e9b8dd1474 100644 GIT binary patch literal 101376 zcmeFa2Y6h`btPQyz3xUeGCH6ejlf1^BasA1kRXTT5Q!w1hhb(o(rCmq91i1TlJ1SwC~*YGx;YkU%hzZdVal$7|%01@_A#tcN$|(;s5Zj6@(xD zxQSjCyqrWHy`Qa%A}A945hJ>SF9m-S{JDNCPkEodO%FthIlrWNeB3LxUpFVrNpr!R zG1ts9_&#T@gMI?P&fxd6_`HO{dZpN4#2hwbX2=}HXC9wJX4vd=^xd;9Ao~;MA`0kP zEV9!~4tpid&CTA-*iz+An#=fi9%+^+|IUTBEKAmc3KdK#KJ~8!Z9HulI&KcQ3hzQi z599YCe2$y_sQh7b9KZJ>oZmy{7}6bd=~d=_#PHcXJ`XN_A47xpp&83dVqacEkE)56 zKs|BC((j&A*iEcAJNeOjD4ipF(p*Iyofn85@2F z*#^Wk*LmJ<#BlzeFrq4R^@wRl%qYSxAtyd3y1XfexK89ZW?n-0`Ni1q*Sd~6#Bam1 z`|vC$Do1gtFRx+D86IuQB3&=i?Liv$`9;+j_2cho4$X0OSk{`wmJN5+B5nwEIO4|V zEXMe8X@H&lz$m>fb}?u6yfhx zbxGDK?IQ(y_yX$8*lWgoV=95DI@g@bc!-^R(sVV{@Bvpii+jptIfe&Fmo`Ik3!gFY>x%&Z4}2(EP4zDqDzFJE?#1S2iDC zOu-zMr|4V!wJK|of-OFbXW2*Lcch^NG3?1bh&hcKap*!i-4MGG%c=a7E16?JI@=LN z>}EVWil>+_2bTSH8FhRS6I-Dz4H2a4bmQ?XVothr*TAy)s|}0MczuZ7hj20ovWHWM ze2Lb}l4E#|%psV{M%SM0?{c^^JXvlYRNi3O`o@af>^gZ~^X z1drjz{lEJ?aK8tZ_ds7PIOCJ4Xc1G&a~YCXKY;}+(DMYAmt@a16Zz$?XmH%S9k8I# zc@qEgTc9mKQISj}=<}aP7{S0f{4bGVzP%*~#=X-h<9Q^%fbSDn;zWLzvCyxA6`V0a z+7EjD3y2}}B>N+yGT)N-f-!HYdbgImkMh4J_>XMsTFC#u4*oQFIr#nHcY;p_9}Rvv z__^RGf*%WhF!*o5e+|Av$(Z#1-~ArA-vj^rJ+N+J0EKkUpT%d*d>uYha}?gSvv0v? zW_B$;>t;^ivwkLt&xYwSd^SxzkI(#6H$Gb?AIE3gWEDO;CWi32x(M8862*3WRv)Dn z5HVR}vVPM4AoRnMQSGv{tq?w)Y0Yb6W28|lgf}a* zrKZ#Tt2R0mt0N`N+qQYd&ZT*Iv*|*5UmqmoN=r!?9=o$a;!ckgAnqxVdmx!l17*_+ zqU_LLTcW7am{)w3y31(@-WQPSh1&vyyDbyDvRbryj5-TK9@_k!GUO7WO2IUD%Unw- z#3!_s9DxGXX}JEu0Pg?Y?}7V0@b9n(xc&oZ7Up^HwExMkS_c%Lj+Hb&KITmf+?i+I z$t-#|HWz<2JoHWlygHtGr(BkJ?8KGQlIGrCZ#uptvu?K6-uyeVvLVYY^(|2OZZ-B6 zoRD~R2J>6Z;(186y9<(gH;gN7fjcd3VL0-lL$PIf2>GrWzg&$Kmb!-G%ftOA9T|@O zGI`edAfO$MKCAd+2+z>K+{7PD$W4+)KDD%;(!lyH-$bcr)55(H?W^S2#ru%&?KVs5 zSn->8NV3dz`L;-=DH!s?y^mY>LTXt;xXnSk`SR_LG)o9~IKmx|6iZmX$&oA#>RcmF zngrv*Jq$ij!yInj!l-7ig!>j%OH=IDt%}N}DRygQ1^a8|hD14oR_;NRu?9D9JCri; z=ADK(s}*i4ShghGLtwv@C}3#|A(jg^WBhKnYY=5Mv^5ZJ6ht`rZrvRS)L~0o0>+dv zXvGL}L*LW>U%S4(Y8c>tLHB#$eh>T$^gt__s)R*DMexnA{{56Of9_RbXaAsg(R+{g zgWgBIFZvb!TK}Mb+5Z;*XZ+vs{~@Rk`htDICG%6k&jz3Q7pV5_i(JD!`EhKrF3F*T zH}>SYTS94h3DypNo;CKS?NEuOYet)+{deC=y@##XyKd#)^M>$Ux0Ua{C4J|u?AvaG z6Fl752EXlAI#b-(N`Ixz_*dG@zjwEQdv`Usv%A78IXc|kP2%>h6?gH)cx6Y9dv^-K zWbe6GSChNBth|!DOR0a%w3}b^{XsA8?eVYrKjvNXr@cS$KH$ICe8Jo7f86|<_d5R% zy`T2p?G^kl2XX&|Z-d%kbujEV2Tuf7f@1J)><#`Xb_+k_6@x#&9sXYq?OULg&`sp> z5;(gR;(w+1pSX#Dj3}S(HB`>e;NLYfPOQo(lnn3~svCr)PT^qmtqMmN?NpBScsf)p zb`VK1yD;EE1~7v#V0#E5521W*8*d9CxKB-P7gm0NN%Z8Ml5EHZ10H*ZPco12+4U@S%uuZnt5kRO z-4#4z^1{7DUCnM8MwPBY_n{KCE9`?MR~`qWnLhN*A6go^(IBJ0=`3a<`c&Ay)JK$_oVlB@4dmd zdcW%Zk@rJ>-rwP$_TTQmAHIN}#oDh8)&+ZlC(S2<4+o#Vy*U2Y5!$sDpa70~{+$=R zV?mge75D5o_zDh)cXM96v&-XM+$5XO2KuChvoidSXIl_M2TB1tC5EOaa`+5wi*43G!+<&vF7h3V@~+1A=`;~^rMTX z<%co+uFiHX#)Jl<@H?CBUW^HudH9{q_AJJP=BDtwA=ir-w9;R0nG#*ywFYsVk0DpQ zRRGZ+l7fl8xux{6^!uAu;VF7XhV~ya<)`4tENhULUx#>j2Ku-12ZhA)eTyk><=_g5 z(f*$^Pa9bKKH>d6e0@*)GyeDZzu}(d)Bg zh{HM!j$&l#({&xPn^a|Pbn&T25PA(QrkWx;nHyP*lZA*+Jq1v48sF6&{fL7{secGz z=dc#eVa;8^r=&s{8fjUNbOV?fw-f0Ki}Y_mn(=nc$)m`RqjD>F=tG^uxM=^t;xl&# z9R16l30gMd8E^JYmXgtqjnBKrVyN9-Q-B`u=#@};wOv}r4!Tde;Q zaO*?P#C6f8ZHw`&`%--WA{{hsM|?Z#&3P8`k-i&LwCTaccs?J-_urtrrX7p%%i-tx zrTFX+;>q7MU(O(gp2}y8*D{P4&H}DD?x&D)93VzD}F8}BJPx&ts^#=_>cd#Wm=>3TIfBY8nx54FL${X_X-Y*943BJ=i z>3xHr^sadm!N-D^Z#O{wCTPVV_chks2HJ*W+;1YSm@Q1i&eFh#_&1y^{U){^({Q{! z%qg6mH^bf=v#=hVxxKE&TgI3R!7-1<=Mw>Rkq5UA4;U;NGir(cLNOqru!;cwcH=xuG#O5b zA#E;%GyDNU#*k@*3ud$G7p}2ELf0RtHj_wkESk3ql4BT!zh?QJ|N^WCDsECNG zg^j;u_kpF{WSkFv&{TwDwMrd+6-`|_=5gz$2V1{vvKqI)bz}DcQnzwxek}ErB*h3j zBZN)_I+`CHVel33L(Xvpx6%JMqW!i*a{nm!Z19`Gufn?jKY|Yi-x+*s@UCDkcx!Mycsh7v@Gxxu!@*#% zCTI(C*jkMFU-tjP|GfWc|Kt8I`9JCZi2uDfFZj*=*Z5P|`@iBp>AxO$Vzc1ToJz1<qg$MA^LE zEUKi=4vLC3*-fIN8M{$bWR)Ed71Y`dqWn6$UX)jB`yJ)==WL&-zGk~l)Vf-`R@B;6 zc8#btEw)!wZ-ea-)zf0TMRm8>E>T?_wo_E+W?K+d$k^4QR%dL7sE#JvE~>rFLNZ}I zytZ!JDyp^7wuow3Wt&Acr)*wSK5tivTD8eGiE8S$jiMS`ZG)(WT3auwevQqE%C%aY zQDTR{C>S|jhsw!zEf-auvSp&m^0rh|Y2L;~#T%^^WovDTs1oe>h>F!(oabdbqInw;70KB^ zRFJj4D2%x$%3HYokX96S>|8N4ny6pR7= zuf^K03o3)a|2zMWVG;bK|117aVda0o|4;sV{00AQ{&oMH{|5gE*8MiW-(T%F_%(ja z`;zx(*irax@7KJa^?nSNhX3q+v-eJK!h0TT{)G3iw-;800oWf`c_}ZB75|s!^X7NV z$IQ>051apv${9Pa0U9nXv-29E;dt84Ylwzzg`L+J4VTo|c@5HV45UVBI9h4vHB7@1 zz8wDC(f$+8zO^@!F1_ zp4WhFXTBP-?Ov&!*N|-s5_Vo=w#`Q!G-%sA9wnmb6UgNfv_0_;_#SqRL zH-=kL$+@>V@_}f|&b?J+q{hy@MI=g_d$UMCXXoA|(yO;~FFA5c1#);%WO<{VdqHGb z!OlG|vUIhbdroA$!OlG^61_fmU1SMDuZfJI4p&8@6?4ysj8xmXD=z=2$gDN|BUZfB5X^|c>JLkwvky<xe3*N}kpt|>H;D96+T$XMf%9>QIVJrbB{Q3J<~ocGC<9aiS#pe?x;u)!*axt{Sky778#&H4~g`f?A#%d z9>{}^?2BdX+yRl%W;?fEWF&9r_K6JAT>lT55B_t>|6Tr8zt8XR>-}m!>ixaxU1VuDfXN!^)QS?qx zq9PjUvqi~@Xn-6fETVq9ElOHMy*0KdZWL*&utjmBNNbBNiW@~*@R+z!q8Q zE?X2gimcjbi{eI+rfORhH;ObCY*E}O(y+=F#f>8M8Cw)LisXiDQQRm}m#{@~qevF5 z5I2fsnruBC&ca zJ`{66%UGd8?9JSP~T$3fr8u`D+UzQZL;D&K{jK>eu7Mo z7552ho2{5nkj`51o*-3k#d?BdyA|gN5=~Z&Cjf2}-wCQ)tk_Oa)ojIeg38TSOed&# zz>4Pt<<^Sj1Z8WjI8IQSvSK(vJZr^o0^4TAZi12yD{d12w~5&V(WDix2_mgltR?`D z6Q>FMYAZ$)cr{jh#xHbOu^E4Lw-uN1J62gS8Na>JipThE9ab#HZ*ArJ_s!>w`JDeV zT4De8J||yaRnmOsj5qzvk~26BLHBx=`_-h)-OY*o)nxS5b}+x&sft(U^G^qKTG^H# zMSt}<&9!zqeHByAA2RW%1P>%zN*=*9iWf+bh5V zxIDK4qGzeXe>d#}h6WY!~+ zkiA=E6bZUSLZO-K6d9na3nC$R=2naJP;iGMd#h1|a9J-z}a9J<= zSGcUVtj*2|m-Ut+RJg1+jvR!`dMy+W;j&(sHs*xOdSl2}xU84`D_qtaK?32j-T*Zd zF6)H?HYZ%x>jC!)m-PT(%?X$F)c4pq;j*3_5(t;|)S*GbWj$Gt!eu>~Ry!wL)>8|V zEnL=3YYa% zY_M~}Wj*C+n{ZiA844CI>nUAl=K|NiJ@IZkCtTKJk*{!BPsvt0CtTJOtFp5KWT`>49_*n7$#ndt8Q-$yIDzYb&qO56loZ zBA<6#=G?U=%neU5|B z(KczBU1g}c)XXmSgY?X<_;x!hMYGGIl1Ej^5_I1Yk+D8Idst+2wVi!PWTeN=9ugU# z6$eH78|>@>k=`LYyWf$W)hRo>Ph=IEDU{e*x!cYPC3aSzZ9<8i<;Yhku@k^pFn3l=>kEL$jPw6nspg&0DGWeZWP5ns6Yyqa~Sz+1Lk(iwomR${aKPxP|8t{HrSavlm+_S>69hGT2D=gbl5x29# zvK{3}AS~NahR1|uJ4(y#tgviH9HGLp9Ts&EmhC9PW5Ti>1bM=;9nms7D=ga)K>}gf zj-b@e3d?r*6?RrwwgVdvv%<3NY@4ubyNAq#W!nPG+H%+UHW(b7VcSL*;ZJlW`$*2m_S&zg#`=Cwy+3c+2#^F7PumsW7T$6ShhKe1j4e-5j-X= z+YAHSjIeAoGMf>WZN{#^jHE;!dpt9e5_zRb606Yo8A*vID0VZF z5>2+!&PYl$VMl33Qlcq_P)UiVXuX}0lxRZDW+Ww=uwOAFDbWN)X+~0_3C*05lxT#> zenwKF(a+l%Nr^^mG0a?Wjc=%o+ZjoTh6>~$DbawbF(WC_P=>}!N;H%rUrC7uOpO^y zi3V0(QlbGm>5QaALkwLaDbavVospDih+v8s6AwO0h_p4ln>+YJcmlW^0RN33r~A#g z-vj@Sdf5<%qCsZe6RL5thxZMJ0u0b8E78Mp!o2 zTW4p4Wph0!LRdD}jq2=kndQ155QJrOojE%rESoE!G-27?>P9;wESu{<5yG;$c2r$h zHitc)8DZI6EBL*zY!03?Gs3dD=4Lx1ESrPx%#5&X4h~Z@!m_z06f7*8Yed_GWpfP( z6_(A_x7itC*<20@gk^JekVL|=IatnSgk^IXR9#p$2hXV)VcA?71q;jOQb-^yn@d7~ z3CrfNH950hT~dSY6PC?YKWJx!Wph>5&IrrqU~QZcO3YP&6iUpMqf3Mmb7koD9%Y7Y z;u)dDTpV*pC^2Wzc%j5x392rXn4{1aO3X#kHlf5E{3~XJ5_1943MJ+UF@zFx9tsvp ztc#*Fp~O1)E6fNb)&;|MMkuikR_z&~#5#Ck%?KrCH?-Ipp~UR^9d<@2G26e!&Il!D z`&Qc-p~UREwRT1*F}t?J&Il!D*PsqUiP>H(9HGQ)59Y5>VzwIq4>y7ayjj$o3jKeB zKY%CDZw0>*{4d-I{!_t+f*%gPKlpCk4*qSyHw9lG{D)vVcw6vda4onPoDELEJLp(& zFc=R;f^ESj+!4?nv}!HemyFFVxHG?zj5v)KA)J|iO)C8QGh-^ zSC7xv&w2QK-7Ig}eQb6cK9A4V;`7m2UaI-X%!~MZc;+}hkIiht=g}Fyf#b+D@9#Z4 z{RBQAn&wl7rZf0FIE@c;V2Wk!pJG}2rdsj2cZ#{~nPmF$$?f>uJ<0H0lQDemoH&Qi zv58~&9Gw`(=g33>pTiS;YN+@|eC{YdfX@eutXuD8d~Dx?k8Q6N{eK3E3j7+gU0{#W zWwV{&*3xCO1?V}_WwWahDqS|)0q!SVHro#Q1Xjl!+8|QOMYbmGOqs|Q9W}z(n^=j)T{ep?rD^H1*>t6ymM)uxgXy$%*=(}PPD_`~CNg$fx@;Dfo#_|Vit4nT zmM)uxm+7>0*=%L4ot7?}tw37ovf1()J1t!{TZYW8DTmTJJ1t!{8_(Hk>9Sckn@&rY z&6c#-Y3Z_AxT;J`m(2nwO|e7y)6~ zOd6dgESpKi?6k0K1|I#>o7LBe5<4v{o2kJ>6PC?XgA|s{RK@MIuxzF>Z>NQ2Gw|!5 z7M9JFBVS?JOj)&^7M9JFVrdD>X5iaAEi9Yi+7p(|U<-V@S9OS?nZmM}D3)QjLSciP z7M9ImqhwlGHUo4yEi9YCmi@G_Y%R=0)55Z~CCE%zwwCz{%hpCwGhx|U_{dHR%hm>1 z0>ZMjux(BY%htl4HZ3fhhN)^=ST>DQ3)8}~X}G^l3(KbC=yhS)w8dk>vT4|2r|VoR z(lHE{uxuI*&C|lNY1TnlHVr@MX<^wkJbkByWz#T6PD@IpR-u`a5-Cm?Nr_Y=n4hFX zssU?HQX*B4P)UhY4xy3~sXCC75~(bPMN%S#{r_o6iBv7>D=Cpmqclm0R0?AuDUnJd zfuuw#fte~Pk*Yzyk`gIwIZaDSq~J3#Eh&-0R?D=cL<(-%(~=S?Xfacg5~;FPc1ltr zg>wN@k`gI&>Xf8J3SNa%k`gIsF;kKfsaUI>l9Wi{K**G&L@H9x_3wLEjCbX$c>6EP z{P+4dak{3Yxv$TgTJ~OrTYboG4O#W-oY2174rfbmtatyb`~Nx4|J>^L|G&JS@_yL+ zZtvT?ulJ_C7rl!({d3G4_i)v(*Y4GM6?pgPUz?Y4_UEJK=gj{w-;avn&rS)+rm(#_ zB_x}IP@58xO?l1nDI!_lOPX(t#is~mNxvr^pCXne{qD;66u~U%Z%D@o^w*TcrwC~o{!TngOiTJ574a#8TGIa^8=oSo zCB0zdQ-rmo=TV<07wNfNe2T!9;j<{0$d>d>5T7EnB|QzA*p~EEB0fcMOL`LFM7N|T zkU!xq=^|+2Thecj*(m|s%9t(_9UO};5&rvz}5FU9SY z0B-U{BoM$&zJT^Sfa@opHy^Z9Lb%E28ts%2Zt_{*P6^>AuP5!45N`4s8DJ3Ogl)n>^obr-X2mPp`96 zLb%Cuy>@D+a(D_;M%XcV7E?ypG5I9qsjy@645}mSm^_U>5q3lyhil@DQURL{V6*o4L7+D+)o;AaxWx? zG~DDKaA0Y;$#F3G4)M9&cuX2@a#z+)NyAO<1dEo2n;e7EBn>w?3W*^NH#q_hEDbj~ zj2xulCWpX3rQs%bpkQgZ$p;|?q~RuEs+y99o7@IwEDblg6`|5_lMjHMOT$fW!DG^J zlbb(r}ZVsANnz6!4fd z+~jJ6O2bXUR5c|HH`!jWQ_^sgZRiJSxXD(GkTl#R46u{ZaFfj-rQs&?Wp+{;ZW8b4 zos@=~Y$~^t(r}ZFNFWV2*$}sr(r}aYm3C4ZZZe0oLXXKhiEs`U7D2|) z3W7zDQ8bfS5o84U5-NfWKoTi}^pSu-5u}GY5GQ(GqN|4MKM4N2!COCn1z-37?)Sj` z9{5+%1KfSQ<*yE>05&g~TX;>~)y2!i>Twca+fvk7oC2V2<#~L+XwoLxoWWj4{#X(y%3Cfboe%50*o*-lECO|(|q zNh!05mUcVolvytUZiHvJ~0%O;v28>Gu78td$&blC*#$dl4#6F8_p zDP1;^gP4#mo2Ub?-6vj)gZh)wWfK|jaOtuMZ2C<~mrdYOnMvug2^`d)lrEcq9eGl^ zY$B1ilhS1qIFvpqT{cmT`i`iGs#ZHGT{eMDze(w`i3(Iwx@-dH$R?%BCdwdPq{}AY z4KpcSHi1ipCZ)?Ju<1p^*#w+( zC#B0K;MOuJUACq)u#?hdYvOr3DP6V(TLF{OWot?x)}+hU!1rcSx@-+D6Pc7QTLa&l zN$IjRaJZf9agDEmKiH&DVhu|ZO02HHxCtdzm#?*xLW$KlcsMDPSdF_)CWR8K;UzvP zlvoW{ph=;`>XLCg+3Jd@jwS7+P+~Ps=T8bHR^vvFNuk8*01XmKtcD--q)=it+|wq7 z601sk?4(d)6}*ing%Yb^vY!-6tb!xjq)=iNuJf4`O00t8(WFpfRRptID6tCnicAV6 zR{1;aq)=iNOA|`0Y(ve25-VFVSVD=FEtu;L{4e1);JTnA7{E;)7WaT13?2*4;O_so1Pi$T^L_9S`Y>(| z`Z)ZCz7YKNEj;Ufz`yz);Kh|IFJIovnwicx^j01J~tCrW3)Sa;POg##r{47Lslt02(2c(%umvZ+h{2E$w!c>Jncnx%oe(3c9zJ9!f z+|HXEAJ?tl>qMTx1q>cZ-PFGL(jUIEu3e$L1$oPBMgB{dt;~aWNtdl$1(_pVwz3J# zO}cDlBUq_)*~$ilN|&vyhyEm8wlW8vC|$M^o4k|KWh>#TIw@VYGJ|}j%U0GxX_78m znFc!#oD`@`0X9gNtxST~N|&unKzd7;t*lAf3F)$x@CulaE?ZfJQ0cOjl~r~^x@;x9 z0w$!(R^k?&3F)$x@W`2vE?ZfO$E3?v##h-1>9UoOPZQE*D@%}rblJ*Smz|IE(q${s$XB{-MatR<>9Q3`B#qONSCdsL|W;x6}VSmLb_~4dBIKyC05|toe81Dic%yHO00c^X9sC6=eq)k2BoxPfRwD6u>NQYf*! zrqfOcC6?pFUd?}7j~el`Y$V12M1p1uzU zr~C(<^q+x0@VCM@_=n&p{OiI07yR$wFaOnxy89LUr|SUul9f{X&2H`F(VKW=wVco@ff!ejcOyY7dUew;NW%vzU)*NNoy z_W_gKxDK4*x(SphSE#Ycok*{@o(-460BqlGlMp_~4CezWF1(Grd3j z!M6}>)(>3(p0Yt2$*vjqmQ!8cKFln2_jfPT-njLf;krhCC&R-Fz-u`IOBe1BGMO%y zA0w%YlMDqXg$9QBnhTULf5q|27!YTpUz zvSqksb3(donH{zh(q+p^*4qi`vSl%_e(ADhQM5w3Y*_?FNS7@Okb`vDG9UGoE?efI znXRrBr7%ZKNS7^zd+CI9+0t4RAzijK4cH)EwiFi|Pe_+7O`^WiWlM3*?SypM(i&7< zx@>7Rpo?_b(kcir>9VDjNGn~ov;w6`mo3HBMHA9xOUp1qY1NE~N4jijyuwaMmn|jY zkuF;bU%?6KvZc5RXhOPdDem-~5K1hKl-miR#L@tz2_=@|!0m)kVks^^oe)ZluR;+* ziE-F?CWI2>*jJbkN{lxkU!lZ!J@OSwjOP$4lo+qWJQGTcXVGVYYehVRN(v>$Yf(v| z#CRIWPbe{-!iA7RiScCC7KIYyxOcE9lo+qsVv9nFadc`?C@~HjPf;i_Ub(>*g%aa9 z@l+H_jKjuL6iSSjRoS9YV!X887N1qka00F3vT=ajqOfcnXRV9EvT?u77KLTwIG0rvmbFYPENgLOzbGtgVMi(o%Ualxio&ub zxL2eoEL)OVXN$tJCAe#$C@fo&z@44KvL(Dl^OWoB65OXz6qYTi!X>1_vL%%ug=I^C z){4TiCFK|`Vc8Pgy;~HPEy0FRQCPMlzS$OqWlJn(fv{`|yn>6uvL!J*CM;V5kNl#r zYzZtzMPb!m_apF7*_ajn(3EQ(@Uy8W(^H%f_%V zRuqPI{uxzZl)E0$hV^t5@qOfcXdQeeVHpbgTg=J&qsIRbW z40=#eSTM2!6)DG`GnRFss6 z`3RMih(R6{B_*OQm{F1v(PmtlDk%}oW5G#EL|0+tB_*Ow7)?ouXd}`}N<Ta=WD)`66ih=OetB_*O6jHaYS6sF;#q(n50evp)ircj!sL=-ZqC@B$5 zAO}f_XblobNL7o2kZ(yjr+eoh&Oq@gg1We3;Kg> z;NynxU-Ey*|5n`Sf60H?-{H6U<=z)?d+(3n*8VB)Y24hs!|U-<=I_j>&Ci-2Fz+=} z$m))Nwe1npncfNT$CqC51tgd7a+?=Tsx4yLT{vwPe1X=JNK@OY)O=GXUspoR_awfn zTOy_rsn40G@&A+f%r-|%FG5Zj0!zY3?utAKDw}7_7=B;JukekSd~H*1RmAkUm@Don z)`e-#;Q!htmOO@#vuKV=X3Y|f5!0L=b+#MU@)BZG4Xk_k!XMW0H0qJ4XUY*n+YD2l zLJhJx)@8)ikoZ#Vr~N8hrx=>A*e`r-DfK+*mtbmMf}f=sZ_O6pFMY*hJNaJ3BcVT*DR_Vz_r z$6)lEm+T!Y2PxS*h8?+i$=MK0Fu3&?|I4I(J0=eAlW+_L3Jd1M{$|Z{3g|b??I649mOp>^OC(IKwa~ay(3lCc3!e~ zq!OfL?+A7U=OuebU?ZEC>>a_aOY@SwBdo7v?+Etk<|TVaY=fPb>>a^dH|8aKM{s@W zykzeP%!c!ly(74FX|D+B5Wgp#z&i;MO^|YHNcL{$XKqdY)jl(GulHs5Kz_D3 z$*LEKKIddDu^f@lE1kB{(?V-!fmpZ~cgDP$gH6ie?&pnOO@5tD{#TnZ6MQ6?3P$l( zuaEhY{w_c2{UXljJmh7}@02q``b_*GsoTgsC5hJ2%1GW&0|O}qRSq}Z$Vpj z6QS*Mrpen;6*JG^DZO7dkIh^Hk}GZw(Qk=wLuGyf;CV9)N;B*f0NhFB&{i2Uo0sLV zAL#|y*s&KupGB(vikLZuRHMkBo&KWf#oJH$)=<7z_8Q7r%K54bZ}JAqW99^&*@b5a zqw{!466?a$N6{7mG7e=p_-9>?`5%ACu(pK;G0K}tSF_28-tS=lS>ANI<| z(wKQ1&xbdPsC14cfj4`Mug<*SMpFtL&E(7b`Z|7d6!*tUOfinC??zYCNX~BJbf9j; z4h(grJYKAPb0;nh9d#^b*B{kz@4eCZrC0jiT>bNyNUZ+W2&#`4ZHFCjFV9{A-qzFG z0}c5~jq!H1T{+~OtZpIr>VE17?DS9reB~Udk1&TpPt!H5|10OjfrY<<=j4Cz3kLt) z|GVD<_j}+q+5;Q+;a%Uy@ZS4-d8_r(j;&k&?dEab|NlYU?=^!vy`#<1+3w#1E`)~9Q;%#2-c#G%ndcT0TcYTfbjJF%_?DNeZn2+NPUGFzv3ug5A zvJT8#rkc^atxc~+Kj*j`Ek&72E@EpNU-Nwk43BJ&5y^{;Xn&xMJX^M%YbJexft_30 zcH?ZYfY-C;1(P}NGTGb~?zFxP{z-sQ^)w?I2iuM!XCjIEa|{^R3XG!TTxBzatt76ZZjI*osu67XwTC}6G&KYNA z>FsEHY%!1-F`~xVT$4mDn)k${3Y4IHXzvS&`6u!FMv+T4yo>0leO&kCrFycwZT=JS4Vx|`@cm&GBDTHy~ z;YmFCy!#FKTd&$Zf-u^V*)yEVq1r$I&cPviCC1~xJ?}o7ymdMC=TW3*U06#FD>3lH z$VWDJj@5JS*QmFyZsij!^`y(4?Oy5~*6$?p0zS+NABJUczk;@KDrdJ>XHL7=Chu4V z;5@wy8sAMf;6QM2S&h}G(9Lk0ER%!MzABszFD^b1BG|hXvl2yLM^8x! z8BNE`ix{QjuK%g{s1j6#*ngZ8RAFx4;ujIez8X$xwuXJRq+#S2M}-c)+Na?RUcO62 zGsqd_u^}mi_z~3PD)Qy3SebI=C~^Ft`X!|L?M5CFbI;?s11L@V4>xxwcc9prTWU1> zcEPqkiZ&m?Q;&c?j9+(Z?ODu?(|DHaKN5WW#{D1RD!>1IzX$I3z-zMy?1J`8_TiNX z3)(Z;TVm~k_DuH1;&wrMCVQi=mHWRJw6n7po?Q#t+1ZO-l?CnW?Df$&?d9m5OS*%`+ft_AJvjF)uT1?}vN$5z<|?d*)hGjXAnAl(~}^xK6N zkwL*OXlG{}{%H%^*%^mN&VqJ!cH>om3)!>2b4BbfJ#H7WBIDzBAtTbFv|5pPBhNxwWb8q^kP;akwF^m+k!^M%Au`x% z7ivV}%-KS1>9bHK(r>j3r6S>KwGemY&h<@p z!HVoh|CWgC!(5JuTvuloq9WIVjEG#5vI~L8UJRixvL|B~JdxeacEO0mg`4wl6WNK4 z(zl8%U=Q*wB3HNC`8SK~z=rXgM7Cqw@FkILAYT;OicP;4MB;w+`R7IAMCtr46ywifcop4&4cRH`PGto@>ANRjR{r@94#rLg2 zF?cc<3UUa#|98I!{w?=FLlJ&geRaox<*xu^QzxUh7Iimi*h|tV)9dLRV z06iU!&O251lxZo#7i(MHA)x#dPV1vNfWA=FY@b3tJok_-!ZE9}ZZE*O>lAfB**LRN$q*gzeP z8fsc-@VJ16GOWJ{cd*BifV+ob1L@Rv3Vkr*3S)PM!+Q$haI7oBTdW;}dl7y95^8rD zNk}J(a2IQ=dko|S7xgT1Nfn)s*kj0yBSekwC48rfa1v`zQ{AL99nDBDf?iXEhuCoh z(~FI>f&OTDQ-H;Q3AM+QNB^ILed9%ZCW>$zYfe9kWHbk!fNk?B1j28uIZX|c*2X8H zuU$qUoW>YP7e0>jDP&Mvguhs4`eB#y1ZLc`=#}U2tDzX6>ky#{$zG5mNmBxgh38mv z`WV_mt@XTXZgmkZV~q&p9^SL~ch%&IxFD_%LFe&9wm%IP%SpUVd2oc8_*r~cz7^9p zeH1n3z&>wk-@^JGb@B8>l>OtpseSYEaP`x5^5=)}JAPj?l z=Zo~AqtTXjCE840bg9po+82~Jw~VRDFZb_i zuY}=T^;$1yDsSw2)lFQ?!O%!|&QldP00lIWZ=6k!_)|Q%iv{mrd>h$M1-% z$#ckI$=C3LTmNn5jXvJ^^$R$~_szlE-TEI48UpM8h5re+`ltL0@c$k3^S<>y3)}w( zy>Etf@F~~_*Lc?anfV0P{`Z=%K~vu7*8Z}O)Opp2z3?1baUM0o$Um+6vwpmZgv*~B z_YLPbVUOS!$CzUzhZ438-lI<`FUFpBJ#`J=iL)GmBlsO!XD^xTlj=F~VV1zjPfJnl z8I{Z&wFkf@cips|CNrWPlXkJouq58>smoPddn$aIsk91sOgn#)ewIfZYvEj_n4mW@ zIo~O?om<_JC}jT_ zu+^M(4aYfBhma4~23I|wFAgd&aT{*mHF2sC`6vu|$q1TSY(Cwuf26L!g+F zHKd;l%M5>C0hKt$aXyG=&$(63l53AL$Af4EMYL8q-;SF*!Wn|$w@KdHm4 z8|{p22kXa`m3WA`A3%t>80Smw5Odj&XE-uy3+sFl|K|>dakTE8a12#(5H1H;D~fIM z%j;+pcbu-8#D12+aMqn+;8Xj;w35v1!Hak%w^#YIh7>FMCJeY>5_`gY6h|kP>^R4t zc{7ZB=Ng{62&!Q>M~X2VYx)j_v*RM>A@P5e*+KuG_XekfF8|B^ulw)AT_9?*9KjlL(33CcP0*55-Jq`9ttqKUmn+vPd)^G$?M+#gtPHXvjiR#Ci` zY|?LjCI*n=d$)qIV=!kPGUi+SlUHCeW}4Q>mdK9Cy2vAuZIPkKKKxo2$(x$U!;!wo z1Nb}`S%X4WMFx;+0I?4segjg(BK@GYxztUO^+IGDvQ&1ZW>^x3wg>b2J2*pl0q1miKG;9MJbod5szS%!~>7MhX;NdP6Cz8tHM#uoR zQk17?jtg*TS!VNJVizGwyS)kh zC^j$X==ZokejXLXjn3#ut^q;`t<)8n+U-4@SO2ewAMg8^v#e$7?9{0POZx{jM`=Nhr53yR>|QQ;{V- z>(Y*xdVlaVc7!@T?@l{mYSU&6@?o@{({nTa4WM_q{#(o;A1C*J1^EAc!9?(Ma46V{ z-T%MG?*C8v3;xr%8>rupcz@>oruXCC`@MH~SH0H*^|yKD=5O4|pAVWDGy|*Dn1)^C zHv3%bLbR+&L;hB~liZH6>aKx@nP*#QzNR~q14=@qP*i1bb+gVa4DRq zSjjh;`h8sZBr>clR@OeQz_?7b}MVU7a^2xlmTQU#6`6a zs2t8(${)&=^PsX@_yjdL&1lKlr-=|ZhcQBeVay3rJIK7o(RZ3_%#$-Nv5EaR?#g8O z9EF~Z5pxV-WI9B!Ovn98>MUcZ*Lj2xg>>Q@h+sfDGxZgOu#T*M(+2hib0Hh!u9rrc zxPS^s)A~Eb6N#TN8~P*WjC)=(ifz$I-l{t>XV&Jl$@NiAj=MF%xu8)a8n}kpm|Mr# z-KeSN8+)2*I5QJ#*%P}FqGvd+J!{w#EBD`S*4xgZ-#d{5Fhj3$AZ8$vBje8Ya71sT(Uo~uhj|4Ti@8fH+|KDf!dH>*j2>SgQ zuho1RzCCZ|+P>@G24i|&ikWfn-sL-{y$47>Tig2&Lx{ z^9DTA^cJ}s>_!u~?5S38p)tillViQ!ta_DuTq@_yKcHl(@lvs=dMNaYIgT`(Ok^q} z=)*&%9y#>CNv^Urkv%|3>rsmxs0$I%F#ac|8g!Uy5Vamgzwa{1VDv?8vM(RxWIhj8 zu)GYSiatXeMnNTO&UIL&hFy4lQ2Rm*Ru<3O9P5h}VtZmkXw{G@2}Ym)$86yrM;(s> zzifFfbjMifu5mYE{Rk{qBY1Z7S=E3x7S^2%n$t#1O(Ka)m&-@chE^szF%U66f*OpN zHU7ibfq&A##Y<5{z#K*n3umGLURVr`Qj~PPhF;KI0s@qS=*CA7b^sF+!0+HS8!{=yF;{S;M0(|^Ry`S~I%RA+5 zgm2#uo424vcl#SWbuZv!BQWL?_~5Tg{>GDXc(^lc8A6lTWdezO9wGkT6GWF-xQ$pu z{gJ(q&6unYE&~33gc0rw=6tnxKkvxlsWSknTgeF#zfP_=HmNP5#Im=uqN& zRIWMr^eW36u9*=$$o5f9=fO-tWDX`n$x9wWHK8DVqn~>`2I=8>2a%BYiJncD@yI@N z+#h|trtAR}Ak@3uQ$&b++-1pn5?N3J$Xap%?V%oa$zS(6F{uO4-dKgFQPLHpCo855 zc?qE}qw<&W#369d^Zu5{w9LX;rg~{<+{y3cz~U0!dK}L#Q!#|1s3#KVut%xRtYo$E`2r~pj`bsk7xYOS) zRG*GK%*+7Czmm)d%?F`HDzorclYi_OGX1A=#A4=LOj`d56p8cy-xs_YH+yFNFZl2A zcltfv|G^ocS=jfRAz40*`M7xn6WH8Ob%+d(0FbkK$uNKWxjcfNe#Drs@ptyc%v;dc z+w9wJ7kr0gj zYD)s1$q%8wvz;;QJyBnN3bsMo0f*2@!zSwQFL1_VIj@e5#=2rdvGtJYeX+dJ?@dm| z568w4GKv%h7&iYX6=dY$ z&`DqCK=+$Xc#biH-e8;T0=w{AHf|kv5)71gBN-B>%SKF*%_xQ5m4n{8R&iXqM$<~j zx-9Q^O|U+c#;qvaN9L_*fh`2Jx;->jdYWz)mrZqs0ZDs zEQ!xOcn;v@>-`Nw7<_Q#TNTCS9X^i4)Gvm>eMe27-?Ssd;50)pB`*j$4>)!dbfdrS zK@A`w8y$iP>Ntt=pug+}lhcy`VmGR`(-i!^?HEA7LaLo?8rAP`TXcC%c02BKz?iS| z*KgCp-ir+BUHlh#kctL-i8fxgHow?gyU~D$jrm&t;8v`lI2I(U_LZNhV}3`_)FyxM z0my5tNcou7<&U7uSMo94g%nNx_AOFVZszG)hoQBE9A_n$A6sN>`!)mJVCY8CQVxQw z`c!zr4&!X6-JG99DpwH0Rk|MRcogY}Z~Qvqj}D?XVCTwBissGhj{PYea=FfUU@@2V zrorE^2?G!KF^bae?ngc9X6`VQizdHgBkYY>jSs*58{Q&ylNf#Itw#=00qsOzQ|Zk5 zg#o0)*sV-Q#dLW(D5rjYgVr~NFju%H73H9m&r5#O`fv*0R*m$f|6euG|KAjB3M%~H z^}pYr_4ncoz-PS=d(V2S&F`A;MkD{p{sxZH8tQw*nX(XaZ#3lRH;bwR5UmhZ@9{Sr zc{OK@54eTU^ zk?;pOD{%)c-fSPy$91&z5~S$Ez^~@r{@5V`_M0;sL1xr8DQ4tzLf%0rv!o}GL4+IRF7T0NzHe zX7`QX1;1mjmc~A`_jZR$_PNHi`D^w_018`C;gQI_S=jD#9DLC48Q124(sPSZB8E`m z^Z1{eQta=2=+!~Lup6QXOzv)*2LwDv{NY`|YnWFnF`jHdni?07D<=YH+{-s++%=R$ zOUe)wuKu0EiT9%V+)#YR7Wq2OD_rqQlY_Q3V&{9!jyVYb*O&wO;Fp813toqFe@Wc< z`)&S{{x(19eaw5w8^9jmZL(QM_Y=x$zU^P05vyaW{x0d1MQHPkZ_-~JnkqiUS06&6}&|q5oH}IR-&(X z2IgLJIgARh7ukcX)Jj=-L!U#wTZ_2wfD1ls1Dz3A`zPJQdGjgP8fHU*`V!hn%pyih zyJ~x}oP5Rijv#@yJZV9thNY$QsCg8&D5PvF;<5u?z_4=3hf1rKIkW69;#LFR!EmpW z6Y3ov+g`+_2E0sRoQn>aP##pLVMruLWj_?mZ#zrH5_+Up)goR*7I4N|&N1%H0mi|R zhMcvwsff!Ac-o8m0JnjC$TeS#N$}pfwXhq!?SNT_MC*#UiGY*$&hYRA)_~yQP880b z+E|Qe@=_2Ao*clyQxVI#;)Hlm+FD8BF;o|uRD~-5xfG01jIkE2dEIS;Mw4Cee{^JYXIDK;!JBS9Lf7dkw5FU)BrGrHkN z;HEQ9M&8VePk@u$%!`jWdvqsOx!aq^qdmo3sIYVPQ=amhYhuaRx(*M}=Fg?mRm8bS z_QyT!m?QakF^eYCN8ul9Mdo%*LoovbEizkapgn~CJ!+04L0hp_yb^#CNQ&N^dGjWZ z8x$P3Ly$%L%%e!yQp7Pv%Ak)&KN|gf^tYm4h~~}5@%?i2GtrMn4sB3fL;Y8OG4tJ!qUWZdbS-i`wCJ0}=3Yhy2(dG%wHs zhl}vtNuJGhg}rX>v%3hGXq@8;NW0TLomu2AR7KSRWw?_*?HL!$O=*@<=g$1})uN2c zXd%l9v&y(LK)vY#?}U(BDoaBC?nF>$3jM-efG@kg!NGZVI;b;=^vqqxH(a^kP6{<9 zPy(%BCr#R&7wW7okbkg9RjfBkPzKR0(4Od2G+}Wbu za`)6;IGt$k9P`DUH0mvL&#Z`W=Z<3j?S(odr3FNq1_gJyO`PJkXtAY7YwQ zmj}9&Ozpm_>5a$TnWlEn)iMms1a1nqHfiQ9&AoP?5#zN@bo`b5iS{U}q%{5zSTj87 z&Oxcr%dI4g?1TE9pT-cSg`S2I#=|HB+~p!F>TP%y=1nLWuSb#<2in)EW&w6W7guW>cKHM*w2 z=;mH9wZCz55N~S3DqW3UhW!5o-r@89;A^o9cq%v$^g{l7I05iU|HF6};CpfY=MC@! z+<-FxrQYA*{LhEs2l#^bMsK^<;+5hC@XwlGh4g>FI|XoZ`O>c`IuX;{J~)K6!qsxw zq>GX+ZG&V{)auC5!ApxyytKC>EvM|_tt>?+UD}%mL*YvCT~l--ra3>Tofk^jnxd00 z&8yt=bSGk-PO!8$E~cXtIAf}cPNpoq%c14349GdBF7+opd=~ zJ4kyjbE4=8_cCdDTONMSG!~uc*_=kr=sLi5$!AWxJ(;4DLcOWMl^pjR`pJo+<|O)G zLi`;1Ns=hB*iX94qNeCXQF9H-P_9>zGT=OFuO6guUuuyPL(Nq#rPy+P(aD^F%E5kD zd+|TvEZn?QbjNWADh7ECl+Igl6t(WE+yULja`!0BA64#{Zey8C&44<0Shug#rC>us zA&)3`c(*U^(yolEaEE#8?BJrHe~E4BEOD(SKV+YyH{9Xg_Sj-)h@-D^$9%U%F+;@B zIiev)=ZGiW;otTMI%Y}4X52C0-T-q%Zf@bY);#N$qwhLQhUDaR*R!6RErP!1O#L+m z4h-YAAp&S^e7y+TAq{tMxP3?4dh}s<>r&DkA#Q)riLx7kS6trPohSX&E-|D>;YkwH$f2y(eKWBc) z{DAp7cnLm%|TO54uTuYpfG31KZs^y*W0c z*FW@bbI|M zrazkYG8XWm<#(| za-^y#O|S=ZO5W_5qEiKXyWJ=)_Zp}wI(@LQ3*3ShbIPR95lt4I_Sar; zVa$``kSRLluXnWz4GkugftjMy0DC(Ib!i&&Ws6QY`QMHn2|kba_x%7o0N(0W|GJ>s z{~PQCd<4D#bN+Ss1MG9>|H{3;@_yU<2y}q2^WN+|=^e%!K)SpHHl;rX>Hj`6g{*G# zSFhLI46MJjG-{NUTvJ?gPq2jp{g*TkIc`g_X}uJuvk$8`967G{wBC@@xehD%_b{Ib zk*Em#|LuKka9mfJW_L@L{3XlncDuXPx|XixYx!DkOKqubx8=4i*$T0V?AWq{6(T2c z;v|j|Cr<2ujmKfsp8{q`rDg)fPEn~{ilr!urM4)FrKTvBVP=43rzkeXP*W5|7|2W@ zFck13Ma|Cc^E{`o`*y3PILrPVrEEv%zUTX#_v1P5d5>kD%gGL2HZsSXJ8}c&v&zm=FJbd&kL{ps z#OlpzIK?_sTQApiEJGbNkNLQLqOR##Ve_(&y#<_g7X2f4jhZKZTpR82>=2G}*u3{+ z_lkF478)Nh5C1qlm#MuGr6*;lc>~DWjMS$Bzg1pYf_C@illYCg9J#klz*HAznOYWm zZL}=gJP|aOz%T_LyGHI><)xNH4-xJbS&Hr&<*KDq z{%^%xLHqw4P5`gATxdD2*MBJczX#p_(|8T^+0gy;2n=lu{wDY%-2eSj@Ri_)fc>37 z;Nf1}0{S-?p5MkzLAr=G`H7h4(VW<{e-2XfEgZ?|P1B8Y;GM3UG2|Zn3HF+0o>R+4 zrx(u*dzdtDtYtP%dox3On_fhknR)4&PGs6YGi%HXY|#zV$1%oX^9Y+AMh%{>8#S-7 zx$CF>x-NILG)$*cv>phNG_SN})=hi*?(gbm?uOP*$F!&K`oBiZTW-!;<>d@f>xh_V z-JCVb30Dls%co3d7mvi4u0U*u&B{9uN)H^4g5umbhc6o~m$(}ME%T6@b4Y8Q{WhtJe&Za}O7~Ku=6N?aCt5-d zoHMra66eG{AnICr%sl*-8r4oVwir1pb3CRT`y~gAF2%8pnn&T>Y*mU;o8rFhG%v(i z`!3gXsYh5sdav42uP-J3_+fq9qxRH)>o-ryO=hb3IK%atlqXU9%}aBWBh^xtrZoFs z`v2!8{Y~_bZ7mx^Z{hymcM$#eWkmmd0{8!q;uc_6@b{4aUk`p3*8h``{e1iDhtmE( z0sQZ>(f$L0sCk^y&1o&yMm1_)s&o%%HP_O^=GjVnbecV`j=>7+NUz4v(8KBOYc=HuA*elNL9|77cbL$)ROvdu6Y9UR7UyEp!UT& zt2ffFc_Z`Gh{{=>)-sQ1W{1J?{JN`GR?@tznb}?KS%V&A9@})&;5d)MX5ntpx-&0t zxLGX zb(%*!tpRbFe?(f?yya={0H?UE1DQuX9d~*XGi>x&>}>PCr?XwDoEy$@!aVhv?pLa( z1#x9SnwqyiQ`@F%T9EnDX`TYL9JGu&5P}Gs7eP~7!S($(6KfFKlkUUnGUqtNnhaLl zX3uVmnqn8pGSHCXwPl4ZQm3or1rUiK=3foD=(MnH0 zGGDm=yKws0^7EEg;Q{wg)x zzV7=rihFln8qlfe`7Yhe=B2XUKos6)yojHH-`PH-@b30dYj$3s`IU`zv^}_l1_%7s zcY!*Kyu9~4ia!VBw`T79Oti+#Gr+0H`5u%u1d4IwI*gm)N%JajWnJR=CWAKY!+(}}Ryf;PM-kQS^uxGaG-}=&zP9fC2DIv+ zZmFL{Pxkvpqz7%`?e$TVcSybCr9gV-jhg3)uXUhj3}L`l-+Augc|rLX*Pic3?s0kZ z9mc_{wuU@8y_4Iqlo2OST(j>J;H512NaCG-+&GClV1p25$gz2`rTyfBh>5drJ zsf9edk;1!UJ?1&*+=|`p{B5T<=Jkt?aij_5 zu|wzMpqfDb5v1v?zz&`dqjg-n8LV6#6J*B09~w0yU{B_8XnPEM*gLn0m{+2m!_!7D zGPfln=D}#^kT^dzKl0>=c{|!UD1Psya{otw8@7B6+W!MByI}Qy9nroX0n*3uqm*~?&ErRUF(a<;#2 zCJtf7xK|EhggF(XFW!QW3nGB?EwBw&7V}uwk(^AtI?xBA$ogR`fjvm zLOmInpCtX+-eu{@6LVO7srh?Ude5@d?869ZI0^c9i+=Ol(34}6H>c)h?@wFH(z7+( zuP0jv=7j~E?Ov9CGs-qAL#M>E$z`cGq8(<&xTZ4mIzqnGwQQa^#&R$I&{NuLnNFF{ zChGF_Xq~=Ge1{y{lN0HA9XZd&>!=&oIcurqNzLmNdOG$tc{r|YRc`(W=i>UNI(kZu zG4 z){&YkoxJS?@;uBkXZN5?BfXpTxjxVM`~^JT0&l9!vK4JbfxOC0wrJQ77iJd0Z-&r- z@%dR($jGuaFJFi|{}5Y$YPexUx=ETUgg|{@|T{U zW;vbt`_+R~L(6(K|KwX{T!!bTNq2GQ`HiRnffMleDAqEyJ8E0^UJYE^)(nAg#Ey7kIPlW#&B(=Au1+cxGC-k1)lkB#4+VH?vy^{oDzJO4Dl zof<#C8GCO(_5h^{Eia>``uCYNf0?w|v4;H~#||5T)-*UTOmgP1&t_UI9sDH@&OgZ# zXAUjPwd!*S%bYp5EVuIKNX~ug{xRN|Nk!R|IgtTzzv)M+|x4B zvbkk7bb+sjJ_QfJyF**y_xlfe73kjJR-k@AfY0BH*hY67g`h9r$9g9YXw-@9@uZqq zjzR9|?RPcMlNTbF8^sFo{JZKY?7Yrn$M$2_d#E3GpT874-^;qjvR7&dAWxJ1G*(`x zwAp=Eh$!+-czr!?UMIDu_G$%@<|(X9<2%N+>o3dA>-_fA9`$W`+QEFc<~UO=mws9G z=pp%nzdwWdq;iZ@OMm+ueR-V-PYi?8`f)^msaL@T6Pl6T)lu?J!|SQ+yv~fr(%^L7 z>1uuZt_JM9PLIciuGG%R8)*jen^@b~LG`=d^^E6u^|cPR+4HxsgK@@w{8}=`fmrt0}1KG!u z-AAfrwzIBOmv$A;Ts<#y?*AmN6tw&U-v28B0XTq@|DWUB|CP`UVE*Iq`iTeM1mgdR z;8l3~Z$`+i-vquJ_%zV|Cy=e_Pb7bkwK=gV%6ZCGBhPb8O>dgI8|>q{(m6Af#a8|R zzh$FScVUL<%+E{lJTo%#xIaJ2?~@y+IEJ1}^K+03r1nerp8S4N<|0)}ScR>UO3m}x~Va=h9^e6K}hNS7Jla(c#_P`3*kD|fgZet z??!8APTQByu(pY{4W*KYaXd^ro%{%?j;&c#Vm)1dewcKVtLsW@CehveZc?6F)lgzH z+Kzmhw275dM)Jq&zbu3{ro<8SQ-pR$Iox-DYuF8khtga zl#VD5igPYU*_Yo+%88uHTuLHy|J#V13jd$KK?Ii`b7sLdSMj`{L;WewtYR6w67a!557tz%ga+L|zzY zdT6R%{+p78WR4B0M}A3eq`sjMdO5aBeQ8b;%?q(~Q{Xq0@m}47`Fq%^nVs0##Kets z=dR?4q`)r??;tle+%uLJI++>}Kl1Oma9%j1y<^HR;e|Ci?o_>m7pCZLSE^sazl*JL z`juXj@InRMZIU@g!c*c!^TPk!tw{Gv_|CjAKFdZao*X~Ia;;vq*~oF7qd7fOemNe^ z>%`3MlI*HU@t*u)=FcUt28`~*(V<3RPOp%cUkvgcDN%bQEijpTfxg{{c$w5Z#dTcErQ;k7eXkX@e|uo^i+xFDO}-eLLX zt{@BEaV`Jc#qzSF!q0`)4+qmv!#;iJJOX^>$!hHo0x1X8OFc{LZ{AaI05+HFGX& z+v&0VbKaSk&23qt`vvAVlE21Lbdr{LQ-P_myzJ~$m*u~wz%O?GIns|MEVDYO8+-Tv z%v!jN9?9Bv$X@;w(Oe(VK;~D62TT&hii!<4er_V6;iu zz}XIq(u3Ms{r6;ExO8T1HNW}lt-)koD0F5`HFy2jSpG4NM{2e5dYY3Nf1%E)Rm$i8 zlE@2ZPPbz}nAtao65ATiKf?0tHq9=BF;IJYSo5_4^UF~()NBViBV#Z>g*9+N^U{j3 zsa-Wl=4Y9j85g%?`CNm>clj~Y^^ocs0}t@@74H8Y`v3nByZ;qP|3_QyQVhUv`u8jF`+p#~KNttd^^?GNuKL z3K2oZXnHNsQ!q%t>LhQ1n&>$mPG$U|dkVJ7SXC{<8&T?EhN7b&93ZhWc^Z)9)j*`s z!yHa~lHMNd;lqKagW-ZKeY-75p288nh}vb*=T;WLG#hJ?jh+iu`?#1QS&)6683#}BYomr|h6}RH z?J=w#Z$^^^S>l<)R#UyJAj>;*Nb9$e%O(rP(mtp)-1s$Ckfoi%R03m9Hgds{Q@gCS}@ji)-rn68(8gJ`&L2Lb#||6uW42u zcee_%v$K2DhQ;3p3bMD)W~%v_uO6AR!BO@C)o2_!1Rlxw}J_U-!BkunR)l#|G6K z)@pV+rJa}8E(mWQ+oe7Eb?6(R&%+ns$ZH`jwu}2dv9MM`!CC_0eKZW%Mjv0I^;1r}w9oq@M zKzV!>e=}0jtTf8mAidZyXTgrb81p9vz$utFT#!~}??@V*<27)HaN!VXY&U6i4$7QJ z!QdU+mB!M*#e<20!8`huO0A4?{}Ol~zX|V1Z%g|1jVJUiToBe_J4w%rjk`stMrx}# zo4GG(s3QfT8BQOlYx+jCVDJnZbsLFuv0Aq947*pnkY4+m3m+*uGx zVQo(SckMv<`4xmnSQc{s7OV70jF7MgyE}PO`-bJk3PKrDT}i(lLTaaw=GYxeB>7t2 zYk`iSxv^%nQB&*F!ROIigEhoakEe@xy%pBr#FEEQA9WGd=oW-FoZ5tPf2n?>MjV9lX{49gg71~olI74b9%9zILVT1(c_$B%%Y{8Bs|41c1g|*XB z5SEbGppm!$8ds|#j6QqkMX`d=fzUwdJDBL(3CPNznQs1j5A3)@)6jMjSizm2%@DUg1`7B|WW3{_bU_-+?CQCr=v&ka2J;TH8F!xs09B zSr8IpjbRrU?IThU`r#a|>O_W*MhZeboI}-B=%otba1K^iu}O^{!MHrVL0Hgi~a)$$B)$tcFNI2!*pRNxgv_ zoNJ_~AWR~+x7wDPPQm+ChC=8>ZcnvUiz%Ff(1>H1+hrKboZQ9S=`k|UDF~Z5Hgdb9 z=5(>bF|Fre@Gno(FeM}k!YtCet34#w@FZibAlxFA2FEe_h4+Q~e>0+_!u$8rxcN)m zZzJyg{wVZq$o`jc^XCDa0rbNE_cy^G!}kAD@RPw3Jpb>54X`=zI(&lOA2^yW2H2+A zfw>8c3MD633HcT+6UI{I<>rInp5*th;rnbLQ+R=SF73F3JT>V%8yGIghQH|EK|T)^ zU~RJRFKxfWTvx&1X3^e6LDqk|e~x7}%5Y%->1}g<8E)izq#zu?apow)jW0T-_;t+_N?VBSm;+Nw>1Y8^S*UNEX0(S2lb#x=gBZX@$-RVJ{ynSa{(peBH zU~QiBqG{Ekj^UG{m|EVsF4>eMwsc;T^3bOxmi8?OHaEz4N)T3erg9XIV7EfAx zqaZB6iOm^lZBp%maDcH*;;CHa7jdM-RYJt@IrQe2(0UCb5JjyuDSZ%nlMsRQM)9ti zlqPQu7laDfk-3_j?kNZf$Ze==J$XD)e6H1S;Sxv94x{Ha$t?sRwSI1~qD*8-`65P|8AC3tWn{Xjt|!P<*6PM$_rJZR6}$h-xbt%t?)&{1+WyCZ^_{~_{}4hg@};lGL0^;E8|M9+q;FSEZWYj*O0ugvC@Jw@5Kxl#1jlS}nw zC5y6iGyCW6!OG_-^aiT(3S84E%Gy1a^?hw7xvZkGdiVM0&R_?5GAvz`)jPYlu6N|k zrbfTSdP1{uDKJ=+?K`u_*URN|>@CXveJZnLE%nmupD`u|&B_#4apo_LEK%1|`TB~o zm?wsP{jNzwuk^m6tmlc{J}NVcl#U*iT{O0I+DGNdNsp$lC|i1B$VcN@vKJvKOmEV~ zR`zCgaEWoKS+=!2gT)r+nc3BJ1e)dODTbIMm-4lR$YRyv#lQWLXfY*UE!G=b94*TJbtCx777*{hg#S8>=t= zEkc(#a)`QAv`BBasei^lvZvV1wA_lBW>`PRGEz*E!f8c+Ye;{h*u~Uz3-*#fs*uT% zP>vAB%>;@wsd1$SXWoSzm+^;V&;7pzQXAfXU%?B&H(>wYO&b7Sz~2mg4%YwsVg28$ z*dMDA`{PH!@4yrIWt;+>!3&@p-~sR^w1Tf;?^jUBvOme#E zNXr_}tZDK!jlCf|Jhi&Zj}b6mtSD|HlITa332B zcaQ3<|JGNOg*%a{=Bw8m46=VI&{w>RrB94hOK46ND^8FqH4JX(+1T7MI43S1)tBA3 zTm6jo5~a%#esR<2qvt(ga*Qj-5O$rhASu!K#VQJI&JL=@estdZF7!FOOKn~JJyJZx zlARP*g7J!Esj1>YrcUof3yE(Vbdyq|=0CwcQFf4%8~gtp-~ag<5P%oK0Ukm0-wk*N z{3qZ5Jpca?{D05m_Ww{d{@1JU0s6Dx6Ty8@j0w+t3#Y0nHbrT50J-IpU*l>L2uu*=|yl=22^Aa?7ot)@fy^N$u~qhH&F z8qM1%?wurC)#W95w_QyL2!q2R>&o00|P}_ z{bvWdJUk@~jm7XF(?;%PgS1@3t``cG04&eYdBprc0SN7)!q!rIKqK?Maq?D$#WYqrjEL z@uELKtawQ~FphF-dJxNr6lLc-F>zmNLQG8+W#dn8!pw4>p405{oo;&5a{OzloY$VB ztp8k8>*#5GC(k3zBbs}h4;5wYI~!Gx!A%gcr6`-;i6CE13yKsU)~*g??rSNxY_Sc17|C!Ky z=#0?*zr^jo6S(j5Bl-B9U61 z&=9pVf4Xd7H#kJitd^cE$@-W-O ztO|}h_kV5gaGsXRCkyz}p*r5;?YX7%4VPpGUp%O_U`l`cT$z%wfpc}Wc`|jm+GGP? zJm9PC?Q;#5WE0PfV)TqA^L&-JEHxUblI-K@{iug0+x6V_Zj7t(WqkrO!5uMBlC69; z+myZ@#kdyeE6HY_*w>VrQl7Ur_Lf?>j-T3FH%8oRjqUO41y3MnrW9h%OM85ybSL?8 zCE3u|GjCfX(OlYK#(&@A_oJl%>%BJeHuW~oJy?8!xo3u(jtV6ji|MMyM06Ym4a0nW}?-Bp++o7+7K8X{+2XGsB3;h3n z82m=?^FRbk!DrzIbT_3lpGZmexU*x($f(z#2jD!pB#Yc~ zhbDz5&ml#&xV2p=jF=rO$qG;PBgN=X)T3WR?pR6Icxu~_(a4SM&o9xEta8^GGBS$R zvV2ZTvdvRlk%RcViK=FD$Ub-bl*1>dO0v@JEki`S&1+tflI(QHMvKf10G1Fg$ws$( zhlnl{k;i?Ik}PniXQ+nAlhWAVn}>+V{}yyN&~Mq_mZjX3^^uY+Y^NJ7A`Q>)S)%M} zCpmN!zjF>r8!Z`ox@(BY!5iS0CfzN`o<5a8sWr*Ra`-IwC2&NJD0eJ0+mdYURD2O_ zv?P1mjSYPZrBhOw@$V`1afRkKA)VGFWi8)TdgJzQ$!Y6AhkyctoWoO1-2>M=)d0Y0dL2m59Pzprh2oZ;1^WvkMp-S>H|= zqrfqxjsvg5l5FnOddwhw2;V?|P5YxIS>A4^M$JUuFz)xGIQ`!T?|;VrvMy20|a9VJ=fiIow?h(W}ak}Pn$J!0c& zdq%B5)Si-T?QC0wQCRpYcrD%wBenFDWOL_MM7*dyi{ibMWP97K5nsHQ(rL{=OT-uN zr6jA{4xy&KUc8smy`l?7!f4C5?wck`vbfXZ+H*w4E@P&+*Ktd!B)i)l!#AFnaAihI z#^ydO?aDjzV7hE>_mEbOKV5dWdr<4fpKfgLoanjx%wCC>WP7^@L|;n}m+n^EN6{8) z4BV%YlI(3~zjh{1*?)^K(UR@7Hso6obwPuadSC6@@(x|@g zQX3b4?=0=-cPlk?8ly~pJzUB%<>F3A7Ng4;`;mN+h%MI;*Asa%IVtBCXjf?;bJ+u! zM@kRsPTc>!FyVpze+J%vhg){y-cJZ||9^-(fS<)F;AOn~vn#X-w|{?y-A@mIPa*d2 zE$n~d|JxA%`+I>uTZ{o@OR|rz?7$8*FG})-$%EK)+-r@|fz0cZCUybBTa@0W-M`Ic%5gW+xf(N63km zWHY;65k@tuMZoDVJy`uG{(H+x@RmDws*YsVjx`-WShIP0Hk5Z`z9>;2_cMWRV(G$uXh zy@`$HMOiSbr9K7Z_VPKZXJBodgLy#M@3hpnrn8HUic>jM3KUWT^ z@YFC?%>R3<8LP-d%VA6y)9!O+*hz@-liK|U70n=pCS+i(==;h6744?~prSLrNIcax zmtHV!9{Pg{W(Y_I-5OVj9J2+^mu{)(?BE}~MmX9g%1^C=OzZj5ADIev{lV*`c?I{C zZkka~{Xv7nmLI_I)TVQ=^a1YPnVsOsj32}mbn-S&tlu?ep0cGI%yDJl9Y{P%5=vq2 z{|$kiftLRat3QYnzZ*F1TVIX#N#ySpApFllz8?+jjFx4GxGUQG+m5#FXd7s|tL=E3 z+ZHYxE2LHF*|tIa7c0vONwp~LXj^~V-Jm^=9Fejt5htWCyV}zDva>B(-oQS%!D`t@ zM1NP?XjzEjwQ)$SW)WMO^AfLjneuv;dTH#A=V%wK1uWNcC-Yr9EDn07yuhnNfFUj$-=;XZ~20U+Sw*qnlFTALd6SEW&+9{FXOde6dK<5 z2NlYQZsV=@mGLex3Ul|q!{J{n`dA=aXw=gC%6Lnd1@C!>^YV5DbN~0#|L0eT0Qe2~ z|J=gu|9y!3^A9@xdnNRz@cnrJr+-^u|GyRd0nYwDhgcvU{<*y|~9hW@tBvMeEMNBdEv zjVs02K5qL2@{J>BM_IN{VmnfHv>ih^#;WPZ@8mPPz-7W^;f?mT_T6nqkncFsJIZ^w zrxQ+l3jBsN8UAi>ZO^ogiIepsZA58(pxKVv*oJUjt!JIv+lDUZ$saQb{%cA z%ND7})>iw#^?IbC#GZ0DX>x0t(0HXJRmy6tL9PTd^Y!iODR-%qRZVD2DdBR06!yw? z_M2;M0IMR-G^bs4kGJi?7Z>9zjL~YtIvW99w$0f8c>m*9E#Jib-w!GJ_X)iJ`Bvz= zc>Cke5CxF_KSPKG`X*lfpzVJncpmS5n3$kn$GyLg!|Si*CyP-@jp-V^qJ=_tRK?N6+{S&ctamQ9mtze!A=2sh8yiSTxor%7qG-JHhn55kAX zDW7A?u@y*}1;)YCj&$%cY@sut;AtYy3erKVEYvXDdh>5_otX$U{Uq3m>-hRqAW;^I zm~Of0`SBRP3D(+IKFc~LLN_Nt`yBo-ehq8t4g4*Bo5P<6gNd>*#dJ_DVZB$8{-nM| z%0d&Jam`S=ZL3ygxO|%B+GCg@?)xFkn_U*3ICfav!Enmj8aayDc0nV2aqLi28l$K6 zluxqk+`&aOW*r^FUKi?^%e8NB+l&1&+_0kEHmfWQGJBwb!Yd(M78YrbqK>RM=yvRP z;gG5Q*qht6H`yMe3kr#Jvh8EoQ^&Oj?!qb+4r%Rc=YHRdR`i#JKu+#e3U>;3Ejedx z984dbvT(^`dzPT|+Ub^sRG!L!4&|fvyTt{LpvJ~B`^!QvCr6f~^-7JDg=jj%?MF}^ z%N#~|;qnp9>2CCroP9g~?ko$xw9?=}pEqwXd^$kS(!N;1rZ&kc!x(TLb36;TmS$Wp$ed{UT;izn1LVJiO- zDaHoHcl@|&trWX_Q#8B8ftu4K%CgAPDexlWX;rJEzbxBpawl5&WZ<7}w~jsui1P{_ zV7L@K#L7ZM-2w0d-hL#npx;7gS!k!V16;=V??lQ%FdY}Xh5eWlQX4J{nY6bnm2pkr z!BW1));s-5W3R~>V`ZU|sckpuk3$TY{u3OVa9QZ2?TCxgW9mBE^(@P9x89rrrHMmF z+Rn1UCT)~$qSS=T2Ak|v4=x+TyZp3T&~x*oyeS@0J)LFYla>X_r%@_y3YUdW+TE!6 zX>e)z?39I1rn-l zj&yG(6J;Tm=?KP!t>!7+v*;mbs*j3Nv?@_P&vMgis%zZ; zjr+eVaFFr;zS#0Ir2j*>131*O3I2aS#{K`#AO^@S?EIDR`+X6&fOg}y|E~hyz-ix; z$P^f;NPjuI_8iai-i;o@OEbuIW#X>Lz9T zH3fLqRix`ou4+uw3%KA}i*51*I5SD8}^^<#&v&~bu#u;vw zJ6sXYVvlR@(fjavAW{)};*4Q0(<9M%GAAlRMbd|FGTKT#2TfFjd87|%?KgfCo{>JN zwO{`&RuNW_$|;}cIVDe#im-{)0p;?430GEfjO|gij(2OG2_!1*+F$!`4h886Mb7T= znrNks-`wnN31|GAla&=r&+M)4b?UQ>Kg*lNIQy)$>g%5BUa$Y!S83tbiH!1+YjdBo z&N=*_S94z_B&rdWu@n{ee++sttbgAAr|lod>EBmz@^^1&JKp>KUhp%J^Csrcukq5? zEAa7IBJQUr`kjib<70gdJA|5h&9??O@GG*J$F?-kov6+`PdfW6vY{vK1{%sF-cqF; zG3%|bBD;E`w}H~!koBmXiY)D8Jq=WzhmJ?rQ<3$Z+q{U5^F*7Xry^@SXEji;J~JbI z6QIh%Z>vF_o#ZM;01?W@2SSNlD zAg^Y(BFp|%yrIlyv`$4f{;^mCt-0Atk1{h0sfuj==}lFB@LmLo@%zqFzP}f?82J)C zaYie`0YE zeU&X5??^+9H7{Ipd8=ZRD!ZY9inGf#Y*&OgjD;J%*QEUQfLjp)acX@7O-<@^6wJ6e zmCda0SZ4z*=a=`4YjnaLj;(7V73qy+ZW+%7oQklAV;xOoqMwfYe`8>r=l`Dr_IEFC z{`?3Lzn{Ua|E}QAgI|W!e;nuhn*u+ErT;t#7yYCwvZQABo;wDw^xnWd7T5)7SYwL9Ins7 z%0bpVGq}Wf7)ypxl&@kw*n(6g#~jnUnvTR`dZ%(gV~|?ZlGEC0+`TM!pfXCjvpb}0a z#~tJu1O7u@)2y@M%0A}2=-xq2&(@+2wwJlCY`?=?l-l0P9;gUqKHJ~0k6AjUw27?X zwQryz4EpT025Ne=l9Jk=pGOFtKISw~`(sRScexcI)~B{M(D|cIcrD=m@87Ye?{b<&qC|JKePjw|F3Ws_+Me`e-O6*3F!ZP>-+EU*6)kZ11^vsSd|MLt?b6` zlW46Mi<>baDSL4Lq9Us%73rofZelx{xU%7jEE+r9UE`XuitL!w`tC+9X;);$jIHZ7 z5d+D^>Z5Q!2Cgimajc`e7I(0b#;QD^_O88M4tXY9%a{<4p+7<%vukdbQU5(rxu5yd ztE>6_7Dl2XEHb^Sn%Dm=QV}ZYw0HX>XooApAnmqpN){76J6RF#m|4+Xi%v+7F4Mkb zMaW~OwYwIX(Es%eTbF6+u0NRIjVM~#MBJtd?N$y0~L#p-22jn;61{)({4$wP}cUL&Pb5k`6J zU<0RXq#LLRt2~=qvP9Z$)XFJ;-HK4mQwNqP)lchGj&l}{jW+E&QJQPgA_gl$I%oF# z=#11PB4TWbC%_4)+04oM?5`LkG`lEAy~icckBX4ciG7PGDUr>K80P-3jhb41g81KG z00Qv5ZUB!c0^o1p5A;=>0=x(W@B+>N;;;vP3=d$w{`)v00Ih}R|9A8b2zkL0Ke2@t zjz#J~byXQ_ik4z{K^BTVinY%%p=M<-1W7%%zuOyu*D(_HuSY}|0;F-X-SvI8DlafS zySKW!jnAmDs^n)`xux%Wsx4{!K2Q-}cs6r8KkWN`qU{Nc3CSKeUdD%&`-v%BVbN_>hfGq-={-gg~aYbyJp-S9y{&QV|mAI9Oqf4MDUDcNi-Mi`)u&4+S+P zbykE$S~lva;-Hl$I0kmFdPEI{EffOj_CN~KKH#l1rbjBmAf0a1M*eQ>RjVS*F`K|@ zV5=X)7f%;5b1eii6-NymLof0%%M<$O#3VCKG-kYJToLY=-h^7-LT~(~B`XhWRYkjL zBfYMcnN`eLqx>I2lmNv4`y1TYjb4(2Up@i?WedE^tHg}1Ah_t5GrW+ z>0FSGV(p0k%b&b*`lHu>`?1aip$3*4fASOmGG$VP4_MogvSZq$2o13MWMA!|McRaPx5zJ(kGwU-T(X)I7IOXUIo2!d*y@g-J^8}Ip_iE=``1dw?>hOj z6Kz+S(#QF-y5c`O@xsFYy2ZL=vD%6Fo)5aGpS$_BGxyAOF33K$;?*?flSOL9kng>J z!uG6Lko_6m6#wg&@0sgZ*vxVh(RlC4sTcWGmSl8e{EHt5d}z&r?8Rs#{`VjL+YfXs z2-i()K)VM|e&NHN3tehc7-j#Li<{0fMd+-xK7QbVwdbF^$rPcmR;Osbb%7~DTdj5R z($qhm`1=Rfpp8OUt&VESYNQBFwbsUCr$7AMXK#^aqv~2yO<9fpN0?%-#vK38x#16f z;lpc?wn1sDZl|rrXos1WScx_Du?N5K;f{s%`n^5=i*qa0=1%@@wV_v!p7_KGQmhlj ziumxgKRUzTJM?>NJpAM{7y0{I{oWFHPw#k)JzAp@Lh;|9`m6VRdx{jRMG=fAPj5Q$ z*;_petN43vy!)@g2e`w?4aj>8KSWg7g_WeR$FR2zwuu`63++tH99Yg^76#Rfc*m7BKfb49E zBO2K6a3}b?hz0t2#R7Og?gQP24FCS~?;~(~1UeR^8z;u&gJrFEo@yHFiY^>v*={Dj>HJHNyyt}j54`?S(nc4Athgh-bkcV& z2tl!i`?oJ zV%UT6pPl*GV_ntu38S!gRnyE^2zyAR;_rFk$xpB(p$pc|_zNdrdhnh~@5#=E5!E)J IF{VWQzbF2-(f|Me delta 354 zcmZpe!PfABd4e==7Xt%>9T4jRG4n(XbH=WX3Cq~|G#HrgF&}4M%-qEs#jLT}kVk}> z)qssTm2q;erw$vV7Atck<75YKwau;E)e)O2ma}YLo)PI@4>SY>n1I+8h(QK}Xni0y z0Ad>;wgzG|AT|MFb0D??VoM;l0Af8L)`ns&AZ-N1#y|{GYYN05eIPv`wIDsBKnyYu zWUep}v+@H8z0HCmHO!MFST?h4VHROzn9OlPmvP-@vlA7Jk`i$&44RTb45bXkK$yvp z$dJcS1mr1fK7P`HO`L)G8S@$DZOn_9o0zkh1DI`?`Ivq&-PtU6VIPyMi~$RSp`-^; hbsj@HP-hWTe+F3p&r9sGK#SiqZ&na_z&vq+Apo51LIMB) From 9d1c1b1fbb64a1b0f0466437a28067c353927ad2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Fri, 1 Apr 2011 19:54:12 +0200 Subject: [PATCH 011/190] mark and comment out some unused code in csv import form bug fix --- .../plugins/bibles/forms/bibleimportform.py | 42 ++++++++++++++----- openlp/plugins/bibles/lib/opensong.py | 2 +- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index 9fee25654..7857a9151 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -114,9 +114,10 @@ class BibleImportForm(OpenLPWizard): QtCore.QObject.connect(self.osisBrowseButton, QtCore.SIGNAL(u'clicked()'), self.onOsisBrowseButtonClicked) - QtCore.QObject.connect(self.csvTestamentsButton, - QtCore.SIGNAL(u'clicked()'), - self.onCsvTestamentsBrowseButtonClicked) + #TODO: Delete unused code + #QtCore.QObject.connect(self.csvTestamentsButton, + # QtCore.SIGNAL(u'clicked()'), + # self.onCsvTestamentsBrowseButtonClicked) QtCore.QObject.connect(self.csvBooksButton, QtCore.SIGNAL(u'clicked()'), self.onCsvBooksBrowseButtonClicked) @@ -177,6 +178,8 @@ class BibleImportForm(OpenLPWizard): self.csvLayout = QtGui.QFormLayout(self.csvWidget) self.csvLayout.setMargin(0) self.csvLayout.setObjectName(u'CsvLayout') + #TODO: Delete unused code + ''' self.csvTestamentsLabel = QtGui.QLabel(self.csvWidget) self.csvTestamentsLabel.setObjectName(u'CsvTestamentsLabel') self.csvTestamentsLayout = QtGui.QHBoxLayout() @@ -184,11 +187,13 @@ class BibleImportForm(OpenLPWizard): self.csvTestamentsEdit = QtGui.QLineEdit(self.csvWidget) self.csvTestamentsEdit.setObjectName(u'CsvTestamentsEdit') self.csvTestamentsLayout.addWidget(self.csvTestamentsEdit) + self.csvTestamentsButton = QtGui.QToolButton(self.csvWidget) self.csvTestamentsButton.setIcon(self.openIcon) self.csvTestamentsButton.setObjectName(u'CsvTestamentsButton') self.csvTestamentsLayout.addWidget(self.csvTestamentsButton) self.csvLayout.addRow(self.csvTestamentsLabel, self.csvTestamentsLayout) + ''' self.csvBooksLabel = QtGui.QLabel(self.csvWidget) self.csvBooksLabel.setObjectName(u'CsvBooksLabel') self.csvBooksLayout = QtGui.QHBoxLayout() @@ -373,8 +378,9 @@ class BibleImportForm(OpenLPWizard): translate('BiblesPlugin.ImportWizardForm', 'Bible file:')) self.osisFileLabel.setText( translate('BiblesPlugin.ImportWizardForm', 'Bible file:')) - self.csvTestamentsLabel.setText( - translate('BiblesPlugin.ImportWizardForm', 'Testaments file:')) + #TODO: Delete unused code + #self.csvTestamentsLabel.setText( + # translate('BiblesPlugin.ImportWizardForm', 'Testaments file:')) self.csvBooksLabel.setText( translate('BiblesPlugin.ImportWizardForm', 'Books file:')) self.csvVersesLabel.setText( @@ -425,7 +431,8 @@ class BibleImportForm(OpenLPWizard): # Align all QFormLayouts towards each other. labelWidth = max(self.formatLabel.minimumSizeHint().width(), self.osisFileLabel.minimumSizeHint().width(), - self.csvTestamentsLabel.minimumSizeHint().width(), + #TODO: Delete unused code + #self.csvTestamentsLabel.minimumSizeHint().width(), self.csvBooksLabel.minimumSizeHint().width(), self.csvVersesLabel.minimumSizeHint().width(), self.openSongFileLabel.minimumSizeHint().width(), @@ -447,6 +454,8 @@ class BibleImportForm(OpenLPWizard): self.osisFileEdit.setFocus() return False elif self.field(u'source_format').toInt()[0] == BibleFormat.CSV: + #TODO: Delete unused code + ''' if not self.field(u'csv_testamentsfile').toString(): answer = critical_error_message_box(UiStrings.NFSs, translate('BiblesPlugin.ImportWizardForm', @@ -455,6 +464,7 @@ class BibleImportForm(OpenLPWizard): if answer == QtGui.QMessageBox.No: self.csvTestamentsEdit.setFocus() return False + ''' if not self.field(u'csv_booksfile').toString(): critical_error_message_box(UiStrings.NFSs, translate('BiblesPlugin.ImportWizardForm', @@ -531,7 +541,8 @@ class BibleImportForm(OpenLPWizard): """ self.getFileName(WizardStrings.OpenTypeFile % WizardStrings.OSIS, self.osisFileEdit) - + #TODO: Delete unused code + ''' def onCsvTestamentsBrowseButtonClicked(self): """ Show the file open dialog for the testaments CSV file. @@ -539,7 +550,7 @@ class BibleImportForm(OpenLPWizard): self.getFileName(WizardStrings.OpenTypeFile % WizardStrings.CSV, self.csvTestamentsEdit, u'%s (*.csv)' % translate('BiblesPlugin.ImportWizardForm', 'CSV File')) - + ''' def onCsvBooksBrowseButtonClicked(self): """ Show the file open dialog for the books CSV file. @@ -578,8 +589,9 @@ class BibleImportForm(OpenLPWizard): """ self.selectPage.registerField(u'source_format', self.formatComboBox) self.selectPage.registerField(u'osis_location', self.osisFileEdit) - self.selectPage.registerField( - u'csv_testamentsfile', self.csvTestamentsEdit) + #TODO: Delete unused code + #self.selectPage.registerField( + # u'csv_testamentsfile', self.csvTestamentsEdit) self.selectPage.registerField(u'csv_booksfile', self.csvBooksEdit) self.selectPage.registerField(u'csv_versefile', self.csvVersesEdit) self.selectPage.registerField(u'opensong_file', self.openSongFileEdit) @@ -608,7 +620,8 @@ class BibleImportForm(OpenLPWizard): self.cancelButton.setVisible(True) self.setField(u'source_format', QtCore.QVariant(0)) self.setField(u'osis_location', QtCore.QVariant('')) - self.setField(u'csv_testamentsfile', QtCore.QVariant('')) + #TODO: Delete unused code + #self.setField(u'csv_testamentsfile', QtCore.QVariant('')) self.setField(u'csv_booksfile', QtCore.QVariant('')) self.setField(u'csv_versefile', QtCore.QVariant('')) self.setField(u'opensong_file', QtCore.QVariant('')) @@ -689,11 +702,18 @@ class BibleImportForm(OpenLPWizard): ) elif bible_type == BibleFormat.CSV: # Import a CSV bible. + #TODO: Delete unused code + ''' importer = self.manager.import_bible(BibleFormat.CSV, name=license_version, testamentsfile=unicode( self.field(u'csv_testamentsfile').toString()), booksfile=unicode(self.field(u'csv_booksfile').toString()), versefile=unicode(self.field(u'csv_versefile').toString()) + ''' + importer = self.manager.import_bible(BibleFormat.CSV, + name=license_version, + booksfile=unicode(self.field(u'csv_booksfile').toString()), + versefile=unicode(self.field(u'csv_versefile').toString()) ) elif bible_type == BibleFormat.OpenSong: # Import an OpenSong bible. diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index f1a64c2e7..a1f65ad04 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -66,7 +66,7 @@ class OpenSongBible(BibleDB): if not language: log.exception(u'Importing books from %s " '\ 'failed' % self.filename) - return False + return False language = BiblesResourcesDB.get_language(language) language_id = language[u'id'] self.create_meta(u'language_id', language_id) From c04a76e12dde1de9781dad696c30368e4ccae198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Fri, 1 Apr 2011 22:26:25 +0200 Subject: [PATCH 012/190] split BibleImportRequest in BookNameForm and LanugageForm --- openlp/plugins/bibles/forms/__init__.py | 3 +- ...portrequestdialog.py => booknamedialog.py} | 32 +++---- ...leimportrequestform.py => booknameform.py} | 31 +++--- openlp/plugins/bibles/forms/languagedialog.py | 94 +++++++++++++++++++ openlp/plugins/bibles/forms/languageform.py | 71 ++++++++++++++ openlp/plugins/bibles/lib/csvbible.py | 2 +- openlp/plugins/bibles/lib/db.py | 2 +- openlp/plugins/bibles/lib/http.py | 2 +- openlp/plugins/bibles/lib/manager.py | 12 ++- openlp/plugins/bibles/lib/mediaitem.py | 17 ++-- openlp/plugins/bibles/lib/openlp1.py | 2 +- openlp/plugins/bibles/lib/opensong.py | 2 +- openlp/plugins/bibles/lib/osis.py | 4 +- 13 files changed, 221 insertions(+), 53 deletions(-) rename openlp/plugins/bibles/forms/{bibleimportrequestdialog.py => booknamedialog.py} (82%) rename openlp/plugins/bibles/forms/{bibleimportrequestform.py => booknameform.py} (72%) create mode 100644 openlp/plugins/bibles/forms/languagedialog.py create mode 100644 openlp/plugins/bibles/forms/languageform.py diff --git a/openlp/plugins/bibles/forms/__init__.py b/openlp/plugins/bibles/forms/__init__.py index aed6f71f3..367ebcefc 100644 --- a/openlp/plugins/bibles/forms/__init__.py +++ b/openlp/plugins/bibles/forms/__init__.py @@ -52,6 +52,7 @@ from the .ui files later if necessary. """ from bibleimportform import BibleImportForm -from bibleimportrequestform import BibleImportRequest +from booknameform import BookNameForm +from languageform import LanguageForm __all__ = ['BibleImportForm'] diff --git a/openlp/plugins/bibles/forms/bibleimportrequestdialog.py b/openlp/plugins/bibles/forms/booknamedialog.py similarity index 82% rename from openlp/plugins/bibles/forms/bibleimportrequestdialog.py rename to openlp/plugins/bibles/forms/booknamedialog.py index 7fcc36932..d17bd8522 100644 --- a/openlp/plugins/bibles/forms/bibleimportrequestdialog.py +++ b/openlp/plugins/bibles/forms/booknamedialog.py @@ -29,18 +29,18 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import translate from openlp.core.lib.ui import create_accept_reject_button_box -class Ui_BibleImportRequest(object): - def setupUi(self, bibleImportRequest): - bibleImportRequest.setObjectName("BibleImportRequest") - bibleImportRequest.resize(400, 175) +class Ui_BookNameDialog(object): + def setupUi(self, bookNameDialog): + bookNameDialog.setObjectName("BookNameDialog") + bookNameDialog.resize(400, 175) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.MinimumExpanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(bibleImportRequest.sizePolicy() + sizePolicy.setHeightForWidth(bookNameDialog.sizePolicy() .hasHeightForWidth()) - bibleImportRequest.setSizePolicy(sizePolicy) - self.widget = QtGui.QWidget(bibleImportRequest) + bookNameDialog.setSizePolicy(sizePolicy) + self.widget = QtGui.QWidget(bookNameDialog) self.widget.setGeometry(QtCore.QRect(10, 15, 381, 151)) self.widget.setObjectName("widget") self.verticalLayout = QtGui.QVBoxLayout(self.widget) @@ -79,17 +79,17 @@ class Ui_BibleImportRequest(object): QtGui.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem) self.formLayout.addWidget( - create_accept_reject_button_box(bibleImportRequest)) - self.retranslateUi(bibleImportRequest) - QtCore.QMetaObject.connectSlotsByName(bibleImportRequest) + create_accept_reject_button_box(bookNameDialog)) + self.retranslateUi(bookNameDialog) + QtCore.QMetaObject.connectSlotsByName(bookNameDialog) - def retranslateUi(self, bibleImportRequest): - bibleImportRequest.setWindowTitle( - translate("BiblesPlugin.bibleImportRequest", "Dialog")) + def retranslateUi(self, bookNameDialog): + bookNameDialog.setWindowTitle( + translate("BiblesPlugin.BookNameDialog", "Choose Book")) self.headlineLabel.setText( - translate("BiblesPlugin.bibleImportRequest", "Choose Book:")) - self.infoLabel.setText(translate("BiblesPlugin.bibleImportRequest", + translate("BiblesPlugin.BookNameDialog", "Choose Book:")) + self.infoLabel.setText(translate("BiblesPlugin.BookNameDialog", "The following books cannot be clearly attributed. \n" "Please choose the book it is.")) - self.requestLabel.setText(translate("BiblesPlugin.bibleImportRequest", + self.requestLabel.setText(translate("BiblesPlugin.BookNameDialog", "Book:")) diff --git a/openlp/plugins/bibles/forms/bibleimportrequestform.py b/openlp/plugins/bibles/forms/booknameform.py similarity index 72% rename from openlp/plugins/bibles/forms/bibleimportrequestform.py rename to openlp/plugins/bibles/forms/booknameform.py index caac8e83b..f3923cb63 100644 --- a/openlp/plugins/bibles/forms/bibleimportrequestform.py +++ b/openlp/plugins/bibles/forms/booknameform.py @@ -25,7 +25,7 @@ ############################################################################### """ -Module implementing BibleImportRequest. +Module implementing BookNameForm. """ import logging @@ -33,17 +33,17 @@ from PyQt4.QtGui import QDialog from openlp.core.lib import translate from openlp.core.lib.ui import critical_error_message_box -from openlp.plugins.bibles.forms.bibleimportrequestdialog import \ - Ui_BibleImportRequest +from openlp.plugins.bibles.forms.booknamedialog import \ + Ui_BookNameDialog from openlp.plugins.bibles.lib.db import BiblesResourcesDB log = logging.getLogger(__name__) -class BibleImportRequest(QDialog, Ui_BibleImportRequest): +class BookNameForm(QDialog, Ui_BookNameDialog): """ Class documentation goes here. """ - log.info(u'BibleImportRequest loaded') + log.info(u'BookNameForm loaded') def __init__(self, parent = None): """ @@ -52,21 +52,12 @@ class BibleImportRequest(QDialog, Ui_BibleImportRequest): QDialog.__init__(self, parent) self.setupUi(self) - def exec_(self, case, name=None): + def exec_(self, name): items = [] self.requestComboBox.addItem(u'') - if case == u'language': - self.headlineLabel.setText(translate( - "BiblesPlugin.BibleImportRequest", "Choose Language:")) - self.infoLabel.setText(translate("BiblesPlugin.BibleImportRequest", - "Please choose the language the bible is.")) - self.requestLabel.setText( - translate("BiblesPlugin.BibleImportRequest", "Language:")) - items = BiblesResourcesDB.get_languages() - elif case == u'book': - self.requestLabel.setText( - translate("BiblesPlugin.BibleImportRequest", name)) - items = BiblesResourcesDB.get_books() + self.requestLabel.setText( + translate("BiblesPlugin.BookNameForm", name)) + items = BiblesResourcesDB.get_books() for item in items: self.requestComboBox.addItem(item[u'name']) return QDialog.exec_(self) @@ -74,8 +65,8 @@ class BibleImportRequest(QDialog, Ui_BibleImportRequest): def accept(self): if self.requestComboBox.currentText() == u"": critical_error_message_box( - message=translate('BiblesPlugin.BibleImportRequest', - 'You need to choose an item.')) + message=translate('BiblesPlugin.BookNameForm', + 'You need to choose a book.')) self.requestComboBox.setFocus() return False else: diff --git a/openlp/plugins/bibles/forms/languagedialog.py b/openlp/plugins/bibles/forms/languagedialog.py new file mode 100644 index 000000000..08155a5b2 --- /dev/null +++ b/openlp/plugins/bibles/forms/languagedialog.py @@ -0,0 +1,94 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2011 Raoul Snyman # +# Portions copyright (c) 2008-2011 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 # +# --------------------------------------------------------------------------- # +# 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 the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + +from PyQt4 import QtCore, QtGui + +from openlp.core.lib import translate +from openlp.core.lib.ui import create_accept_reject_button_box + +class Ui_LanguageDialog(object): + def setupUi(self, languageDialog): + languageDialog.setObjectName("LanugageDialog") + languageDialog.resize(400, 175) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, + QtGui.QSizePolicy.MinimumExpanding) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(languageDialog.sizePolicy() + .hasHeightForWidth()) + languageDialog.setSizePolicy(sizePolicy) + self.widget = QtGui.QWidget(languageDialog) + self.widget.setGeometry(QtCore.QRect(10, 15, 381, 151)) + self.widget.setObjectName("widget") + self.verticalLayout = QtGui.QVBoxLayout(self.widget) + self.verticalLayout.setObjectName("verticalLayout") + self.headlineLabel = QtGui.QLabel(self.widget) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(11) + font.setWeight(75) + font.setBold(True) + self.headlineLabel.setFont(font) + self.headlineLabel.setObjectName("HeadlineLabel") + self.verticalLayout.addWidget(self.headlineLabel) + self.infoLabel = QtGui.QLabel(self.widget) + self.infoLabel.setObjectName("InfoLabel") + self.verticalLayout.addWidget(self.infoLabel) + self.formLayout = QtGui.QFormLayout() + self.formLayout.setObjectName("formLayout") + self.requestLabel = QtGui.QLabel(self.widget) + self.requestLabel.setObjectName("RequestLabel") + self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, + self.requestLabel) + self.requestComboBox = QtGui.QComboBox(self.widget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, + QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.requestComboBox.sizePolicy() + .hasHeightForWidth()) + self.requestComboBox.setSizePolicy(sizePolicy) + self.requestComboBox.setObjectName("RequestComboBox") + self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, + self.requestComboBox) + self.verticalLayout.addLayout(self.formLayout) + spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, + QtGui.QSizePolicy.Expanding) + self.verticalLayout.addItem(spacerItem) + self.formLayout.addWidget( + create_accept_reject_button_box(languageDialog)) + self.retranslateUi(languageDialog) + QtCore.QMetaObject.connectSlotsByName(languageDialog) + + def retranslateUi(self, languageDialog): + languageDialog.setWindowTitle( + translate("BiblesPlugin.LanguageDialog", "Choose Language")) + self.headlineLabel.setText( + translate("BiblesPlugin.LanguageDialog", "Choose Language:")) + self.infoLabel.setText(translate("BiblesPlugin.LanguageDialog", + "Please choose the language the bible is.")) + self.requestLabel.setText(translate("BiblesPlugin.languageDialog", + "Language:")) diff --git a/openlp/plugins/bibles/forms/languageform.py b/openlp/plugins/bibles/forms/languageform.py new file mode 100644 index 000000000..220e28271 --- /dev/null +++ b/openlp/plugins/bibles/forms/languageform.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2011 Raoul Snyman # +# Portions copyright (c) 2008-2011 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 # +# --------------------------------------------------------------------------- # +# 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 the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + +""" +Module implementing BookNameForm. +""" +import logging + +from PyQt4.QtGui import QDialog + +from openlp.core.lib import translate +from openlp.core.lib.ui import critical_error_message_box +from openlp.plugins.bibles.forms.languagedialog import \ + Ui_LanguageDialog +from openlp.plugins.bibles.lib.db import BiblesResourcesDB + +log = logging.getLogger(__name__) + +class LanguageForm(QDialog, Ui_LanguageDialog): + """ + Class documentation goes here. + """ + log.info(u'LanguageForm loaded') + + def __init__(self, parent = None): + """ + Constructor + """ + QDialog.__init__(self, parent) + self.setupUi(self) + + def exec_(self): + items = [] + self.requestComboBox.addItem(u'') + items = BiblesResourcesDB.get_languages() + for item in items: + self.requestComboBox.addItem(item[u'name']) + return QDialog.exec_(self) + + def accept(self): + if self.requestComboBox.currentText() == u"": + critical_error_message_box( + message=translate('BiblesPlugin.LanguageForm', + 'You need to choose a language.')) + self.requestComboBox.setFocus() + return False + else: + return QDialog.accept(self) diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index 8ce1c87e5..1c53383ac 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -139,7 +139,7 @@ class CSVBible(BibleDB): self.wizard.progressBar.setMinimum(0) self.wizard.progressBar.setMaximum(66) success = True - language = self.parent.mediaItem.importRequest(u'language') + language = self.parent.mediaItem.languageDialog() if not language: log.exception(u'Importing books from %s " '\ 'failed' % self.booksfile) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 4d4f401d4..e1abecd89 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -198,7 +198,7 @@ class BibleDB(QtCore.QObject, Manager): self.file = self.clean_filename(self.name) if u'file' in kwargs: self.file = kwargs[u'file'] - Manager.__init__(self, u'bibles', init_schema, self.file) + Manager.__init__(self, u'bibles/bibles', init_schema, self.file) if u'file' in kwargs: self.get_name() self.wizard = None diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 5923fc565..dc751052a 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -414,7 +414,7 @@ class HTTPBible(BibleDB): if bible[u'language_id']: language_id = bible[u'language_id'] else: - language = self.parent.mediaItem.importRequest(u'language') + language = self.parent.mediaItem.languageDialog() if not language: log.exception(u'Importing books from %s - download name: "%s" '\ 'failed' % (self.download_source, self.download_name)) diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 09f71de91..0e6cc1e3a 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -121,7 +121,7 @@ class BibleManager(object): """ log.debug(u'Bible Initialising') self.parent = parent - self.settingsSection = u'bibles' + self.settingsSection = u'bibles/bibles' self.web = u'Web' self.db_cache = None self.path = AppLocation.get_section_data_path(self.settingsSection) @@ -131,7 +131,8 @@ class BibleManager(object): self.suffix = u'.sqlite' self.import_wizard = None self.reload_bibles() - self.reload_alternative_book_names() + #TODO: Delete unused code + #self.reload_alternative_book_names() self.media = None def reload_bibles(self): @@ -169,6 +170,8 @@ class BibleManager(object): self.db_cache[name] = web_bible log.debug(u'Bibles reloaded') + #TODO: Delete unused code + ''' def reload_alternative_book_names(self): """ Reloads the alternative book names from the local alternative book names @@ -178,6 +181,7 @@ class BibleManager(object): self.alternative_book_names_cache = AlternativeBookNamesDB(self.parent, path=self.path) log.debug(u'AlternativeBookNames reloaded') + ''' def set_process_dialog(self, wizard): """ @@ -331,6 +335,8 @@ class BibleManager(object): def get_book_ref_id_by_name(self, book, language_id=None): log.debug(u'BibleManager.get_book_ref_id_by_name:("%s", "%s")', book, language_id) + self.alternative_book_names_cache = AlternativeBookNamesDB(self.parent, + path=self.path) if BiblesResourcesDB.get_book(book): book_temp = BiblesResourcesDB.get_book(book) book_id = book_temp[u'id'] @@ -342,7 +348,7 @@ class BibleManager(object): book_id = self.alternative_book_names_cache.get_book_reference_id( book, language_id) else: - book_ref = self.parent.mediaItem.importRequest(u'book', book) + book_ref = self.parent.mediaItem.bookNameDialog(book) log.debug(book_ref) book_temp = BiblesResourcesDB.get_book(book_ref) log.debug(book_temp) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 1cb53d99c..e55d4fe14 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -33,10 +33,10 @@ from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \ 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 -from openlp.plugins.bibles.forms import BibleImportForm +from openlp.plugins.bibles.forms import BibleImportForm, BookNameForm, \ + LanguageForm from openlp.plugins.bibles.lib import LayoutStyle, DisplayStyle, \ VerseReferenceList, get_reference_match -from openlp.plugins.bibles.forms import BibleImportRequest log = logging.getLogger(__name__) @@ -287,10 +287,15 @@ class BibleMediaItem(MediaManagerItem): if self.import_wizard.exec_(): self.reloadBibles() - def importRequest(self, case, name=None): - self.import_request = BibleImportRequest(self) - if self.import_request.exec_(case, name): - return unicode(self.import_request.requestComboBox.currentText()) + def bookNameDialog(self, name): + self.book_name = BookNameForm(self) + if self.book_name.exec_(name): + return unicode(self.book_name.requestComboBox.currentText()) + + def languageDialog(self): + self.language = LanguageForm(self) + if self.language.exec_(): + return unicode(self.language.requestComboBox.currentText()) def loadBibles(self): log.debug(u'Loading Bibles') diff --git a/openlp/plugins/bibles/lib/openlp1.py b/openlp/plugins/bibles/lib/openlp1.py index 46c83c3c3..7a6ebbece 100644 --- a/openlp/plugins/bibles/lib/openlp1.py +++ b/openlp/plugins/bibles/lib/openlp1.py @@ -58,7 +58,7 @@ class OpenLP1Bible(BibleDB): except: return False #Create the bible language - language = self.parent.mediaItem.importRequest(u'language') + language = self.parent.mediaItem.languageDialog() if not language: log.exception(u'Importing books from %s " '\ 'failed' % self.filename) diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index 074a8833d..55f83c33a 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -62,7 +62,7 @@ class OpenSongBible(BibleDB): file = open(self.filename, u'r') opensong = objectify.parse(file) bible = opensong.getroot() - language = self.parent.mediaItem.importRequest(u'language') + language = self.parent.mediaItem.languageDialog() if not language: log.exception(u'Importing books from %s " '\ 'failed' % self.filename) diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index f525512ba..83a5a2974 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -107,7 +107,7 @@ class OSISBible(BibleDB): if detect_file: detect_file.close() # Set meta language_id - language = self.parent.mediaItem.importRequest(u'language') + language = self.parent.mediaItem.languageDialog() if not language: log.exception(u'Importing books from %s " '\ 'failed' % self.filename) @@ -128,7 +128,7 @@ class OSISBible(BibleDB): verse = int(match.group(3)) verse_text = match.group(4) if not db_book or db_book.name != self.books[book][0]: - log.debug(u'New book: "%s"', self.books[book][0]) + log.debug(u'New book: "%s"' % self.books[book][0]) #TODO: Delete unused code #if book == u'Matt' or book == u'Jdt': # testament += 1 From 9de33cf1949636c85d27b4c2171db58b82488730 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Sat, 2 Apr 2011 21:17:48 +0200 Subject: [PATCH 013/190] moved Dialog from mediaitem.py to bibleimportform.py some fixes --- openlp/plugins/bibles/forms/__init__.py | 3 +- .../plugins/bibles/forms/bibleimportform.py | 11 +++++++ openlp/plugins/bibles/forms/booknamedialog.py | 32 +++++++++---------- openlp/plugins/bibles/forms/booknameform.py | 7 ++-- openlp/plugins/bibles/forms/languagedialog.py | 30 ++++++++--------- openlp/plugins/bibles/forms/languageform.py | 4 +-- openlp/plugins/bibles/lib/csvbible.py | 2 +- openlp/plugins/bibles/lib/db.py | 2 +- openlp/plugins/bibles/lib/http.py | 2 +- openlp/plugins/bibles/lib/manager.py | 2 +- openlp/plugins/bibles/lib/mediaitem.py | 13 +------- openlp/plugins/bibles/lib/openlp1.py | 2 +- openlp/plugins/bibles/lib/opensong.py | 2 +- openlp/plugins/bibles/lib/osis.py | 2 +- 14 files changed, 57 insertions(+), 57 deletions(-) diff --git a/openlp/plugins/bibles/forms/__init__.py b/openlp/plugins/bibles/forms/__init__.py index 367ebcefc..561944563 100644 --- a/openlp/plugins/bibles/forms/__init__.py +++ b/openlp/plugins/bibles/forms/__init__.py @@ -50,9 +50,8 @@ This allows OpenLP to use ``self.object`` for all the GUI elements while keeping them separate from the functionality, so that it is easier to recreate the GUI from the .ui files later if necessary. """ - -from bibleimportform import BibleImportForm from booknameform import BookNameForm from languageform import LanguageForm +from bibleimportform import BibleImportForm __all__ = ['BibleImportForm'] diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index fd6690888..ea7156193 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -40,6 +40,7 @@ from openlp.core.ui.wizard import OpenLPWizard, WizardStrings from openlp.core.utils import AppLocation, string_is_unicode from openlp.plugins.bibles.lib.manager import BibleFormat from openlp.plugins.bibles.lib.db import BiblesResourcesDB +from openlp.plugins.bibles.forms import BookNameForm, LanguageForm log = logging.getLogger(__name__) @@ -758,3 +759,13 @@ class BibleImportForm(OpenLPWizard): 'BiblesPlugin.ImportWizardForm', 'Your Bible import failed.')) del self.manager.db_cache[importer.name] delete_database(self.plugin.settingsSection, importer.file) + + def bookNameDialog(self, name): + self.book_name = BookNameForm(self) + if self.book_name.exec_(name): + return unicode(self.book_name.requestComboBox.currentText()) + + def languageDialog(self): + self.language = LanguageForm(self) + if self.language.exec_(): + return unicode(self.language.requestComboBox.currentText()) diff --git a/openlp/plugins/bibles/forms/booknamedialog.py b/openlp/plugins/bibles/forms/booknamedialog.py index d17bd8522..bb48548c0 100644 --- a/openlp/plugins/bibles/forms/booknamedialog.py +++ b/openlp/plugins/bibles/forms/booknamedialog.py @@ -31,7 +31,7 @@ from openlp.core.lib.ui import create_accept_reject_button_box class Ui_BookNameDialog(object): def setupUi(self, bookNameDialog): - bookNameDialog.setObjectName("BookNameDialog") + bookNameDialog.setObjectName(u'BookNameDialog') bookNameDialog.resize(400, 175) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.MinimumExpanding) @@ -42,25 +42,25 @@ class Ui_BookNameDialog(object): bookNameDialog.setSizePolicy(sizePolicy) self.widget = QtGui.QWidget(bookNameDialog) self.widget.setGeometry(QtCore.QRect(10, 15, 381, 151)) - self.widget.setObjectName("widget") + self.widget.setObjectName(u'widget') self.verticalLayout = QtGui.QVBoxLayout(self.widget) - self.verticalLayout.setObjectName("verticalLayout") + self.verticalLayout.setObjectName(u'verticalLayout') self.headlineLabel = QtGui.QLabel(self.widget) font = QtGui.QFont() - font.setFamily("Arial") + font.setFamily(u'Arial') font.setPointSize(11) font.setWeight(75) font.setBold(True) self.headlineLabel.setFont(font) - self.headlineLabel.setObjectName("HeadlineLabel") + self.headlineLabel.setObjectName(u'HeadlineLabel') self.verticalLayout.addWidget(self.headlineLabel) self.infoLabel = QtGui.QLabel(self.widget) - self.infoLabel.setObjectName("InfoLabel") + self.infoLabel.setObjectName(u'InfoLabel') self.verticalLayout.addWidget(self.infoLabel) self.formLayout = QtGui.QFormLayout() - self.formLayout.setObjectName("formLayout") + self.formLayout.setObjectName(u'formLayout') self.requestLabel = QtGui.QLabel(self.widget) - self.requestLabel.setObjectName("RequestLabel") + self.requestLabel.setObjectName(u'RequestLabel') self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.requestLabel) self.requestComboBox = QtGui.QComboBox(self.widget) @@ -71,7 +71,7 @@ class Ui_BookNameDialog(object): sizePolicy.setHeightForWidth(self.requestComboBox.sizePolicy() .hasHeightForWidth()) self.requestComboBox.setSizePolicy(sizePolicy) - self.requestComboBox.setObjectName("RequestComboBox") + self.requestComboBox.setObjectName(u'RequestComboBox') self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.requestComboBox) self.verticalLayout.addLayout(self.formLayout) @@ -85,11 +85,11 @@ class Ui_BookNameDialog(object): def retranslateUi(self, bookNameDialog): bookNameDialog.setWindowTitle( - translate("BiblesPlugin.BookNameDialog", "Choose Book")) + translate('BiblesPlugin.BookNameDialog', 'Choose Book')) self.headlineLabel.setText( - translate("BiblesPlugin.BookNameDialog", "Choose Book:")) - self.infoLabel.setText(translate("BiblesPlugin.BookNameDialog", - "The following books cannot be clearly attributed. \n" - "Please choose the book it is.")) - self.requestLabel.setText(translate("BiblesPlugin.BookNameDialog", - "Book:")) + translate('BiblesPlugin.BookNameDialog', 'Choose Book:')) + self.infoLabel.setText(translate('BiblesPlugin.BookNameDialog', + 'The following books cannot be clearly attributed. \n' + 'Please choose the book it is.')) + self.requestLabel.setText(translate('BiblesPlugin.BookNameDialog', + 'Book:')) diff --git a/openlp/plugins/bibles/forms/booknameform.py b/openlp/plugins/bibles/forms/booknameform.py index f3923cb63..58603226c 100644 --- a/openlp/plugins/bibles/forms/booknameform.py +++ b/openlp/plugins/bibles/forms/booknameform.py @@ -41,7 +41,8 @@ log = logging.getLogger(__name__) class BookNameForm(QDialog, Ui_BookNameDialog): """ - Class documentation goes here. + Class to manage a dialog which help the user to refer a book name a + to a english book name """ log.info(u'BookNameForm loaded') @@ -56,14 +57,14 @@ class BookNameForm(QDialog, Ui_BookNameDialog): items = [] self.requestComboBox.addItem(u'') self.requestLabel.setText( - translate("BiblesPlugin.BookNameForm", name)) + translate('BiblesPlugin.BookNameForm', name)) items = BiblesResourcesDB.get_books() for item in items: self.requestComboBox.addItem(item[u'name']) return QDialog.exec_(self) def accept(self): - if self.requestComboBox.currentText() == u"": + if self.requestComboBox.currentText() == u'': critical_error_message_box( message=translate('BiblesPlugin.BookNameForm', 'You need to choose a book.')) diff --git a/openlp/plugins/bibles/forms/languagedialog.py b/openlp/plugins/bibles/forms/languagedialog.py index 08155a5b2..c4ede8e77 100644 --- a/openlp/plugins/bibles/forms/languagedialog.py +++ b/openlp/plugins/bibles/forms/languagedialog.py @@ -31,7 +31,7 @@ from openlp.core.lib.ui import create_accept_reject_button_box class Ui_LanguageDialog(object): def setupUi(self, languageDialog): - languageDialog.setObjectName("LanugageDialog") + languageDialog.setObjectName(u'LanugageDialog') languageDialog.resize(400, 175) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.MinimumExpanding) @@ -42,25 +42,25 @@ class Ui_LanguageDialog(object): languageDialog.setSizePolicy(sizePolicy) self.widget = QtGui.QWidget(languageDialog) self.widget.setGeometry(QtCore.QRect(10, 15, 381, 151)) - self.widget.setObjectName("widget") + self.widget.setObjectName(u'widget') self.verticalLayout = QtGui.QVBoxLayout(self.widget) - self.verticalLayout.setObjectName("verticalLayout") + self.verticalLayout.setObjectName(u'verticalLayout') self.headlineLabel = QtGui.QLabel(self.widget) font = QtGui.QFont() - font.setFamily("Arial") + font.setFamily(u'Arial') font.setPointSize(11) font.setWeight(75) font.setBold(True) self.headlineLabel.setFont(font) - self.headlineLabel.setObjectName("HeadlineLabel") + self.headlineLabel.setObjectName(u'HeadlineLabel') self.verticalLayout.addWidget(self.headlineLabel) self.infoLabel = QtGui.QLabel(self.widget) - self.infoLabel.setObjectName("InfoLabel") + self.infoLabel.setObjectName(u'InfoLabel') self.verticalLayout.addWidget(self.infoLabel) self.formLayout = QtGui.QFormLayout() - self.formLayout.setObjectName("formLayout") + self.formLayout.setObjectName(u'formLayout') self.requestLabel = QtGui.QLabel(self.widget) - self.requestLabel.setObjectName("RequestLabel") + self.requestLabel.setObjectName(u'RequestLabel') self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.requestLabel) self.requestComboBox = QtGui.QComboBox(self.widget) @@ -71,7 +71,7 @@ class Ui_LanguageDialog(object): sizePolicy.setHeightForWidth(self.requestComboBox.sizePolicy() .hasHeightForWidth()) self.requestComboBox.setSizePolicy(sizePolicy) - self.requestComboBox.setObjectName("RequestComboBox") + self.requestComboBox.setObjectName(u'RequestComboBox') self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.requestComboBox) self.verticalLayout.addLayout(self.formLayout) @@ -85,10 +85,10 @@ class Ui_LanguageDialog(object): def retranslateUi(self, languageDialog): languageDialog.setWindowTitle( - translate("BiblesPlugin.LanguageDialog", "Choose Language")) + translate('BiblesPlugin.LanguageDialog', 'Choose Language')) self.headlineLabel.setText( - translate("BiblesPlugin.LanguageDialog", "Choose Language:")) - self.infoLabel.setText(translate("BiblesPlugin.LanguageDialog", - "Please choose the language the bible is.")) - self.requestLabel.setText(translate("BiblesPlugin.languageDialog", - "Language:")) + translate('BiblesPlugin.LanguageDialog', 'Choose Language:')) + self.infoLabel.setText(translate('BiblesPlugin.LanguageDialog', + 'Please choose the language the bible is.')) + self.requestLabel.setText(translate('BiblesPlugin.languageDialog', + 'Language:')) diff --git a/openlp/plugins/bibles/forms/languageform.py b/openlp/plugins/bibles/forms/languageform.py index 220e28271..f074a9dc5 100644 --- a/openlp/plugins/bibles/forms/languageform.py +++ b/openlp/plugins/bibles/forms/languageform.py @@ -41,7 +41,7 @@ log = logging.getLogger(__name__) class LanguageForm(QDialog, Ui_LanguageDialog): """ - Class documentation goes here. + Class to manage a dialog which ask the user for a language. """ log.info(u'LanguageForm loaded') @@ -61,7 +61,7 @@ class LanguageForm(QDialog, Ui_LanguageDialog): return QDialog.exec_(self) def accept(self): - if self.requestComboBox.currentText() == u"": + if self.requestComboBox.currentText() == u'': critical_error_message_box( message=translate('BiblesPlugin.LanguageForm', 'You need to choose a language.')) diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index 1c53383ac..2e1accb45 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -139,7 +139,7 @@ class CSVBible(BibleDB): self.wizard.progressBar.setMinimum(0) self.wizard.progressBar.setMaximum(66) success = True - language = self.parent.mediaItem.languageDialog() + language = self.parent.manager.import_wizard.languageDialog() if not language: log.exception(u'Importing books from %s " '\ 'failed' % self.booksfile) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index e1abecd89..6cfb48c21 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -785,7 +785,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager): ``name`` The name or abbreviation of the language. """ - log.debug(u'BiblesResourcesDB.get_language("%s", "%s")', name) + log.debug(u'BiblesResourcesDB.get_language("%s")', name) if not isinstance(name, unicode): name = unicode(name) name = name.title() diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index dc751052a..d0a911b32 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -414,7 +414,7 @@ class HTTPBible(BibleDB): if bible[u'language_id']: language_id = bible[u'language_id'] else: - language = self.parent.mediaItem.languageDialog() + language = self.parent.manager.import_wizard.languageDialog() if not language: log.exception(u'Importing books from %s - download name: "%s" '\ 'failed' % (self.download_source, self.download_name)) diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 0e6cc1e3a..7cca6f4a0 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -348,7 +348,7 @@ class BibleManager(object): book_id = self.alternative_book_names_cache.get_book_reference_id( book, language_id) else: - book_ref = self.parent.mediaItem.bookNameDialog(book) + book_ref = self.import_wizard.bookNameDialog(book) log.debug(book_ref) book_temp = BiblesResourcesDB.get_book(book_ref) log.debug(book_temp) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index e55d4fe14..e0d2a031c 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -33,8 +33,7 @@ from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \ 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 -from openlp.plugins.bibles.forms import BibleImportForm, BookNameForm, \ - LanguageForm +from openlp.plugins.bibles.forms import BibleImportForm from openlp.plugins.bibles.lib import LayoutStyle, DisplayStyle, \ VerseReferenceList, get_reference_match @@ -287,16 +286,6 @@ class BibleMediaItem(MediaManagerItem): if self.import_wizard.exec_(): self.reloadBibles() - def bookNameDialog(self, name): - self.book_name = BookNameForm(self) - if self.book_name.exec_(name): - return unicode(self.book_name.requestComboBox.currentText()) - - def languageDialog(self): - self.language = LanguageForm(self) - if self.language.exec_(): - return unicode(self.language.requestComboBox.currentText()) - def loadBibles(self): log.debug(u'Loading Bibles') self.quickVersionComboBox.clear() diff --git a/openlp/plugins/bibles/lib/openlp1.py b/openlp/plugins/bibles/lib/openlp1.py index 7a6ebbece..bc3624479 100644 --- a/openlp/plugins/bibles/lib/openlp1.py +++ b/openlp/plugins/bibles/lib/openlp1.py @@ -58,7 +58,7 @@ class OpenLP1Bible(BibleDB): except: return False #Create the bible language - language = self.parent.mediaItem.languageDialog() + language = self.parent.manager.import_wizard.languageDialog() if not language: log.exception(u'Importing books from %s " '\ 'failed' % self.filename) diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index 55f83c33a..6e4c4826f 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -62,7 +62,7 @@ class OpenSongBible(BibleDB): file = open(self.filename, u'r') opensong = objectify.parse(file) bible = opensong.getroot() - language = self.parent.mediaItem.languageDialog() + language = self.parent.manager.import_wizard.languageDialog() if not language: log.exception(u'Importing books from %s " '\ 'failed' % self.filename) diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index 83a5a2974..cd006bb78 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -107,7 +107,7 @@ class OSISBible(BibleDB): if detect_file: detect_file.close() # Set meta language_id - language = self.parent.mediaItem.languageDialog() + language = self.parent.manager.import_wizard.languageDialog() if not language: log.exception(u'Importing books from %s " '\ 'failed' % self.filename) From fbce21baaa2884fdc3bfde9bb2bf810eac13a5fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Sat, 2 Apr 2011 22:22:35 +0200 Subject: [PATCH 014/190] new function get_language in BibleDB which ask for the language a bible is and return a language_id --- openlp/plugins/bibles/lib/csvbible.py | 11 ++++------- openlp/plugins/bibles/lib/db.py | 16 ++++++++++++++++ openlp/plugins/bibles/lib/http.py | 15 ++++++--------- openlp/plugins/bibles/lib/manager.py | 2 -- openlp/plugins/bibles/lib/openlp1.py | 7 ++----- openlp/plugins/bibles/lib/opensong.py | 7 ++----- openlp/plugins/bibles/lib/osis.py | 7 ++----- 7 files changed, 32 insertions(+), 33 deletions(-) diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index 2e1accb45..389ee1aac 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -139,14 +139,11 @@ class CSVBible(BibleDB): self.wizard.progressBar.setMinimum(0) self.wizard.progressBar.setMaximum(66) success = True - language = self.parent.manager.import_wizard.languageDialog() - if not language: - log.exception(u'Importing books from %s " '\ - 'failed' % self.booksfile) + language_id = self.get_language() + if not language_id: + log.exception(u'Importing books from %s " '\ + 'failed' % self.filename) return False - language = BiblesResourcesDB.get_language(language) - language_id = language[u'id'] - self.create_meta(u'language_id', language_id) books_file = None book_list = {} # Populate the Tables diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 6cfb48c21..1960e155b 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -489,6 +489,22 @@ class BibleDB(QtCore.QObject, Manager): else: return count + def get_language(self): + """ + Return the language of a bible. + + ``book`` + The language the bible is. + """ + log.debug(u'BibleDB.get_language()') + language = self.bible_plugin.manager.import_wizard.languageDialog() + if not language: + return False + language = BiblesResourcesDB.get_language(language) + language_id = language[u'id'] + self.create_meta(u'language_id', language_id) + return language_id + def dump_bible(self): """ Utility debugging method to dump the contents of a bible. diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index d0a911b32..75f2c37fc 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -413,16 +413,13 @@ class HTTPBible(BibleDB): self.download_source.lower()) if bible[u'language_id']: language_id = bible[u'language_id'] + self.create_meta(u'language_id', language_id) else: - language = self.parent.manager.import_wizard.languageDialog() - if not language: - log.exception(u'Importing books from %s - download name: "%s" '\ - 'failed' % (self.download_source, self.download_name)) - return False - language = BiblesResourcesDB.get_language(language) - language_id = language[u'id'] - # Store the language_id. - self.create_meta(u'language_id', language_id) + language_id = self.get_language() + if not language_id: + log.exception(u'Importing books from %s " '\ + 'failed' % self.filename) + return False for book in books: self.wizard.incrementProgressBar(unicode(translate( 'BiblesPlugin.HTTPBible', 'Importing %s...', diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 7cca6f4a0..aef00e61b 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -349,9 +349,7 @@ class BibleManager(object): book, language_id) else: book_ref = self.import_wizard.bookNameDialog(book) - log.debug(book_ref) book_temp = BiblesResourcesDB.get_book(book_ref) - log.debug(book_temp) if book_temp: book_id = book_temp[u'id'] else: diff --git a/openlp/plugins/bibles/lib/openlp1.py b/openlp/plugins/bibles/lib/openlp1.py index bc3624479..23c456dda 100644 --- a/openlp/plugins/bibles/lib/openlp1.py +++ b/openlp/plugins/bibles/lib/openlp1.py @@ -58,14 +58,11 @@ class OpenLP1Bible(BibleDB): except: return False #Create the bible language - language = self.parent.manager.import_wizard.languageDialog() - if not language: + language_id = self.get_language() + if not language_id: log.exception(u'Importing books from %s " '\ 'failed' % self.filename) return False - language = BiblesResourcesDB.get_language(language) - language_id = language[u'id'] - self.create_meta(u'language_id', language_id) # Create all books. cursor.execute(u'SELECT id, testament_id, name, abbreviation FROM book') books = cursor.fetchall() diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index 6e4c4826f..714f021cc 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -62,14 +62,11 @@ class OpenSongBible(BibleDB): file = open(self.filename, u'r') opensong = objectify.parse(file) bible = opensong.getroot() - language = self.parent.manager.import_wizard.languageDialog() - if not language: + language_id = self.get_language() + if not language_id: log.exception(u'Importing books from %s " '\ 'failed' % self.filename) return False - language = BiblesResourcesDB.get_language(language) - language_id = language[u'id'] - self.create_meta(u'language_id', language_id) for book in bible.b: if self.stop_import_flag: break diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index cd006bb78..4938e505a 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -107,14 +107,11 @@ class OSISBible(BibleDB): if detect_file: detect_file.close() # Set meta language_id - language = self.parent.manager.import_wizard.languageDialog() - if not language: + language_id = self.get_language() + if not language_id: log.exception(u'Importing books from %s " '\ 'failed' % self.filename) return False - language = BiblesResourcesDB.get_language(language) - language_id = language[u'id'] - self.create_meta(u'language_id', language_id) try: osis = codecs.open(self.filename, u'r', details['encoding']) for file_record in osis: From 3d184f89a40a630a5403278a4aedbac9e6b9ebbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Sun, 3 Apr 2011 20:44:08 +0200 Subject: [PATCH 015/190] moved languageDialog() into BIBLEDB.get_language() --- openlp/plugins/bibles/forms/bibleimportform.py | 7 +------ openlp/plugins/bibles/lib/csvbible.py | 2 ++ openlp/plugins/bibles/lib/db.py | 11 +++++++++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index ea7156193..c406c4db3 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -40,7 +40,7 @@ from openlp.core.ui.wizard import OpenLPWizard, WizardStrings from openlp.core.utils import AppLocation, string_is_unicode from openlp.plugins.bibles.lib.manager import BibleFormat from openlp.plugins.bibles.lib.db import BiblesResourcesDB -from openlp.plugins.bibles.forms import BookNameForm, LanguageForm +from openlp.plugins.bibles.forms import BookNameForm log = logging.getLogger(__name__) @@ -764,8 +764,3 @@ class BibleImportForm(OpenLPWizard): self.book_name = BookNameForm(self) if self.book_name.exec_(name): return unicode(self.book_name.requestComboBox.currentText()) - - def languageDialog(self): - self.language = LanguageForm(self) - if self.language.exec_(): - return unicode(self.language.requestComboBox.currentText()) diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index 389ee1aac..407c90d2f 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -78,6 +78,8 @@ class CSVBible(BibleDB): """ This class provides a specialisation for importing of CSV Bibles. """ + log.info(u'CSVBible loaded') + def __init__(self, parent, **kwargs): """ Loads a Bible from a set of CVS files. diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 1960e155b..3f50bed47 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -168,6 +168,7 @@ class BibleDB(QtCore.QObject, Manager): methods, but benefit from the database methods in here via inheritance, rather than depending on yet another object. """ + log.info(u'BibleDB loaded') def __init__(self, parent, **kwargs): """ @@ -491,13 +492,19 @@ class BibleDB(QtCore.QObject, Manager): def get_language(self): """ - Return the language of a bible. + If no language is given it calls a dialog window where the user could + choose the bible language. + Return the language id of a bible. ``book`` The language the bible is. """ log.debug(u'BibleDB.get_language()') - language = self.bible_plugin.manager.import_wizard.languageDialog() + from openlp.plugins.bibles.forms import LanguageForm + language = None + lang = LanguageForm(self.wizard) + if lang.exec_(): + language = unicode(lang.requestComboBox.currentText()) if not language: return False language = BiblesResourcesDB.get_language(language) From a9c87798ebf9bbc64cc6ce9611cb0000e7808469 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Sun, 3 Apr 2011 22:09:18 +0200 Subject: [PATCH 016/190] moved get_book_ref_id_by_name() from BibleManager to BibleDB moved content from BookNameDialog() from bibleimport.py in BibleDB.get_book_ref_id_by_name(). --- .../plugins/bibles/forms/bibleimportform.py | 6 --- openlp/plugins/bibles/forms/languageform.py | 2 +- openlp/plugins/bibles/lib/csvbible.py | 2 +- openlp/plugins/bibles/lib/db.py | 39 ++++++++++++++ openlp/plugins/bibles/lib/http.py | 3 +- openlp/plugins/bibles/lib/manager.py | 54 +------------------ openlp/plugins/bibles/lib/openlp1.py | 3 +- openlp/plugins/bibles/lib/opensong.py | 2 +- openlp/plugins/bibles/lib/osis.py | 3 +- 9 files changed, 46 insertions(+), 68 deletions(-) diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index c406c4db3..fd6690888 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -40,7 +40,6 @@ from openlp.core.ui.wizard import OpenLPWizard, WizardStrings from openlp.core.utils import AppLocation, string_is_unicode from openlp.plugins.bibles.lib.manager import BibleFormat from openlp.plugins.bibles.lib.db import BiblesResourcesDB -from openlp.plugins.bibles.forms import BookNameForm log = logging.getLogger(__name__) @@ -759,8 +758,3 @@ class BibleImportForm(OpenLPWizard): 'BiblesPlugin.ImportWizardForm', 'Your Bible import failed.')) del self.manager.db_cache[importer.name] delete_database(self.plugin.settingsSection, importer.file) - - def bookNameDialog(self, name): - self.book_name = BookNameForm(self) - if self.book_name.exec_(name): - return unicode(self.book_name.requestComboBox.currentText()) diff --git a/openlp/plugins/bibles/forms/languageform.py b/openlp/plugins/bibles/forms/languageform.py index f074a9dc5..e96a005c2 100644 --- a/openlp/plugins/bibles/forms/languageform.py +++ b/openlp/plugins/bibles/forms/languageform.py @@ -25,7 +25,7 @@ ############################################################################### """ -Module implementing BookNameForm. +Module implementing LanguageForm. """ import logging diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index 407c90d2f..f0abb9a1d 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -159,7 +159,7 @@ class CSVBible(BibleDB): self.wizard.incrementProgressBar(unicode( translate('BibleDB.Wizard', 'Importing books... %s')) % unicode(line[2], details['encoding'])) - book_ref_id = self.parent.manager.get_book_ref_id_by_name( + book_ref_id = self.get_book_ref_id_by_name( unicode(line[2], details['encoding']), language_id) if not book_ref_id: log.exception(u'Importing books from %s " '\ diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 3f50bed47..191d18d65 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -202,6 +202,8 @@ class BibleDB(QtCore.QObject, Manager): Manager.__init__(self, u'bibles/bibles', init_schema, self.file) if u'file' in kwargs: self.get_name() + if u'path' in kwargs: + self.path = kwargs[u'path'] self.wizard = None QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'openlp_stop_wizard'), self.stop_import) @@ -383,6 +385,43 @@ class BibleDB(QtCore.QObject, Manager): Book.book_reference_id.like(id)) return db_book + def get_book_ref_id_by_name(self, book, language_id=None): + log.debug(u'BibleManager.get_book_ref_id_by_name:("%s", "%s")', book, + language_id) + self.alternative_book_names_cache = AlternativeBookNamesDB(self.bible_plugin, + path=self.path) + if BiblesResourcesDB.get_book(book): + book_temp = BiblesResourcesDB.get_book(book) + book_id = book_temp[u'id'] + elif BiblesResourcesDB.get_alternative_book_name(book, language_id): + book_id = BiblesResourcesDB.get_alternative_book_name(book, + language_id) + elif self.alternative_book_names_cache.get_book_reference_id(book, + language_id): + book_id = self.alternative_book_names_cache.get_book_reference_id( + book, language_id) + else: + from openlp.plugins.bibles.forms import BookNameForm + book_ref = None + book_name = BookNameForm(self.wizard) + if book_name.exec_(book): + book_ref = unicode(book_name.requestComboBox.currentText()) + if not book_ref: + return None + else: + book_temp = BiblesResourcesDB.get_book(book_ref) + if book_temp: + book_id = book_temp[u'id'] + else: + return None + if book_id: + self.alternative_book_names_cache.create_alternative_book_name( + book, book_id, language_id) + if book_id: + return book_id + else: + return None + def get_verses(self, reference_list): """ This is probably the most used function. It retrieves the list of diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 75f2c37fc..85f7405a6 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -424,8 +424,7 @@ class HTTPBible(BibleDB): self.wizard.incrementProgressBar(unicode(translate( 'BiblesPlugin.HTTPBible', 'Importing %s...', 'Importing ...')) % book) - book_ref_id = self.parent.manager.get_book_ref_id_by_name(book, - language_id) + book_ref_id = self.get_book_ref_id_by_name(book, language_id) if not book_ref_id: log.exception(u'Importing books from %s - download name: "%s" '\ 'failed' % (self.download_source, self.download_name)) diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index aef00e61b..e1e32cc80 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -33,8 +33,7 @@ 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.db import BibleDB, BibleMeta, \ - AlternativeBookNamesDB, BiblesResourcesDB +from openlp.plugins.bibles.lib.db import BibleDB, BibleMeta from csvbible import CSVBible from http import HTTPBible from opensong import OpenSongBible @@ -170,19 +169,6 @@ class BibleManager(object): self.db_cache[name] = web_bible log.debug(u'Bibles reloaded') - #TODO: Delete unused code - ''' - def reload_alternative_book_names(self): - """ - Reloads the alternative book names from the local alternative book names - database on disk. - """ - log.debug(u'Reload AlternativeBookNames') - self.alternative_book_names_cache = AlternativeBookNamesDB(self.parent, - path=self.path) - log.debug(u'AlternativeBookNames reloaded') - ''' - def set_process_dialog(self, wizard): """ Sets the reference to the dialog with the progress bar on it. @@ -324,44 +310,6 @@ class BibleManager(object): }) return None - def get_book_ref(self, book, language_id=None): - log.debug(u'BibleManager.get_book_ref("%s", "%s")', book, language_id) - book_id = self.get_book_ref_id_by_name(book, language_id) - book_temp = BiblesResourcesDB.get_book_by_id(book_id) - log.debug(u'BibleManager.get_book_ref("Return: %s")', - book_temp[u'name']) - return book_temp[u'name'] - - def get_book_ref_id_by_name(self, book, language_id=None): - log.debug(u'BibleManager.get_book_ref_id_by_name:("%s", "%s")', book, - language_id) - self.alternative_book_names_cache = AlternativeBookNamesDB(self.parent, - path=self.path) - if BiblesResourcesDB.get_book(book): - book_temp = BiblesResourcesDB.get_book(book) - book_id = book_temp[u'id'] - elif BiblesResourcesDB.get_alternative_book_name(book, language_id): - book_id = BiblesResourcesDB.get_alternative_book_name(book, - language_id) - elif self.alternative_book_names_cache.get_book_reference_id(book, - language_id): - book_id = self.alternative_book_names_cache.get_book_reference_id( - book, language_id) - else: - book_ref = self.import_wizard.bookNameDialog(book) - book_temp = BiblesResourcesDB.get_book(book_ref) - if book_temp: - book_id = book_temp[u'id'] - else: - return None - if book_id: - self.alternative_book_names_cache.create_alternative_book_name( - book, book_id, language_id) - if book_id: - return book_id - else: - return None - def verse_search(self, bible, second_bible, text): """ Does a verse search for the given bible and text. diff --git a/openlp/plugins/bibles/lib/openlp1.py b/openlp/plugins/bibles/lib/openlp1.py index 23c456dda..0de89b4a7 100644 --- a/openlp/plugins/bibles/lib/openlp1.py +++ b/openlp/plugins/bibles/lib/openlp1.py @@ -75,8 +75,7 @@ class OpenLP1Bible(BibleDB): testament_id = int(book[1]) name = unicode(book[2], u'cp1252') abbreviation = unicode(book[3], u'cp1252') - book_ref_id = self.parent.manager.get_book_ref_id_by_name(name, - language_id) + book_ref_id = self.get_book_ref_id_by_name(name, language_id) if not book_ref_id: log.exception(u'Importing books from %s " '\ 'failed' % self.filename) diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index 714f021cc..37428cc7a 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -70,7 +70,7 @@ class OpenSongBible(BibleDB): for book in bible.b: if self.stop_import_flag: break - book_ref_id = self.parent.manager.get_book_ref_id_by_name( + book_ref_id = self.get_book_ref_id_by_name( unicode(book.attrib[u'n']), language_id) if not book_ref_id: log.exception(u'Importing books from %s " '\ diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index 4938e505a..ba6cf5d63 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -129,8 +129,7 @@ class OSISBible(BibleDB): #TODO: Delete unused code #if book == u'Matt' or book == u'Jdt': # testament += 1 - book_ref_id = self.parent.manager.\ - get_book_ref_id_by_name( + book_ref_id = self.get_book_ref_id_by_name( unicode(self.books[book][0]), language_id) if not book_ref_id: log.exception(u'Importing books from %s " '\ From 7cdf2bc320f00d670c8db5f5818dd8555e66ca23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Mon, 11 Apr 2011 18:21:54 +0200 Subject: [PATCH 017/190] small cleanups --- openlp/plugins/bibles/lib/csvbible.py | 3 ++- openlp/plugins/bibles/lib/db.py | 6 +++--- openlp/plugins/bibles/lib/http.py | 1 - openlp/plugins/bibles/lib/manager.py | 2 -- openlp/plugins/bibles/lib/openlp1.py | 1 - openlp/plugins/bibles/lib/opensong.py | 3 +-- openlp/plugins/bibles/lib/osis.py | 1 - 7 files changed, 6 insertions(+), 11 deletions(-) diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index f0abb9a1d..71af33ca7 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -88,7 +88,6 @@ class CSVBible(BibleDB): """ log.info(self.__class__.__name__) BibleDB.__init__(self, parent, **kwargs) - self.parent = parent #TODO: Delete unused code ''' try: @@ -98,6 +97,8 @@ class CSVBible(BibleDB): ''' self.booksfile = kwargs[u'booksfile'] self.versesfile = kwargs[u'versefile'] + + #TODO: Delete unused code ''' def setup_testaments(self): """ diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 191d18d65..e520aec3f 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -386,10 +386,10 @@ class BibleDB(QtCore.QObject, Manager): return db_book def get_book_ref_id_by_name(self, book, language_id=None): - log.debug(u'BibleManager.get_book_ref_id_by_name:("%s", "%s")', book, + log.debug(u'BibleDB.get_book_ref_id_by_name:("%s", "%s")', book, language_id) - self.alternative_book_names_cache = AlternativeBookNamesDB(self.bible_plugin, - path=self.path) + self.alternative_book_names_cache = AlternativeBookNamesDB( + self.bible_plugin, path=self.path) if BiblesResourcesDB.get_book(book): book_temp = BiblesResourcesDB.get_book(book) book_id = book_temp[u'id'] diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 85f7405a6..bd59d0cc9 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -359,7 +359,6 @@ class HTTPBible(BibleDB): Init confirms the bible exists and stores the database path. """ BibleDB.__init__(self, parent, **kwargs) - self.parent = parent self.download_source = kwargs[u'download_source'] self.download_name = kwargs[u'download_name'] # TODO: Clean up proxy stuff. We probably want one global proxy per diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index e1e32cc80..dd1669b23 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -130,8 +130,6 @@ class BibleManager(object): self.suffix = u'.sqlite' self.import_wizard = None self.reload_bibles() - #TODO: Delete unused code - #self.reload_alternative_book_names() self.media = None def reload_bibles(self): diff --git a/openlp/plugins/bibles/lib/openlp1.py b/openlp/plugins/bibles/lib/openlp1.py index 0de89b4a7..0ef5f95a9 100644 --- a/openlp/plugins/bibles/lib/openlp1.py +++ b/openlp/plugins/bibles/lib/openlp1.py @@ -43,7 +43,6 @@ class OpenLP1Bible(BibleDB): """ log.debug(self.__class__.__name__) BibleDB.__init__(self, parent, **kwargs) - self.parent = parent self.filename = kwargs[u'filename'] def do_import(self): diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index 37428cc7a..875977bbd 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +song# -*- coding: utf-8 -*- # vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 ############################################################################### @@ -43,7 +43,6 @@ class OpenSongBible(BibleDB): """ log.debug(self.__class__.__name__) BibleDB.__init__(self, parent, **kwargs) - self.parent = parent self.filename = kwargs['filename'] def do_import(self): diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index ba6cf5d63..9b65bb8d8 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -46,7 +46,6 @@ class OSISBible(BibleDB): def __init__(self, parent, **kwargs): log.debug(self.__class__.__name__) BibleDB.__init__(self, parent, **kwargs) - self.parent = parent self.filename = kwargs[u'filename'] fbibles = None self.books = {} From 0ad2d851715448af24ad0c2454b36c7bea9c87e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Mon, 11 Apr 2011 22:57:00 +0200 Subject: [PATCH 018/190] small fix --- openlp/plugins/bibles/lib/opensong.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index 875977bbd..cb971fa99 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -1,4 +1,4 @@ -song# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- # vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 ############################################################################### From 6c047fc83ef2bd95d52240dca7215c55e15a6ade Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Tue, 12 Apr 2011 13:33:29 +0200 Subject: [PATCH 019/190] changed content of book drop list in advanced search. If a second bible is choosen the combobox only contains books which both bibles (first and second) contains. changed autocomplete in quick search. If a second bible is choosen it now suggest only books which both bibles contains. --- openlp/plugins/bibles/lib/manager.py | 1 + openlp/plugins/bibles/lib/mediaitem.py | 38 ++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index dd1669b23..75db89af2 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -214,6 +214,7 @@ class BibleManager(object): books.append( { u'name': book.name, + u'book_reference_id': book.book_reference_id, u'chapters': self.db_cache[bible].get_chapter_count(book.book_reference_id) }) return books diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 9f43b99cc..279ecc1cf 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -202,8 +202,14 @@ class BibleMediaItem(MediaManagerItem): # Add the search tab widget to the page layout. self.pageLayout.addWidget(self.searchTabWidget) # Combo Boxes + QtCore.QObject.connect(self.quickVersionComboBox, + QtCore.SIGNAL(u'activated(int)'), self.onQuickVersionComboBox) + QtCore.QObject.connect(self.quickSecondComboBox, + QtCore.SIGNAL(u'activated(int)'), self.onQuickSecondComboBox) QtCore.QObject.connect(self.advancedVersionComboBox, QtCore.SIGNAL(u'activated(int)'), self.onAdvancedVersionComboBox) + QtCore.QObject.connect(self.advancedSecondComboBox, + QtCore.SIGNAL(u'activated(int)'), self.onAdvancedSecondComboBox) QtCore.QObject.connect(self.advancedBookComboBox, QtCore.SIGNAL(u'activated(int)'), self.onAdvancedBookComboBox) QtCore.QObject.connect(self.advancedFromChapter, @@ -346,6 +352,16 @@ class BibleMediaItem(MediaManagerItem): """ log.debug(u'initialiseAdvancedBible %s', bible) book_data = self.parent.manager.get_books(bible) + secondbible = unicode(self.advancedSecondComboBox.currentText()) + if secondbible != u'': + secondbook_data = self.parent.manager.get_books(secondbible) + book_data_temp = [] + for book in book_data: + for secondbook in secondbook_data: + if book['book_reference_id'] == \ + secondbook['book_reference_id']: + book_data_temp.append(book) + book_data = book_data_temp self.advancedBookComboBox.clear() first = True for book in book_data: @@ -395,16 +411,38 @@ class BibleMediaItem(MediaManagerItem): bible = unicode(self.quickVersionComboBox.currentText()) if bible: book_data = bibles[bible].get_books() + secondbible = unicode(self.quickSecondComboBox.currentText()) + if secondbible != u'': + secondbook_data = bibles[secondbible].get_books() + book_data_temp = [] + for book in book_data: + for secondbook in secondbook_data: + if book.book_reference_id == \ + secondbook.book_reference_id: + book_data_temp.append(book) + book_data = book_data_temp books = [book.name for book in book_data] books.sort() add_widget_completer(books, self.quickSearchEdit) + def onQuickVersionComboBox(self): + self.updateAutoCompleter() + + def onQuickSecondComboBox(self): + self.updateAutoCompleter() + def onAdvancedVersionComboBox(self): QtCore.QSettings().setValue(self.settingsSection + u'/advanced bible', QtCore.QVariant(self.advancedVersionComboBox.currentText())) self.initialiseAdvancedBible( unicode(self.advancedVersionComboBox.currentText())) + def onAdvancedSecondComboBox(self): + QtCore.QSettings().setValue(self.settingsSection + u'/advanced bible', + QtCore.QVariant(self.advancedVersionComboBox.currentText())) + self.initialiseAdvancedBible( + unicode(self.advancedVersionComboBox.currentText())) + def onAdvancedBookComboBox(self): item = int(self.advancedBookComboBox.currentIndex()) self.initialiseChapterVerse( From df0d9244ebe1e6dfd44abe4354a364fde2af9797 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Thu, 14 Apr 2011 10:40:30 +0200 Subject: [PATCH 020/190] Changed layout of AlternativeBookNamesDB from sqlalchemy to sqlite3 --- openlp/plugins/bibles/lib/db.py | 155 +++++++++++++++----------------- 1 file changed, 70 insertions(+), 85 deletions(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index e520aec3f..a0780e7b8 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -70,13 +70,6 @@ class Verse(BaseModel): """ pass -class AlternativeBookNames(BaseModel): - """ - Alternative Book Names model - """ - pass - - def init_schema(url): """ Setup a bible database connection and initialise the database schema. @@ -136,30 +129,6 @@ def init_schema(url): metadata.create_all(checkfirst=True) return session -def init_schema_alternative_book_names(url): - """ - Setup a alternative book names database connection and initialise the - database schema. - - ``url`` - The database to setup. - """ - session, metadata = init_db(url) - - alternative_book_names_table = Table(u'alternative_book_names', metadata, - Column(u'id', types.Integer, primary_key=True), - Column(u'book_reference_id', types.Integer), - Column(u'language_id', types.Integer), - Column(u'name', types.Unicode(50), index=True), - ) - - try: - class_mapper(AlternativeBookNames) - except UnmappedClassError: - mapper(AlternativeBookNames, alternative_book_names_table) - - metadata.create_all(checkfirst=True) - return session class BibleDB(QtCore.QObject, Manager): """ @@ -388,17 +357,15 @@ class BibleDB(QtCore.QObject, Manager): def get_book_ref_id_by_name(self, book, language_id=None): log.debug(u'BibleDB.get_book_ref_id_by_name:("%s", "%s")', book, language_id) - self.alternative_book_names_cache = AlternativeBookNamesDB( - self.bible_plugin, path=self.path) if BiblesResourcesDB.get_book(book): book_temp = BiblesResourcesDB.get_book(book) book_id = book_temp[u'id'] elif BiblesResourcesDB.get_alternative_book_name(book, language_id): book_id = BiblesResourcesDB.get_alternative_book_name(book, language_id) - elif self.alternative_book_names_cache.get_book_reference_id(book, + elif AlternativeBookNamesDB.get_book_reference_id(book, language_id): - book_id = self.alternative_book_names_cache.get_book_reference_id( + book_id = AlternativeBookNamesDB.get_book_reference_id( book, language_id) else: from openlp.plugins.bibles.forms import BookNameForm @@ -415,7 +382,7 @@ class BibleDB(QtCore.QObject, Manager): else: return None if book_id: - self.alternative_book_names_cache.create_alternative_book_name( + AlternativeBookNamesDB.create_alternative_book_name( book, book_id, language_id) if book_id: return book_id @@ -822,6 +789,12 @@ class BiblesResourcesDB(QtCore.QObject, Manager): def get_alternative_book_name(name, language_id=None): """ Return a book_reference_id if the name matches. + + ``name`` + The name to search the id. + + ``language_id`` + The language_id for which language should be searched """ log.debug(u'BiblesResourcesDB.get_alternative_book_name("%s", "%s")', name, language_id) @@ -898,73 +871,85 @@ class BiblesResourcesDB(QtCore.QObject, Manager): }) return testament_list + class AlternativeBookNamesDB(QtCore.QObject, Manager): """ This class represents a database-bound alternative book names system. """ + cursor = None + conn = None - def __init__(self, parent, **kwargs): + @staticmethod + def get_cursor(): """ - The constructor loads up the database and creates and initialises the - tables if the database doesn't exist. - - **Required keyword arguments:** - - ``path`` - The path to the bible database file. - - ``name`` - The name of the database. This is also used as the file name for - SQLite databases. + Return the cursor object. Instantiate one if it doesn't exist yet. + If necessary loads up the database and creates the tables if the + database doesn't exist. """ - log.info(u'AlternativeBookNamesDB loaded') - QtCore.QObject.__init__(self) - self.bible_plugin = parent - if u'path' not in kwargs: - raise KeyError(u'Missing keyword argument "path".') - self.stop_import_flag = False - self.name = u'alternative_book_names.sqlite' - if not isinstance(self.name, unicode): - self.name = unicode(self.name, u'utf-8') - self.file = self.name - Manager.__init__(self, u'bibles/resources', - init_schema_alternative_book_names, self.file) - self.wizard = None - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'openlp_stop_wizard'), self.stop_import) + if AlternativeBookNamesDB.cursor is None: + filepath = os.path.join( + AppLocation.get_directory(AppLocation.DataDir), u'bibles', + u'resources', u'alternative_book_names.sqlite') + log.debug(u'Filepath: %s' % filepath) + if not os.path.exists(filepath): + #create new DB, create table alternative_book_names + AlternativeBookNamesDB.conn = sqlite3.connect(filepath) + AlternativeBookNamesDB.conn.execute(u'CREATE TABLE ' + u'alternative_book_names(id INTEGER NOT NULL, ' + u'book_reference_id INTEGER, language_id INTEGER, name ' + u'VARCHAR(50), PRIMARY KEY (id))') + else: + #use existing DB + AlternativeBookNamesDB.conn = sqlite3.connect(filepath) + AlternativeBookNamesDB.cursor = AlternativeBookNamesDB.conn.cursor() + return AlternativeBookNamesDB.cursor - def stop_import(self): + @staticmethod + def run_sql(query, parameters=(), commit=None): """ - Stops the import of the Bible. - """ - log.debug(u'Stopping import') - self.stop_import_flag = True + Run an SQL query on the database, returning the results. - def get_book_reference_id(self, name, language=None): + ``query`` + The actual SQL query to run. + + ``parameters`` + Any variable parameters to add to the query + + ``commit`` + If a commit statement is necessary this should be True. """ - Return the book_reference_id of a book by name. + cursor = AlternativeBookNamesDB.get_cursor() + cursor.execute(query, parameters) + if commit: + AlternativeBookNamesDB.conn.commit() + return cursor.fetchall() + + @staticmethod + def get_book_reference_id(name, language_id=None): + """ + Return a book_reference_id if the name matches. ``name`` The name to search the id. - ``language`` - The language for which should be searched + ``language_id`` + The language_id for which language should be searched """ - log.debug(u'AlternativeBookNamesDB.get_book_reference_id("%s")', name) - if language: - id = self.session.query(AlternativeBookNames.book_reference_id)\ - .filter(AlternativeBookNames.name.like(name))\ - .filter(AlternativeBookNames.language_id.like(language)).first() + log.debug(u'AlternativeBookNamesDB.get_book_reference_id("%s", "%s")', + name, language_id) + if language_id: + id = AlternativeBookNamesDB.run_sql(u'SELECT book_reference_id FROM ' + u'alternative_book_names WHERE name = ? AND language_id = ?', (name, language_id)) else: - id = self.get_object_filtered(AlternativeBookNames.book_reference_id, - AlternativeBookNames.name.like(name)) + id = AlternativeBookNamesDB.run_sql(u'SELECT book_reference_id FROM ' + u'alternative_book_names WHERE name = ?', name) if not id: return None else: - return id[0] + return id[0][0] - def create_alternative_book_name(self, name, book_reference_id, - language_id): + @staticmethod + def create_alternative_book_name(name, book_reference_id, language_id): """ Add an alternative book name to the database. @@ -979,7 +964,7 @@ class AlternativeBookNamesDB(QtCore.QObject, Manager): """ log.debug(u'AlternativeBookNamesDB.create_alternative_book_name("%s", ' '"%s", "%s"', name, book_reference_id, language_id) - alternative_book_name = AlternativeBookNames.populate(name=name, - book_reference_id=book_reference_id, language_id=language_id) - self.save_object(alternative_book_name) + alternative_book_name = AlternativeBookNamesDB.run_sql(u'INSERT INTO ' + u'alternative_book_names(book_reference_id, language_id, name) ' + u'VALUES (?, ?, ?)', (book_reference_id, language_id, name), True) return alternative_book_name From fbace696541325e810a11b09e9ed225e3c32b279 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Thu, 14 Apr 2011 11:08:58 +0200 Subject: [PATCH 021/190] remove bibleimportrequestdialog.ui --- resources/forms/bibleimportrequestdialog.ui | 137 -------------------- 1 file changed, 137 deletions(-) delete mode 100644 resources/forms/bibleimportrequestdialog.ui diff --git a/resources/forms/bibleimportrequestdialog.ui b/resources/forms/bibleimportrequestdialog.ui deleted file mode 100644 index 5795300f9..000000000 --- a/resources/forms/bibleimportrequestdialog.ui +++ /dev/null @@ -1,137 +0,0 @@ - - - BibleImportRequest - - - - 0 - 0 - 400 - 175 - - - - - 0 - 0 - - - - Dialog - - - - - 10 - 15 - 381 - 151 - - - - - - - - Arial - 12 - 75 - true - - - - Choose Book: - - - - - - - The following books cannot be clearly attributed. -Please choose the book it is. - - - - - - - - - Book: - - - - - - - - 0 - 0 - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - - BibleImportRequestButtonBox - accepted() - BibleImportRequest - accept() - - - 248 - 254 - - - 157 - 274 - - - - - BibleImportRequestButtonBox - rejected() - BibleImportRequest - reject() - - - 316 - 260 - - - 286 - 274 - - - - - From 77f43e32b993708c41cc251ac797ae627451536d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Thu, 14 Apr 2011 22:18:23 +0200 Subject: [PATCH 022/190] small cleanups --- openlp/plugins/bibles/lib/db.py | 9 +++++---- openlp/plugins/bibles/lib/http.py | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index a0780e7b8..d3c93cdfa 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -938,11 +938,12 @@ class AlternativeBookNamesDB(QtCore.QObject, Manager): log.debug(u'AlternativeBookNamesDB.get_book_reference_id("%s", "%s")', name, language_id) if language_id: - id = AlternativeBookNamesDB.run_sql(u'SELECT book_reference_id FROM ' - u'alternative_book_names WHERE name = ? AND language_id = ?', (name, language_id)) + id = AlternativeBookNamesDB.run_sql(u'SELECT book_reference_id FROM' + u' alternative_book_names WHERE name = ? AND language_id = ?', + (name, language_id)) else: - id = AlternativeBookNamesDB.run_sql(u'SELECT book_reference_id FROM ' - u'alternative_book_names WHERE name = ?', name) + id = AlternativeBookNamesDB.run_sql(u'SELECT book_reference_id FROM' + u' alternative_book_names WHERE name = ?', name) if not id: return None else: diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index bd59d0cc9..a9f31a3ea 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -42,7 +42,7 @@ from openlp.core.lib.ui import critical_error_message_box from openlp.core.utils import AppLocation, get_web_page from openlp.plugins.bibles.lib import SearchResults from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB, \ - Book, BibleMeta + Book log = logging.getLogger(__name__) From e8202924f7650062be5f4863ec97b3bd101694fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Thu, 14 Apr 2011 22:33:02 +0200 Subject: [PATCH 023/190] delete unused testament stuff --- .../plugins/bibles/forms/bibleimportform.py | 60 +------------------ openlp/plugins/bibles/lib/csvbible.py | 45 +------------- openlp/plugins/bibles/lib/db.py | 36 +---------- openlp/plugins/bibles/lib/osis.py | 5 -- 4 files changed, 3 insertions(+), 143 deletions(-) diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index a18e3a4e1..ebf8a6c30 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -124,10 +124,6 @@ class BibleImportForm(OpenLPWizard): QtCore.QObject.connect(self.osisBrowseButton, QtCore.SIGNAL(u'clicked()'), self.onOsisBrowseButtonClicked) - #TODO: Delete unused code - #QtCore.QObject.connect(self.csvTestamentsButton, - # QtCore.SIGNAL(u'clicked()'), - # self.onCsvTestamentsBrowseButtonClicked) QtCore.QObject.connect(self.csvBooksButton, QtCore.SIGNAL(u'clicked()'), self.onCsvBooksBrowseButtonClicked) @@ -188,22 +184,6 @@ class BibleImportForm(OpenLPWizard): self.csvLayout = QtGui.QFormLayout(self.csvWidget) self.csvLayout.setMargin(0) self.csvLayout.setObjectName(u'CsvLayout') - #TODO: Delete unused code - ''' - self.csvTestamentsLabel = QtGui.QLabel(self.csvWidget) - self.csvTestamentsLabel.setObjectName(u'CsvTestamentsLabel') - self.csvTestamentsLayout = QtGui.QHBoxLayout() - self.csvTestamentsLayout.setObjectName(u'CsvTestamentsLayout') - self.csvTestamentsEdit = QtGui.QLineEdit(self.csvWidget) - self.csvTestamentsEdit.setObjectName(u'CsvTestamentsEdit') - self.csvTestamentsLayout.addWidget(self.csvTestamentsEdit) - - self.csvTestamentsButton = QtGui.QToolButton(self.csvWidget) - self.csvTestamentsButton.setIcon(self.openIcon) - self.csvTestamentsButton.setObjectName(u'CsvTestamentsButton') - self.csvTestamentsLayout.addWidget(self.csvTestamentsButton) - self.csvLayout.addRow(self.csvTestamentsLabel, self.csvTestamentsLayout) - ''' self.csvBooksLabel = QtGui.QLabel(self.csvWidget) self.csvBooksLabel.setObjectName(u'CsvBooksLabel') self.csvBooksLayout = QtGui.QHBoxLayout() @@ -388,9 +368,6 @@ class BibleImportForm(OpenLPWizard): translate('BiblesPlugin.ImportWizardForm', 'Bible file:')) self.osisFileLabel.setText( translate('BiblesPlugin.ImportWizardForm', 'Bible file:')) - #TODO: Delete unused code - #self.csvTestamentsLabel.setText( - # translate('BiblesPlugin.ImportWizardForm', 'Testaments file:')) self.csvBooksLabel.setText( translate('BiblesPlugin.ImportWizardForm', 'Books file:')) self.csvVersesLabel.setText( @@ -441,8 +418,6 @@ class BibleImportForm(OpenLPWizard): # Align all QFormLayouts towards each other. labelWidth = max(self.formatLabel.minimumSizeHint().width(), self.osisFileLabel.minimumSizeHint().width(), - #TODO: Delete unused code - #self.csvTestamentsLabel.minimumSizeHint().width(), self.csvBooksLabel.minimumSizeHint().width(), self.csvVersesLabel.minimumSizeHint().width(), self.openSongFileLabel.minimumSizeHint().width(), @@ -464,17 +439,6 @@ class BibleImportForm(OpenLPWizard): self.osisFileEdit.setFocus() return False elif self.field(u'source_format').toInt()[0] == BibleFormat.CSV: - #TODO: Delete unused code - ''' - if not self.field(u'csv_testamentsfile').toString(): - answer = critical_error_message_box(UiStrings.NFSs, - translate('BiblesPlugin.ImportWizardForm', - 'You have not specified a testaments file. Do you ' - 'want to proceed with the import?'), question=True) - if answer == QtGui.QMessageBox.No: - self.csvTestamentsEdit.setFocus() - return False - ''' if not self.field(u'csv_booksfile').toString(): critical_error_message_box(UiStrings.NFSs, translate('BiblesPlugin.ImportWizardForm', @@ -551,16 +515,7 @@ class BibleImportForm(OpenLPWizard): """ self.getFileName(WizardStrings.OpenTypeFile % WizardStrings.OSIS, self.osisFileEdit) - #TODO: Delete unused code - ''' - def onCsvTestamentsBrowseButtonClicked(self): - """ - Show the file open dialog for the testaments CSV file. - """ - self.getFileName(WizardStrings.OpenTypeFile % WizardStrings.CSV, - self.csvTestamentsEdit, u'%s (*.csv)' - % translate('BiblesPlugin.ImportWizardForm', 'CSV File')) - ''' + def onCsvBooksBrowseButtonClicked(self): """ Show the file open dialog for the books CSV file. @@ -599,9 +554,6 @@ class BibleImportForm(OpenLPWizard): """ self.selectPage.registerField(u'source_format', self.formatComboBox) self.selectPage.registerField(u'osis_location', self.osisFileEdit) - #TODO: Delete unused code - #self.selectPage.registerField( - # u'csv_testamentsfile', self.csvTestamentsEdit) self.selectPage.registerField(u'csv_booksfile', self.csvBooksEdit) self.selectPage.registerField(u'csv_versefile', self.csvVersesEdit) self.selectPage.registerField(u'opensong_file', self.openSongFileEdit) @@ -630,8 +582,6 @@ class BibleImportForm(OpenLPWizard): self.cancelButton.setVisible(True) self.setField(u'source_format', QtCore.QVariant(0)) self.setField(u'osis_location', QtCore.QVariant('')) - #TODO: Delete unused code - #self.setField(u'csv_testamentsfile', QtCore.QVariant('')) self.setField(u'csv_booksfile', QtCore.QVariant('')) self.setField(u'csv_versefile', QtCore.QVariant('')) self.setField(u'opensong_file', QtCore.QVariant('')) @@ -712,14 +662,6 @@ class BibleImportForm(OpenLPWizard): ) elif bible_type == BibleFormat.CSV: # Import a CSV bible. - #TODO: Delete unused code - ''' - importer = self.manager.import_bible(BibleFormat.CSV, - name=license_version, testamentsfile=unicode( - self.field(u'csv_testamentsfile').toString()), - booksfile=unicode(self.field(u'csv_booksfile').toString()), - versefile=unicode(self.field(u'csv_versefile').toString()) - ''' importer = self.manager.import_bible(BibleFormat.CSV, name=license_version, booksfile=unicode(self.field(u'csv_booksfile').toString()), diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index 71af33ca7..be45bfeb9 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -88,52 +88,9 @@ class CSVBible(BibleDB): """ log.info(self.__class__.__name__) BibleDB.__init__(self, parent, **kwargs) - #TODO: Delete unused code - ''' - try: - self.testamentsfile = kwargs[u'testamentsfile'] - except KeyError: - self.testamentsfile = None - ''' self.booksfile = kwargs[u'booksfile'] self.versesfile = kwargs[u'versefile'] - - #TODO: Delete unused code - ''' - def setup_testaments(self): - """ - Overrides parent method so we can handle importing a testament file. - """ - if self.testamentsfile: - self.wizard.progressBar.setMinimum(0) - self.wizard.progressBar.setMaximum(2) - self.wizard.progressBar.setValue(0) - testaments_file = None - try: - details = get_file_encoding(self.testamentsfile) - testaments_file = open(self.testamentsfile, 'rb') - testaments_reader = csv.reader(testaments_file, delimiter=',', - quotechar='"') - for line in testaments_reader: - if self.stop_import_flag: - break - self.wizard.incrementProgressBar(unicode( - translate('BibleDB.Wizard', - 'Importing testaments... %s')) % - unicode(line[1], details['encoding']), 0) - self.save_object(Testament.populate( - name=unicode(line[1], details['encoding']))) - Receiver.send_message(u'openlp_process_events') - except (IOError, IndexError): - log.exception(u'Loading testaments from file failed') - finally: - if testaments_file: - testaments_file.close() - self.wizard.incrementProgressBar(unicode(translate( - 'BibleDB.Wizard', 'Importing testaments... done.')), 2) - else: - BibleDB.setup_testaments(self) - ''' + def do_import(self): """ Import the bible books and verses. diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index d3c93cdfa..4afc5bccf 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -48,14 +48,6 @@ class BibleMeta(BaseModel): """ pass -#TODO: Delete unused code -''' -class Testament(BaseModel): - """ - Bible Testaments - """ - pass -''' class Book(BaseModel): """ @@ -83,13 +75,7 @@ def init_schema(url): Column(u'key', types.Unicode(255), primary_key=True, index=True), Column(u'value', types.Unicode(255)), ) - #TODO: Delete unused code - ''' - testament_table = Table(u'testament', metadata, - Column(u'id', types.Integer, primary_key=True), - Column(u'name', types.Unicode(50)), - ) - ''' + book_table = Table(u'book', metadata, Column(u'id', types.Integer, primary_key=True), Column(u'book_reference_id', types.Integer), @@ -109,13 +95,6 @@ def init_schema(url): class_mapper(BibleMeta) except UnmappedClassError: mapper(BibleMeta, meta_table) - #TODO: Delete unused code - ''' - try: - class_mapper(Testament) - except UnmappedClassError: - mapper(Testament, testament_table) - ''' try: class_mapper(Book) except UnmappedClassError: @@ -220,21 +199,8 @@ class BibleDB(QtCore.QObject, Manager): """ self.wizard = wizard self.create_meta(u'dbversion', u'2') - #TODO: Delete unused code - #self.setup_testaments() return self.name - #TODO: Delete unused code - ''' - def setup_testaments(self): - """ - Initialise the testaments section of a bible with suitable defaults. - """ - self.save_object(Testament.populate(name=u'Old Testament')) - self.save_object(Testament.populate(name=u'New Testament')) - self.save_object(Testament.populate(name=u'Apocrypha')) - ''' - def create_book(self, name, bk_ref_id, testament=1): """ Add a book to the database. diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index 9b65bb8d8..47f512961 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -91,8 +91,6 @@ class OSISBible(BibleDB): osis = None success = True last_chapter = 0 - #TODO: Delete unused code - #testament = 1 match_count = 0 self.wizard.incrementProgressBar(translate('BiblesPlugin.OsisImport', 'Detecting encoding (this may take a few minutes)...')) @@ -125,9 +123,6 @@ class OSISBible(BibleDB): verse_text = match.group(4) if not db_book or db_book.name != self.books[book][0]: log.debug(u'New book: "%s"' % self.books[book][0]) - #TODO: Delete unused code - #if book == u'Matt' or book == u'Jdt': - # testament += 1 book_ref_id = self.get_book_ref_id_by_name( unicode(self.books[book][0]), language_id) if not book_ref_id: From 23c8ea867948f24b1e752aae0dbbc853d4186338 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Sat, 16 Apr 2011 13:52:20 +0200 Subject: [PATCH 024/190] small cleanups --- openlp/plugins/bibles/lib/csvbible.py | 4 ++-- openlp/plugins/bibles/lib/db.py | 7 ++++--- openlp/plugins/bibles/lib/http.py | 4 ++-- openlp/plugins/bibles/lib/manager.py | 5 +++-- openlp/plugins/bibles/lib/openlp1.py | 4 ++-- openlp/plugins/bibles/lib/opensong.py | 4 ++-- openlp/plugins/bibles/lib/osis.py | 4 ++-- 7 files changed, 17 insertions(+), 15 deletions(-) diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index be45bfeb9..80216a73e 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -101,7 +101,7 @@ class CSVBible(BibleDB): success = True language_id = self.get_language() if not language_id: - log.exception(u'Importing books from %s " '\ + log.exception(u'Importing books from "%s" '\ 'failed' % self.filename) return False books_file = None @@ -120,7 +120,7 @@ class CSVBible(BibleDB): book_ref_id = self.get_book_ref_id_by_name( unicode(line[2], details['encoding']), language_id) if not book_ref_id: - log.exception(u'Importing books from %s " '\ + log.exception(u'Importing books from "%s" '\ 'failed' % self.booksfile) return False book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 4afc5bccf..617832d33 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -618,7 +618,8 @@ class BiblesResourcesDB(QtCore.QObject, Manager): ``chapter`` The chapter number. """ - log.debug(u'BiblesResourcesDB.get_chapter("%s", "%s")', book_id, chapter) + log.debug(u'BiblesResourcesDB.get_chapter("%s", "%s")', book_id, + chapter) if not isinstance(chapter, int): chapter = int(chapter) chapters = BiblesResourcesDB.run_sql(u'SELECT id, book_reference_id, ' @@ -770,8 +771,8 @@ class BiblesResourcesDB(QtCore.QObject, Manager): u'= ? ORDER BY id', (name, language_id)) else: id = BiblesResourcesDB.run_sql(u'SELECT book_reference_id ' - u'FROM alternative_book_names WHERE name = ? ORDER BY id', ( - name, )) + u'FROM alternative_book_names WHERE name = ? ORDER BY id', + (name, )) if id: return int(id[0][0]) else: diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index a9f31a3ea..9795b0120 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -147,8 +147,8 @@ class BGExtract(object): return None page_source = page.read() page_source = unicode(page_source, 'utf8') - page_source_temp = re.search(u'.*?
', \ - page_source, re.DOTALL) + page_source_temp = re.search(u'.*?
', \ + page_source, re.DOTALL) if page_source_temp: soup = page_source_temp.group(0) else: diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index dd1669b23..cab665179 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -214,7 +214,8 @@ class BibleManager(object): books.append( { u'name': book.name, - u'chapters': self.db_cache[bible].get_chapter_count(book.book_reference_id) + u'chapters': self.db_cache[bible].get_chapter_count( + book.book_reference_id) }) return books @@ -222,7 +223,7 @@ class BibleManager(object): """ Returns the number of Chapters for a given book. """ - log.debug(u'BibleManager.get_book_chapter_count ("%s", "%s")', bible, + log.debug(u'BibleManager.get_book_chapter_count ("%s", "%s")', bible, book) return self.db_cache[bible].get_chapter_count(book) diff --git a/openlp/plugins/bibles/lib/openlp1.py b/openlp/plugins/bibles/lib/openlp1.py index 0ef5f95a9..0ed22797e 100644 --- a/openlp/plugins/bibles/lib/openlp1.py +++ b/openlp/plugins/bibles/lib/openlp1.py @@ -59,7 +59,7 @@ class OpenLP1Bible(BibleDB): #Create the bible language language_id = self.get_language() if not language_id: - log.exception(u'Importing books from %s " '\ + log.exception(u'Importing books from "%s " '\ 'failed' % self.filename) return False # Create all books. @@ -76,7 +76,7 @@ class OpenLP1Bible(BibleDB): abbreviation = unicode(book[3], u'cp1252') book_ref_id = self.get_book_ref_id_by_name(name, language_id) if not book_ref_id: - log.exception(u'Importing books from %s " '\ + log.exception(u'Importing books from "%s" '\ 'failed' % self.filename) return False book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index cb971fa99..fd79cd440 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -63,7 +63,7 @@ class OpenSongBible(BibleDB): bible = opensong.getroot() language_id = self.get_language() if not language_id: - log.exception(u'Importing books from %s " '\ + log.exception(u'Importing books from "%s" '\ 'failed' % self.filename) return False for book in bible.b: @@ -72,7 +72,7 @@ class OpenSongBible(BibleDB): book_ref_id = self.get_book_ref_id_by_name( unicode(book.attrib[u'n']), language_id) if not book_ref_id: - log.exception(u'Importing books from %s " '\ + log.exception(u'Importing books from "%s" '\ 'failed' % self.filename) return False book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index 47f512961..e3dea40ce 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -106,7 +106,7 @@ class OSISBible(BibleDB): # Set meta language_id language_id = self.get_language() if not language_id: - log.exception(u'Importing books from %s " '\ + log.exception(u'Importing books from "%s" '\ 'failed' % self.filename) return False try: @@ -126,7 +126,7 @@ class OSISBible(BibleDB): book_ref_id = self.get_book_ref_id_by_name( unicode(self.books[book][0]), language_id) if not book_ref_id: - log.exception(u'Importing books from %s " '\ + log.exception(u'Importing books from "%s" '\ 'failed' % self.filename) return False book_details = BiblesResourcesDB.get_book_by_id( From e8c2d7e805c79d4191409582495c214bde301f10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Tue, 19 Apr 2011 22:25:27 +0200 Subject: [PATCH 025/190] add reimportwizard for older bible databases --- openlp/plugins/bibles/bibleplugin.py | 33 +- openlp/plugins/bibles/forms/__init__.py | 1 + .../plugins/bibles/forms/biblereimportform.py | 697 ++++++++++++++++++ openlp/plugins/bibles/lib/db.py | 122 +++ openlp/plugins/bibles/lib/mediaitem.py | 12 +- resources/images/bibles_reimport_alert.png | Bin 0 -> 762 bytes 6 files changed, 862 insertions(+), 3 deletions(-) create mode 100644 openlp/plugins/bibles/forms/biblereimportform.py create mode 100644 resources/images/bibles_reimport_alert.png diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index 5a631bf00..13b5924d7 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -58,6 +58,7 @@ class BiblePlugin(Plugin): #action_list.add_action(self.exportBibleItem, UiStrings().Export) # Set to invisible until we can export bibles self.exportBibleItem.setVisible(False) + self.toolsReimportItem.setVisible(True) def finalise(self): """ @@ -87,6 +88,36 @@ class BiblePlugin(Plugin): export_menu.addAction(self.exportBibleItem) self.exportBibleItem.setVisible(False) + def addToolsMenuItem(self, tools_menu): + """ + Give the alerts plugin the opportunity to add items to the + **Tools** menu. + + ``tools_menu`` + The actual **Tools** menu item, so that your actions can + use it as their parent. + """ + log.info(u'add tools menu') + self.toolsReimportItem = QtGui.QAction(tools_menu) + self.toolsReimportItem.setObjectName(u'toolsReimportItem') + self.toolsReimportItem.setText( + translate('BiblePlugin', 'Re-&import older bible databases')) + self.toolsReimportItem.setStatusTip( + translate('BiblePlugin', 'Re-import the bible databases to addapt ' + 'the database scheme.')) + tools_menu.addAction(self.toolsReimportItem) + QtCore.QObject.connect(self.toolsReimportItem, + QtCore.SIGNAL(u'triggered()'), self.onToolsReimportItemTriggered) + self.toolsReimportItem.setVisible(False) + + def onToolsReimportItemTriggered(self): + """ + Re-import older bible databases. + """ + #self.manager.import_old_bible_databases() + if self.mediaItem: + self.mediaItem.onReImportClick() + def onBibleImportClick(self): if self.mediaItem: self.mediaItem.onImportClick() @@ -146,4 +177,4 @@ class BiblePlugin(Plugin): u'service': translate('BiblesPlugin', 'Add the selected Bible to the service') } - self.setPluginUiTextStrings(tooltips) \ No newline at end of file + self.setPluginUiTextStrings(tooltips) diff --git a/openlp/plugins/bibles/forms/__init__.py b/openlp/plugins/bibles/forms/__init__.py index 561944563..bd7ba3828 100644 --- a/openlp/plugins/bibles/forms/__init__.py +++ b/openlp/plugins/bibles/forms/__init__.py @@ -53,5 +53,6 @@ from the .ui files later if necessary. from booknameform import BookNameForm from languageform import LanguageForm from bibleimportform import BibleImportForm +from biblereimportform import BibleReImportForm __all__ = ['BibleImportForm'] diff --git a/openlp/plugins/bibles/forms/biblereimportform.py b/openlp/plugins/bibles/forms/biblereimportform.py new file mode 100644 index 000000000..5a311f017 --- /dev/null +++ b/openlp/plugins/bibles/forms/biblereimportform.py @@ -0,0 +1,697 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2011 Raoul Snyman # +# Portions copyright (c) 2008-2011 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 # +# --------------------------------------------------------------------------- # +# 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 the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### +""" +The bible import functions for OpenLP +""" +import logging +import os +import os.path +import re + +from PyQt4 import QtCore, QtGui + +from openlp.core.lib import Receiver, SettingsManager, 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, delete_file +from openlp.plugins.bibles.lib.db import BibleDB, BibleMeta, OldBibleDB,\ + BiblesResourcesDB +from openlp.plugins.bibles.lib.http import BSExtract, BGExtract, CWExtract + +log = logging.getLogger(__name__) + + +class BibleReImportForm(OpenLPWizard): + """ + This is the Bible ReImport Wizard, which allows easy importing of Bibles + into OpenLP from older OpenLP2 database versions. + """ + log.info(u'BibleReImportForm loaded') + + def __init__(self, parent, manager, bibleplugin): + """ + Instantiate the wizard, and run any extra setup we need to. + + ``parent`` + The QWidget-derived parent of the wizard. + + ``manager`` + The Bible manager. + + ``bibleplugin`` + The Bible plugin. + """ + self.manager = manager + self.parent = parent + self.suffix = u'.sqlite' + self.settingsSection = u'bibles/bibles' + self.oldsettingsSection = u'bibles' + self.oldpath = AppLocation.get_section_data_path( + self.oldsettingsSection) + self.newpath = AppLocation.get_section_data_path( + self.settingsSection) + self.files = SettingsManager.get_files(self.oldsettingsSection, + self.suffix) + self.success = {} + self.newbibles = {} + self.maxBibles = len(self.files) + self.stop_import_flag = False + OpenLPWizard.__init__(self, parent, bibleplugin, u'bibleImportWizard', + u':/wizards/wizard_importbible.bmp') + + def setupUi(self, image): + """ + Set up the UI for the bible wizard. + """ + OpenLPWizard.setupUi(self, image) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'openlp_stop_wizard'), self.stop_import) + + def stop_import(self): + """ + Stops the import of the Bible. + """ + log.debug(u'Stopping import') + self.stop_import_flag = True + + def clean_filename(self, old_filename): + """ + Clean up the version name of the Bible and convert it into a valid + file name. + + ``old_filename`` + The "dirty" file name or version name. + """ + 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'_') + return old_filename + u'.sqlite' + + def onCheckBoxIndexChanged(self, index): + ''' + Some cleanup while finishing + ''' + for number, filename in enumerate(self.files): + if not self.checkBox[number].checkState() == 2: + self.verticalWidget[number].hide() + self.formWidget[number].hide() + else: + if os.path.exists(os.path.join(self.newpath, filename)): + self.verticalWidget[number].setVisible(1) + self.formWidget[number].setVisible(1) + + def reject(self): + """ + Stop the wizard on cancel button, close button or ESC key. + """ + log.debug(u'Wizard cancelled by user') + if self.currentPage() == self.progressPage: + Receiver.send_message(u'openlp_stop_wizard') + for bible in self.newbibles.itervalues(): + delete_database(self.newpath, bible.clean_filename( + bible.get_name())) + self.done(QtGui.QDialog.Rejected) + + def onCurrentIdChanged(self, pageId): + """ + Perform necessary functions depending on which wizard page is active. + """ + if self.page(pageId) == self.progressPage: + self.preWizard() + self.performWizard() + self.postWizard() + elif self.page(pageId) == self.selectPage and self.maxBibles == 0: + self.next() + + def onFinishButton(self): + ''' + Some cleanup while finishing + ''' + if self.deleteCheckBox.checkState() == 2 or \ + self.deleteAllCheckBox.checkState() == 2: + for number, filename in enumerate(self.files): + if self.deleteAllCheckBox.checkState() == 2 or \ + (self.checkBox[number].checkState() == 2 and \ + self.success[number] == True): + delete_file(os.path.join(self.oldpath, filename)) + + def customInit(self): + """ + Perform any custom initialisation for bible importing. + """ + self.manager.set_process_dialog(self) + self.restart() + + def customSignals(self): + """ + Set up the signals used in the bible importer. + """ + for number, filename in enumerate(self.files): + QtCore.QObject.connect(self.checkBox[number], + QtCore.SIGNAL(u'stateChanged(int)'), + self.onCheckBoxIndexChanged) + QtCore.QObject.connect(self.finishButton, + QtCore.SIGNAL(u'clicked()'), self.onFinishButton) + + def addCustomPages(self): + """ + Add the bible import specific wizard pages. + """ + self.selectPage = QtGui.QWizardPage() + self.selectPage.setObjectName(u'SelectPage') + self.pageLayout = QtGui.QVBoxLayout(self.selectPage) + self.pageLayout.setObjectName(u'pageLayout') + self.scrollArea = QtGui.QScrollArea(self.selectPage) + self.scrollArea.setWidgetResizable(True) + self.scrollArea.setObjectName(u'scrollArea') + self.scrollArea.setHorizontalScrollBarPolicy( + QtCore.Qt.ScrollBarAlwaysOff) + self.scrollAreaContents = QtGui.QWidget(self.scrollArea) + self.scrollAreaContents.setObjectName(u'scrollAreaContents') + self.formLayout = QtGui.QVBoxLayout(self.scrollAreaContents) + self.formLayout.setSpacing(2) + self.formLayout.setObjectName(u'formLayout') + self.addScrollArea() + self.pageLayout.addWidget(self.scrollArea) + self.addPage(self.selectPage) + + def addScrollArea(self): + """ + Add the content to the scrollArea. + """ + self.checkBox = {} + self.versionNameEdit = {} + self.versionNameLabel = {} + self.versionInfoLabel = {} + self.versionInfoPixmap = {} + self.verticalWidget = {} + self.horizontalLayout = {} + self.formWidget = {} + self.formLayoutAttention = {} + for number, filename in enumerate(self.files): + bible = OldBibleDB(self.parent, path=self.oldpath, file=filename) + self.checkBox[number] = QtGui.QCheckBox(self.scrollAreaContents) + checkBoxName = u'checkBox['+unicode(number)+u']' + self.checkBox[number].setObjectName(checkBoxName) + self.checkBox[number].setText(bible.get_name()) + self.checkBox[number].setCheckState(2) + self.formLayout.addWidget(self.checkBox[number]) + self.verticalWidget[number] = QtGui.QWidget(self.scrollAreaContents) + verticalWidgetName = u'verticalWidget['+unicode(number)+u']' + self.verticalWidget[number].setObjectName(verticalWidgetName) + self.horizontalLayout[number] = QtGui.QHBoxLayout( + self.verticalWidget[number]) + self.horizontalLayout[number].setContentsMargins(25, 0, 0, 0) + horizontalLayoutName = u'horizontalLayout['+unicode(number)+u']' + self.horizontalLayout[number].setObjectName(horizontalLayoutName) + self.versionInfoPixmap[number] = QtGui.QLabel( + self.verticalWidget[number]) + versionInfoPixmapName = u'versionInfoPixmap['+unicode(number)+u']' + self.versionInfoPixmap[number].setObjectName(versionInfoPixmapName) + self.versionInfoPixmap[number].setPixmap(QtGui.QPixmap( + u':/plugins/plugin_alerts.png')) + #u':/bibles/bibles_reimport_alert.png')) + self.versionInfoPixmap[number].setAlignment(QtCore.Qt.AlignRight) + self.horizontalLayout[number].addWidget( + self.versionInfoPixmap[number]) + self.versionInfoLabel[number] = QtGui.QLabel( + self.verticalWidget[number]) + versionInfoLabelName = u'versionInfoLabel['+unicode(number)+u']' + self.versionInfoLabel[number].setObjectName(versionInfoLabelName) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, + QtGui.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth( + self.versionInfoLabel[number].sizePolicy().hasHeightForWidth()) + self.versionInfoLabel[number].setSizePolicy(sizePolicy) + self.horizontalLayout[number].addWidget( + self.versionInfoLabel[number]) + self.formLayout.addWidget(self.verticalWidget[number]) + self.formWidget[number] = QtGui.QWidget(self.scrollAreaContents) + formWidgetName = u'formWidget['+unicode(number)+u']' + self.formWidget[number].setObjectName(formWidgetName) + self.formLayoutAttention[number] = QtGui.QFormLayout( + self.formWidget[number]) + self.formLayoutAttention[number].setContentsMargins(25, 0, 0, 5) + formLayoutAttentionName = u'formLayoutAttention['+unicode(number)+\ + u']' + self.formLayoutAttention[number].setObjectName( + formLayoutAttentionName) + self.versionNameLabel[number] = QtGui.QLabel( + self.formWidget[number]) + self.versionNameLabel[number].setObjectName(u'VersionNameLabel') + self.formLayoutAttention[number].setWidget(0, + QtGui.QFormLayout.LabelRole, self.versionNameLabel[number]) + self.versionNameEdit[number] = QtGui.QLineEdit( + self.formWidget[number]) + self.versionNameEdit[number].setObjectName(u'VersionNameEdit') + self.formLayoutAttention[number].setWidget(0, + QtGui.QFormLayout.FieldRole, self.versionNameEdit[number]) + self.versionNameEdit[number].setText(bible.get_name()) + self.formLayout.addWidget(self.formWidget[number]) + self.spacerItem = QtGui.QSpacerItem(20, 5, QtGui.QSizePolicy.Minimum, + QtGui.QSizePolicy.Expanding) + self.formLayout.addItem(self.spacerItem) + self.scrollArea.setWidget(self.scrollAreaContents) + + def clearScrollArea(self): + """ + Remove the content from the scrollArea. + """ + for number, filename in enumerate(self.files): + self.formLayout.removeWidget(self.checkBox[number]) + self.checkBox[number].setParent(None) + self.horizontalLayout[number].removeWidget( + self.versionInfoPixmap[number]) + self.versionInfoPixmap[number].setParent(None) + self.horizontalLayout[number].removeWidget( + self.versionInfoLabel[number]) + self.versionInfoLabel[number].setParent(None) + self.formLayout.removeWidget(self.verticalWidget[number]) + self.verticalWidget[number].setParent(None) + self.formLayoutAttention[number].removeWidget( + self.versionNameLabel[number]) + self.versionNameLabel[number].setParent(None) + self.formLayoutAttention[number].removeWidget( + self.versionNameEdit[number]) + self.formLayoutAttention[number].deleteLater() + self.versionNameEdit[number].setParent(None) + self.formLayout.removeWidget(self.formWidget[number]) + self.formWidget[number].setParent(None) + self.formLayout.removeItem(self.spacerItem) + + def addProgressPage(self): + """ + Add the progress page for the wizard. This page informs the user how + the wizard is progressing with its task. + """ + OpenLPWizard.addProgressPage(self) + self.progressLayout.setContentsMargins(48, 30, 48, 30) + self.progressLabelAfter = QtGui.QLabel(self.progressPage) + self.progressLabelAfter.setObjectName(u'progressLabelAfter') + self.progressLayout.addWidget(self.progressLabelAfter) + self.deleteCheckBox = QtGui.QCheckBox(self.progressPage) + self.deleteCheckBox.setObjectName(u'deleteCheckBox') + self.progressLayout.addWidget(self.deleteCheckBox) + self.deleteAllCheckBox = QtGui.QCheckBox(self.progressPage) + self.deleteAllCheckBox.setObjectName(u'deleteAllCheckBox') + self.progressLayout.addWidget(self.deleteAllCheckBox) + + def retranslateUi(self): + """ + Allow for localisation of the bible import wizard. + """ + self.setWindowTitle(translate('BiblesPlugin.ReImportWizardForm', + 'Bible ReImport Wizard')) + self.titleLabel.setText(WizardStrings.HeaderStyle % + translate('OpenLP.Ui', 'Welcome to the Bible ReImport Wizard')) + self.informationLabel.setText( + translate('BiblesPlugin.ReImportWizardForm', + 'This wizard will help you to reimport your existing Bibles from a ' + 'prior version of OpenLP 2. Click the next button below to start ' + 'the process by selecting the bibles to reimport.')) + self.selectPage.setTitle( + translate('BiblesPlugin.ReImportWizardForm', + 'Please choose')) + self.selectPage.setSubTitle( + translate('BiblesPlugin.ReImportWizardForm', + 'Please choose the bibles which should be reimported')) + for number, bible in enumerate(self.files): + self.versionNameLabel[number].setText( + translate('BiblesPlugin.ReImportWizardForm', 'Version name:')) + self.versionInfoLabel[number].setText( + translate('BiblesPlugin.ReImportWizardForm', 'This ' + 'bible still exists. Please change the name or uncheck it.')) + self.progressPage.setTitle(WizardStrings.Importing) + self.progressPage.setSubTitle( + translate('BiblesPlugin.ReImportWizardForm', + 'Please wait while your Bibles are imported.')) + self.progressLabel.setText(WizardStrings.Ready) + self.progressBar.setFormat(u'%p%') + self.deleteCheckBox.setText( + translate('BiblesPlugin.ReImportWizardForm', 'Delete old bible ' + 'database(s) from bibles which was imported\nsucessful right now')) + self.deleteAllCheckBox.setText( + translate('BiblesPlugin.ReImportWizardForm', 'Delete all old bible ' + 'database(s) (including not imported bibles)')) + self.progressLabelAfter.setText( + translate('BiblesPlugin.ReImportWizardForm', '\nIf OpenLP should ' + 'delete the old bible databases please choose:')) + + def validateCurrentPage(self): + """ + Validate the current page before moving on to the next page. + """ + if self.currentPage() == self.welcomePage: + return True + elif self.currentPage() == self.selectPage: + for number, filename in enumerate(self.files): + if not self.checkBox[number].checkState() == 2: + continue + version_name = unicode(self.versionNameEdit[number].text()) + oldbible = OldBibleDB(self.parent, path=self.oldpath, + file=filename) + oldname = oldbible.get_name() + if not version_name: + critical_error_message_box(UiStrings().EmptyField, + translate('BiblesPlugin.ReImportWizardForm', + 'You need to specify a version name for your Bible.')) + self.versionNameEdit[number].setFocus() + return False + elif self.manager.exists(version_name): + critical_error_message_box( + translate('BiblesPlugin.ReImportWizardForm', + 'Bible Exists'), + translate('BiblesPlugin.ReImportWizardForm', + 'This Bible already exists. Please import ' + 'a different Bible, delete the existing one or ' + 'uncheck.')) + self.versionNameEdit[number].setFocus() + return False + elif os.path.exists(os.path.join(self.newpath, filename)) and \ + version_name == oldname: + critical_error_message_box( + translate('BiblesPlugin.ReImportWizardForm', + 'Bible Exists'), + translate('BiblesPlugin.ReImportWizardForm', + 'This Bible already exists. Please import ' + 'a different Bible, delete the existing one or ' + 'uncheck.')) + self.versionNameEdit[number].setFocus() + return False + elif os.path.exists(os.path.join(self.newpath, + self.clean_filename(version_name))): + critical_error_message_box( + translate('BiblesPlugin.ReImportWizardForm', + 'Bible Exists'), + translate('BiblesPlugin.ReImportWizardForm', + 'This Bible already exists. Please import ' + 'a different Bible, delete the existing one or ' + 'uncheck.')) + self.versionNameEdit[number].setFocus() + return False + return True + if self.currentPage() == self.progressPage: + return True + + def setDefaults(self): + """ + Set default values for the wizard pages. + """ + log.debug(u'BibleReImport setDefaults') + settings = QtCore.QSettings() + settings.beginGroup(self.plugin.settingsSection) + self.stop_import_flag = False + self.success.clear() + self.newbibles.clear() + self.clearScrollArea() + self.files = SettingsManager.get_files(self.oldsettingsSection, + self.suffix) + self.addScrollArea() + self.customSignals() + self.retranslateUi() + self.maxBibles = len(self.files) + self.finishButton.setVisible(False) + self.cancelButton.setVisible(True) + for number, filename in enumerate(self.files): + self.checkBox[number].setCheckState(2) + if os.path.exists(os.path.join(self.newpath, filename)): + self.verticalWidget[number].setVisible(1) + self.formWidget[number].setVisible(1) + else: + self.verticalWidget[number].hide() + self.formWidget[number].hide() + self.progressLabelAfter.hide() + self.deleteCheckBox.hide() + self.deleteCheckBox.setCheckState(0) + self.deleteAllCheckBox.hide() + self.deleteAllCheckBox.setCheckState(0) + self.restart() + settings.endGroup() + + def preWizard(self): + """ + Prepare the UI for the import. + """ + OpenLPWizard.preWizard(self) + self.progressLabel.setText(translate( + 'BiblesPlugin.ImportWizardForm', + 'Starting Importing bible...')) + Receiver.send_message(u'openlp_process_events') + + def performWizard(self): + """ + Perform the actual import. + """ + include_webbible = False + proxy_server = None + if self.maxBibles == 0: + self.progressLabel.setText( + translate('BiblesPlugin.ReImportWizardForm', 'Sorry, but OpenLP' + ' could not find a Bible to reimport.')) + self.progressBar.hide() + return + self.maxBibles = 0 + for number, file in enumerate(self.files): + if self.checkBox[number].checkState() == 2: + self.maxBibles += 1 + number = 0 + for biblenumber, filename in enumerate(self.files): + bible_failed = False + self.success[biblenumber] = False + if not self.checkBox[biblenumber].checkState() == 2: + continue + self.progressBar.reset() + oldbible = OldBibleDB(self.parent, path=self.oldpath, file=filename) + name = oldbible.get_name() + if name is None: + delete_file(os.path.join(self.oldpath, filename)) + self.incrementProgressBar(unicode(translate( + 'BiblesPlugin.ReImportWizardForm', + 'Reimporting Bible %s of %s: "%s"\nFailed')) % + (number+1, self.maxBibles, name), + self.progressBar.maximum()-self.progressBar.value()) + number += 1 + continue + self.progressLabel.setText(unicode(translate( + 'BiblesPlugin.ReImportWizardForm', + 'Reimporting Bible %s of %s: "%s"\nImporting ...')) % + (number+1, self.maxBibles, name)) + if os.path.exists(os.path.join(self.newpath, filename)): + name = unicode(self.versionNameEdit[biblenumber].text()) + self.newbibles[number] = BibleDB(self.parent, path=self.oldpath, + name=name) + metadata = oldbible.get_metadata() + webbible = False + meta_data = {} + for meta in metadata: + meta_data[meta[u'key']] = meta[u'value'] + if not meta[u'key'] == u'Version': + self.newbibles[number].create_meta(meta[u'key'], + meta[u'value']) + else: + self.newbibles[number].create_meta(meta[u'key'], name) + if meta[u'key'] == u'download source': + webbible = True + include_webbible = True + if meta.has_key(u'proxy server'): + proxy_server = meta[u'proxy server'] + if webbible: + if meta_data[u'download source'].lower() == u'crosswalk': + handler = CWExtract(proxy_server) + elif meta_data[u'download source'].lower() == u'biblegateway': + handler = BGExtract(proxy_server) + elif meta_data[u'download source'].lower() == u'bibleserver': + handler = BSExtract(proxy_server) + books = handler.get_books_from_http(meta_data[u'download name']) + if not books: + log.exception(u'Importing books from %s - download '\ + u'name: "%s" failed' % ( + meta_data[u'download source'], + meta_data[u'download name'])) + delete_database(self.newpath, self.newbibles[number].\ + clean_filename(self.newbibles[number].get_name())) + del self.newbibles[number] + critical_error_message_box( + translate('BiblesPlugin.ReImportWizardForm', + 'Download Error'), + translate('BiblesPlugin.ReImportWizardForm', + 'To Re-Import your webbibles a Internet connection is ' + 'necessary. Please check your Internet connection, and ' + 'if this error continues to occur please consider ' + 'reporting a bug.')) + self.incrementProgressBar(unicode(translate( + 'BiblesPlugin.ReImportWizardForm', + 'Reimporting Bible %s of %s: "%s"\nFailed')) % + (number+1, self.maxBibles, name), + self.progressBar.maximum()-self.progressBar.value()) + number += 1 + continue + bible = BiblesResourcesDB.get_webbible( + meta_data[u'download name'], + meta_data[u'download source'].lower()) + if bible[u'language_id']: + language_id = bible[u'language_id'] + self.newbibles[number].create_meta(u'language_id', + language_id) + else: + language_id = self.newbibles[number].get_language() + if not language_id: + log.exception(u'Re-Importing from "%s" '\ + 'failed' % filename) + delete_database(self.newpath, self.newbibles[number].\ + clean_filename(self.newbibles[number].get_name())) + del self.newbibles[number] + self.incrementProgressBar(unicode(translate( + 'BiblesPlugin.ReImportWizardForm', + 'Reimporting Bible %s of %s: "%s"\nFailed')) % + (number+1, self.maxBibles, name), + self.progressBar.maximum()-self.progressBar.value()) + number += 1 + continue + self.progressBar.setMaximum(len(books)) + for book in books: + self.incrementProgressBar(unicode(translate( + 'BiblesPlugin.ReImportWizardForm', + 'Reimporting Bible %s of %s: "%s"\n' + 'Importing %s ...')) % + (number+1, self.maxBibles, name, book)) + book_ref_id = self.newbibles[number].\ + get_book_ref_id_by_name(book, language_id) + if not book_ref_id: + log.exception(u'Importing books from %s - download '\ + u'name: "%s" aborted by user' % ( + meta_data[u'download source'], + meta_data[u'download name'])) + delete_database(self.newpath, self.newbibles[number].\ + clean_filename(self.newbibles[number].get_name())) + del self.newbibles[number] + bible_failed = True + break + book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) + self.newbibles[number].create_book(book, book_ref_id, + book_details[u'testament_id']) + else: + language_id = self.newbibles[number].get_object(BibleMeta, + u'language_id') + if not language_id: + language_id = self.newbibles[number].get_language() + if not language_id: + log.exception(u'Importing books from "%s" '\ + 'failed' % name) + delete_database(self.newpath, self.newbibles[number].\ + clean_filename(self.newbibles[number].get_name())) + del self.newbibles[number] + self.incrementProgressBar(unicode(translate( + 'BiblesPlugin.ReImportWizardForm', + 'Reimporting Bible %s of %s: "%s"\nFailed')) % + (number+1, self.maxBibles, name), + self.progressBar.maximum()-self.progressBar.value()) + number += 1 + continue + books = oldbible.get_books() + self.progressBar.setMaximum(len(books)) + for book in books: + self.incrementProgressBar(unicode(translate( + 'BiblesPlugin.ReImportWizardForm', + 'Reimporting Bible %s of %s: "%s"\n' + 'Importing %s ...')) % + (number+1, self.maxBibles, name, book[u'name'])) + book_ref_id = self.newbibles[number].\ + get_book_ref_id_by_name(book[u'name'], language_id) + if not book_ref_id: + log.exception(u'Importing books from %s " '\ + 'failed - aborted by user' % name) + delete_database(self.newpath, self.newbibles[number].\ + clean_filename(self.newbibles[number].get_name())) + del self.newbibles[number] + bible_failed = True + break + book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) + db_book = self.newbibles[number].create_book(book[u'name'], + book_ref_id, book_details[u'testament_id']) + verses = oldbible.get_verses(book[u'id']) + for verse in verses: + self.newbibles[number].create_verse(db_book.id, + int(verse[u'chapter']), + int(verse[u'verse']), unicode(verse[u'text'])) + Receiver.send_message(u'openlp_process_events') + if not bible_failed: + self.incrementProgressBar(unicode(translate( + 'BiblesPlugin.ReImportWizardForm', + 'Reimporting Bible %s of %s: "%s"\n' + 'Done')) % + (number+1, self.maxBibles, name)) + self.success[biblenumber] = True + else: + self.incrementProgressBar(unicode(translate( + 'BiblesPlugin.ReImportWizardForm', + 'Reimporting Bible %s of %s: "%s"\nFailed')) % + (number+1, self.maxBibles, name), + self.progressBar.maximum()-self.progressBar.value()) + number += 1 + self.parent.reloadBibles() + successful_import = 0 + failed_import = 0 + for number, success in self.success.iteritems(): + if success == True: + successful_import += 1 + elif success == False and self.checkBox[number].checkState() == 2: + failed_import += 1 + if failed_import > 0: + failed_import_text = u' And ' + unicode(failed_import) + \ + u' reimport fails.' + else: + failed_import_text = u'' + if successful_import > 0: + if include_webbible: + self.progressLabel.setText(unicode( + translate('BiblesPlugin.ReImportWizardForm', 'Reimport %s ' + 'bibles successful.%s\nPlease note, that verses from ' + 'webbibles will be downloaded\non demand and thus an ' + 'internet connection is required.')) % + (successful_import, failed_import_text)) + else: + self.progressLabel.setText(unicode( + translate('BiblesPlugin.ReImportWizardForm', 'Reimport %s ' + 'bibles successful.%s')) % (successful_import, + failed_import_text)) + self.deleteCheckBox.setVisible(1) + bibles = u'' + for bible in self.newbibles.itervalues(): + name = bible.get_name() + bibles += u'\n"' + name + u'"' + self.deleteCheckBox.setToolTip(unicode(translate( + 'BiblesPlugin.ReImportWizardForm', + 'Sucessful imported bible(s):%s')) % bibles) + else: + self.progressLabel.setText( + translate('BiblesPlugin.ReImportWizardForm', 'Reimport ' + 'failed.')) + self.progressLabelAfter.setVisible(1) + self.deleteAllCheckBox.setVisible(1) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 7b22b9483..6dd7b3cbc 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -931,3 +931,125 @@ class AlternativeBookNamesDB(QtCore.QObject, Manager): u'alternative_book_names(book_reference_id, language_id, name) ' u'VALUES (?, ?, ?)', (book_reference_id, language_id, name), True) return alternative_book_name + + +class OldBibleDB(QtCore.QObject, Manager): + """ + This class conects to the old bible databases to reimport them to the new + database scheme. + """ + cursor = None + + def __init__(self, parent, **kwargs): + """ + The constructor loads up the database and creates and initialises the + tables if the database doesn't exist. + + **Required keyword arguments:** + + ``path`` + The path to the bible database file. + + ``name`` + The name of the database. This is also used as the file name for + SQLite databases. + """ + log.info(u'OldBibleDB loaded') + QtCore.QObject.__init__(self) + if u'path' not in kwargs: + raise KeyError(u'Missing keyword argument "path".') + if u'file' not in kwargs: + raise KeyError(u'Missing keyword argument "file".') + if u'path' in kwargs: + self.path = kwargs[u'path'] + if u'file' in kwargs: + self.file = kwargs[u'file'] + + def get_cursor(self): + """ + Return the cursor object. Instantiate one if it doesn't exist yet. + """ + if self.cursor is None: + filepath = os.path.join(self.path, self.file) + conn = sqlite3.connect(filepath) + self.cursor = conn.cursor() + return self.cursor + + def run_sql(self, query, parameters=()): + """ + Run an SQL query on the database, returning the results. + + ``query`` + The actual SQL query to run. + + ``parameters`` + Any variable parameters to add to the query. + """ + cursor = self.get_cursor() + cursor.execute(query, parameters) + return cursor.fetchall() + + def get_name(self): + """ + Returns the version name of the Bible. + """ + version_name = self.run_sql(u'SELECT value FROM ' + u'metadata WHERE key = "Version"') + if version_name: + self.name = version_name[0][0] + else: + self.name = None + return self.name + + def get_metadata(self): + """ + Returns the metadata of the Bible. + """ + metadata = self.run_sql(u'SELECT key, value FROM metadata ' + u'ORDER BY rowid') + if metadata: + metadata_list = [] + for meta in metadata: + metadata_list.append({ + u'key': unicode(meta[0]), + u'value': unicode(meta[1]) + }) + else: + metadata_list = None + return metadata_list + + def get_books(self): + """ + Returns the books of the Bible. + """ + books = self.run_sql(u'SELECT name, id FROM book ORDER BY id') + if books: + book_list = [] + for book in books: + book_list.append({ + u'name': unicode(book[0]), + u'id':int(book[1]) + }) + else: + book_list = None + return book_list + + def get_verses(self, book_id): + """ + Returns the verses of the Bible. + """ + verses = self.run_sql(u'SELECT book_id, chapter, verse, text FROM ' + u'verse WHERE book_id = ? ORDER BY id', (book_id, )) + if verses: + verse_list = [] + for verse in verses: + verse_list.append({ + u'book_id': int(verse[0]), + u'chapter': int(verse[1]), + u'verse': int(verse[2]), + u'text': unicode(verse[3]) + }) + else: + verse_list = None + return verse_list + diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index bd7a5ae85..1b7bf90ce 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -33,7 +33,7 @@ from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \ 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 -from openlp.plugins.bibles.forms import BibleImportForm +from openlp.plugins.bibles.forms import BibleImportForm, BibleReImportForm from openlp.plugins.bibles.lib import LayoutStyle, DisplayStyle, \ VerseReferenceList, get_reference_match @@ -310,6 +310,14 @@ class BibleMediaItem(MediaManagerItem): if self.import_wizard.exec_(): self.reloadBibles() + def onReImportClick(self): + if not hasattr(self, u'import_wizard'): + self.import_wizard = BibleReImportForm(self, self.parent.manager, + self.parent) + # If the import was not cancelled then reload. + if self.import_wizard.exec_(): + self.reloadBibles() + def loadBibles(self): log.debug(u'Loading Bibles') self.quickVersionComboBox.clear() @@ -849,4 +857,4 @@ class BibleMediaItem(MediaManagerItem): self.settings.layout_style) QtCore.QSettings().setValue( self.settingsSection + u'/verse layout style', - QtCore.QVariant(self.settings.layout_style)) \ No newline at end of file + QtCore.QVariant(self.settings.layout_style)) diff --git a/resources/images/bibles_reimport_alert.png b/resources/images/bibles_reimport_alert.png new file mode 100644 index 0000000000000000000000000000000000000000..331aa268725a4edff3fa6cab7dfaf5af24708c2c GIT binary patch literal 762 zcmVz8xpUII{8&=iH{wnUDxx6o*XQpr9@S zFA7f~5wyArj)7engn2gzstbkiqQW4^o2U%CF~JzoO$Y@oEjOFGxwX#D=9!*z-Y(o0 zQwbk<`S`x?dETGrWkiIXV2m*U4FEj(r*8lvv=^C(b_IaeKp-$7%W^`Nt(9kFmQEb*nE7Psy^?IqR ztBayjPKwQXiHJy&qz3@_5)S~tZnyVDm%lIP5+5is35raDTrL;6T(06>jn7at{N)#b z6NTa?0O;-Qt@Qi-eRcKC_36+(fN|S~@H}|_-^lXUJE&`DvkeRkTqt;90$|BxGRLp` z`_FAAgHTsr1Ed20I-3=AHY>#hx%don>+f;v=GF56+8JZu1VM0DR8;s+oj!Xq`ROt= zB~%pnI#Td;q)OJLXMdu$eUO)BITH*9=a|Ri@x7aV`>56uZi>(Ll#p-S-98`QF5Pu? z_YC6M`lSYE%SBUFRn<|4v#}`^ewD>Op@g67c8A+32*R;4RaJ9_VQ3cj;Fel`NG<2K z4it!wpY0ZJYUYhH+a;BVtcGD|0MIfrGV&yqO2ufONT<`uv9Yli0FE#K41f(l8-N-B s|?9jsO4v literal 0 HcmV?d00001 From 81fe6f13e31c198f2d98190eb13c2e966d6cfaa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Wed, 20 Apr 2011 09:25:16 +0200 Subject: [PATCH 026/190] add attention picture --- openlp/plugins/bibles/forms/biblereimportform.py | 3 +-- resources/images/openlp-2.qrc | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/bibles/forms/biblereimportform.py b/openlp/plugins/bibles/forms/biblereimportform.py index 5a311f017..48af1c558 100644 --- a/openlp/plugins/bibles/forms/biblereimportform.py +++ b/openlp/plugins/bibles/forms/biblereimportform.py @@ -233,8 +233,7 @@ class BibleReImportForm(OpenLPWizard): versionInfoPixmapName = u'versionInfoPixmap['+unicode(number)+u']' self.versionInfoPixmap[number].setObjectName(versionInfoPixmapName) self.versionInfoPixmap[number].setPixmap(QtGui.QPixmap( - u':/plugins/plugin_alerts.png')) - #u':/bibles/bibles_reimport_alert.png')) + u':/bibles/bibles_reimport_alert.png')) self.versionInfoPixmap[number].setAlignment(QtCore.Qt.AlignRight) self.horizontalLayout[number].addWidget( self.versionInfoPixmap[number]) diff --git a/resources/images/openlp-2.qrc b/resources/images/openlp-2.qrc index 0d3191eff..f3bfd100e 100644 --- a/resources/images/openlp-2.qrc +++ b/resources/images/openlp-2.qrc @@ -24,6 +24,7 @@ bibles_search_text.png bibles_search_reference.png + bibles_reimport_alert.png plugin_alerts.png From b0b127022cc1e7c48b0d4558d505341615c606b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Wed, 20 Apr 2011 11:00:29 +0200 Subject: [PATCH 027/190] bug fixes add some additional Apocrypha books --- .../plugins/bibles/forms/bibleimportform.py | 24 ++++++++++++++++++ .../plugins/bibles/forms/biblereimportform.py | 11 ++++---- openlp/plugins/bibles/forms/booknameform.py | 3 +-- openlp/plugins/bibles/lib/mediaitem.py | 6 ++--- .../bibles/resources/bibles_resources.sqlite | Bin 101376 -> 101376 bytes 5 files changed, 34 insertions(+), 10 deletions(-) diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index 57a38538f..a85230611 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -30,6 +30,7 @@ import csv import logging import os import os.path +import re from PyQt4 import QtCore, QtGui @@ -471,6 +472,7 @@ class BibleImportForm(OpenLPWizard): license_version = unicode(self.field(u'license_version').toString()) license_copyright = \ unicode(self.field(u'license_copyright').toString()) + path = AppLocation.get_section_data_path(u'bibles/bibles') if not license_version: critical_error_message_box(UiStrings().EmptyField, translate('BiblesPlugin.ImportWizardForm', @@ -492,10 +494,32 @@ class BibleImportForm(OpenLPWizard): 'a different Bible or first delete the existing one.')) self.versionNameEdit.setFocus() return False + elif os.path.exists(os.path.join(path, self.clean_filename( + license_version))): + critical_error_message_box( + translate('BiblesPlugin.ImportWizardForm', 'Bible Exists'), + translate('BiblesPlugin.ImportWizardForm', + 'This Bible already exists. Please import ' + 'a different Bible or first delete the existing one.')) + self.versionNameEdit.setFocus() + return False return True if self.currentPage() == self.progressPage: return True + def clean_filename(self, old_filename): + """ + Clean up the version name of the Bible and convert it into a valid + file name. + + ``old_filename`` + The "dirty" file name or version name. + """ + 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'_') + return old_filename + u'.sqlite' + def onWebSourceComboBoxIndexChanged(self, index): """ Setup the list of Bibles when you select a different source on the web diff --git a/openlp/plugins/bibles/forms/biblereimportform.py b/openlp/plugins/bibles/forms/biblereimportform.py index 48af1c558..5895f710a 100644 --- a/openlp/plugins/bibles/forms/biblereimportform.py +++ b/openlp/plugins/bibles/forms/biblereimportform.py @@ -310,7 +310,7 @@ class BibleReImportForm(OpenLPWizard): the wizard is progressing with its task. """ OpenLPWizard.addProgressPage(self) - self.progressLayout.setContentsMargins(48, 30, 48, 30) + self.progressLayout.setContentsMargins(48, 48, 48, 30) self.progressLabelAfter = QtGui.QLabel(self.progressPage) self.progressLabelAfter.setObjectName(u'progressLabelAfter') self.progressLayout.addWidget(self.progressLabelAfter) @@ -663,22 +663,23 @@ class BibleReImportForm(OpenLPWizard): elif success == False and self.checkBox[number].checkState() == 2: failed_import += 1 if failed_import > 0: - failed_import_text = u' And ' + unicode(failed_import) + \ - u' reimport fails.' + failed_import_text = unicode(translate( + 'BiblesPlugin.ReImportWizardForm', + ' - %s reimport fail')) % failed_import else: failed_import_text = u'' if successful_import > 0: if include_webbible: self.progressLabel.setText(unicode( translate('BiblesPlugin.ReImportWizardForm', 'Reimport %s ' - 'bibles successful.%s\nPlease note, that verses from ' + 'bible(s) successful%s.\nPlease note, that verses from ' 'webbibles will be downloaded\non demand and thus an ' 'internet connection is required.')) % (successful_import, failed_import_text)) else: self.progressLabel.setText(unicode( translate('BiblesPlugin.ReImportWizardForm', 'Reimport %s ' - 'bibles successful.%s')) % (successful_import, + 'bible(s) successful.%s')) % (successful_import, failed_import_text)) self.deleteCheckBox.setVisible(1) bibles = u'' diff --git a/openlp/plugins/bibles/forms/booknameform.py b/openlp/plugins/bibles/forms/booknameform.py index 58603226c..b8bdbb493 100644 --- a/openlp/plugins/bibles/forms/booknameform.py +++ b/openlp/plugins/bibles/forms/booknameform.py @@ -56,8 +56,7 @@ class BookNameForm(QDialog, Ui_BookNameDialog): def exec_(self, name): items = [] self.requestComboBox.addItem(u'') - self.requestLabel.setText( - translate('BiblesPlugin.BookNameForm', name)) + self.requestLabel.setText(name) items = BiblesResourcesDB.get_books() for item in items: self.requestComboBox.addItem(item[u'name']) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 1b7bf90ce..ec65a37d0 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -311,11 +311,11 @@ class BibleMediaItem(MediaManagerItem): self.reloadBibles() def onReImportClick(self): - if not hasattr(self, u'import_wizard'): - self.import_wizard = BibleReImportForm(self, self.parent.manager, + if not hasattr(self, u'reimport_wizard'): + self.reimport_wizard = BibleReImportForm(self, self.parent.manager, self.parent) # If the import was not cancelled then reload. - if self.import_wizard.exec_(): + if self.reimport_wizard.exec_(): self.reloadBibles() def loadBibles(self): diff --git a/openlp/plugins/bibles/resources/bibles_resources.sqlite b/openlp/plugins/bibles/resources/bibles_resources.sqlite index 23c89b5df80e39da39e81eb94cc6a0e9b8dd1474..4645fcf9ca76a4d0aecb2a5d227198e2f2a696bc 100644 GIT binary patch delta 1861 zcma)6du)?c6hDt{LtMugg>Bthx~&`C?7FslF(6|_!O^iN4q1YM!G=S|Fyo;i12@ru z2F==Q$YO}X0>MXQx)LL(iTEJkAAo=hiG&d}5J01dAx2R=x9uhp{;g-@W+dXUZL+Xg#9cqf%g4n9g#byL^j4C$ndN6xJ zg;5-)!y@3ze3akfS9v`@#%?yzFLauQsGqh_3;D$riKBxU#HVl`CcyRqoz^?L1UxeS-LNd4g{Qo|m*I^c1r3k8|#6B)x!r&?LyRQ`f=n%c6X)EM;@q%qf{d&k%ZzP}^XGBs22H>c@PuI+1Txy9#XT z^?dUZEt)*&0?MKa%%P=l4*k@Lr*J22qrEtpzJO1$l!oy=d=3pT0Ndy~{SG&w3vY4^ zPhk(ma}6)$r+F*)@qRwcC$XI`^3V80pvUIZLYX6%X@>?gmthgu!lzy#H)w|C0|EO~0Hcd$243TWJ+)x{usd{qH##q^h9(B=~ ziZ0ceH`k!oYQ$;Ag3#GKCqAhy%@=laRN~1x2-DyUP$ey-WweI6@HV}Ir|Ate(#Im3 z5&D(xa1v*TkmmAYdVuobGM4aa?#6Chir;g92XGG$!WpvS5FX*vd^OOsIXQ`QaiJVo zJL`~tGt}pBJ*sa8O|yKkN!FdwL)1CA5f{iUbi#EB+C)Mt<#}&G)@q^{uw#w#6`PE6 z#dt(8olq@1He8^V7kk3-@{8*haiH;s)$!sS^>^`XwJBJndP~kv)Q78;Bs7OPq7=2J zbRK8&e0AJD6{jehB{_7pG`VhuE~!-5s4MrFl+<=^<4SgL0$rmM;gaf-sFhGWUc!&C z7aPzF7vUY)0UHB7vu2nYM2)Gb$Ppbxo|s-Aku?7|JdqU^)d^a!P7EeD-V-K?Ok@YA z*9xaG8~Oi4Ey9V!5=&~-*MlYGtyb;sLJ8Myw`XCM7%R&_zQ00?##Ec+@JE^V7i{4e zGftgyUr^@@?I|ff`6SX7bUs=or{P)cF3c>q&K58`1IZgscBF53$2tdE%cHpGF5EMU ztBS&`vRT5=-9t0#!V=N~@F`jEs-pg zz{U6%UgJ4jizA`w+xKAAT}7-liYbC3zBhMJ@$ucb}&A_eJ9Iv_Q7jJ_q8vh}4-no6^!xoqZMsj*%BHXkHY rsIu=U&d{fd$faJps2fv8oj%ds39lW+b^Gjqnov#fLkt<-zx~}m@EVm% delta 2917 zcmahLeQ?v|`S~cJEe%jxN|GjNntqU^N!kRP43v)|RVbz9`0(hahqM$6rLEUgMK=e< z$ta9T`=X-9>ELw3xnqtnZ<}r>I61uC&FNUTKalmD`w+(My4#H%y1D21B^h|KExGsi z{+_S*_k2I^&O^4HhinJR?fU_sOP2K;4J2{@_wIR~*D+5jCd?o4-+7W3vX5=_0iC9! zw2RhLluGe$IF7I53-~B@U<8X{65fIrVLzmxqiVJdB9+DHhvfopge|gqoNlu&aLykp zvjH}F5ZAx}^uxX2lYO&1b8sr%9^8Yt(flSFnB`wDp!#pF@wIFbJeW9x|` z+sqx81Oe0e60e~P@I`j;LO6rR@z?wm-Aym?dHfT-!oRjckP`e6uq#KwNH zwqB_*i~3n&)Ql!)?PwB@4+(3yh&|XM=J$wXodT_JKlDO3gcMjQCk_f2yorMrFl2qE z8yP&<=raG4OKg(EM$`OmP zQ`matubNa%=Spl7gdW)keg#*GK$nH8R8aNrw?LmN-3}_h2`Ut55}5%p)T@9pcEdLC z%vG^v7NJ{s-KybIc~MQ2p=psc>E+76YzF3VuHmz(~3 zZb6xe&GnexWUaf9ot93WaFd?VEP84b_4s1bkep>#rB#hV(QStLYTUyTT60gxS!!1e zH3L?N7MjB;C^8%3vv(+Njj;EL_cn?tg{rb9!}Z7lJ$SWn=;!kF+bsfYl4H8%ps5*z zx~<1L#pdF9;-79yK($kU56CATf+?y;n-KcM>q1&7LV218tpYtDx(&(d5_$?aW8-#_ z++-mDrYY)Et|KWX%v632Po|6W{=iGC)K8gcx$S%i9B>L?5@$%ww__hZfoXgPFOi+< zshtMsX?la+qknQa$GDaI;S~RrCq{=yOfcARs~e^EgHFUdM8AGnDbX(l87S^1q1H%e zXohQQ=H3J5XkC>jFDrkY%_5(Hs?A+>L9?jNV|;a9mm^0F`VLQ;M}@B=7z&H~!~eTC{-;ak8+*`gE(d%&3TYkGz}rNh z!vbufLHZ%~(_{F1e2Jcci#U(Y!Q1!+`XipkgBYNXxqvoOK9}(vUP6_;f$!sCKFCM- z2mCXhz+s-eQ6s#*#reSxap`^o+UgRSPWahg_x~H=6sr-MA2*ceY0;YBMqF5L7RM`0 zUaZ4xi=Fd`L!{?xryT&z)+OS(K}lcjad$|?HQNBRJj|lKWwRuq^t_C+_r(`w+`uio8OHfFzA!p`*o;TQ`L#|7)dDA) zBMIl!R;!$+m=^**GZJu{fq<*c;mHO(*VA%4JG@y+uJz^i0*7BHm6H3JcB(a-d1G^| z-fO;I?<(Ula9ziuZA4his`_fvAgi?AV)mtYB&{MH5Z4Ak2FmjWlIDDYwruEm4<=M%{&>sIbTYr;i}|(;T4zBGHE)UVy+I+6l5T~;})SxXsE@C zwYDXFOTiR#Y@g5U*;i?{$i7@wa9@R)zRzVY?yX*1$emCNR{;M)3uv|6H@4D)v>V^2 zr}z{dqc`b1eW>LoW227eb349*{~|wJ;Q{^%Hp%VcEq;Q(iJfSu1XH++-{lX@aJY0@ z9JnfJgP5ln&2wQ_eH`+t5*b*FVXZVxovS)N9)egFj)QG(qYakV6q}c074Ep8b(p2f zBQ~gU7UOD>=o72tj$#sx0cM+G>^Wvj^7aZzgz33Up3f@h%-qv4)dRPs z-%UnWO)V6zTFN(556mg#Mk<$1wS?Q#3lAK@(F65<)vZY;*e1{(t8y!}FJw^GB_bUf zdxX;8`r6&Rw1yS|wNZyu{D55R9-}dOj*io-l6=3S3A#l8V3xV);Q-H-EADc>le=h< z^utHwdN|65`9(gNZu`y|`Ety%ewAd7mP Date: Thu, 21 Apr 2011 16:32:04 +0200 Subject: [PATCH 028/190] little bug fix add check if openlp/bibles/resources directory exists and mkdir if not --- openlp/plugins/bibles/forms/biblereimportform.py | 1 + openlp/plugins/bibles/lib/db.py | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/openlp/plugins/bibles/forms/biblereimportform.py b/openlp/plugins/bibles/forms/biblereimportform.py index 5895f710a..3ca4966ba 100644 --- a/openlp/plugins/bibles/forms/biblereimportform.py +++ b/openlp/plugins/bibles/forms/biblereimportform.py @@ -445,6 +445,7 @@ class BibleReImportForm(OpenLPWizard): else: self.verticalWidget[number].hide() self.formWidget[number].hide() + self.progressBar.show() self.progressLabelAfter.hide() self.deleteCheckBox.hide() self.deleteCheckBox.setCheckState(0) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 6dd7b3cbc..c2b2fa1b1 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -849,6 +849,12 @@ class AlternativeBookNamesDB(QtCore.QObject, Manager): database doesn't exist. """ if AlternativeBookNamesDB.cursor is None: + if not os.path.exists(os.path.join( + AppLocation.get_directory(AppLocation.DataDir), u'bibles', + u'resources')): + os.mkdir(os.path.join( + AppLocation.get_directory(AppLocation.DataDir), u'bibles', + u'resources')) filepath = os.path.join( AppLocation.get_directory(AppLocation.DataDir), u'bibles', u'resources', u'alternative_book_names.sqlite') From d7dc4def5345639ed54ce6a75b9561243785eee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Tue, 26 Apr 2011 20:18:13 +0200 Subject: [PATCH 029/190] change name from reimport to upgrade fix speed problem while changing the advanced bible change some "for" loops --- openlp/plugins/bibles/bibleplugin.py | 38 ++-- openlp/plugins/bibles/forms/__init__.py | 5 +- ...blereimportform.py => bibleupgradeform.py} | 169 +++++++++--------- openlp/plugins/bibles/lib/db.py | 154 ++++++++-------- openlp/plugins/bibles/lib/http.py | 15 +- openlp/plugins/bibles/lib/manager.py | 24 +-- openlp/plugins/bibles/lib/mediaitem.py | 10 +- ...ort_alert.png => bibles_upgrade_alert.png} | Bin resources/images/openlp-2.qrc | 2 +- 9 files changed, 207 insertions(+), 210 deletions(-) rename openlp/plugins/bibles/forms/{biblereimportform.py => bibleupgradeform.py} (84%) rename resources/images/{bibles_reimport_alert.png => bibles_upgrade_alert.png} (100%) diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index 13b5924d7..a8a8fdf79 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -32,6 +32,7 @@ from openlp.core.lib import Plugin, StringContent, build_icon, translate from openlp.core.lib.ui import base_action, UiStrings from openlp.core.utils.actions import ActionList from openlp.plugins.bibles.lib import BibleManager, BiblesTab, BibleMediaItem +from openlp.plugins.bibles.forms import BibleUpgradeForm log = logging.getLogger(__name__) @@ -58,7 +59,7 @@ class BiblePlugin(Plugin): #action_list.add_action(self.exportBibleItem, UiStrings().Export) # Set to invisible until we can export bibles self.exportBibleItem.setVisible(False) - self.toolsReimportItem.setVisible(True) + self.toolsUpgradeItem.setVisible(True) def finalise(self): """ @@ -90,7 +91,7 @@ class BiblePlugin(Plugin): def addToolsMenuItem(self, tools_menu): """ - Give the alerts plugin the opportunity to add items to the + Give the bible plugin the opportunity to add items to the **Tools** menu. ``tools_menu`` @@ -98,25 +99,28 @@ class BiblePlugin(Plugin): use it as their parent. """ log.info(u'add tools menu') - self.toolsReimportItem = QtGui.QAction(tools_menu) - self.toolsReimportItem.setObjectName(u'toolsReimportItem') - self.toolsReimportItem.setText( - translate('BiblePlugin', 'Re-&import older bible databases')) - self.toolsReimportItem.setStatusTip( - translate('BiblePlugin', 'Re-import the bible databases to addapt ' + self.toolsUpgradeItem = QtGui.QAction(tools_menu) + self.toolsUpgradeItem.setObjectName(u'toolsUpgradeItem') + self.toolsUpgradeItem.setText( + translate('BiblePlugin', '&Upgrade older bible databases')) + self.toolsUpgradeItem.setStatusTip( + translate('BiblePlugin', 'Upgrade the bible databases to addapt ' 'the database scheme.')) - tools_menu.addAction(self.toolsReimportItem) - QtCore.QObject.connect(self.toolsReimportItem, - QtCore.SIGNAL(u'triggered()'), self.onToolsReimportItemTriggered) - self.toolsReimportItem.setVisible(False) + tools_menu.addAction(self.toolsUpgradeItem) + QtCore.QObject.connect(self.toolsUpgradeItem, + QtCore.SIGNAL(u'triggered()'), self.onToolsUpgradeItemTriggered) + self.toolsUpgradeItem.setVisible(False) - def onToolsReimportItemTriggered(self): + def onToolsUpgradeItemTriggered(self): """ - Re-import older bible databases. + Upgrade older bible databases. """ - #self.manager.import_old_bible_databases() - if self.mediaItem: - self.mediaItem.onReImportClick() + if not hasattr(self, u'upgrade_wizard'): + self.upgrade_wizard = BibleUpgradeForm(self.formparent, + self.manager, self) + # If the import was not cancelled then reload. + if self.upgrade_wizard.exec_(): + self.mediaItem.reloadBibles() def onBibleImportClick(self): if self.mediaItem: diff --git a/openlp/plugins/bibles/forms/__init__.py b/openlp/plugins/bibles/forms/__init__.py index bd7ba3828..2838a5101 100644 --- a/openlp/plugins/bibles/forms/__init__.py +++ b/openlp/plugins/bibles/forms/__init__.py @@ -53,6 +53,7 @@ from the .ui files later if necessary. from booknameform import BookNameForm from languageform import LanguageForm from bibleimportform import BibleImportForm -from biblereimportform import BibleReImportForm +from bibleupgradeform import BibleUpgradeForm -__all__ = ['BibleImportForm'] +__all__ = [u'BookNameForm', u'LanguageForm', u'BibleImportForm', + u'BibleUpgradeForm'] diff --git a/openlp/plugins/bibles/forms/biblereimportform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py similarity index 84% rename from openlp/plugins/bibles/forms/biblereimportform.py rename to openlp/plugins/bibles/forms/bibleupgradeform.py index 3ca4966ba..b64231195 100644 --- a/openlp/plugins/bibles/forms/biblereimportform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -45,12 +45,12 @@ from openlp.plugins.bibles.lib.http import BSExtract, BGExtract, CWExtract log = logging.getLogger(__name__) -class BibleReImportForm(OpenLPWizard): +class BibleUpgradeForm(OpenLPWizard): """ - This is the Bible ReImport Wizard, which allows easy importing of Bibles + This is the Bible Upgrade Wizard, which allows easy importing of Bibles into OpenLP from older OpenLP2 database versions. """ - log.info(u'BibleReImportForm loaded') + log.info(u'BibleUpgradeForm loaded') def __init__(self, parent, manager, bibleplugin): """ @@ -66,7 +66,7 @@ class BibleReImportForm(OpenLPWizard): The Bible plugin. """ self.manager = manager - self.parent = parent + self.mediaItem = bibleplugin.mediaItem self.suffix = u'.sqlite' self.settingsSection = u'bibles/bibles' self.oldsettingsSection = u'bibles' @@ -80,7 +80,7 @@ class BibleReImportForm(OpenLPWizard): self.newbibles = {} self.maxBibles = len(self.files) self.stop_import_flag = False - OpenLPWizard.__init__(self, parent, bibleplugin, u'bibleImportWizard', + OpenLPWizard.__init__(self, parent, bibleplugin, u'bibleUpgradeWizard', u':/wizards/wizard_importbible.bmp') def setupUi(self, image): @@ -113,7 +113,7 @@ class BibleReImportForm(OpenLPWizard): def onCheckBoxIndexChanged(self, index): ''' - Some cleanup while finishing + Show/ Hide warnings if CheckBox state has changed ''' for number, filename in enumerate(self.files): if not self.checkBox[number].checkState() == 2: @@ -121,8 +121,8 @@ class BibleReImportForm(OpenLPWizard): self.formWidget[number].hide() else: if os.path.exists(os.path.join(self.newpath, filename)): - self.verticalWidget[number].setVisible(1) - self.formWidget[number].setVisible(1) + self.verticalWidget[number].show() + self.formWidget[number].show() def reject(self): """ @@ -161,7 +161,7 @@ class BibleReImportForm(OpenLPWizard): def customInit(self): """ - Perform any custom initialisation for bible importing. + Perform any custom initialisation for bible upgrading. """ self.manager.set_process_dialog(self) self.restart() @@ -213,7 +213,7 @@ class BibleReImportForm(OpenLPWizard): self.formWidget = {} self.formLayoutAttention = {} for number, filename in enumerate(self.files): - bible = OldBibleDB(self.parent, path=self.oldpath, file=filename) + bible = OldBibleDB(self.mediaItem, path=self.oldpath, file=filename) self.checkBox[number] = QtGui.QCheckBox(self.scrollAreaContents) checkBoxName = u'checkBox['+unicode(number)+u']' self.checkBox[number].setObjectName(checkBoxName) @@ -233,7 +233,7 @@ class BibleReImportForm(OpenLPWizard): versionInfoPixmapName = u'versionInfoPixmap['+unicode(number)+u']' self.versionInfoPixmap[number].setObjectName(versionInfoPixmapName) self.versionInfoPixmap[number].setPixmap(QtGui.QPixmap( - u':/bibles/bibles_reimport_alert.png')) + u':/bibles/bibles_upgrade_alert.png')) self.versionInfoPixmap[number].setAlignment(QtCore.Qt.AlignRight) self.horizontalLayout[number].addWidget( self.versionInfoPixmap[number]) @@ -325,41 +325,41 @@ class BibleReImportForm(OpenLPWizard): """ Allow for localisation of the bible import wizard. """ - self.setWindowTitle(translate('BiblesPlugin.ReImportWizardForm', - 'Bible ReImport Wizard')) + self.setWindowTitle(translate('BiblesPlugin.UpgradeWizardForm', + 'Bible Upgrade Wizard')) self.titleLabel.setText(WizardStrings.HeaderStyle % - translate('OpenLP.Ui', 'Welcome to the Bible ReImport Wizard')) + translate('OpenLP.Ui', 'Welcome to the Bible Upgrade Wizard')) self.informationLabel.setText( - translate('BiblesPlugin.ReImportWizardForm', - 'This wizard will help you to reimport your existing Bibles from a ' + translate('BiblesPlugin.UpgradeWizardForm', + 'This wizard will help you to upgrade your existing Bibles from a ' 'prior version of OpenLP 2. Click the next button below to start ' - 'the process by selecting the bibles to reimport.')) + 'the process by selecting the bibles to upgrade.')) self.selectPage.setTitle( - translate('BiblesPlugin.ReImportWizardForm', + translate('BiblesPlugin.UpgradeWizardForm', 'Please choose')) self.selectPage.setSubTitle( - translate('BiblesPlugin.ReImportWizardForm', - 'Please choose the bibles which should be reimported')) + translate('BiblesPlugin.UpgradeWizardForm', + 'Please choose the bibles which should be upgraded')) for number, bible in enumerate(self.files): self.versionNameLabel[number].setText( - translate('BiblesPlugin.ReImportWizardForm', 'Version name:')) + translate('BiblesPlugin.UpgradeWizardForm', 'Version name:')) self.versionInfoLabel[number].setText( - translate('BiblesPlugin.ReImportWizardForm', 'This ' + translate('BiblesPlugin.UpgradeWizardForm', 'This ' 'bible still exists. Please change the name or uncheck it.')) self.progressPage.setTitle(WizardStrings.Importing) self.progressPage.setSubTitle( - translate('BiblesPlugin.ReImportWizardForm', - 'Please wait while your Bibles are imported.')) + translate('BiblesPlugin.UpgradeWizardForm', + 'Please wait while your Bibles are upgraded.')) self.progressLabel.setText(WizardStrings.Ready) self.progressBar.setFormat(u'%p%') self.deleteCheckBox.setText( - translate('BiblesPlugin.ReImportWizardForm', 'Delete old bible ' - 'database(s) from bibles which was imported\nsucessful right now')) + translate('BiblesPlugin.UpgradeWizardForm', 'Delete old bible ' + 'database(s) from bibles which was upgraded\nsucessful right now')) self.deleteAllCheckBox.setText( - translate('BiblesPlugin.ReImportWizardForm', 'Delete all old bible ' - 'database(s) (including not imported bibles)')) + translate('BiblesPlugin.UpgradeWizardForm', 'Delete all old bible ' + 'database(s) (including not upgraded bibles)')) self.progressLabelAfter.setText( - translate('BiblesPlugin.ReImportWizardForm', '\nIf OpenLP should ' + translate('BiblesPlugin.UpgradeWizardForm', '\nIf OpenLP should ' 'delete the old bible databases please choose:')) def validateCurrentPage(self): @@ -373,21 +373,21 @@ class BibleReImportForm(OpenLPWizard): if not self.checkBox[number].checkState() == 2: continue version_name = unicode(self.versionNameEdit[number].text()) - oldbible = OldBibleDB(self.parent, path=self.oldpath, + oldbible = OldBibleDB(self.mediaItem, path=self.oldpath, file=filename) oldname = oldbible.get_name() if not version_name: critical_error_message_box(UiStrings().EmptyField, - translate('BiblesPlugin.ReImportWizardForm', + translate('BiblesPlugin.UpgradeWizardForm', 'You need to specify a version name for your Bible.')) self.versionNameEdit[number].setFocus() return False elif self.manager.exists(version_name): critical_error_message_box( - translate('BiblesPlugin.ReImportWizardForm', + translate('BiblesPlugin.UpgradeWizardForm', 'Bible Exists'), - translate('BiblesPlugin.ReImportWizardForm', - 'This Bible already exists. Please import ' + translate('BiblesPlugin.UpgradeWizardForm', + 'This Bible already exists. Please upgrade ' 'a different Bible, delete the existing one or ' 'uncheck.')) self.versionNameEdit[number].setFocus() @@ -395,10 +395,10 @@ class BibleReImportForm(OpenLPWizard): elif os.path.exists(os.path.join(self.newpath, filename)) and \ version_name == oldname: critical_error_message_box( - translate('BiblesPlugin.ReImportWizardForm', + translate('BiblesPlugin.UpgradeWizardForm', 'Bible Exists'), - translate('BiblesPlugin.ReImportWizardForm', - 'This Bible already exists. Please import ' + translate('BiblesPlugin.UpgradeWizardForm', + 'This Bible already exists. Please upgrade ' 'a different Bible, delete the existing one or ' 'uncheck.')) self.versionNameEdit[number].setFocus() @@ -406,10 +406,10 @@ class BibleReImportForm(OpenLPWizard): elif os.path.exists(os.path.join(self.newpath, self.clean_filename(version_name))): critical_error_message_box( - translate('BiblesPlugin.ReImportWizardForm', + translate('BiblesPlugin.UpgradeWizardForm', 'Bible Exists'), - translate('BiblesPlugin.ReImportWizardForm', - 'This Bible already exists. Please import ' + translate('BiblesPlugin.UpgradeWizardForm', + 'This Bible already exists. Please upgrade ' 'a different Bible, delete the existing one or ' 'uncheck.')) self.versionNameEdit[number].setFocus() @@ -422,7 +422,7 @@ class BibleReImportForm(OpenLPWizard): """ Set default values for the wizard pages. """ - log.debug(u'BibleReImport setDefaults') + log.debug(u'BibleUpgrade setDefaults') settings = QtCore.QSettings() settings.beginGroup(self.plugin.settingsSection) self.stop_import_flag = False @@ -440,8 +440,8 @@ class BibleReImportForm(OpenLPWizard): for number, filename in enumerate(self.files): self.checkBox[number].setCheckState(2) if os.path.exists(os.path.join(self.newpath, filename)): - self.verticalWidget[number].setVisible(1) - self.formWidget[number].setVisible(1) + self.verticalWidget[number].show() + self.formWidget[number].show() else: self.verticalWidget[number].hide() self.formWidget[number].hide() @@ -456,24 +456,24 @@ class BibleReImportForm(OpenLPWizard): def preWizard(self): """ - Prepare the UI for the import. + Prepare the UI for the upgrade. """ OpenLPWizard.preWizard(self) self.progressLabel.setText(translate( - 'BiblesPlugin.ImportWizardForm', - 'Starting Importing bible...')) + 'BiblesPlugin.UpgradeWizardForm', + 'Starting upgrading bible(s)...')) Receiver.send_message(u'openlp_process_events') def performWizard(self): """ - Perform the actual import. + Perform the actual upgrade. """ include_webbible = False proxy_server = None if self.maxBibles == 0: self.progressLabel.setText( - translate('BiblesPlugin.ReImportWizardForm', 'Sorry, but OpenLP' - ' could not find a Bible to reimport.')) + translate('BiblesPlugin.UpgradeWizardForm', 'Sorry, but OpenLP' + ' could not find a Bible to upgrade.')) self.progressBar.hide() return self.maxBibles = 0 @@ -487,24 +487,25 @@ class BibleReImportForm(OpenLPWizard): if not self.checkBox[biblenumber].checkState() == 2: continue self.progressBar.reset() - oldbible = OldBibleDB(self.parent, path=self.oldpath, file=filename) + oldbible = OldBibleDB(self.mediaItem, path=self.oldpath, + file=filename) name = oldbible.get_name() if name is None: delete_file(os.path.join(self.oldpath, filename)) self.incrementProgressBar(unicode(translate( - 'BiblesPlugin.ReImportWizardForm', - 'Reimporting Bible %s of %s: "%s"\nFailed')) % + 'BiblesPlugin.UpgradeWizardForm', + 'Upgrading Bible %s of %s: "%s"\nFailed')) % (number+1, self.maxBibles, name), self.progressBar.maximum()-self.progressBar.value()) number += 1 continue self.progressLabel.setText(unicode(translate( - 'BiblesPlugin.ReImportWizardForm', - 'Reimporting Bible %s of %s: "%s"\nImporting ...')) % + 'BiblesPlugin.UpgradeWizardForm', + 'Upgrading Bible %s of %s: "%s"\nImporting ...')) % (number+1, self.maxBibles, name)) if os.path.exists(os.path.join(self.newpath, filename)): name = unicode(self.versionNameEdit[biblenumber].text()) - self.newbibles[number] = BibleDB(self.parent, path=self.oldpath, + self.newbibles[number] = BibleDB(self.mediaItem, path=self.oldpath, name=name) metadata = oldbible.get_metadata() webbible = False @@ -538,16 +539,16 @@ class BibleReImportForm(OpenLPWizard): clean_filename(self.newbibles[number].get_name())) del self.newbibles[number] critical_error_message_box( - translate('BiblesPlugin.ReImportWizardForm', + translate('BiblesPlugin.UpgradeWizardForm', 'Download Error'), - translate('BiblesPlugin.ReImportWizardForm', - 'To Re-Import your webbibles a Internet connection is ' + translate('BiblesPlugin.UpgradeWizardForm', + 'To upgrade your webbibles a Internet connection is ' 'necessary. Please check your Internet connection, and ' 'if this error continues to occur please consider ' 'reporting a bug.')) self.incrementProgressBar(unicode(translate( - 'BiblesPlugin.ReImportWizardForm', - 'Reimporting Bible %s of %s: "%s"\nFailed')) % + 'BiblesPlugin.UpgradeWizardForm', + 'Upgrading Bible %s of %s: "%s"\nFailed')) % (number+1, self.maxBibles, name), self.progressBar.maximum()-self.progressBar.value()) number += 1 @@ -562,14 +563,14 @@ class BibleReImportForm(OpenLPWizard): else: language_id = self.newbibles[number].get_language() if not language_id: - log.exception(u'Re-Importing from "%s" '\ + log.exception(u'Upgrading from "%s" '\ 'failed' % filename) delete_database(self.newpath, self.newbibles[number].\ clean_filename(self.newbibles[number].get_name())) del self.newbibles[number] self.incrementProgressBar(unicode(translate( - 'BiblesPlugin.ReImportWizardForm', - 'Reimporting Bible %s of %s: "%s"\nFailed')) % + 'BiblesPlugin.UpgradeWizardForm', + 'Upgrading Bible %s of %s: "%s"\nFailed')) % (number+1, self.maxBibles, name), self.progressBar.maximum()-self.progressBar.value()) number += 1 @@ -577,8 +578,8 @@ class BibleReImportForm(OpenLPWizard): self.progressBar.setMaximum(len(books)) for book in books: self.incrementProgressBar(unicode(translate( - 'BiblesPlugin.ReImportWizardForm', - 'Reimporting Bible %s of %s: "%s"\n' + 'BiblesPlugin.UpgradeWizardForm', + 'Upgrading Bible %s of %s: "%s"\n' 'Importing %s ...')) % (number+1, self.maxBibles, name, book)) book_ref_id = self.newbibles[number].\ @@ -608,8 +609,8 @@ class BibleReImportForm(OpenLPWizard): clean_filename(self.newbibles[number].get_name())) del self.newbibles[number] self.incrementProgressBar(unicode(translate( - 'BiblesPlugin.ReImportWizardForm', - 'Reimporting Bible %s of %s: "%s"\nFailed')) % + 'BiblesPlugin.UpgradeWizardForm', + 'Upgrading Bible %s of %s: "%s"\nFailed')) % (number+1, self.maxBibles, name), self.progressBar.maximum()-self.progressBar.value()) number += 1 @@ -618,8 +619,8 @@ class BibleReImportForm(OpenLPWizard): self.progressBar.setMaximum(len(books)) for book in books: self.incrementProgressBar(unicode(translate( - 'BiblesPlugin.ReImportWizardForm', - 'Reimporting Bible %s of %s: "%s"\n' + 'BiblesPlugin.UpgradeWizardForm', + 'Upgrading Bible %s of %s: "%s"\n' 'Importing %s ...')) % (number+1, self.maxBibles, name, book[u'name'])) book_ref_id = self.newbibles[number].\ @@ -643,19 +644,19 @@ class BibleReImportForm(OpenLPWizard): Receiver.send_message(u'openlp_process_events') if not bible_failed: self.incrementProgressBar(unicode(translate( - 'BiblesPlugin.ReImportWizardForm', - 'Reimporting Bible %s of %s: "%s"\n' + 'BiblesPlugin.UpgradeWizardForm', + 'Upgrading Bible %s of %s: "%s"\n' 'Done')) % (number+1, self.maxBibles, name)) self.success[biblenumber] = True else: self.incrementProgressBar(unicode(translate( - 'BiblesPlugin.ReImportWizardForm', - 'Reimporting Bible %s of %s: "%s"\nFailed')) % + 'BiblesPlugin.UpgradeWizardForm', + 'Upgrading Bible %s of %s: "%s"\nFailed')) % (number+1, self.maxBibles, name), self.progressBar.maximum()-self.progressBar.value()) number += 1 - self.parent.reloadBibles() + self.mediaItem.reloadBibles() successful_import = 0 failed_import = 0 for number, success in self.success.iteritems(): @@ -665,34 +666,34 @@ class BibleReImportForm(OpenLPWizard): failed_import += 1 if failed_import > 0: failed_import_text = unicode(translate( - 'BiblesPlugin.ReImportWizardForm', - ' - %s reimport fail')) % failed_import + 'BiblesPlugin.UpgradeWizardForm', + ' - %s upgrade fail')) % failed_import else: failed_import_text = u'' if successful_import > 0: if include_webbible: self.progressLabel.setText(unicode( - translate('BiblesPlugin.ReImportWizardForm', 'Reimport %s ' + translate('BiblesPlugin.UpgradeWizardForm', 'Upgrade %s ' 'bible(s) successful%s.\nPlease note, that verses from ' 'webbibles will be downloaded\non demand and thus an ' 'internet connection is required.')) % (successful_import, failed_import_text)) else: self.progressLabel.setText(unicode( - translate('BiblesPlugin.ReImportWizardForm', 'Reimport %s ' + translate('BiblesPlugin.UpgradeWizardForm', 'Upgrade %s ' 'bible(s) successful.%s')) % (successful_import, failed_import_text)) - self.deleteCheckBox.setVisible(1) + self.deleteCheckBox.show() bibles = u'' for bible in self.newbibles.itervalues(): name = bible.get_name() bibles += u'\n"' + name + u'"' self.deleteCheckBox.setToolTip(unicode(translate( - 'BiblesPlugin.ReImportWizardForm', - 'Sucessful imported bible(s):%s')) % bibles) + 'BiblesPlugin.UpgradeWizardForm', + 'Sucessful upgraded bible(s):%s')) % bibles) else: self.progressLabel.setText( - translate('BiblesPlugin.ReImportWizardForm', 'Reimport ' + translate('BiblesPlugin.UpgradeWizardForm', 'Upgrade ' 'failed.')) - self.progressLabelAfter.setVisible(1) - self.deleteAllCheckBox.setVisible(1) + self.progressLabelAfter.show() + self.deleteAllCheckBox.show() diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index c2b2fa1b1..8e0eec849 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -35,7 +35,7 @@ from sqlalchemy import Column, ForeignKey, or_, Table, types from sqlalchemy.orm import class_mapper, mapper, relation from sqlalchemy.orm.exc import UnmappedClassError -from openlp.core.lib import Receiver, translate +from openlp.core.lib import Receiver, translate, check_directory_exists from openlp.core.lib.db import BaseModel, init_db, Manager from openlp.core.lib.ui import critical_error_message_box from openlp.core.utils import AppLocation @@ -295,14 +295,14 @@ class BibleDB(QtCore.QObject, Manager): The name of the book to return. """ log.debug(u'BibleDB.get_book("%s")', book) - db_book = self.get_object_filtered(Book, Book.name.like(book + u'%')) - return db_book + return self.get_object_filtered(Book, Book.name.like(book + u'%')) def get_books(self): """ A wrapper so both local and web bibles have a get_books() method that manager can call. Used in the media manager advanced search tab. """ + log.debug(u'BibleDB.get_books()') return self.get_all_objects(Book, order_by_ref=Book.id) def get_book_by_book_ref_id(self, id): @@ -313,9 +313,7 @@ class BibleDB(QtCore.QObject, Manager): The reference id of the book to return. """ log.debug(u'BibleDB.get_book_by_book_ref_id("%s")', id) - db_book = self.get_object_filtered(Book, - Book.book_reference_id.like(id)) - return db_book + return self.get_object_filtered(Book, Book.book_reference_id.like(id)) def get_book_ref_id_by_name(self, book, language_id=None): log.debug(u'BibleDB.get_book_ref_id_by_name:("%s", "%s")', book, @@ -421,16 +419,16 @@ class BibleDB(QtCore.QObject, Manager): verses = verses.all() return verses - def get_chapter_count(self, book_id): + def get_chapter_count(self, book): """ Return the number of chapters in a book. ``book`` - The book to get the chapter count for. + The book object to get the chapter count for. """ - log.debug(u'BibleDB.get_chapter_count("%s")', book_id) + log.debug(u'BibleDB.get_chapter_count("%s")', book.name) count = self.session.query(Verse.chapter).join(Book)\ - .filter(Book.book_reference_id==book_id)\ + .filter(Book.name==book.name)\ .distinct().count() if not count: return 0 @@ -541,16 +539,16 @@ class BiblesResourcesDB(QtCore.QObject, Manager): log.debug(u'BiblesResourcesDB.get_books()') books = BiblesResourcesDB.run_sql(u'SELECT id, testament_id, name, ' u'abbreviation, chapters FROM book_reference ORDER BY id') - book_list = [] - for book in books: - book_list.append({ - u'id': book[0], - u'testament_id': book[1], - u'name': unicode(book[2]), - u'abbreviation': unicode(book[3]), - u'chapters': book[4] - }) - return book_list + return [ + { + u'id': book[0], + u'testament_id': book[1], + u'name': unicode(book[2]), + u'abbreviation': unicode(book[3]), + u'chapters': book[4] + } + for book in books + ] @staticmethod def get_book(name): @@ -700,16 +698,16 @@ class BiblesResourcesDB(QtCore.QObject, Manager): u'language_id, download_source_id FROM webbibles WHERE ' u'download_source_id = ?', (source[u'id'],)) if bibles: - bibles_temp = [] - for bible in bibles: - bibles_temp.append({ - u'id': bible[0], - u'name': bible[1], - u'abbreviation': bible[2], - u'language_id': bible[3], - u'download_source_id': bible[4] - }) - return bibles_temp + return [ + { + u'id': bible[0], + u'name': bible[1], + u'abbreviation': bible[2], + u'language_id': bible[3], + u'download_source_id': bible[4] + } + for bible in bibles + ] else: return None @@ -736,14 +734,13 @@ class BiblesResourcesDB(QtCore.QObject, Manager): u'download_source_id = ? AND abbreviation = ?', (source[u'id'], abbreviation)) if bible: - bibles_temp = { + return { u'id': bible[0][0], u'name': bible[0][1], u'abbreviation': bible[0][2], u'language_id': bible[0][3], u'download_source_id': bible[0][4] } - return bibles_temp else: return None @@ -806,14 +803,14 @@ class BiblesResourcesDB(QtCore.QObject, Manager): languages = BiblesResourcesDB.run_sql(u'SELECT id, name, code FROM ' u'language ORDER by name') if languages: - languages_temp = [] - for language in languages: - languages_temp.append({ - u'id': language[0], - u'name': unicode(language[1]), - u'code': unicode(language[2]) - }) - return languages_temp + return [ + { + u'id': language[0], + u'name': unicode(language[1]), + u'code': unicode(language[2]) + } + for language in languages + ] else: return None @@ -825,13 +822,13 @@ class BiblesResourcesDB(QtCore.QObject, Manager): log.debug(u'BiblesResourcesDB.get_testament_reference()') testaments = BiblesResourcesDB.run_sql(u'SELECT id, name FROM ' u'testament_reference ORDER BY id') - testament_list = [] - for testament in testaments: - testament_list.append({ - u'id': testament[0], - u'name': unicode(testament[1]) - }) - return testament_list + return [ + { + u'id': testament[0], + u'name': unicode(testament[1]) + } + for testament in testaments + ] class AlternativeBookNamesDB(QtCore.QObject, Manager): @@ -849,12 +846,8 @@ class AlternativeBookNamesDB(QtCore.QObject, Manager): database doesn't exist. """ if AlternativeBookNamesDB.cursor is None: - if not os.path.exists(os.path.join( - AppLocation.get_directory(AppLocation.DataDir), u'bibles', - u'resources')): - os.mkdir(os.path.join( - AppLocation.get_directory(AppLocation.DataDir), u'bibles', - u'resources')) + check_directory_exists(os.path.join(AppLocation.get_directory( + AppLocation.DataDir), u'bibles', u'resources')) filepath = os.path.join( AppLocation.get_directory(AppLocation.DataDir), u'bibles', u'resources', u'alternative_book_names.sqlite') @@ -933,10 +926,9 @@ class AlternativeBookNamesDB(QtCore.QObject, Manager): """ log.debug(u'AlternativeBookNamesDB.create_alternative_book_name("%s", ' '"%s", "%s"', name, book_reference_id, language_id) - alternative_book_name = AlternativeBookNamesDB.run_sql(u'INSERT INTO ' + return AlternativeBookNamesDB.run_sql(u'INSERT INTO ' u'alternative_book_names(book_reference_id, language_id, name) ' u'VALUES (?, ?, ?)', (book_reference_id, language_id, name), True) - return alternative_book_name class OldBibleDB(QtCore.QObject, Manager): @@ -1014,15 +1006,15 @@ class OldBibleDB(QtCore.QObject, Manager): metadata = self.run_sql(u'SELECT key, value FROM metadata ' u'ORDER BY rowid') if metadata: - metadata_list = [] - for meta in metadata: - metadata_list.append({ - u'key': unicode(meta[0]), - u'value': unicode(meta[1]) - }) + return [ + { + u'key': unicode(meta[0]), + u'value': unicode(meta[1]) + } + for meta in metadata + ] else: - metadata_list = None - return metadata_list + return None def get_books(self): """ @@ -1030,15 +1022,16 @@ class OldBibleDB(QtCore.QObject, Manager): """ books = self.run_sql(u'SELECT name, id FROM book ORDER BY id') if books: + return [ + { + u'name': unicode(book[0]), + u'id':int(book[1]) + } + for book in books + ] book_list = [] - for book in books: - book_list.append({ - u'name': unicode(book[0]), - u'id':int(book[1]) - }) else: - book_list = None - return book_list + return None def get_verses(self, book_id): """ @@ -1047,15 +1040,14 @@ class OldBibleDB(QtCore.QObject, Manager): verses = self.run_sql(u'SELECT book_id, chapter, verse, text FROM ' u'verse WHERE book_id = ? ORDER BY id', (book_id, )) if verses: - verse_list = [] - for verse in verses: - verse_list.append({ - u'book_id': int(verse[0]), - u'chapter': int(verse[1]), - u'verse': int(verse[2]), - u'text': unicode(verse[3]) - }) + return [ + { + u'book_id': int(verse[0]), + u'chapter': int(verse[1]), + u'verse': int(verse[2]), + u'text': unicode(verse[3]) + } + for verse in verses + ] else: - verse_list = None - return verse_list - + return None diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 9795b0120..b799f24a9 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -241,10 +241,10 @@ class BSExtract(object): send_error_message(u'parse') return None content = content.findAll(u'li') - books = [] - for book in content: + return [ books.append(book.contents[0].contents[0]) - return books + for book in content + ] class CWExtract(object): @@ -507,12 +507,15 @@ class HTTPBible(BibleDB): log.debug(u'HTTPBible.get_books("%s")', Book.name) return self.get_all_objects(Book, order_by_ref=Book.id) - def get_chapter_count(self, book_id): + def get_chapter_count(self, book): """ Return the number of chapters in a particular book. + + ``book`` + The book object to get the chapter count for. """ - log.debug(u'HTTPBible.get_chapter_count("%s")', book_id) - return BiblesResourcesDB.get_chapter_count(book_id) + log.debug(u'HTTPBible.get_chapter_count("%s")', book.name) + return BiblesResourcesDB.get_chapter_count(book.book_reference_id) def get_verse_count(self, book_id, chapter): """ diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index cab665179..7d8ca77db 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -208,23 +208,27 @@ class BibleManager(object): Unicode. The Bible to get the list of books from. """ log.debug(u'BibleManager.get_books("%s")', bible) - language_id = self.get_meta_data(bible, u'language_id') - books = [] - for book in self.db_cache[bible].get_books(): - books.append( + return [ { - u'name': book.name, - u'chapters': self.db_cache[bible].get_chapter_count( - book.book_reference_id) - }) - return books + u'name': book.name, + u'chapters': self.db_cache[bible].get_chapter_count( + book) + } + for book in self.db_cache[bible].get_books() + ] def get_chapter_count(self, bible, book): """ Returns the number of Chapters for a given book. + + ``bible`` + Unicode. The Bible to get the list of books from. + + ``book`` + The book object to get the chapter count for. """ log.debug(u'BibleManager.get_book_chapter_count ("%s", "%s")', bible, - book) + book.name) return self.db_cache[bible].get_chapter_count(book) def get_verse_count(self, bible, book, chapter): diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index ec65a37d0..d902772b8 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -33,7 +33,7 @@ from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \ 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 -from openlp.plugins.bibles.forms import BibleImportForm, BibleReImportForm +from openlp.plugins.bibles.forms import BibleImportForm from openlp.plugins.bibles.lib import LayoutStyle, DisplayStyle, \ VerseReferenceList, get_reference_match @@ -310,14 +310,6 @@ class BibleMediaItem(MediaManagerItem): if self.import_wizard.exec_(): self.reloadBibles() - def onReImportClick(self): - if not hasattr(self, u'reimport_wizard'): - self.reimport_wizard = BibleReImportForm(self, self.parent.manager, - self.parent) - # If the import was not cancelled then reload. - if self.reimport_wizard.exec_(): - self.reloadBibles() - def loadBibles(self): log.debug(u'Loading Bibles') self.quickVersionComboBox.clear() diff --git a/resources/images/bibles_reimport_alert.png b/resources/images/bibles_upgrade_alert.png similarity index 100% rename from resources/images/bibles_reimport_alert.png rename to resources/images/bibles_upgrade_alert.png diff --git a/resources/images/openlp-2.qrc b/resources/images/openlp-2.qrc index f3bfd100e..785250ab7 100644 --- a/resources/images/openlp-2.qrc +++ b/resources/images/openlp-2.qrc @@ -24,7 +24,7 @@ bibles_search_text.png bibles_search_reference.png - bibles_reimport_alert.png + bibles_upgrade_alert.png plugin_alerts.png From 3b99f531f33e62e8e4443dac8a350ac61b7ca50e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Tue, 26 Apr 2011 20:39:08 +0200 Subject: [PATCH 030/190] small fixes --- openlp/plugins/bibles/forms/bibleupgradeform.py | 2 +- openlp/plugins/bibles/lib/http.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index b64231195..b08454374 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -359,7 +359,7 @@ class BibleUpgradeForm(OpenLPWizard): translate('BiblesPlugin.UpgradeWizardForm', 'Delete all old bible ' 'database(s) (including not upgraded bibles)')) self.progressLabelAfter.setText( - translate('BiblesPlugin.UpgradeWizardForm', '\nIf OpenLP should ' + translate('BiblesPlugin.UpgradeWizardForm', 'If OpenLP should ' 'delete the old bible databases please choose:')) def validateCurrentPage(self): diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index b799f24a9..fb60a2b1a 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -242,8 +242,7 @@ class BSExtract(object): return None content = content.findAll(u'li') return [ - books.append(book.contents[0].contents[0]) - for book in content + book.contents[0].contents[0] for book in content ] From 2f346ee450310fd117f690d02b40920d8be680be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Tue, 26 Apr 2011 20:55:13 +0200 Subject: [PATCH 031/190] small changes --- openlp/plugins/bibles/lib/db.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 8e0eec849..feeeb9b4f 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -78,7 +78,7 @@ def init_schema(url): book_table = Table(u'book', metadata, Column(u'id', types.Integer, primary_key=True), - Column(u'book_reference_id', types.Integer), + Column(u'book_reference_id', types.Integer, index=True), Column(u'testament_reference_id', types.Integer), Column(u'name', types.Unicode(50), index=True), ) @@ -428,7 +428,7 @@ class BibleDB(QtCore.QObject, Manager): """ log.debug(u'BibleDB.get_chapter_count("%s")', book.name) count = self.session.query(Verse.chapter).join(Book)\ - .filter(Book.name==book.name)\ + .filter(Book.book_reference_id==book.book_reference_id)\ .distinct().count() if not count: return 0 From b4c3d1d5ae5afcbf13d8d4a29a7a4764b7e69ff1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Mon, 2 May 2011 06:21:18 +0200 Subject: [PATCH 032/190] code cleaning --- openlp/plugins/bibles/lib/db.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index feeeb9b4f..abc17b194 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -1029,7 +1029,6 @@ class OldBibleDB(QtCore.QObject, Manager): } for book in books ] - book_list = [] else: return None From 3eca8f6b505b45d8c14f18439083e9c2251afcc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Mon, 2 May 2011 15:45:30 +0200 Subject: [PATCH 033/190] updated bibles_resources.sqlite with some additional apocryph books comparing books with lower() display only which are not added to a bible in BookNameForm small fixes --- .../plugins/bibles/forms/bibleupgradeform.py | 7 +- openlp/plugins/bibles/forms/booknameform.py | 10 ++- openlp/plugins/bibles/lib/db.py | 69 +++++++++++------- .../bibles/resources/bibles_resources.sqlite | Bin 101376 -> 101376 bytes 4 files changed, 57 insertions(+), 29 deletions(-) diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index b08454374..92d704690 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -27,7 +27,7 @@ The bible import functions for OpenLP """ import logging -import os +#import os import os.path import re @@ -637,6 +637,11 @@ class BibleUpgradeForm(OpenLPWizard): db_book = self.newbibles[number].create_book(book[u'name'], book_ref_id, book_details[u'testament_id']) verses = oldbible.get_verses(book[u'id']) + if not verses: + log.exception(u'No verses found to import for book ' + u'"%s"', book[u'name']) + self.newbibles[number].delete_book(db_book) + continue for verse in verses: self.newbibles[number].create_verse(db_book.id, int(verse[u'chapter']), diff --git a/openlp/plugins/bibles/forms/booknameform.py b/openlp/plugins/bibles/forms/booknameform.py index b8bdbb493..84e1deb96 100644 --- a/openlp/plugins/bibles/forms/booknameform.py +++ b/openlp/plugins/bibles/forms/booknameform.py @@ -53,13 +53,19 @@ class BookNameForm(QDialog, Ui_BookNameDialog): QDialog.__init__(self, parent) self.setupUi(self) - def exec_(self, name): + def exec_(self, name, books): items = [] self.requestComboBox.addItem(u'') self.requestLabel.setText(name) items = BiblesResourcesDB.get_books() for item in items: - self.requestComboBox.addItem(item[u'name']) + addBook = True + for book in books: + if book.book_reference_id == item[u'id']: + addBook = False + break + if addBook == True: + self.requestComboBox.addItem(item[u'name']) return QDialog.exec_(self) def accept(self): diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index abc17b194..a53413063 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -218,6 +218,18 @@ class BibleDB(QtCore.QObject, Manager): self.save_object(book) return book + def delete_book(self, db_book): + """ + Delete a book from the database. + + ``db_book`` + The book objekt. + """ + log.debug(u'BibleDB.delete_book("%s")', db_book.name) + if self.delete_object(Book, db_book.id): + return True + return False + def create_chapter(self, book_id, chapter, textlist): """ Add a chapter and its verses to a book. @@ -318,8 +330,8 @@ class BibleDB(QtCore.QObject, Manager): def get_book_ref_id_by_name(self, book, language_id=None): log.debug(u'BibleDB.get_book_ref_id_by_name:("%s", "%s")', book, language_id) - if BiblesResourcesDB.get_book(book): - book_temp = BiblesResourcesDB.get_book(book) + if BiblesResourcesDB.get_book(book, True): + book_temp = BiblesResourcesDB.get_book(book, True) book_id = book_temp[u'id'] elif BiblesResourcesDB.get_alternative_book_name(book, language_id): book_id = BiblesResourcesDB.get_alternative_book_name(book, @@ -332,7 +344,7 @@ class BibleDB(QtCore.QObject, Manager): from openlp.plugins.bibles.forms import BookNameForm book_ref = None book_name = BookNameForm(self.wizard) - if book_name.exec_(book): + if book_name.exec_(book, self.get_books()): book_ref = unicode(book_name.requestComboBox.currentText()) if not book_ref: return None @@ -551,7 +563,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager): ] @staticmethod - def get_book(name): + def get_book(name, lower=False): """ Return a book by name or abbreviation. @@ -561,9 +573,15 @@ class BiblesResourcesDB(QtCore.QObject, Manager): log.debug(u'BiblesResourcesDB.get_book("%s")', name) if not isinstance(name, unicode): name = unicode(name) - books = BiblesResourcesDB.run_sql(u'SELECT id, testament_id, name, ' - u'abbreviation, chapters FROM book_reference WHERE name = ? OR ' - u'abbreviation = ?', (name, name)) + if lower: + books = BiblesResourcesDB.run_sql(u'SELECT id, testament_id, name, ' + u'abbreviation, chapters FROM book_reference WHERE ' + u'LOWER(name) = ? OR LOWER(abbreviation) = ?', + (name.lower(), name.lower())) + else: + books = BiblesResourcesDB.run_sql(u'SELECT id, testament_id, name, ' + u'abbreviation, chapters FROM book_reference WHERE name = ?' + u' OR abbreviation = ?', (name, name)) if books: return { u'id': books[0][0], @@ -758,17 +776,16 @@ class BiblesResourcesDB(QtCore.QObject, Manager): log.debug(u'BiblesResourcesDB.get_alternative_book_name("%s", "%s")', name, language_id) if language_id: - id = BiblesResourcesDB.run_sql(u'SELECT book_reference_id ' - u'FROM alternative_book_names WHERE name = ? and language_id ' - u'= ? ORDER BY id', (name, language_id)) + books = BiblesResourcesDB.run_sql(u'SELECT book_reference_id, name ' + u'FROM alternative_book_names WHERE language_id = ? ORDER BY ' + u'id', (language_id, )) else: - id = BiblesResourcesDB.run_sql(u'SELECT book_reference_id ' - u'FROM alternative_book_names WHERE name = ? ORDER BY id', - (name, )) - if id: - return int(id[0][0]) - else: - return None + books = BiblesResourcesDB.run_sql(u'SELECT book_reference_id, name ' + u'FROM alternative_book_names ORDER BY id') + for book in books: + if book[1].lower() == name.lower(): + return book[0] + return None @staticmethod def get_language(name): @@ -899,16 +916,16 @@ class AlternativeBookNamesDB(QtCore.QObject, Manager): log.debug(u'AlternativeBookNamesDB.get_book_reference_id("%s", "%s")', name, language_id) if language_id: - id = AlternativeBookNamesDB.run_sql(u'SELECT book_reference_id FROM' - u' alternative_book_names WHERE name = ? AND language_id = ?', - (name, language_id)) + books = AlternativeBookNamesDB.run_sql(u'SELECT book_reference_id, ' + u'name FROM alternative_book_names WHERE language_id = ?', + (language_id, )) else: - id = AlternativeBookNamesDB.run_sql(u'SELECT book_reference_id FROM' - u' alternative_book_names WHERE name = ?', name) - if not id: - return None - else: - return id[0][0] + books = AlternativeBookNamesDB.run_sql(u'SELECT book_reference_id, ' + u'name FROM alternative_book_names') + for book in books: + if book[1].lower() == name.lower(): + return book[0] + return None @staticmethod def create_alternative_book_name(name, book_reference_id, language_id): diff --git a/openlp/plugins/bibles/resources/bibles_resources.sqlite b/openlp/plugins/bibles/resources/bibles_resources.sqlite index 4645fcf9ca76a4d0aecb2a5d227198e2f2a696bc..302c6a1c83ff0b9b7530a7df2ddf34f2737089d9 100644 GIT binary patch delta 2172 zcmai!TWpj?6oAi}+3wDk?F~xrT`0B9ZlU(J-9k(0ozj-l%T@uUNNFpry(KIl7?Ul= zM3{gn854<7RP@2bAi^4Bf)GgX1!IEvAP+_e7<@21kQ!p5F`n}erNkHdcQ)U-pE)!C zKYP+Wd(u6Zn{*ohhG{u}CjvDIx1sb--no&FWU`bGSeq#SmJj8Fc$({u6orxaLyy;m z1LuA2RCS;2$?`tgevuj3EJ0GTEWk}L15p@-A;>$u(v_G*dX(2dUL()TG8`Ik1NIf5 ztb~=&MxG22bNrJcxtXh(XLk5Bv$g!*#d_ zpTWEECN)|t`|#;~bq_3+LE7gi?50jf;Z^FsHdPjpY6$kwGX&#MlrBph#cmQO=-E%J zkOSK(WSUl#yrO_+t}3(HC-bol?8Z~riG@*$7^mM!$l>g5aF9kjLW!avtRf2gV2nKW zLYnba=9=oN>{yOmhpnXBPd2v9P_Y@9fNLd0C{!iN zY;30RN$BUGW(wL%8HcG_JNMc|2|2`Xg<+}{g*9B-TsfLyJ}%Eo&B|U9ZR7RkVtH<0LEl9^Pt$Cp;N#5fx{$fSFPqTZ zD$T(%^HybkW`?Z53bGGS2)D^IIs{>Jy`pdp*Jj(3wY^+}m5a64J6mbc8JjmP7#AB@ z!VR$hLIWH4-mv2T_xVXV2ocj*xkBd2db6t}ds|W>UAPiB1@wOwF2PUmEBpa}p@(i} z5r(lHNANg)is$eu{)oTfybvN&l!$uKFQ&vh;-a`A?n;*|k{e`?+##procu(dm!>b& zUd0`D(5(0-4$<~A`OWNf=FJzcj>pjHT#r#2k>g_yei1gWhttaVNIU6RM#$d8iL9`P z#3*jUdNwLOYSB%;BZM)koUm5uVXJn9l-_MoKBM%IML|vMvWNkt zUve2dZ?%ZD(dQlP z#}cKVbFdE^l^$@g7h9E%IM{=fxZlC9rCCb%Sxh7BwV0Z%bdSZ9l}c~1n4GS3H)9OD zl5&;aY}LMHN_SaYLfTG?iOZGlu;`@}n=Gn)rQ0ofGL_zF(Osx?o5h4;rCTk!a+Ged zC@ER9ML}K0nk*y5H9FYI*%~amgGz6(m_SEfZ_!05)?1V`wK|KUK84D>3oGdw*k$)x@Uy*x1lUeK4WXqz(4L*o{?VW1ac81omWdX1|#;^PO+b zKfmgjUv;c_Qda@s1-2A6jFktIR-x(__osbl$))HvgHTHU(rqgvbCaxpoDKuK&bb`v z<_!s@(G3p#OxdZKRD~hvhe@_k7=j)cgxs|vW3Qy$`&IH@#wL5|JwJ{2G`q$dxrSww z*Q5S1o@sS@KXV+ffLTzbstNb0Zukj9Y7#Hwo9dK$7qiqw_!@)i2mBD{(10~KrEaRf zAr7+`rzFZIpK{R?)J+rg8m-WK^d)_dBXo^^#}l!IqFpKE#unx}0$q93fcnBxw!Y=d z*9(4+ey+wdmri9I@8SDQvpj=vSb!QRf)I@J-!W(sz`p}{Q~=)&;NWiZ+8LePXUf** zfIyP74Ly=Z#jIQptJV(@Xq1e0NbQGSTgw+2dsy%B=jc0r4{<+T{a2R0Tj?5#|wmQjr!(X7k@$U(5-DdlMOAd$xI}fC|r~sQ;vneiFnfNnmGb$8;4%wuJ?AjiE zf{8Wx3R)!6#`#k$t-PU(1n?4{>*E1LKuPyDILXmrCM-r#a&^v}Bpv49 z7@OQb0w@&QIiZ(rnAbF0sZEDtDt>FV}spF9wSA!C;{wPg`G#7h<-x9`tvT8)md~u{QQanqPg*++ml>^10K{%h!c~02pK#GIqdwaW eQHvR^PPoczM)xON>yNLl2lUIqOzUPmYxRHc@FaEs From b9204fa62b650a8c2c926eb9b4ce3ff5d0e90a5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Mon, 2 May 2011 20:20:38 +0200 Subject: [PATCH 034/190] small changes --- openlp/plugins/bibles/lib/db.py | 14 +++++++------- .../bibles/resources/bibles_resources.sqlite | Bin 101376 -> 104448 bytes 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index a53413063..2311c7f00 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -333,13 +333,10 @@ class BibleDB(QtCore.QObject, Manager): if BiblesResourcesDB.get_book(book, True): book_temp = BiblesResourcesDB.get_book(book, True) book_id = book_temp[u'id'] - elif BiblesResourcesDB.get_alternative_book_name(book, language_id): - book_id = BiblesResourcesDB.get_alternative_book_name(book, - language_id) - elif AlternativeBookNamesDB.get_book_reference_id(book, - language_id): - book_id = AlternativeBookNamesDB.get_book_reference_id( - book, language_id) + elif BiblesResourcesDB.get_alternative_book_name(book): + book_id = BiblesResourcesDB.get_alternative_book_name(book) + elif AlternativeBookNamesDB.get_book_reference_id(book): + book_id = AlternativeBookNamesDB.get_book_reference_id(book) else: from openlp.plugins.bibles.forms import BookNameForm book_ref = None @@ -569,6 +566,9 @@ class BiblesResourcesDB(QtCore.QObject, Manager): ``name`` The name or abbreviation of the book. + + ``lower`` + True if the comparsion should be only lowercase """ log.debug(u'BiblesResourcesDB.get_book("%s")', name) if not isinstance(name, unicode): diff --git a/openlp/plugins/bibles/resources/bibles_resources.sqlite b/openlp/plugins/bibles/resources/bibles_resources.sqlite index 302c6a1c83ff0b9b7530a7df2ddf34f2737089d9..9336918f2d187da2a2e0a96819dfc2ceda31dabe 100644 GIT binary patch delta 2688 zcmZuzOH7nk6u$Sr3?L5yhhZFba7G4ZMi_MvwD_n>f7GfVAS&3_GQ1HObY^JPK7Nz7 ziT9=pn@L*Zvgx96rPaj5HeGblxM)mQT{P*!#x$l)nl4%}O&9&n8BiYbXNI}ocb@m0 zbMJrUdj6GL`PbIF9tj~vJ_+oTk8bxrEh=z@H@j4y%F}8^sp! z3Ye6b7D;du;9h60)Q+#2!Gz!CBeTJE0R$I#SF;m1kC*Xcc%s^uj zI=#%SVx7fIsXk4Nuh8y>YzB#(qII;ucDfPeAR^AdL`qcXlSBmb?IXw_4dH}v>mI^t zU3N1vXlHyF=m|#i?4~7XH>1klz69-J)Z&nzTj+EN2Zklby8u_{<0Kq(S9c1(e(fGQ0E&EP|upN3QhzXGBSzcXB}l-Q_`k^J7) z$Z;`(r-IB4z)%XgCdH@-+-o!PYw47t-ZkQ^P=BhQ)VJyjbycO*8MR9VRFU=6dTjk* z-L-C5SF91M)7oQglC$zx`JMb+8kv%(Ya}PMhg0uFQW=gQ zEj&gL<3x9(1PL_IG{T!f1|H4565VAVhWG%)A9Kn4`h8Mp*~y#RgY2iElgpR%{Q5oS zcd)CKd|1Cre0%e}KDBjPWLxGci^BRHrkd<*Y%b{N%e0DZw~xZXBtB_8)HObRiI{k! z-HB};2RAOx;~~zYFA^7x+igH{#&h`FjBm3Kagh@UnQ*^;i}04M91eL(!CDfmP0A!N z!vb44pTz<>zCve+55~~zv)BvLiRv_AT@7}2@~;|4r)U+c=O!P6`y?L9xXUK=vug-^}+$@ z)*+6J)SL84p&|#3kf7(62Sx-#M&Iq|$IqrV5j`t?Xpw4EjwK^IO=-O5SZe#Mj0m-AIwT zh(h<7NW1N}oL#Nv1eV>{ri{5#4t_be8k{5JCC@Ua7R)fW8(Y#30610d>71_Q7UB##sX{=uY7cwl_>4IUuDIm0^)z1F%kJoSVX%#$x@tnb= z(XqDPxCm?BZ)eM9Jw+yuSNrV7Z24^Et48tiWj(K$&!vtC z^`p9vvFley@EZ1#a@;0N8nuUTf9I~+G%Q9<9id%z^=a&28i7rt69R&6=H-)BZ)!>Q zWCz{~sM#-}h^c3?)Gu`4ZGtrG0|o|$ Date: Tue, 3 May 2011 09:41:03 +0200 Subject: [PATCH 035/190] add a dialog at startup which inform the user that the bible format has changed and provide a possibility to upgrade small cleanup --- openlp.pyw | 15 ++++++++++++++- openlp/plugins/bibles/forms/bibleupgradeform.py | 1 - 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index 0d4e8c200..9196186a3 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -37,7 +37,8 @@ from traceback import format_exception from PyQt4 import QtCore, QtGui -from openlp.core.lib import Receiver, check_directory_exists +from openlp.core.lib import Receiver, check_directory_exists, SettingsManager, \ + translate from openlp.core.lib.ui import UiStrings from openlp.core.resources import qInitResources from openlp.core.ui.mainwindow import MainWindow @@ -130,6 +131,18 @@ class OpenLP(QtGui.QApplication): u'general/update check', QtCore.QVariant(True)).toBool() if update_check: VersionThread(self.mainWindow).start() + for plugin in self.mainWindow.pluginManager.plugins: + if plugin.name == u'Bibles' and plugin.isActive() and len( + SettingsManager.get_files(u'bibles/bibles', u'.sqlite')) == 0 \ + and len(SettingsManager.get_files(u'bibles', u'.sqlite')) > 0: + if QtGui.QMessageBox.information(self.mainWindow, + translate('OpenLP', 'Information'), translate('OpenLP', + 'Bible format has changed.\nYou have to upgrade your ' + 'existing bibles.\nShould OpenLP upgrade now?'), + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes | + QtGui.QMessageBox.No)) == QtGui.QMessageBox.Yes: + plugin.onToolsUpgradeItemTriggered() + break DelayStartThread(self.mainWindow).start() return self.exec_() diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index 92d704690..220942b42 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -27,7 +27,6 @@ The bible import functions for OpenLP """ import logging -#import os import os.path import re From d44b42aaff0049ddb318e8a2e530182ab04e7d85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Tue, 3 May 2011 13:44:23 +0200 Subject: [PATCH 036/190] improve BookNameForm (add possibility to reduce the books in the ComboBox and try to autodetect if a bible only contains only parts of a bible, so that only a part of the bible books are displayed at startup) --- .../plugins/bibles/forms/bibleupgradeform.py | 5 +- openlp/plugins/bibles/forms/booknamedialog.py | 33 ++++++++++-- openlp/plugins/bibles/forms/booknameform.py | 51 +++++++++++++++++-- openlp/plugins/bibles/lib/csvbible.py | 2 +- openlp/plugins/bibles/lib/db.py | 4 +- openlp/plugins/bibles/lib/http.py | 3 +- openlp/plugins/bibles/lib/openlp1.py | 3 +- openlp/plugins/bibles/lib/opensong.py | 2 +- openlp/plugins/bibles/lib/osis.py | 4 +- 9 files changed, 89 insertions(+), 18 deletions(-) diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index 220942b42..4feb4bd90 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -582,7 +582,7 @@ class BibleUpgradeForm(OpenLPWizard): 'Importing %s ...')) % (number+1, self.maxBibles, name, book)) book_ref_id = self.newbibles[number].\ - get_book_ref_id_by_name(book, language_id) + get_book_ref_id_by_name(book, len(books), language_id) if not book_ref_id: log.exception(u'Importing books from %s - download '\ u'name: "%s" aborted by user' % ( @@ -623,7 +623,8 @@ class BibleUpgradeForm(OpenLPWizard): 'Importing %s ...')) % (number+1, self.maxBibles, name, book[u'name'])) book_ref_id = self.newbibles[number].\ - get_book_ref_id_by_name(book[u'name'], language_id) + get_book_ref_id_by_name(book[u'name'], len(books), + language_id) if not book_ref_id: log.exception(u'Importing books from %s " '\ 'failed - aborted by user' % name) diff --git a/openlp/plugins/bibles/forms/booknamedialog.py b/openlp/plugins/bibles/forms/booknamedialog.py index bb48548c0..ad30812bc 100644 --- a/openlp/plugins/bibles/forms/booknamedialog.py +++ b/openlp/plugins/bibles/forms/booknamedialog.py @@ -32,7 +32,7 @@ from openlp.core.lib.ui import create_accept_reject_button_box class Ui_BookNameDialog(object): def setupUi(self, bookNameDialog): bookNameDialog.setObjectName(u'BookNameDialog') - bookNameDialog.resize(400, 175) + bookNameDialog.resize(400, 275) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.MinimumExpanding) sizePolicy.setHorizontalStretch(0) @@ -41,7 +41,7 @@ class Ui_BookNameDialog(object): .hasHeightForWidth()) bookNameDialog.setSizePolicy(sizePolicy) self.widget = QtGui.QWidget(bookNameDialog) - self.widget.setGeometry(QtCore.QRect(10, 15, 381, 151)) + self.widget.setGeometry(QtCore.QRect(10, 15, 381, 251)) self.widget.setObjectName(u'widget') self.verticalLayout = QtGui.QVBoxLayout(self.widget) self.verticalLayout.setObjectName(u'verticalLayout') @@ -75,13 +75,28 @@ class Ui_BookNameDialog(object): self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.requestComboBox) self.verticalLayout.addLayout(self.formLayout) + self.infoLabelTestaments = QtGui.QLabel(self.widget) + self.infoLabelTestaments.setObjectName(u'InfoLabelTestaments') + self.verticalLayout.addWidget(self.infoLabelTestaments) + self.checkBoxOldTestament = QtGui.QCheckBox(self.widget) + self.checkBoxOldTestament.setObjectName(u'OldTestament') + self.checkBoxOldTestament.setCheckState(2) + self.verticalLayout.addWidget(self.checkBoxOldTestament) + self.checkBoxNewTestament = QtGui.QCheckBox(self.widget) + self.checkBoxNewTestament.setObjectName(u'OldTestament') + self.checkBoxNewTestament.setCheckState(2) + self.verticalLayout.addWidget(self.checkBoxNewTestament) + self.checkBoxApocrypha = QtGui.QCheckBox(self.widget) + self.checkBoxApocrypha.setObjectName(u'OldTestament') + self.checkBoxApocrypha.setCheckState(2) + self.verticalLayout.addWidget(self.checkBoxApocrypha) + self.verticalLayout.addWidget( + create_accept_reject_button_box(bookNameDialog)) spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem) - self.formLayout.addWidget( - create_accept_reject_button_box(bookNameDialog)) self.retranslateUi(bookNameDialog) - QtCore.QMetaObject.connectSlotsByName(bookNameDialog) + QtCore.QMetaObject.connectSlotsByName(self) def retranslateUi(self, bookNameDialog): bookNameDialog.setWindowTitle( @@ -93,3 +108,11 @@ class Ui_BookNameDialog(object): 'Please choose the book it is.')) self.requestLabel.setText(translate('BiblesPlugin.BookNameDialog', 'Book:')) + self.infoLabelTestaments.setText(translate( + 'BiblesPlugin.BookNameDialog', 'Show books from:')) + self.checkBoxOldTestament.setText(translate( + 'BiblesPlugin.BookNameDialog', 'Old Testament')) + self.checkBoxNewTestament.setText(translate( + 'BiblesPlugin.BookNameDialog', 'New Testament')) + self.checkBoxApocrypha.setText(translate('BiblesPlugin.BookNameDialog', + 'Apocrypha')) diff --git a/openlp/plugins/bibles/forms/booknameform.py b/openlp/plugins/bibles/forms/booknameform.py index 84e1deb96..4ad8270e6 100644 --- a/openlp/plugins/bibles/forms/booknameform.py +++ b/openlp/plugins/bibles/forms/booknameform.py @@ -30,6 +30,7 @@ Module implementing BookNameForm. import logging from PyQt4.QtGui import QDialog +from PyQt4 import QtCore from openlp.core.lib import translate from openlp.core.lib.ui import critical_error_message_box @@ -52,20 +53,64 @@ class BookNameForm(QDialog, Ui_BookNameDialog): """ QDialog.__init__(self, parent) self.setupUi(self) + self.customSignals() - def exec_(self, name, books): + def customSignals(self): + """ + Set up the signals used in the booknameform. + """ + QtCore.QObject.connect(self.checkBoxOldTestament, + QtCore.SIGNAL(u'stateChanged(int)'), + self.onCheckBoxIndexChanged) + QtCore.QObject.connect(self.checkBoxNewTestament, + QtCore.SIGNAL(u'stateChanged(int)'), + self.onCheckBoxIndexChanged) + QtCore.QObject.connect(self.checkBoxApocrypha, + QtCore.SIGNAL(u'stateChanged(int)'), + self.onCheckBoxIndexChanged) + + def onCheckBoxIndexChanged(self, index): + ''' + Reload Combobox if CheckBox state has changed + ''' + self.reloadComboBox() + + def reloadComboBox(self): + ''' + Reload the Combobox items + ''' items = [] + self.requestComboBox.clear() self.requestComboBox.addItem(u'') - self.requestLabel.setText(name) items = BiblesResourcesDB.get_books() for item in items: addBook = True - for book in books: + for book in self.books: if book.book_reference_id == item[u'id']: addBook = False break + if self.checkBoxOldTestament.checkState() == 0 and \ + item[u'testament_id'] == 1: + addBook = False + elif self.checkBoxNewTestament.checkState() == 0 and \ + item[u'testament_id'] == 2: + addBook = False + elif self.checkBoxApocrypha.checkState() == 0 and \ + item[u'testament_id'] == 3: + addBook = False if addBook == True: self.requestComboBox.addItem(item[u'name']) + + def exec_(self, name, books, maxbooks): + self.books = books + log.debug(maxbooks) + if maxbooks <= 27: + self.checkBoxOldTestament.setCheckState(0) + self.checkBoxApocrypha.setCheckState(0) + elif maxbooks <= 66: + self.checkBoxApocrypha.setCheckState(0) + self.reloadComboBox() + self.requestLabel.setText(name) return QDialog.exec_(self) def accept(self): diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index 80216a73e..a5fe59ccc 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -118,7 +118,7 @@ class CSVBible(BibleDB): translate('BibleDB.Wizard', 'Importing books... %s')) % unicode(line[2], details['encoding'])) book_ref_id = self.get_book_ref_id_by_name( - unicode(line[2], details['encoding']), language_id) + unicode(line[2], details['encoding']), 67, language_id) if not book_ref_id: log.exception(u'Importing books from "%s" '\ 'failed' % self.booksfile) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 2311c7f00..be3beac2f 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -327,7 +327,7 @@ class BibleDB(QtCore.QObject, Manager): log.debug(u'BibleDB.get_book_by_book_ref_id("%s")', id) return self.get_object_filtered(Book, Book.book_reference_id.like(id)) - def get_book_ref_id_by_name(self, book, language_id=None): + def get_book_ref_id_by_name(self, book, maxbooks, language_id=None): log.debug(u'BibleDB.get_book_ref_id_by_name:("%s", "%s")', book, language_id) if BiblesResourcesDB.get_book(book, True): @@ -341,7 +341,7 @@ class BibleDB(QtCore.QObject, Manager): from openlp.plugins.bibles.forms import BookNameForm book_ref = None book_name = BookNameForm(self.wizard) - if book_name.exec_(book, self.get_books()): + if book_name.exec_(book, self.get_books(), maxbooks): book_ref = unicode(book_name.requestComboBox.currentText()) if not book_ref: return None diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index fb60a2b1a..a7f8d1b7e 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -422,7 +422,8 @@ class HTTPBible(BibleDB): self.wizard.incrementProgressBar(unicode(translate( 'BiblesPlugin.HTTPBible', 'Importing %s...', 'Importing ...')) % book) - book_ref_id = self.get_book_ref_id_by_name(book, language_id) + book_ref_id = self.get_book_ref_id_by_name(book, len(books), + language_id) if not book_ref_id: log.exception(u'Importing books from %s - download name: "%s" '\ 'failed' % (self.download_source, self.download_name)) diff --git a/openlp/plugins/bibles/lib/openlp1.py b/openlp/plugins/bibles/lib/openlp1.py index 0ed22797e..f1104ffc2 100644 --- a/openlp/plugins/bibles/lib/openlp1.py +++ b/openlp/plugins/bibles/lib/openlp1.py @@ -74,7 +74,8 @@ class OpenLP1Bible(BibleDB): testament_id = int(book[1]) name = unicode(book[2], u'cp1252') abbreviation = unicode(book[3], u'cp1252') - book_ref_id = self.get_book_ref_id_by_name(name, language_id) + book_ref_id = self.get_book_ref_id_by_name(name, len(books), + language_id) if not book_ref_id: log.exception(u'Importing books from "%s" '\ 'failed' % self.filename) diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index fd79cd440..48a6dc6e3 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -70,7 +70,7 @@ class OpenSongBible(BibleDB): if self.stop_import_flag: break book_ref_id = self.get_book_ref_id_by_name( - unicode(book.attrib[u'n']), language_id) + unicode(book.attrib[u'n']), len(bible.b), language_id) if not book_ref_id: log.exception(u'Importing books from "%s" '\ 'failed' % self.filename) diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index 2735648ce..b9039677b 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -128,8 +128,8 @@ class OSISBible(BibleDB): verse_text = match.group(4) if not db_book or db_book.name != self.books[book][0]: log.debug(u'New book: "%s"' % self.books[book][0]) - book_ref_id = self.get_book_ref_id_by_name( - unicode(self.books[book][0]), language_id) + book_ref_id = self.get_book_ref_id_by_name(unicode( + self.books[book][0]), 67, language_id) if not book_ref_id: log.exception(u'Importing books from "%s" '\ 'failed' % self.filename) From 368987bb67461c9393c3a205a0d0401c3432c688 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Tue, 3 May 2011 19:09:30 +0200 Subject: [PATCH 037/190] code cleanup --- .../plugins/bibles/forms/bibleimportform.py | 17 ++--------- .../plugins/bibles/forms/bibleupgradeform.py | 30 ++++++------------- openlp/plugins/bibles/lib/csvbible.py | 2 +- openlp/plugins/bibles/lib/db.py | 28 ++++++++--------- 4 files changed, 26 insertions(+), 51 deletions(-) diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index a85230611..edecbd89c 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -40,7 +40,7 @@ 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, string_is_unicode from openlp.plugins.bibles.lib.manager import BibleFormat -from openlp.plugins.bibles.lib.db import BiblesResourcesDB +from openlp.plugins.bibles.lib.db import BiblesResourcesDB, clean_filename log = logging.getLogger(__name__) @@ -494,7 +494,7 @@ class BibleImportForm(OpenLPWizard): 'a different Bible or first delete the existing one.')) self.versionNameEdit.setFocus() return False - elif os.path.exists(os.path.join(path, self.clean_filename( + elif os.path.exists(os.path.join(path, clean_filename( license_version))): critical_error_message_box( translate('BiblesPlugin.ImportWizardForm', 'Bible Exists'), @@ -507,19 +507,6 @@ class BibleImportForm(OpenLPWizard): if self.currentPage() == self.progressPage: return True - def clean_filename(self, old_filename): - """ - Clean up the version name of the Bible and convert it into a valid - file name. - - ``old_filename`` - The "dirty" file name or version name. - """ - 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'_') - return old_filename + u'.sqlite' - def onWebSourceComboBoxIndexChanged(self, index): """ Setup the list of Bibles when you select a different source on the web diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index 4feb4bd90..52e2651cd 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -38,7 +38,7 @@ 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, delete_file from openlp.plugins.bibles.lib.db import BibleDB, BibleMeta, OldBibleDB,\ - BiblesResourcesDB + BiblesResourcesDB, clean_filename from openlp.plugins.bibles.lib.http import BSExtract, BGExtract, CWExtract log = logging.getLogger(__name__) @@ -97,19 +97,6 @@ class BibleUpgradeForm(OpenLPWizard): log.debug(u'Stopping import') self.stop_import_flag = True - def clean_filename(self, old_filename): - """ - Clean up the version name of the Bible and convert it into a valid - file name. - - ``old_filename`` - The "dirty" file name or version name. - """ - 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'_') - return old_filename + u'.sqlite' - def onCheckBoxIndexChanged(self, index): ''' Show/ Hide warnings if CheckBox state has changed @@ -131,7 +118,7 @@ class BibleUpgradeForm(OpenLPWizard): if self.currentPage() == self.progressPage: Receiver.send_message(u'openlp_stop_wizard') for bible in self.newbibles.itervalues(): - delete_database(self.newpath, bible.clean_filename( + delete_database(self.newpath, clean_filename( bible.get_name())) self.done(QtGui.QDialog.Rejected) @@ -403,7 +390,7 @@ class BibleUpgradeForm(OpenLPWizard): self.versionNameEdit[number].setFocus() return False elif os.path.exists(os.path.join(self.newpath, - self.clean_filename(version_name))): + clean_filename(version_name))): critical_error_message_box( translate('BiblesPlugin.UpgradeWizardForm', 'Bible Exists'), @@ -534,7 +521,7 @@ class BibleUpgradeForm(OpenLPWizard): u'name: "%s" failed' % ( meta_data[u'download source'], meta_data[u'download name'])) - delete_database(self.newpath, self.newbibles[number].\ + delete_database(self.newpath, clean_filename(self.newbibles[number].get_name())) del self.newbibles[number] critical_error_message_box( @@ -564,7 +551,7 @@ class BibleUpgradeForm(OpenLPWizard): if not language_id: log.exception(u'Upgrading from "%s" '\ 'failed' % filename) - delete_database(self.newpath, self.newbibles[number].\ + delete_database(self.newpath, clean_filename(self.newbibles[number].get_name())) del self.newbibles[number] self.incrementProgressBar(unicode(translate( @@ -588,7 +575,7 @@ class BibleUpgradeForm(OpenLPWizard): u'name: "%s" aborted by user' % ( meta_data[u'download source'], meta_data[u'download name'])) - delete_database(self.newpath, self.newbibles[number].\ + delete_database(self.newpath, clean_filename(self.newbibles[number].get_name())) del self.newbibles[number] bible_failed = True @@ -604,7 +591,7 @@ class BibleUpgradeForm(OpenLPWizard): if not language_id: log.exception(u'Importing books from "%s" '\ 'failed' % name) - delete_database(self.newpath, self.newbibles[number].\ + delete_database(self.newpath, clean_filename(self.newbibles[number].get_name())) del self.newbibles[number] self.incrementProgressBar(unicode(translate( @@ -628,7 +615,7 @@ class BibleUpgradeForm(OpenLPWizard): if not book_ref_id: log.exception(u'Importing books from %s " '\ 'failed - aborted by user' % name) - delete_database(self.newpath, self.newbibles[number].\ + delete_database(self.newpath, clean_filename(self.newbibles[number].get_name())) del self.newbibles[number] bible_failed = True @@ -647,6 +634,7 @@ class BibleUpgradeForm(OpenLPWizard): int(verse[u'chapter']), int(verse[u'verse']), unicode(verse[u'text'])) Receiver.send_message(u'openlp_process_events') + self.newbibles[number].session.commit() if not bible_failed: self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index a5fe59ccc..85b2b27e4 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -70,7 +70,7 @@ import chardet import csv from openlp.core.lib import Receiver, translate -from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB#, Testament +from openlp.plugins.bibles.lib.db import BibleDB, BiblesResourcesDB log = logging.getLogger(__name__) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index be3beac2f..d47d01c32 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -62,6 +62,19 @@ class Verse(BaseModel): """ pass +def clean_filename(old_filename): + """ + Clean up the version name of the Bible and convert it into a valid + file name. + + ``old_filename`` + The "dirty" file name or version name. + """ + 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'_') + return old_filename + u'.sqlite' + def init_schema(url): """ Setup a bible database connection and initialise the database schema. @@ -144,7 +157,7 @@ class BibleDB(QtCore.QObject, Manager): self.name = kwargs[u'name'] if not isinstance(self.name, unicode): self.name = unicode(self.name, u'utf-8') - self.file = self.clean_filename(self.name) + self.file = clean_filename(self.name) if u'file' in kwargs: self.file = kwargs[u'file'] Manager.__init__(self, u'bibles/bibles', init_schema, self.file) @@ -171,19 +184,6 @@ class BibleDB(QtCore.QObject, Manager): self.name = version_name.value if version_name else None return self.name - def clean_filename(self, old_filename): - """ - Clean up the version name of the Bible and convert it into a valid - file name. - - ``old_filename`` - The "dirty" file name or version name. - """ - 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'_') - return old_filename + u'.sqlite' - def register(self, wizard): """ This method basically just initialialises the database. It is called From 4ee247c8b176de1601bb73b73f5acce0556c8aef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Tue, 3 May 2011 22:34:39 +0200 Subject: [PATCH 038/190] code cleanup small fixes --- openlp.pyw | 6 +-- .../plugins/bibles/forms/bibleimportform.py | 7 ++-- .../plugins/bibles/forms/bibleupgradeform.py | 37 ++++++++++--------- openlp/plugins/bibles/forms/booknamedialog.py | 6 +-- openlp/plugins/bibles/forms/booknameform.py | 21 +++++------ openlp/plugins/bibles/forms/languageform.py | 1 - openlp/plugins/bibles/lib/db.py | 16 ++++---- openlp/plugins/bibles/lib/http.py | 11 ++++-- 8 files changed, 55 insertions(+), 50 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index 00263ccb6..253f93718 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -132,9 +132,9 @@ class OpenLP(QtGui.QApplication): if update_check: VersionThread(self.mainWindow).start() for plugin in self.mainWindow.pluginManager.plugins: - if plugin.name == u'Bibles' and plugin.isActive() and len( - SettingsManager.get_files(u'bibles/bibles', u'.sqlite')) == 0 \ - and len(SettingsManager.get_files(u'bibles', u'.sqlite')) > 0: + if plugin.name == u'Bibles' and plugin.isActive() and not \ + len(SettingsManager.get_files( u'bibles/bibles', u'.sqlite')) \ + and SettingsManager.get_files(u'bibles', u'.sqlite'): if QtGui.QMessageBox.information(self.mainWindow, translate('OpenLP', 'Information'), translate('OpenLP', 'Bible format has changed.\nYou have to upgrade your ' diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index edecbd89c..8e9073775 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -637,9 +637,9 @@ class BibleImportForm(OpenLPWizard): bibles = BiblesResourcesDB.get_webbibles( WebDownload.Names[download_type]) for bible in bibles: - ver = bible[u'name'] + version = bible[u'name'] name = bible[u'abbreviation'] - self.web_bible_list[download_type][ver] = name.strip() + self.web_bible_list[download_type][version] = name.strip() def preWizard(self): """ @@ -720,4 +720,5 @@ class BibleImportForm(OpenLPWizard): self.progressLabel.setText(translate( 'BiblesPlugin.ImportWizardForm', 'Your Bible import failed.')) del self.manager.db_cache[importer.name] - delete_database(self.plugin.settingsSection, importer.file) + delete_database(AppLocation.get_section_data_path(u'bibles/bibles'), + importer.file) diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index 52e2651cd..0dad17336 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -98,11 +98,11 @@ class BibleUpgradeForm(OpenLPWizard): self.stop_import_flag = True def onCheckBoxIndexChanged(self, index): - ''' + """ Show/ Hide warnings if CheckBox state has changed - ''' + """ for number, filename in enumerate(self.files): - if not self.checkBox[number].checkState() == 2: + if not self.checkBox[number].checkState() == QtCore.Qt.Checked: self.verticalWidget[number].hide() self.formWidget[number].hide() else: @@ -134,15 +134,15 @@ class BibleUpgradeForm(OpenLPWizard): self.next() def onFinishButton(self): - ''' + """ Some cleanup while finishing - ''' - if self.deleteCheckBox.checkState() == 2 or \ - self.deleteAllCheckBox.checkState() == 2: + """ + if self.deleteCheckBox.checkState() == QtCore.Qt.Checked or \ + self.deleteAllCheckBox.checkState() == QtCore.Qt.Checked: for number, filename in enumerate(self.files): - if self.deleteAllCheckBox.checkState() == 2 or \ - (self.checkBox[number].checkState() == 2 and \ - self.success[number] == True): + if self.deleteAllCheckBox.checkState() == QtCore.Qt.Checked or \ + (self.checkBox[number].checkState() == QtCore.Qt.Checked \ + and self.success[number]): delete_file(os.path.join(self.oldpath, filename)) def customInit(self): @@ -204,7 +204,7 @@ class BibleUpgradeForm(OpenLPWizard): checkBoxName = u'checkBox['+unicode(number)+u']' self.checkBox[number].setObjectName(checkBoxName) self.checkBox[number].setText(bible.get_name()) - self.checkBox[number].setCheckState(2) + self.checkBox[number].setCheckState(QtCore.Qt.Checked) self.formLayout.addWidget(self.checkBox[number]) self.verticalWidget[number] = QtGui.QWidget(self.scrollAreaContents) verticalWidgetName = u'verticalWidget['+unicode(number)+u']' @@ -356,7 +356,7 @@ class BibleUpgradeForm(OpenLPWizard): return True elif self.currentPage() == self.selectPage: for number, filename in enumerate(self.files): - if not self.checkBox[number].checkState() == 2: + if not self.checkBox[number].checkState() == QtCore.Qt.Checked: continue version_name = unicode(self.versionNameEdit[number].text()) oldbible = OldBibleDB(self.mediaItem, path=self.oldpath, @@ -424,7 +424,7 @@ class BibleUpgradeForm(OpenLPWizard): self.finishButton.setVisible(False) self.cancelButton.setVisible(True) for number, filename in enumerate(self.files): - self.checkBox[number].setCheckState(2) + self.checkBox[number].setCheckState(QtCore.Qt.Checked) if os.path.exists(os.path.join(self.newpath, filename)): self.verticalWidget[number].show() self.formWidget[number].show() @@ -434,9 +434,9 @@ class BibleUpgradeForm(OpenLPWizard): self.progressBar.show() self.progressLabelAfter.hide() self.deleteCheckBox.hide() - self.deleteCheckBox.setCheckState(0) + self.deleteCheckBox.setCheckState(QtCore.Qt.Unchecked) self.deleteAllCheckBox.hide() - self.deleteAllCheckBox.setCheckState(0) + self.deleteAllCheckBox.setCheckState(QtCore.Qt.Unchecked) self.restart() settings.endGroup() @@ -464,13 +464,13 @@ class BibleUpgradeForm(OpenLPWizard): return self.maxBibles = 0 for number, file in enumerate(self.files): - if self.checkBox[number].checkState() == 2: + if self.checkBox[number].checkState() == QtCore.Qt.Checked: self.maxBibles += 1 number = 0 for biblenumber, filename in enumerate(self.files): bible_failed = False self.success[biblenumber] = False - if not self.checkBox[biblenumber].checkState() == 2: + if not self.checkBox[biblenumber].checkState() == QtCore.Qt.Checked: continue self.progressBar.reset() oldbible = OldBibleDB(self.mediaItem, path=self.oldpath, @@ -655,7 +655,8 @@ class BibleUpgradeForm(OpenLPWizard): for number, success in self.success.iteritems(): if success == True: successful_import += 1 - elif success == False and self.checkBox[number].checkState() == 2: + elif success == False and self.checkBox[number].checkState() == \ + QtCore.Qt.Checked: failed_import += 1 if failed_import > 0: failed_import_text = unicode(translate( diff --git a/openlp/plugins/bibles/forms/booknamedialog.py b/openlp/plugins/bibles/forms/booknamedialog.py index ad30812bc..027131a39 100644 --- a/openlp/plugins/bibles/forms/booknamedialog.py +++ b/openlp/plugins/bibles/forms/booknamedialog.py @@ -80,15 +80,15 @@ class Ui_BookNameDialog(object): self.verticalLayout.addWidget(self.infoLabelTestaments) self.checkBoxOldTestament = QtGui.QCheckBox(self.widget) self.checkBoxOldTestament.setObjectName(u'OldTestament') - self.checkBoxOldTestament.setCheckState(2) + self.checkBoxOldTestament.setCheckState(QtCore.Qt.Checked) self.verticalLayout.addWidget(self.checkBoxOldTestament) self.checkBoxNewTestament = QtGui.QCheckBox(self.widget) self.checkBoxNewTestament.setObjectName(u'OldTestament') - self.checkBoxNewTestament.setCheckState(2) + self.checkBoxNewTestament.setCheckState(QtCore.Qt.Checked) self.verticalLayout.addWidget(self.checkBoxNewTestament) self.checkBoxApocrypha = QtGui.QCheckBox(self.widget) self.checkBoxApocrypha.setObjectName(u'OldTestament') - self.checkBoxApocrypha.setCheckState(2) + self.checkBoxApocrypha.setCheckState(QtCore.Qt.Checked) self.verticalLayout.addWidget(self.checkBoxApocrypha) self.verticalLayout.addWidget( create_accept_reject_button_box(bookNameDialog)) diff --git a/openlp/plugins/bibles/forms/booknameform.py b/openlp/plugins/bibles/forms/booknameform.py index 4ad8270e6..425e20e41 100644 --- a/openlp/plugins/bibles/forms/booknameform.py +++ b/openlp/plugins/bibles/forms/booknameform.py @@ -79,7 +79,6 @@ class BookNameForm(QDialog, Ui_BookNameDialog): ''' Reload the Combobox items ''' - items = [] self.requestComboBox.clear() self.requestComboBox.addItem(u'') items = BiblesResourcesDB.get_books() @@ -89,26 +88,26 @@ class BookNameForm(QDialog, Ui_BookNameDialog): if book.book_reference_id == item[u'id']: addBook = False break - if self.checkBoxOldTestament.checkState() == 0 and \ - item[u'testament_id'] == 1: + if self.checkBoxOldTestament.checkState() == QtCore.Qt.Unchecked \ + and item[u'testament_id'] == 1: addBook = False - elif self.checkBoxNewTestament.checkState() == 0 and \ - item[u'testament_id'] == 2: + elif self.checkBoxNewTestament.checkState() == QtCore.Qt.Unchecked \ + and item[u'testament_id'] == 2: addBook = False - elif self.checkBoxApocrypha.checkState() == 0 and \ - item[u'testament_id'] == 3: + elif self.checkBoxApocrypha.checkState() == QtCore.Qt.Unchecked \ + and item[u'testament_id'] == 3: addBook = False - if addBook == True: + if addBook: self.requestComboBox.addItem(item[u'name']) def exec_(self, name, books, maxbooks): self.books = books log.debug(maxbooks) if maxbooks <= 27: - self.checkBoxOldTestament.setCheckState(0) - self.checkBoxApocrypha.setCheckState(0) + self.checkBoxOldTestament.setCheckState(QtCore.Qt.Unchecked) + self.checkBoxApocrypha.setCheckState(QtCore.Qt.Unchecked) elif maxbooks <= 66: - self.checkBoxApocrypha.setCheckState(0) + self.checkBoxApocrypha.setCheckState(QtCore.Qt.Unchecked) self.reloadComboBox() self.requestLabel.setText(name) return QDialog.exec_(self) diff --git a/openlp/plugins/bibles/forms/languageform.py b/openlp/plugins/bibles/forms/languageform.py index e96a005c2..6235c6385 100644 --- a/openlp/plugins/bibles/forms/languageform.py +++ b/openlp/plugins/bibles/forms/languageform.py @@ -53,7 +53,6 @@ class LanguageForm(QDialog, Ui_LanguageDialog): self.setupUi(self) def exec_(self): - items = [] self.requestComboBox.addItem(u'') items = BiblesResourcesDB.get_languages() for item in items: diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index d47d01c32..805b0e7ad 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -476,9 +476,9 @@ class BibleDB(QtCore.QObject, Manager): log.debug(u'BibleDB.get_language()') from openlp.plugins.bibles.forms import LanguageForm language = None - lang = LanguageForm(self.wizard) - if lang.exec_(): - language = unicode(lang.requestComboBox.currentText()) + language_form = LanguageForm(self.wizard) + if language_form.exec_(): + language = unicode(language_form.requestComboBox.currentText()) if not language: return False language = BiblesResourcesDB.get_language(language) @@ -550,11 +550,11 @@ class BiblesResourcesDB(QtCore.QObject, Manager): u'abbreviation, chapters FROM book_reference ORDER BY id') return [ { - u'id': book[0], - u'testament_id': book[1], - u'name': unicode(book[2]), - u'abbreviation': unicode(book[3]), - u'chapters': book[4] + u'id': book[0], + u'testament_id': book[1], + u'name': unicode(book[2]), + u'abbreviation': unicode(book[3]), + u'chapters': book[4] } for book in books ] diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index a7f8d1b7e..e0261570e 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -419,9 +419,11 @@ class HTTPBible(BibleDB): 'failed' % self.filename) return False for book in books: + if self.stop_import_flag: + break self.wizard.incrementProgressBar(unicode(translate( - 'BiblesPlugin.HTTPBible', 'Importing %s...', - 'Importing ...')) % book) + 'BiblesPlugin.HTTPBible', 'Importing %s...', + 'Importing ...')) % book) book_ref_id = self.get_book_ref_id_by_name(book, len(books), language_id) if not book_ref_id: @@ -432,7 +434,10 @@ class HTTPBible(BibleDB): log.debug(u'Book details: Name:%s; id:%s; testament_id:%s', book, book_ref_id, book_details[u'testament_id']) self.create_book(book, book_ref_id, book_details[u'testament_id']) - return True + if self.stop_import_flag: + return False + else: + return True def get_verses(self, reference_list): """ From 4ffa5c59d7188d5e27340d074d554671c55132c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Thu, 12 May 2011 22:04:33 +0200 Subject: [PATCH 039/190] change some strings to better english small fixes --- openlp/plugins/bibles/bibleplugin.py | 6 +-- .../plugins/bibles/forms/bibleupgradeform.py | 48 +++++++++---------- openlp/plugins/bibles/forms/booknamedialog.py | 2 +- openlp/plugins/bibles/forms/languagedialog.py | 2 +- openlp/plugins/bibles/lib/db.py | 2 +- 5 files changed, 30 insertions(+), 30 deletions(-) diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index b6f1a91ec..bc986e464 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -102,10 +102,10 @@ class BiblePlugin(Plugin): self.toolsUpgradeItem = QtGui.QAction(tools_menu) self.toolsUpgradeItem.setObjectName(u'toolsUpgradeItem') self.toolsUpgradeItem.setText( - translate('BiblePlugin', '&Upgrade older bible databases')) + translate('BiblePlugin', '&Upgrade Bible databases')) self.toolsUpgradeItem.setStatusTip( - translate('BiblePlugin', 'Upgrade the bible databases to addapt ' - 'the database scheme.')) + translate('BiblePlugin', 'Upgrade the Bible databases to the ' + 'latest format')) tools_menu.addAction(self.toolsUpgradeItem) QtCore.QObject.connect(self.toolsUpgradeItem, QtCore.SIGNAL(u'triggered()'), self.onToolsUpgradeItemTriggered) diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index 0dad17336..f521fffc5 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -296,7 +296,7 @@ class BibleUpgradeForm(OpenLPWizard): the wizard is progressing with its task. """ OpenLPWizard.addProgressPage(self) - self.progressLayout.setContentsMargins(48, 48, 48, 30) + self.progressLayout.setContentsMargins(48, 48, 48, 20) self.progressLabelAfter = QtGui.QLabel(self.progressPage) self.progressLabelAfter.setObjectName(u'progressLabelAfter') self.progressLayout.addWidget(self.progressLabelAfter) @@ -319,19 +319,19 @@ class BibleUpgradeForm(OpenLPWizard): translate('BiblesPlugin.UpgradeWizardForm', 'This wizard will help you to upgrade your existing Bibles from a ' 'prior version of OpenLP 2. Click the next button below to start ' - 'the process by selecting the bibles to upgrade.')) + 'the process by selecting the Bibles to upgrade.')) self.selectPage.setTitle( translate('BiblesPlugin.UpgradeWizardForm', - 'Please choose')) + 'Select Bibles')) self.selectPage.setSubTitle( translate('BiblesPlugin.UpgradeWizardForm', - 'Please choose the bibles which should be upgraded')) + 'Please select the Bibles to upgrade')) for number, bible in enumerate(self.files): self.versionNameLabel[number].setText( translate('BiblesPlugin.UpgradeWizardForm', 'Version name:')) self.versionInfoLabel[number].setText( translate('BiblesPlugin.UpgradeWizardForm', 'This ' - 'bible still exists. Please change the name or uncheck it.')) + 'Bible still exists. Please change the name or uncheck it.')) self.progressPage.setTitle(WizardStrings.Importing) self.progressPage.setSubTitle( translate('BiblesPlugin.UpgradeWizardForm', @@ -339,14 +339,15 @@ class BibleUpgradeForm(OpenLPWizard): self.progressLabel.setText(WizardStrings.Ready) self.progressBar.setFormat(u'%p%') self.deleteCheckBox.setText( - translate('BiblesPlugin.UpgradeWizardForm', 'Delete old bible ' - 'database(s) from bibles which was upgraded\nsucessful right now')) + translate('BiblesPlugin.UpgradeWizardForm', 'Delete those files ' + 'which have been successfully upgraded.')) self.deleteAllCheckBox.setText( - translate('BiblesPlugin.UpgradeWizardForm', 'Delete all old bible ' - 'database(s) (including not upgraded bibles)')) + translate('BiblesPlugin.UpgradeWizardForm', 'Delete all the old ' + 'files, including those which have not been \nupgraded.')) self.progressLabelAfter.setText( - translate('BiblesPlugin.UpgradeWizardForm', 'If OpenLP should ' - 'delete the old bible databases please choose:')) + translate('BiblesPlugin.UpgradeWizardForm', 'A copy of the ' + 'pre-upgraded Bible database files have been made. \nWould you ' + 'like to:')) def validateCurrentPage(self): """ @@ -458,8 +459,8 @@ class BibleUpgradeForm(OpenLPWizard): proxy_server = None if self.maxBibles == 0: self.progressLabel.setText( - translate('BiblesPlugin.UpgradeWizardForm', 'Sorry, but OpenLP' - ' could not find a Bible to upgrade.')) + translate('BiblesPlugin.UpgradeWizardForm', 'There are no ' + 'Bibles available to upgrade.')) self.progressBar.hide() return self.maxBibles = 0 @@ -482,13 +483,13 @@ class BibleUpgradeForm(OpenLPWizard): 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\nFailed')) % (number+1, self.maxBibles, name), - self.progressBar.maximum()-self.progressBar.value()) + self.progressBar.maximum() - self.progressBar.value()) number += 1 continue self.progressLabel.setText(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\nImporting ...')) % - (number+1, self.maxBibles, name)) + (number + 1, self.maxBibles, name)) if os.path.exists(os.path.join(self.newpath, filename)): name = unicode(self.versionNameEdit[biblenumber].text()) self.newbibles[number] = BibleDB(self.mediaItem, path=self.oldpath, @@ -528,10 +529,9 @@ class BibleUpgradeForm(OpenLPWizard): translate('BiblesPlugin.UpgradeWizardForm', 'Download Error'), translate('BiblesPlugin.UpgradeWizardForm', - 'To upgrade your webbibles a Internet connection is ' - 'necessary. Please check your Internet connection, and ' - 'if this error continues to occur please consider ' - 'reporting a bug.')) + 'To upgrade your Web Bibles an Internet connection is ' + 'required. If you have a working Internet connection ' + 'and this error still occurs, please report a bug.')) self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\nFailed')) % @@ -668,14 +668,14 @@ class BibleUpgradeForm(OpenLPWizard): if include_webbible: self.progressLabel.setText(unicode( translate('BiblesPlugin.UpgradeWizardForm', 'Upgrade %s ' - 'bible(s) successful%s.\nPlease note, that verses from ' - 'webbibles will be downloaded\non demand and thus an ' - 'internet connection is required.')) % + 'Bible(s) successful%s.\nPlease note, that verses from ' + 'Web Bibles will be downloaded\non demand and so an ' + 'Internet connection is required.')) % (successful_import, failed_import_text)) else: self.progressLabel.setText(unicode( translate('BiblesPlugin.UpgradeWizardForm', 'Upgrade %s ' - 'bible(s) successful.%s')) % (successful_import, + 'Bible(s) successful.%s')) % (successful_import, failed_import_text)) self.deleteCheckBox.show() bibles = u'' @@ -684,7 +684,7 @@ class BibleUpgradeForm(OpenLPWizard): bibles += u'\n"' + name + u'"' self.deleteCheckBox.setToolTip(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', - 'Sucessful upgraded bible(s):%s')) % bibles) + 'Successfully upgraded Bible(s):%s')) % bibles) else: self.progressLabel.setText( translate('BiblesPlugin.UpgradeWizardForm', 'Upgrade ' diff --git a/openlp/plugins/bibles/forms/booknamedialog.py b/openlp/plugins/bibles/forms/booknamedialog.py index 027131a39..20e96b922 100644 --- a/openlp/plugins/bibles/forms/booknamedialog.py +++ b/openlp/plugins/bibles/forms/booknamedialog.py @@ -105,7 +105,7 @@ class Ui_BookNameDialog(object): translate('BiblesPlugin.BookNameDialog', 'Choose Book:')) self.infoLabel.setText(translate('BiblesPlugin.BookNameDialog', 'The following books cannot be clearly attributed. \n' - 'Please choose the book it is.')) + 'Please choose which book it is.')) self.requestLabel.setText(translate('BiblesPlugin.BookNameDialog', 'Book:')) self.infoLabelTestaments.setText(translate( diff --git a/openlp/plugins/bibles/forms/languagedialog.py b/openlp/plugins/bibles/forms/languagedialog.py index c4ede8e77..7f3580279 100644 --- a/openlp/plugins/bibles/forms/languagedialog.py +++ b/openlp/plugins/bibles/forms/languagedialog.py @@ -89,6 +89,6 @@ class Ui_LanguageDialog(object): self.headlineLabel.setText( translate('BiblesPlugin.LanguageDialog', 'Choose Language:')) self.infoLabel.setText(translate('BiblesPlugin.LanguageDialog', - 'Please choose the language the bible is.')) + 'Please choose the Bible\'s language')) self.requestLabel.setText(translate('BiblesPlugin.languageDialog', 'Language:')) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 805b0e7ad..3ef73e334 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -223,7 +223,7 @@ class BibleDB(QtCore.QObject, Manager): Delete a book from the database. ``db_book`` - The book objekt. + The book object. """ log.debug(u'BibleDB.delete_book("%s")', db_book.name) if self.delete_object(Book, db_book.id): From fbd5349c2f2ce4f1d355667263da88883cb3b8e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Sun, 15 May 2011 20:42:08 +0200 Subject: [PATCH 040/190] small bugfixes hide entry in tools menu if there are no bibles to upgrade --- openlp/plugins/bibles/bibleplugin.py | 6 ++++-- openlp/plugins/bibles/forms/bibleupgradeform.py | 10 ++++++++-- openlp/plugins/bibles/lib/db.py | 1 - 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index bc986e464..fd56d9d32 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -28,7 +28,8 @@ import logging from PyQt4 import QtCore, QtGui -from openlp.core.lib import Plugin, StringContent, build_icon, translate +from openlp.core.lib import Plugin, StringContent, build_icon, translate, \ + SettingsManager from openlp.core.lib.ui import base_action, UiStrings from openlp.core.utils.actions import ActionList from openlp.plugins.bibles.lib import BibleManager, BiblesTab, BibleMediaItem @@ -59,7 +60,8 @@ class BiblePlugin(Plugin): #action_list.add_action(self.exportBibleItem, UiStrings().Export) # Set to invisible until we can export bibles self.exportBibleItem.setVisible(False) - self.toolsUpgradeItem.setVisible(True) + if SettingsManager.get_files(u'bibles', u'.sqlite'): + self.toolsUpgradeItem.setVisible(True) def finalise(self): """ diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index f521fffc5..7e55a6c41 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -422,8 +422,6 @@ class BibleUpgradeForm(OpenLPWizard): self.customSignals() self.retranslateUi() self.maxBibles = len(self.files) - self.finishButton.setVisible(False) - self.cancelButton.setVisible(True) for number, filename in enumerate(self.files): self.checkBox[number].setCheckState(QtCore.Qt.Checked) if os.path.exists(os.path.join(self.newpath, filename)): @@ -439,6 +437,8 @@ class BibleUpgradeForm(OpenLPWizard): self.deleteAllCheckBox.hide() self.deleteAllCheckBox.setCheckState(QtCore.Qt.Unchecked) self.restart() + self.finishButton.setVisible(False) + self.cancelButton.setVisible(True) settings.endGroup() def preWizard(self): @@ -469,6 +469,8 @@ class BibleUpgradeForm(OpenLPWizard): self.maxBibles += 1 number = 0 for biblenumber, filename in enumerate(self.files): + if self.stop_import_flag: + break bible_failed = False self.success[biblenumber] = False if not self.checkBox[biblenumber].checkState() == QtCore.Qt.Checked: @@ -563,6 +565,8 @@ class BibleUpgradeForm(OpenLPWizard): continue self.progressBar.setMaximum(len(books)) for book in books: + if self.stop_import_flag: + break self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\n' @@ -604,6 +608,8 @@ class BibleUpgradeForm(OpenLPWizard): books = oldbible.get_books() self.progressBar.setMaximum(len(books)) for book in books: + if self.stop_import_flag: + break self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\n' diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 3ef73e334..6452a2fca 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -799,7 +799,6 @@ class BiblesResourcesDB(QtCore.QObject, Manager): log.debug(u'BiblesResourcesDB.get_language("%s")', name) if not isinstance(name, unicode): name = unicode(name) - name = name.title() language = BiblesResourcesDB.run_sql(u'SELECT id, name, code FROM ' u'language WHERE name = ? OR code = ?', (name, name.lower())) if language: From c51d8182a60ea90d9bfb82bb53f58b0df907d6de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Wed, 18 May 2011 20:19:11 +0200 Subject: [PATCH 042/190] delete all sucessfull imported bibles by default remove the possibility to choose which bibles should be deleted after the upgrade --- .../plugins/bibles/forms/bibleupgradeform.py | 52 ++----------------- 1 file changed, 3 insertions(+), 49 deletions(-) diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index 7e55a6c41..da75d9553 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -137,13 +137,9 @@ class BibleUpgradeForm(OpenLPWizard): """ Some cleanup while finishing """ - if self.deleteCheckBox.checkState() == QtCore.Qt.Checked or \ - self.deleteAllCheckBox.checkState() == QtCore.Qt.Checked: - for number, filename in enumerate(self.files): - if self.deleteAllCheckBox.checkState() == QtCore.Qt.Checked or \ - (self.checkBox[number].checkState() == QtCore.Qt.Checked \ - and self.success[number]): - delete_file(os.path.join(self.oldpath, filename)) + for number, filename in enumerate(self.files): + if self.success[number]: + delete_file(os.path.join(self.oldpath, filename)) def customInit(self): """ @@ -290,23 +286,6 @@ class BibleUpgradeForm(OpenLPWizard): self.formWidget[number].setParent(None) self.formLayout.removeItem(self.spacerItem) - def addProgressPage(self): - """ - Add the progress page for the wizard. This page informs the user how - the wizard is progressing with its task. - """ - OpenLPWizard.addProgressPage(self) - self.progressLayout.setContentsMargins(48, 48, 48, 20) - self.progressLabelAfter = QtGui.QLabel(self.progressPage) - self.progressLabelAfter.setObjectName(u'progressLabelAfter') - self.progressLayout.addWidget(self.progressLabelAfter) - self.deleteCheckBox = QtGui.QCheckBox(self.progressPage) - self.deleteCheckBox.setObjectName(u'deleteCheckBox') - self.progressLayout.addWidget(self.deleteCheckBox) - self.deleteAllCheckBox = QtGui.QCheckBox(self.progressPage) - self.deleteAllCheckBox.setObjectName(u'deleteAllCheckBox') - self.progressLayout.addWidget(self.deleteAllCheckBox) - def retranslateUi(self): """ Allow for localisation of the bible import wizard. @@ -338,16 +317,6 @@ class BibleUpgradeForm(OpenLPWizard): 'Please wait while your Bibles are upgraded.')) self.progressLabel.setText(WizardStrings.Ready) self.progressBar.setFormat(u'%p%') - self.deleteCheckBox.setText( - translate('BiblesPlugin.UpgradeWizardForm', 'Delete those files ' - 'which have been successfully upgraded.')) - self.deleteAllCheckBox.setText( - translate('BiblesPlugin.UpgradeWizardForm', 'Delete all the old ' - 'files, including those which have not been \nupgraded.')) - self.progressLabelAfter.setText( - translate('BiblesPlugin.UpgradeWizardForm', 'A copy of the ' - 'pre-upgraded Bible database files have been made. \nWould you ' - 'like to:')) def validateCurrentPage(self): """ @@ -431,11 +400,6 @@ class BibleUpgradeForm(OpenLPWizard): self.verticalWidget[number].hide() self.formWidget[number].hide() self.progressBar.show() - self.progressLabelAfter.hide() - self.deleteCheckBox.hide() - self.deleteCheckBox.setCheckState(QtCore.Qt.Unchecked) - self.deleteAllCheckBox.hide() - self.deleteAllCheckBox.setCheckState(QtCore.Qt.Unchecked) self.restart() self.finishButton.setVisible(False) self.cancelButton.setVisible(True) @@ -683,17 +647,7 @@ class BibleUpgradeForm(OpenLPWizard): translate('BiblesPlugin.UpgradeWizardForm', 'Upgrade %s ' 'Bible(s) successful.%s')) % (successful_import, failed_import_text)) - self.deleteCheckBox.show() - bibles = u'' - for bible in self.newbibles.itervalues(): - name = bible.get_name() - bibles += u'\n"' + name + u'"' - self.deleteCheckBox.setToolTip(unicode(translate( - 'BiblesPlugin.UpgradeWizardForm', - 'Successfully upgraded Bible(s):%s')) % bibles) else: self.progressLabel.setText( translate('BiblesPlugin.UpgradeWizardForm', 'Upgrade ' 'failed.')) - self.progressLabelAfter.show() - self.deleteAllCheckBox.show() From eedecf643409da5210ef0d0cea433f40401fd12a Mon Sep 17 00:00:00 2001 From: Josh Miller Date: Sat, 21 May 2011 15:01:40 -0400 Subject: [PATCH 043/190] testing --- openlp/core/ui/generaltab.py | 16 +++++++++++++--- openlp/core/ui/slidecontroller.py | 5 +++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index 75cb8fa98..0f238ca0a 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -95,7 +95,10 @@ class GeneralTab(SettingsTab): self.settingsLayout.addRow(self.autoUnblankCheckBox) self.autoPreviewCheckBox = QtGui.QCheckBox(self.settingsGroupBox) self.autoPreviewCheckBox.setObjectName(u'autoPreviewCheckBox') - self.settingsLayout.addRow(self.autoPreviewCheckBox) + self.settingsLayout.addRow(self.autoPreviewCheckBox) + self.stopLoopCheckBox = QtGui.QCheckBox(self.settingsGroupBox) + self.stopLoopCheckBox.setObjectName(u'stopLoopCheckBox') + self.settingsLayout.addRow(self.stopLoopCheckBox) # Moved here from image tab self.timeoutLabel = QtGui.QLabel(self.settingsGroupBox) self.timeoutLabel.setObjectName(u'timeoutLabel') @@ -217,7 +220,9 @@ class GeneralTab(SettingsTab): self.autoUnblankCheckBox.setText(translate('OpenLP.GeneralTab', 'Unblank display when adding new live item')) self.autoPreviewCheckBox.setText(translate('OpenLP.GeneralTab', - 'Automatically preview next item in service')) + 'Automatically preview next item in service')) + self.stopLoopCheckBox.setText(translate('OpenLP.GeneralTab', + 'Enable slide loop')) self.timeoutLabel.setText(translate('OpenLP.GeneralTab', 'Slide loop delay:')) self.timeoutSpinBox.setSuffix(translate('OpenLP.GeneralTab', ' sec')) @@ -269,6 +274,8 @@ class GeneralTab(SettingsTab): self.checkForUpdatesCheckBox.setChecked(settings.value(u'update check', QtCore.QVariant(True)).toBool()) self.autoPreviewCheckBox.setChecked(settings.value(u'auto preview', + QtCore.QVariant(False)).toBool()) + self.stopLoopCheckBox.setChecked(settings.value(u'stop Loop', QtCore.QVariant(False)).toBool()) self.timeoutSpinBox.setValue(settings.value(u'loop delay', QtCore.QVariant(5)).toInt()[0]) @@ -312,7 +319,9 @@ class GeneralTab(SettingsTab): settings.setValue(u'auto unblank', QtCore.QVariant(self.autoUnblankCheckBox.isChecked())) settings.setValue(u'auto preview', - QtCore.QVariant(self.autoPreviewCheckBox.isChecked())) + QtCore.QVariant(self.autoPreviewCheckBox.isChecked())) + settings.setValue(u'stoploop', + QtCore.QVariant(self.stopLoopCheckBox.isChecked())) settings.setValue(u'loop delay', QtCore.QVariant(self.timeoutSpinBox.value())) settings.setValue(u'ccli number', @@ -378,3 +387,4 @@ class GeneralTab(SettingsTab): Called when the width, height, x position or y position has changed. """ self.display_changed = True + diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index c298f897f..66e5f100a 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -935,7 +935,7 @@ class SlideController(QtGui.QWidget): def onSlideSelectedNextNoloop(self): self.onSlideSelectedNext(False) - def onSlideSelectedNext(self, loop=True): + def onSlideSelectedNext(self, loop=QtCore.QSettings().setValue('stop loop', 'stoploop')): """ Go to the next slide. """ @@ -959,7 +959,7 @@ class SlideController(QtGui.QWidget): def onSlideSelectedPreviousNoloop(self): self.onSlideSelectedPrevious(False) - def onSlideSelectedPrevious(self, loop=True): + def onSlideSelectedPrevious(self, loop=QtCore.QSettings().setValue('stop loop', 'stoploop')): """ Go to the previous slide. """ @@ -1168,3 +1168,4 @@ class SlideController(QtGui.QWidget): return HideMode.Screen else: return None + From 33dcf7c439c2ee3c78a7ca54b7c6209ef3b17774 Mon Sep 17 00:00:00 2001 From: Josh Miller Date: Sun, 22 May 2011 14:49:16 -0400 Subject: [PATCH 044/190] This is a run of the 'enable slide loop' code that gushie showed me plus my checkbox code for it --- openlp/core/ui/generaltab.py | 778 +++++++++++++++--------------- openlp/core/ui/slidecontroller.py | 4 +- 2 files changed, 391 insertions(+), 391 deletions(-) diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index 0f238ca0a..e12752338 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -1,390 +1,390 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 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 # -# --------------------------------------------------------------------------- # -# 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 the GNU General Public License for # -# more details. # -# # -# You should have received a copy of the GNU General Public License along # -# with this program; if not, write to the Free Software Foundation, Inc., 59 # -# Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### -import logging - -from PyQt4 import QtCore, QtGui - -from openlp.core.lib import SettingsTab, Receiver, translate -from openlp.core.lib.ui import UiStrings -from openlp.core.ui import ScreenList - -log = logging.getLogger(__name__) - -class GeneralTab(SettingsTab): - """ - GeneralTab is the general settings tab in the settings dialog. - """ - def __init__(self, parent): - """ - Initialise the general settings tab - """ - self.screens = ScreenList.get_instance() - self.icon_path = u':/icon/openlp-logo-16x16.png' - generalTranslated = translate('GeneralTab', 'General') - SettingsTab.__init__(self, parent, u'General', generalTranslated) - - def setupUi(self): - """ - Create the user interface for the general settings tab - """ - self.setObjectName(u'GeneralTab') - SettingsTab.setupUi(self) - self.monitorGroupBox = QtGui.QGroupBox(self.leftColumn) - self.monitorGroupBox.setObjectName(u'monitorGroupBox') - self.monitorLayout = QtGui.QFormLayout(self.monitorGroupBox) - self.monitorLayout.setObjectName(u'monitorLayout') - self.monitorLabel = QtGui.QLabel(self.monitorGroupBox) - self.monitorLabel.setObjectName(u'monitorLabel') - self.monitorLayout.addRow(self.monitorLabel) - self.monitorComboBox = QtGui.QComboBox(self.monitorGroupBox) - self.monitorComboBox.setObjectName(u'monitorComboBox') - self.monitorLayout.addRow(self.monitorComboBox) - self.displayOnMonitorCheck = QtGui.QCheckBox(self.monitorGroupBox) - self.displayOnMonitorCheck.setObjectName(u'monitorComboBox') - self.monitorLayout.addRow(self.displayOnMonitorCheck) - self.leftLayout.addWidget(self.monitorGroupBox) - self.startupGroupBox = QtGui.QGroupBox(self.leftColumn) - self.startupGroupBox.setObjectName(u'startupGroupBox') - self.startupLayout = QtGui.QVBoxLayout(self.startupGroupBox) - self.startupLayout.setObjectName(u'startupLayout') - self.warningCheckBox = QtGui.QCheckBox(self.startupGroupBox) - self.warningCheckBox.setObjectName(u'warningCheckBox') - self.startupLayout.addWidget(self.warningCheckBox) - self.autoOpenCheckBox = QtGui.QCheckBox(self.startupGroupBox) - self.autoOpenCheckBox.setObjectName(u'autoOpenCheckBox') - self.startupLayout.addWidget(self.autoOpenCheckBox) - self.showSplashCheckBox = QtGui.QCheckBox(self.startupGroupBox) - self.showSplashCheckBox.setObjectName(u'showSplashCheckBox') - self.startupLayout.addWidget(self.showSplashCheckBox) - self.checkForUpdatesCheckBox = QtGui.QCheckBox(self.startupGroupBox) - self.checkForUpdatesCheckBox.setObjectName(u'checkForUpdatesCheckBox') - self.startupLayout.addWidget(self.checkForUpdatesCheckBox) - self.leftLayout.addWidget(self.startupGroupBox) - self.settingsGroupBox = QtGui.QGroupBox(self.leftColumn) - self.settingsGroupBox.setObjectName(u'settingsGroupBox') - self.settingsLayout = QtGui.QFormLayout(self.settingsGroupBox) - self.settingsLayout.setObjectName(u'settingsLayout') - self.saveCheckServiceCheckBox = QtGui.QCheckBox(self.settingsGroupBox) - self.saveCheckServiceCheckBox.setObjectName(u'saveCheckServiceCheckBox') - self.settingsLayout.addRow(self.saveCheckServiceCheckBox) - self.autoUnblankCheckBox = QtGui.QCheckBox(self.settingsGroupBox) - self.autoUnblankCheckBox.setObjectName(u'autoUnblankCheckBox') - self.settingsLayout.addRow(self.autoUnblankCheckBox) - self.autoPreviewCheckBox = QtGui.QCheckBox(self.settingsGroupBox) - self.autoPreviewCheckBox.setObjectName(u'autoPreviewCheckBox') - self.settingsLayout.addRow(self.autoPreviewCheckBox) - self.stopLoopCheckBox = QtGui.QCheckBox(self.settingsGroupBox) - self.stopLoopCheckBox.setObjectName(u'stopLoopCheckBox') - self.settingsLayout.addRow(self.stopLoopCheckBox) - # Moved here from image tab - self.timeoutLabel = QtGui.QLabel(self.settingsGroupBox) - self.timeoutLabel.setObjectName(u'timeoutLabel') - self.timeoutSpinBox = QtGui.QSpinBox(self.settingsGroupBox) - self.timeoutSpinBox.setObjectName(u'timeoutSpinBox') - self.timeoutSpinBox.setRange(1, 180) - self.settingsLayout.addRow(self.timeoutLabel, self.timeoutSpinBox) - self.leftLayout.addWidget(self.settingsGroupBox) - self.leftLayout.addStretch() - self.ccliGroupBox = QtGui.QGroupBox(self.rightColumn) - self.ccliGroupBox.setObjectName(u'ccliGroupBox') - self.ccliLayout = QtGui.QFormLayout(self.ccliGroupBox) - self.ccliLayout.setObjectName(u'ccliLayout') - self.numberLabel = QtGui.QLabel(self.ccliGroupBox) - self.numberLabel.setObjectName(u'numberLabel') - self.numberEdit = QtGui.QLineEdit(self.ccliGroupBox) - self.numberEdit.setValidator(QtGui.QIntValidator()) - self.numberEdit.setObjectName(u'numberEdit') - self.ccliLayout.addRow(self.numberLabel, self.numberEdit) - self.usernameLabel = QtGui.QLabel(self.ccliGroupBox) - self.usernameLabel.setObjectName(u'usernameLabel') - self.usernameEdit = QtGui.QLineEdit(self.ccliGroupBox) - self.usernameEdit.setObjectName(u'usernameEdit') - self.ccliLayout.addRow(self.usernameLabel, self.usernameEdit) - self.passwordLabel = QtGui.QLabel(self.ccliGroupBox) - self.passwordLabel.setObjectName(u'passwordLabel') - self.passwordEdit = QtGui.QLineEdit(self.ccliGroupBox) - self.passwordEdit.setEchoMode(QtGui.QLineEdit.Password) - self.passwordEdit.setObjectName(u'passwordEdit') - self.ccliLayout.addRow(self.passwordLabel, self.passwordEdit) - self.rightLayout.addWidget(self.ccliGroupBox) - # Moved here from display tab - self.displayGroupBox = QtGui.QGroupBox(self.rightColumn) - self.displayGroupBox.setObjectName(u'displayGroupBox') - self.displayLayout = QtGui.QGridLayout(self.displayGroupBox) - self.displayLayout.setObjectName(u'displayLayout') - self.overrideCheckBox = QtGui.QCheckBox(self.displayGroupBox) - self.overrideCheckBox.setObjectName(u'overrideCheckBox') - self.displayLayout.addWidget(self.overrideCheckBox, 2, 0, 1, 4) - self.rightLayout.addWidget(self.displayGroupBox) - # Custom position - self.customXLabel = QtGui.QLabel(self.displayGroupBox) - self.customXLabel.setObjectName(u'customXLabel') - self.displayLayout.addWidget(self.customXLabel, 3, 0) - self.customXValueEdit = QtGui.QSpinBox(self.displayGroupBox) - self.customXValueEdit.setObjectName(u'customXValueEdit') - self.customXValueEdit.setRange(-9999, 9999) - self.displayLayout.addWidget(self.customXValueEdit, 4, 0) - self.customYLabel = QtGui.QLabel(self.displayGroupBox) - self.customYLabel.setObjectName(u'customYLabel') - self.displayLayout.addWidget(self.customYLabel, 3, 1) - self.customYValueEdit = QtGui.QSpinBox(self.displayGroupBox) - self.customYValueEdit.setObjectName(u'customYValueEdit') - self.customYValueEdit.setRange(-9999, 9999) - self.displayLayout.addWidget(self.customYValueEdit, 4, 1) - self.customWidthLabel = QtGui.QLabel(self.displayGroupBox) - self.customWidthLabel.setObjectName(u'customWidthLabel') - self.displayLayout.addWidget(self.customWidthLabel, 3, 2) - self.customWidthValueEdit = QtGui.QSpinBox(self.displayGroupBox) - self.customWidthValueEdit.setObjectName(u'customWidthValueEdit') - self.customWidthValueEdit.setMaximum(9999) - self.displayLayout.addWidget(self.customWidthValueEdit, 4, 2) - self.customHeightLabel = QtGui.QLabel(self.displayGroupBox) - self.customHeightLabel.setObjectName(u'customHeightLabel') - self.displayLayout.addWidget(self.customHeightLabel, 3, 3) - self.customHeightValueEdit = QtGui.QSpinBox(self.displayGroupBox) - self.customHeightValueEdit.setObjectName(u'customHeightValueEdit') - self.customHeightValueEdit.setMaximum(9999) - self.displayLayout.addWidget(self.customHeightValueEdit, 4, 3) - self.rightLayout.addWidget(self.displayGroupBox) - self.rightLayout.addStretch() - # Signals and slots - QtCore.QObject.connect(self.overrideCheckBox, - QtCore.SIGNAL(u'toggled(bool)'), self.onOverrideCheckBoxToggled) - QtCore.QObject.connect(self.customHeightValueEdit, - QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged) - QtCore.QObject.connect(self.customWidthValueEdit, - QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged) - QtCore.QObject.connect(self.customYValueEdit, - QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged) - QtCore.QObject.connect(self.customXValueEdit, - QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged) - QtCore.QObject.connect(self.monitorComboBox, - QtCore.SIGNAL(u'currentIndexChanged(int)'), self.onDisplayChanged) - # 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) - # Remove for now - self.usernameLabel.setVisible(False) - self.usernameEdit.setVisible(False) - self.passwordLabel.setVisible(False) - self.passwordEdit.setVisible(False) - - def retranslateUi(self): - """ - Translate the general settings tab to the currently selected language - """ - self.tabTitleVisible = translate('OpenLP.GeneralTab', 'General') - self.monitorGroupBox.setTitle(translate('OpenLP.GeneralTab', - 'Monitors')) - self.monitorLabel.setText(translate('OpenLP.GeneralTab', - 'Select monitor for output display:')) - self.displayOnMonitorCheck.setText( - translate('OpenLP.GeneralTab', 'Display if a single screen')) - self.startupGroupBox.setTitle( - translate('OpenLP.GeneralTab', 'Application Startup')) - self.warningCheckBox.setText( - translate('OpenLP.GeneralTab', 'Show blank screen warning')) - self.autoOpenCheckBox.setText(translate('OpenLP.GeneralTab', - 'Automatically open the last service')) - self.showSplashCheckBox.setText( - translate('OpenLP.GeneralTab', 'Show the splash screen')) - self.checkForUpdatesCheckBox.setText( - translate('OpenLP.GeneralTab', 'Check for updates to OpenLP')) - self.settingsGroupBox.setTitle( - translate('OpenLP.GeneralTab', 'Application Settings')) - self.saveCheckServiceCheckBox.setText(translate('OpenLP.GeneralTab', - 'Prompt to save before starting a new service')) - self.autoUnblankCheckBox.setText(translate('OpenLP.GeneralTab', - 'Unblank display when adding new live item')) - self.autoPreviewCheckBox.setText(translate('OpenLP.GeneralTab', - 'Automatically preview next item in service')) - self.stopLoopCheckBox.setText(translate('OpenLP.GeneralTab', - 'Enable slide loop')) - self.timeoutLabel.setText(translate('OpenLP.GeneralTab', - 'Slide loop delay:')) - self.timeoutSpinBox.setSuffix(translate('OpenLP.GeneralTab', ' sec')) - self.ccliGroupBox.setTitle( - translate('OpenLP.GeneralTab', 'CCLI Details')) - self.numberLabel.setText(UiStrings().CCLINumberLabel) - self.usernameLabel.setText( - translate('OpenLP.GeneralTab', 'SongSelect username:')) - self.passwordLabel.setText( - translate('OpenLP.GeneralTab', 'SongSelect password:')) - # Moved from display tab - self.displayGroupBox.setTitle( - translate('OpenLP.GeneralTab', 'Display Position')) - self.overrideCheckBox.setText(translate('OpenLP.GeneralTab', - 'Override display position')) - self.customXLabel.setText(translate('OpenLP.GeneralTab', 'X')) - self.customYLabel.setText(translate('OpenLP.GeneralTab', 'Y')) - self.customHeightLabel.setText(translate('OpenLP.GeneralTab', 'Height')) - self.customWidthLabel.setText(translate('OpenLP.GeneralTab', 'Width')) - - def load(self): - """ - Load the settings to populate the form - """ - settings = QtCore.QSettings() - settings.beginGroup(self.settingsSection) - self.monitorComboBox.clear() - self.monitorComboBox.addItems(self.screens.get_screen_list()) - monitorNumber = settings.value(u'monitor', - QtCore.QVariant(self.screens.display_count - 1)).toInt()[0] - self.monitorComboBox.setCurrentIndex(monitorNumber) - self.numberEdit.setText(unicode(settings.value( - u'ccli number', QtCore.QVariant(u'')).toString())) - self.usernameEdit.setText(unicode(settings.value( - u'songselect username', QtCore.QVariant(u'')).toString())) - self.passwordEdit.setText(unicode(settings.value( - u'songselect password', QtCore.QVariant(u'')).toString())) - self.saveCheckServiceCheckBox.setChecked(settings.value(u'save prompt', - QtCore.QVariant(False)).toBool()) - self.autoUnblankCheckBox.setChecked(settings.value(u'auto unblank', - QtCore.QVariant(False)).toBool()) - self.displayOnMonitorCheck.setChecked(self.screens.display) - self.warningCheckBox.setChecked(settings.value(u'blank warning', - QtCore.QVariant(False)).toBool()) - self.autoOpenCheckBox.setChecked(settings.value(u'auto open', - QtCore.QVariant(False)).toBool()) - self.showSplashCheckBox.setChecked(settings.value(u'show splash', - QtCore.QVariant(True)).toBool()) - self.checkForUpdatesCheckBox.setChecked(settings.value(u'update check', - QtCore.QVariant(True)).toBool()) - self.autoPreviewCheckBox.setChecked(settings.value(u'auto preview', - QtCore.QVariant(False)).toBool()) - self.stopLoopCheckBox.setChecked(settings.value(u'stop Loop', - QtCore.QVariant(False)).toBool()) - self.timeoutSpinBox.setValue(settings.value(u'loop delay', - QtCore.QVariant(5)).toInt()[0]) - self.overrideCheckBox.setChecked(settings.value(u'override position', - QtCore.QVariant(False)).toBool()) - self.customXValueEdit.setValue(settings.value(u'x position', - QtCore.QVariant(self.screens.current[u'size'].x())).toInt()[0]) - self.customYValueEdit.setValue(settings.value(u'y position', - QtCore.QVariant(self.screens.current[u'size'].y())).toInt()[0]) - self.customHeightValueEdit.setValue(settings.value(u'height', - QtCore.QVariant(self.screens.current[u'size'].height())).toInt()[0]) - self.customWidthValueEdit.setValue(settings.value(u'width', - QtCore.QVariant(self.screens.current[u'size'].width())).toInt()[0]) - settings.endGroup() - self.customXValueEdit.setEnabled(self.overrideCheckBox.isChecked()) - self.customYValueEdit.setEnabled(self.overrideCheckBox.isChecked()) - self.customHeightValueEdit.setEnabled(self.overrideCheckBox.isChecked()) - self.customWidthValueEdit.setEnabled(self.overrideCheckBox.isChecked()) - self.display_changed = False - - def save(self): - """ - Save the settings from the form - """ - settings = QtCore.QSettings() - settings.beginGroup(self.settingsSection) - settings.setValue(u'monitor', - QtCore.QVariant(self.monitorComboBox.currentIndex())) - settings.setValue(u'display on monitor', - QtCore.QVariant(self.displayOnMonitorCheck.isChecked())) - settings.setValue(u'blank warning', - QtCore.QVariant(self.warningCheckBox.isChecked())) - settings.setValue(u'auto open', - QtCore.QVariant(self.autoOpenCheckBox.isChecked())) - settings.setValue(u'show splash', - QtCore.QVariant(self.showSplashCheckBox.isChecked())) - settings.setValue(u'update check', - QtCore.QVariant(self.checkForUpdatesCheckBox.isChecked())) - settings.setValue(u'save prompt', - QtCore.QVariant(self.saveCheckServiceCheckBox.isChecked())) - settings.setValue(u'auto unblank', - QtCore.QVariant(self.autoUnblankCheckBox.isChecked())) - settings.setValue(u'auto preview', - QtCore.QVariant(self.autoPreviewCheckBox.isChecked())) - settings.setValue(u'stoploop', - QtCore.QVariant(self.stopLoopCheckBox.isChecked())) - settings.setValue(u'loop delay', - QtCore.QVariant(self.timeoutSpinBox.value())) - settings.setValue(u'ccli number', - QtCore.QVariant(self.numberEdit.displayText())) - settings.setValue(u'songselect username', - QtCore.QVariant(self.usernameEdit.displayText())) - settings.setValue(u'songselect password', - QtCore.QVariant(self.passwordEdit.displayText())) - settings.setValue(u'x position', - QtCore.QVariant(self.customXValueEdit.value())) - settings.setValue(u'y position', - QtCore.QVariant(self.customYValueEdit.value())) - settings.setValue(u'height', - QtCore.QVariant(self.customHeightValueEdit.value())) - settings.setValue(u'width', - QtCore.QVariant(self.customWidthValueEdit.value())) - settings.setValue(u'override position', - QtCore.QVariant(self.overrideCheckBox.isChecked())) - settings.endGroup() - # On save update the screens as well - self.postSetUp(True) - - def postSetUp(self, postUpdate=False): - """ - Apply settings after settings tab has loaded and most of the - system so must be delayed - """ - Receiver.send_message(u'slidecontroller_live_spin_delay', - self.timeoutSpinBox.value()) - # Do not continue on start up. - if not postUpdate: - return - self.screens.set_current_display(self.monitorComboBox.currentIndex()) - self.screens.display = self.displayOnMonitorCheck.isChecked() - self.screens.override[u'size'] = QtCore.QRect( - self.customXValueEdit.value(), - self.customYValueEdit.value(), - self.customWidthValueEdit.value(), - self.customHeightValueEdit.value()) - if self.overrideCheckBox.isChecked(): - self.screens.set_override_display() - else: - self.screens.reset_current_display() - if self.display_changed: - Receiver.send_message(u'config_screen_changed') - self.display_changed = False - - def onOverrideCheckBoxToggled(self, checked): - """ - Toggle screen state depending on check box state. - - ``checked`` - The state of the check box (boolean). - """ - self.customXValueEdit.setEnabled(checked) - self.customYValueEdit.setEnabled(checked) - self.customHeightValueEdit.setEnabled(checked) - self.customWidthValueEdit.setEnabled(checked) - self.display_changed = True - - def onDisplayChanged(self): - """ - Called when the width, height, x position or y position has changed. - """ - self.display_changed = True +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2011 Raoul Snyman # +# Portions copyright (c) 2008-2011 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 # +# --------------------------------------------------------------------------- # +# 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 the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### +import logging + +from PyQt4 import QtCore, QtGui + +from openlp.core.lib import SettingsTab, Receiver, translate +from openlp.core.lib.ui import UiStrings +from openlp.core.ui import ScreenList + +log = logging.getLogger(__name__) + +class GeneralTab(SettingsTab): + """ + GeneralTab is the general settings tab in the settings dialog. + """ + def __init__(self, parent): + """ + Initialise the general settings tab + """ + self.screens = ScreenList.get_instance() + self.icon_path = u':/icon/openlp-logo-16x16.png' + generalTranslated = translate('GeneralTab', 'General') + SettingsTab.__init__(self, parent, u'General', generalTranslated) + + def setupUi(self): + """ + Create the user interface for the general settings tab + """ + self.setObjectName(u'GeneralTab') + SettingsTab.setupUi(self) + self.monitorGroupBox = QtGui.QGroupBox(self.leftColumn) + self.monitorGroupBox.setObjectName(u'monitorGroupBox') + self.monitorLayout = QtGui.QFormLayout(self.monitorGroupBox) + self.monitorLayout.setObjectName(u'monitorLayout') + self.monitorLabel = QtGui.QLabel(self.monitorGroupBox) + self.monitorLabel.setObjectName(u'monitorLabel') + self.monitorLayout.addRow(self.monitorLabel) + self.monitorComboBox = QtGui.QComboBox(self.monitorGroupBox) + self.monitorComboBox.setObjectName(u'monitorComboBox') + self.monitorLayout.addRow(self.monitorComboBox) + self.displayOnMonitorCheck = QtGui.QCheckBox(self.monitorGroupBox) + self.displayOnMonitorCheck.setObjectName(u'monitorComboBox') + self.monitorLayout.addRow(self.displayOnMonitorCheck) + self.leftLayout.addWidget(self.monitorGroupBox) + self.startupGroupBox = QtGui.QGroupBox(self.leftColumn) + self.startupGroupBox.setObjectName(u'startupGroupBox') + self.startupLayout = QtGui.QVBoxLayout(self.startupGroupBox) + self.startupLayout.setObjectName(u'startupLayout') + self.warningCheckBox = QtGui.QCheckBox(self.startupGroupBox) + self.warningCheckBox.setObjectName(u'warningCheckBox') + self.startupLayout.addWidget(self.warningCheckBox) + self.autoOpenCheckBox = QtGui.QCheckBox(self.startupGroupBox) + self.autoOpenCheckBox.setObjectName(u'autoOpenCheckBox') + self.startupLayout.addWidget(self.autoOpenCheckBox) + self.showSplashCheckBox = QtGui.QCheckBox(self.startupGroupBox) + self.showSplashCheckBox.setObjectName(u'showSplashCheckBox') + self.startupLayout.addWidget(self.showSplashCheckBox) + self.checkForUpdatesCheckBox = QtGui.QCheckBox(self.startupGroupBox) + self.checkForUpdatesCheckBox.setObjectName(u'checkForUpdatesCheckBox') + self.startupLayout.addWidget(self.checkForUpdatesCheckBox) + self.leftLayout.addWidget(self.startupGroupBox) + self.settingsGroupBox = QtGui.QGroupBox(self.leftColumn) + self.settingsGroupBox.setObjectName(u'settingsGroupBox') + self.settingsLayout = QtGui.QFormLayout(self.settingsGroupBox) + self.settingsLayout.setObjectName(u'settingsLayout') + self.saveCheckServiceCheckBox = QtGui.QCheckBox(self.settingsGroupBox) + self.saveCheckServiceCheckBox.setObjectName(u'saveCheckServiceCheckBox') + self.settingsLayout.addRow(self.saveCheckServiceCheckBox) + self.autoUnblankCheckBox = QtGui.QCheckBox(self.settingsGroupBox) + self.autoUnblankCheckBox.setObjectName(u'autoUnblankCheckBox') + self.settingsLayout.addRow(self.autoUnblankCheckBox) + self.autoPreviewCheckBox = QtGui.QCheckBox(self.settingsGroupBox) + self.autoPreviewCheckBox.setObjectName(u'autoPreviewCheckBox') + self.settingsLayout.addRow(self.autoPreviewCheckBox) + self.enableLoopCheckbox = QtGui.QCheckBox(self.settingsGroupBox) + self.enableLoopCheckbox.setObjectName(u'enableLoopCheckbox') + self.settingsLayout.addRow(self.enableLoopCheckbox) + # Moved here from image tab + self.timeoutLabel = QtGui.QLabel(self.settingsGroupBox) + self.timeoutLabel.setObjectName(u'timeoutLabel') + self.timeoutSpinBox = QtGui.QSpinBox(self.settingsGroupBox) + self.timeoutSpinBox.setObjectName(u'timeoutSpinBox') + self.timeoutSpinBox.setRange(1, 180) + self.settingsLayout.addRow(self.timeoutLabel, self.timeoutSpinBox) + self.leftLayout.addWidget(self.settingsGroupBox) + self.leftLayout.addStretch() + self.ccliGroupBox = QtGui.QGroupBox(self.rightColumn) + self.ccliGroupBox.setObjectName(u'ccliGroupBox') + self.ccliLayout = QtGui.QFormLayout(self.ccliGroupBox) + self.ccliLayout.setObjectName(u'ccliLayout') + self.numberLabel = QtGui.QLabel(self.ccliGroupBox) + self.numberLabel.setObjectName(u'numberLabel') + self.numberEdit = QtGui.QLineEdit(self.ccliGroupBox) + self.numberEdit.setValidator(QtGui.QIntValidator()) + self.numberEdit.setObjectName(u'numberEdit') + self.ccliLayout.addRow(self.numberLabel, self.numberEdit) + self.usernameLabel = QtGui.QLabel(self.ccliGroupBox) + self.usernameLabel.setObjectName(u'usernameLabel') + self.usernameEdit = QtGui.QLineEdit(self.ccliGroupBox) + self.usernameEdit.setObjectName(u'usernameEdit') + self.ccliLayout.addRow(self.usernameLabel, self.usernameEdit) + self.passwordLabel = QtGui.QLabel(self.ccliGroupBox) + self.passwordLabel.setObjectName(u'passwordLabel') + self.passwordEdit = QtGui.QLineEdit(self.ccliGroupBox) + self.passwordEdit.setEchoMode(QtGui.QLineEdit.Password) + self.passwordEdit.setObjectName(u'passwordEdit') + self.ccliLayout.addRow(self.passwordLabel, self.passwordEdit) + self.rightLayout.addWidget(self.ccliGroupBox) + # Moved here from display tab + self.displayGroupBox = QtGui.QGroupBox(self.rightColumn) + self.displayGroupBox.setObjectName(u'displayGroupBox') + self.displayLayout = QtGui.QGridLayout(self.displayGroupBox) + self.displayLayout.setObjectName(u'displayLayout') + self.overrideCheckBox = QtGui.QCheckBox(self.displayGroupBox) + self.overrideCheckBox.setObjectName(u'overrideCheckBox') + self.displayLayout.addWidget(self.overrideCheckBox, 2, 0, 1, 4) + self.rightLayout.addWidget(self.displayGroupBox) + # Custom position + self.customXLabel = QtGui.QLabel(self.displayGroupBox) + self.customXLabel.setObjectName(u'customXLabel') + self.displayLayout.addWidget(self.customXLabel, 3, 0) + self.customXValueEdit = QtGui.QSpinBox(self.displayGroupBox) + self.customXValueEdit.setObjectName(u'customXValueEdit') + self.customXValueEdit.setRange(-9999, 9999) + self.displayLayout.addWidget(self.customXValueEdit, 4, 0) + self.customYLabel = QtGui.QLabel(self.displayGroupBox) + self.customYLabel.setObjectName(u'customYLabel') + self.displayLayout.addWidget(self.customYLabel, 3, 1) + self.customYValueEdit = QtGui.QSpinBox(self.displayGroupBox) + self.customYValueEdit.setObjectName(u'customYValueEdit') + self.customYValueEdit.setRange(-9999, 9999) + self.displayLayout.addWidget(self.customYValueEdit, 4, 1) + self.customWidthLabel = QtGui.QLabel(self.displayGroupBox) + self.customWidthLabel.setObjectName(u'customWidthLabel') + self.displayLayout.addWidget(self.customWidthLabel, 3, 2) + self.customWidthValueEdit = QtGui.QSpinBox(self.displayGroupBox) + self.customWidthValueEdit.setObjectName(u'customWidthValueEdit') + self.customWidthValueEdit.setMaximum(9999) + self.displayLayout.addWidget(self.customWidthValueEdit, 4, 2) + self.customHeightLabel = QtGui.QLabel(self.displayGroupBox) + self.customHeightLabel.setObjectName(u'customHeightLabel') + self.displayLayout.addWidget(self.customHeightLabel, 3, 3) + self.customHeightValueEdit = QtGui.QSpinBox(self.displayGroupBox) + self.customHeightValueEdit.setObjectName(u'customHeightValueEdit') + self.customHeightValueEdit.setMaximum(9999) + self.displayLayout.addWidget(self.customHeightValueEdit, 4, 3) + self.rightLayout.addWidget(self.displayGroupBox) + self.rightLayout.addStretch() + # Signals and slots + QtCore.QObject.connect(self.overrideCheckBox, + QtCore.SIGNAL(u'toggled(bool)'), self.onOverrideCheckBoxToggled) + QtCore.QObject.connect(self.customHeightValueEdit, + QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged) + QtCore.QObject.connect(self.customWidthValueEdit, + QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged) + QtCore.QObject.connect(self.customYValueEdit, + QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged) + QtCore.QObject.connect(self.customXValueEdit, + QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged) + QtCore.QObject.connect(self.monitorComboBox, + QtCore.SIGNAL(u'currentIndexChanged(int)'), self.onDisplayChanged) + # 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) + # Remove for now + self.usernameLabel.setVisible(False) + self.usernameEdit.setVisible(False) + self.passwordLabel.setVisible(False) + self.passwordEdit.setVisible(False) + + def retranslateUi(self): + """ + Translate the general settings tab to the currently selected language + """ + self.tabTitleVisible = translate('OpenLP.GeneralTab', 'General') + self.monitorGroupBox.setTitle(translate('OpenLP.GeneralTab', + 'Monitors')) + self.monitorLabel.setText(translate('OpenLP.GeneralTab', + 'Select monitor for output display:')) + self.displayOnMonitorCheck.setText( + translate('OpenLP.GeneralTab', 'Display if a single screen')) + self.startupGroupBox.setTitle( + translate('OpenLP.GeneralTab', 'Application Startup')) + self.warningCheckBox.setText( + translate('OpenLP.GeneralTab', 'Show blank screen warning')) + self.autoOpenCheckBox.setText(translate('OpenLP.GeneralTab', + 'Automatically open the last service')) + self.showSplashCheckBox.setText( + translate('OpenLP.GeneralTab', 'Show the splash screen')) + self.checkForUpdatesCheckBox.setText( + translate('OpenLP.GeneralTab', 'Check for updates to OpenLP')) + self.settingsGroupBox.setTitle( + translate('OpenLP.GeneralTab', 'Application Settings')) + self.saveCheckServiceCheckBox.setText(translate('OpenLP.GeneralTab', + 'Prompt to save before starting a new service')) + self.autoUnblankCheckBox.setText(translate('OpenLP.GeneralTab', + 'Unblank display when adding new live item')) + self.autoPreviewCheckBox.setText(translate('OpenLP.GeneralTab', + 'Automatically preview next item in service')) + self.enableLoopCheckbox.setText(translate('OpenLP.GeneralTab', + 'Enable slide loop')) + self.timeoutLabel.setText(translate('OpenLP.GeneralTab', + 'Slide loop delay:')) + self.timeoutSpinBox.setSuffix(translate('OpenLP.GeneralTab', ' sec')) + self.ccliGroupBox.setTitle( + translate('OpenLP.GeneralTab', 'CCLI Details')) + self.numberLabel.setText(UiStrings().CCLINumberLabel) + self.usernameLabel.setText( + translate('OpenLP.GeneralTab', 'SongSelect username:')) + self.passwordLabel.setText( + translate('OpenLP.GeneralTab', 'SongSelect password:')) + # Moved from display tab + self.displayGroupBox.setTitle( + translate('OpenLP.GeneralTab', 'Display Position')) + self.overrideCheckBox.setText(translate('OpenLP.GeneralTab', + 'Override display position')) + self.customXLabel.setText(translate('OpenLP.GeneralTab', 'X')) + self.customYLabel.setText(translate('OpenLP.GeneralTab', 'Y')) + self.customHeightLabel.setText(translate('OpenLP.GeneralTab', 'Height')) + self.customWidthLabel.setText(translate('OpenLP.GeneralTab', 'Width')) + + def load(self): + """ + Load the settings to populate the form + """ + settings = QtCore.QSettings() + settings.beginGroup(self.settingsSection) + self.monitorComboBox.clear() + self.monitorComboBox.addItems(self.screens.get_screen_list()) + monitorNumber = settings.value(u'monitor', + QtCore.QVariant(self.screens.display_count - 1)).toInt()[0] + self.monitorComboBox.setCurrentIndex(monitorNumber) + self.numberEdit.setText(unicode(settings.value( + u'ccli number', QtCore.QVariant(u'')).toString())) + self.usernameEdit.setText(unicode(settings.value( + u'songselect username', QtCore.QVariant(u'')).toString())) + self.passwordEdit.setText(unicode(settings.value( + u'songselect password', QtCore.QVariant(u'')).toString())) + self.saveCheckServiceCheckBox.setChecked(settings.value(u'save prompt', + QtCore.QVariant(False)).toBool()) + self.autoUnblankCheckBox.setChecked(settings.value(u'auto unblank', + QtCore.QVariant(False)).toBool()) + self.displayOnMonitorCheck.setChecked(self.screens.display) + self.warningCheckBox.setChecked(settings.value(u'blank warning', + QtCore.QVariant(False)).toBool()) + self.autoOpenCheckBox.setChecked(settings.value(u'auto open', + QtCore.QVariant(False)).toBool()) + self.showSplashCheckBox.setChecked(settings.value(u'show splash', + QtCore.QVariant(True)).toBool()) + self.checkForUpdatesCheckBox.setChecked(settings.value(u'update check', + QtCore.QVariant(True)).toBool()) + self.autoPreviewCheckBox.setChecked(settings.value(u'auto preview', + QtCore.QVariant(False)).toBool()) + self.enableLoopCheckbox.setChecked(settings.value(u'enable slide loop', + QtCore.QVariant(True)).toBool()) + self.timeoutSpinBox.setValue(settings.value(u'loop delay', + QtCore.QVariant(5)).toInt()[0]) + self.overrideCheckBox.setChecked(settings.value(u'override position', + QtCore.QVariant(False)).toBool()) + self.customXValueEdit.setValue(settings.value(u'x position', + QtCore.QVariant(self.screens.current[u'size'].x())).toInt()[0]) + self.customYValueEdit.setValue(settings.value(u'y position', + QtCore.QVariant(self.screens.current[u'size'].y())).toInt()[0]) + self.customHeightValueEdit.setValue(settings.value(u'height', + QtCore.QVariant(self.screens.current[u'size'].height())).toInt()[0]) + self.customWidthValueEdit.setValue(settings.value(u'width', + QtCore.QVariant(self.screens.current[u'size'].width())).toInt()[0]) + settings.endGroup() + self.customXValueEdit.setEnabled(self.overrideCheckBox.isChecked()) + self.customYValueEdit.setEnabled(self.overrideCheckBox.isChecked()) + self.customHeightValueEdit.setEnabled(self.overrideCheckBox.isChecked()) + self.customWidthValueEdit.setEnabled(self.overrideCheckBox.isChecked()) + self.display_changed = False + + def save(self): + """ + Save the settings from the form + """ + settings = QtCore.QSettings() + settings.beginGroup(self.settingsSection) + settings.setValue(u'monitor', + QtCore.QVariant(self.monitorComboBox.currentIndex())) + settings.setValue(u'display on monitor', + QtCore.QVariant(self.displayOnMonitorCheck.isChecked())) + settings.setValue(u'blank warning', + QtCore.QVariant(self.warningCheckBox.isChecked())) + settings.setValue(u'auto open', + QtCore.QVariant(self.autoOpenCheckBox.isChecked())) + settings.setValue(u'show splash', + QtCore.QVariant(self.showSplashCheckBox.isChecked())) + settings.setValue(u'update check', + QtCore.QVariant(self.checkForUpdatesCheckBox.isChecked())) + settings.setValue(u'save prompt', + QtCore.QVariant(self.saveCheckServiceCheckBox.isChecked())) + settings.setValue(u'auto unblank', + QtCore.QVariant(self.autoUnblankCheckBox.isChecked())) + settings.setValue(u'auto preview', + QtCore.QVariant(self.autoPreviewCheckBox.isChecked())) + settings.setValue(u'Enable slide loop', + QtCore.QVariant(self.enableLoopCheckbox.isChecked())) + settings.setValue(u'loop delay', + QtCore.QVariant(self.timeoutSpinBox.value())) + settings.setValue(u'ccli number', + QtCore.QVariant(self.numberEdit.displayText())) + settings.setValue(u'songselect username', + QtCore.QVariant(self.usernameEdit.displayText())) + settings.setValue(u'songselect password', + QtCore.QVariant(self.passwordEdit.displayText())) + settings.setValue(u'x position', + QtCore.QVariant(self.customXValueEdit.value())) + settings.setValue(u'y position', + QtCore.QVariant(self.customYValueEdit.value())) + settings.setValue(u'height', + QtCore.QVariant(self.customHeightValueEdit.value())) + settings.setValue(u'width', + QtCore.QVariant(self.customWidthValueEdit.value())) + settings.setValue(u'override position', + QtCore.QVariant(self.overrideCheckBox.isChecked())) + settings.endGroup() + # On save update the screens as well + self.postSetUp(True) + + def postSetUp(self, postUpdate=False): + """ + Apply settings after settings tab has loaded and most of the + system so must be delayed + """ + Receiver.send_message(u'slidecontroller_live_spin_delay', + self.timeoutSpinBox.value()) + # Do not continue on start up. + if not postUpdate: + return + self.screens.set_current_display(self.monitorComboBox.currentIndex()) + self.screens.display = self.displayOnMonitorCheck.isChecked() + self.screens.override[u'size'] = QtCore.QRect( + self.customXValueEdit.value(), + self.customYValueEdit.value(), + self.customWidthValueEdit.value(), + self.customHeightValueEdit.value()) + if self.overrideCheckBox.isChecked(): + self.screens.set_override_display() + else: + self.screens.reset_current_display() + if self.display_changed: + Receiver.send_message(u'config_screen_changed') + self.display_changed = False + + def onOverrideCheckBoxToggled(self, checked): + """ + Toggle screen state depending on check box state. + + ``checked`` + The state of the check box (boolean). + """ + self.customXValueEdit.setEnabled(checked) + self.customYValueEdit.setEnabled(checked) + self.customHeightValueEdit.setEnabled(checked) + self.customWidthValueEdit.setEnabled(checked) + self.display_changed = True + + def onDisplayChanged(self): + """ + Called when the width, height, x position or y position has changed. + """ + self.display_changed = True diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 66e5f100a..899a283b3 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -935,7 +935,7 @@ class SlideController(QtGui.QWidget): def onSlideSelectedNextNoloop(self): self.onSlideSelectedNext(False) - def onSlideSelectedNext(self, loop=QtCore.QSettings().setValue('stop loop', 'stoploop')): + def onSlideSelectedNext(self, loop=(not QtCore.QSettings().value(u'enable slide loop', QtCore.QVariant(True)).toBool())): """ Go to the next slide. """ @@ -959,7 +959,7 @@ class SlideController(QtGui.QWidget): def onSlideSelectedPreviousNoloop(self): self.onSlideSelectedPrevious(False) - def onSlideSelectedPrevious(self, loop=QtCore.QSettings().setValue('stop loop', 'stoploop')): + def onSlideSelectedPrevious(self, loop=(not QtCore.QSettings().value(u'enable slide loop', QtCore.QVariant(True)).toBool())): """ Go to the previous slide. """ From 6d577395a4ab0a62aabac9e83907b013d2269787 Mon Sep 17 00:00:00 2001 From: Josh Miller Date: Sun, 22 May 2011 17:39:37 -0400 Subject: [PATCH 045/190] A switch of code to see if it worked and doesn't for the enable loop --- openlp/core/ui/generaltab.py | 4 ++-- openlp/core/ui/slidecontroller.py | 18 ++++++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index e12752338..ad01a592f 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -222,7 +222,7 @@ class GeneralTab(SettingsTab): self.autoPreviewCheckBox.setText(translate('OpenLP.GeneralTab', 'Automatically preview next item in service')) self.enableLoopCheckbox.setText(translate('OpenLP.GeneralTab', - 'Enable slide loop')) + 'enable slide loop')) self.timeoutLabel.setText(translate('OpenLP.GeneralTab', 'Slide loop delay:')) self.timeoutSpinBox.setSuffix(translate('OpenLP.GeneralTab', ' sec')) @@ -320,7 +320,7 @@ class GeneralTab(SettingsTab): QtCore.QVariant(self.autoUnblankCheckBox.isChecked())) settings.setValue(u'auto preview', QtCore.QVariant(self.autoPreviewCheckBox.isChecked())) - settings.setValue(u'Enable slide loop', + settings.setValue(u'enable slide loop', QtCore.QVariant(self.enableLoopCheckbox.isChecked())) settings.setValue(u'loop delay', QtCore.QVariant(self.timeoutSpinBox.value())) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 899a283b3..df595fba5 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -935,10 +935,15 @@ class SlideController(QtGui.QWidget): def onSlideSelectedNextNoloop(self): self.onSlideSelectedNext(False) - def onSlideSelectedNext(self, loop=(not QtCore.QSettings().value(u'enable slide loop', QtCore.QVariant(True)).toBool())): + def onSlideSelectedNext(self, loop): """ Go to the next slide. - """ + """ + if checked: + loop = QtCore.QSettings().remove(self.parent.generalSettingsSection + u'general/enable slide loop', QtCore.QVariant(True)).toBool() + else: + loop = QtCore.QSettings().value( + u'general/enable slide loop') if not self.serviceItem: return Receiver.send_message(u'%s_next' % self.serviceItem.name.lower(), @@ -959,10 +964,15 @@ class SlideController(QtGui.QWidget): def onSlideSelectedPreviousNoloop(self): self.onSlideSelectedPrevious(False) - def onSlideSelectedPrevious(self, loop=(not QtCore.QSettings().value(u'enable slide loop', QtCore.QVariant(True)).toBool())): + def onSlideSelectedPrevious(self, loop): """ Go to the previous slide. - """ + """ + if checked: + loop = QtCore.QSettings().remove(self.parent.generalSettingsSection + u'/enable slide loop', QtCore.QVariant(True)).toBool() + else: + loop = QtCore.QSettings().value( + u'general/enable slide loop') if not self.serviceItem: return Receiver.send_message(u'%s_previous' % self.serviceItem.name.lower(), From 4fa9a9049e6a364bc4a05c65b3bc4a4ad338a5bf Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Mon, 23 May 2011 17:15:08 +0200 Subject: [PATCH 046/190] Updated translation files. --- resources/i18n/af.ts | 1088 +++++++------ resources/i18n/cs.ts | 1090 ++++++------- resources/i18n/de.ts | 915 ++++++----- resources/i18n/en.ts | 1088 +++++++------ resources/i18n/en_GB.ts | 1088 +++++++------ resources/i18n/en_ZA.ts | 1088 +++++++------ resources/i18n/es.ts | 3289 +++++++++++++++++++++------------------ resources/i18n/et.ts | 1180 +++++++------- resources/i18n/fr.ts | 894 ++++++----- resources/i18n/hu.ts | 1278 +++++++-------- resources/i18n/id.ts | 1159 +++++++------- resources/i18n/ja.ts | 1209 +++++++------- resources/i18n/ko.ts | 1088 +++++++------ resources/i18n/nb.ts | 1088 +++++++------ resources/i18n/nl.ts | 1215 ++++++++------- resources/i18n/pt_BR.ts | 1451 ++++++++--------- resources/i18n/ru.ts | 918 +++++------ resources/i18n/sv.ts | 1119 ++++++------- resources/i18n/zh_CN.ts | 1088 +++++++------ 19 files changed, 12212 insertions(+), 11121 deletions(-) diff --git a/resources/i18n/af.ts b/resources/i18n/af.ts index 6d9b64f30..1459194ce 100644 --- a/resources/i18n/af.ts +++ b/resources/i18n/af.ts @@ -184,22 +184,22 @@ Gaan steeds voort? BiblePlugin.HTTPBible - + Download Error Aflaai Fout - + Parse Error Ontleed 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. - + 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. @@ -207,12 +207,12 @@ Gaan steeds voort? BiblePlugin.MediaItem - + Bible not fully loaded. Die Bybel is nie ten volle gelaai nie. - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? Enkel en dubbel Bybel vers soek resultate kan nie kombineer word nie. Wis die resultate uit en begin 'n nuwe soektog? @@ -229,41 +229,6 @@ Gaan steeds voort? <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. <strong>Bybel Mini-program</strong><br/>Die Bybel mini-program verskaf die taak om Bybel verse vanaf verskillende bronne tydens die diens te vertoon. - - - Import a Bible - Voer 'n Bybel in - - - - Add a new Bible - Voeg 'n nuwe Bybel by - - - - Edit the selected Bible - Redigeer geselekteerde Bybel - - - - Delete the selected Bible - Wis die geselekteerde Bybel uit - - - - Preview the selected Bible - Sien voorskou van die geselekteerde Bybel - - - - Send the selected Bible live - Stuur die geselekteerde Bybel regstreeks - - - - Add the selected Bible to the service - Voeg die geselekteerde Bybel by die diens - Bible @@ -283,47 +248,82 @@ Gaan steeds voort? Bybels - + No Book Found Geen Boek Gevind nie - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. Geen passende boek kon in hierdie Bybel gevind word nie. Gaan na dat die naam van die boek korrek gespel is. + + + Import a Bible. + + + + + Add a new Bible. + + + + + Edit the selected Bible. + + + + + Delete the selected Bible. + + + + + Preview the selected Bible. + + + + + Send the selected Bible live. + + + + + Add the selected Bible to the service. + + BiblesPlugin.BibleManager - + Scripture Reference Error Skrif Verwysing Fout - + Web Bible cannot be used Web Bybel kan nie gebruik word nie - + Text Search is not available with Web Bibles. Teks Soektog is nie beskikbaar met Web Bybels nie. - + 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. 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. - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. Huidig is daar geen Bybels geïnstalleer nie. Gebruik asseblief die Invoer Gids om een of meer Bybels te installeer. - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -342,7 +342,7 @@ Boek Hoofstuk:Vers-Vers, Hoofstuk:Vers-Vers Boek Hoofstuk:Vers-Hoofstuk:Vers - + No Bibles Available Geeb Bybels Beskikbaar nie @@ -580,70 +580,60 @@ afgelaai word en dus word 'n Internet konneksie benodig. BiblesPlugin.MediaItem - + Quick Vinnig - + Find: Vind: - - Results: - Resultate: - - - + Book: Boek: - + Chapter: Hoofstuk: - + Verse: Vers: - + From: Vanaf: - + To: Tot: - + Text Search Teks Soektog - - Clear - Maak Skoon - - - - Keep - Behou - - - + Second: Tweede: - + Scripture Reference Skrif Verwysing + + + Toggle to keep or clear the previous results. + + BiblesPlugin.Opensong @@ -717,12 +707,12 @@ afgelaai word en dus word 'n Internet konneksie benodig. Redigeer al die skyfies tegelyk. - + Split Slide Verdeel Skyfie - + Split a slide into two by inserting a slide splitter. Verdeel 'n skyfie deur 'n skyfie-verdeler te gebruik. @@ -737,12 +727,12 @@ afgelaai word en dus word 'n Internet konneksie benodig. &Krediete: - + You need to type in a title. 'n Titel word benodig. - + You need to add at least one slide Ten minste een skyfie moet bygevoeg word @@ -751,49 +741,19 @@ afgelaai word en dus word 'n Internet konneksie benodig. Ed&it All Red&igeer Alles + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide + + CustomsPlugin - - - Import a Custom - Voer 'n Persoonlike nutsprogram in - - - - Load a new Custom - Laai 'n nuwe Aanpassing - - - - Add a new Custom - Voeg 'n nuwe Aanpassing by - - - - Edit the selected Custom - Redigeer die geselekteerde Aanpassing - - - - Delete the selected Custom - Wis die geselekteerde Aanpassing uit - - - - Preview the selected Custom - Sien voorskou van die geselekteerde Aanpassing - - - - Send the selected Custom live - Stuur die geselekteerde Aanpassing regstreeks - - - - Add the selected Custom to the service - Voeg die geselekteerde Aanpassing by die diens - Custom @@ -812,11 +772,51 @@ afgelaai word en dus word 'n Internet konneksie benodig. container title Aanpasing + + + Load a new Custom. + + + + + Import a Custom. + + + + + Add a new Custom. + + + + + Edit the selected Custom. + + + + + Delete the selected Custom. + + + + + Preview the selected Custom. + + + + + Send the selected Custom live. + + + + + Add the selected Custom to the service. + + GeneralTab - + General Algemeen @@ -828,41 +828,6 @@ afgelaai word en dus word 'n Internet konneksie benodig. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. <strong>Beeld Mini-program</strong><br/>Die beeld mini-program verskaf vertoning van beelde.<br/>Een van die onderskeidende kenmerke van hierdie mini-program is die vermoë om beelde te groepeer in die diensbestuurder wat dit maklik maak om verskeie beelde te vertoon. Die mini-program kan ook van OpenLP se "tydgebonde herhaling"-funksie gebruik maak om 'n automatiese skyfe-vertoning te verkry. Verder kan beelde van hierdie mini-program gebruik word om die huidige tema se agtergrond te vervang hoewel 'n tema sy eie agtergrond het. - - - Load a new Image - Laai 'n nuwe Beeld - - - - Add a new Image - Voeg 'n nuwe Beeld by - - - - Edit the selected Image - Redigeer die geselekteerde Beeld - - - - Delete the selected Image - Wis die geselekteerde Beeld uit - - - - Preview the selected Image - Sien voorskou van die geselekteerde Beeld - - - - Send the selected Image live - Stuur die geselekteerde Beeld regstreeks - - - - Add the selected Image to the service - Voeg die geselekteerde Beeld by die diens - Image @@ -881,11 +846,46 @@ afgelaai word en dus word 'n Internet konneksie benodig. container title Beelde + + + Load a new Image. + + + + + Add a new Image. + + + + + Edit the selected Image. + + + + + Delete the selected Image. + + + + + Preview the selected Image. + + + + + Send the selected Image live. + + + + + Add the selected Image to the service. + + ImagePlugin.ExceptionDialog - + Select Attachment Selekteer Aanhangsel @@ -893,39 +893,39 @@ afgelaai word en dus word 'n Internet konneksie benodig. ImagePlugin.MediaItem - + Select Image(s) Selekteer beeld(e) - + You must select an image to delete. 'n Beeld om uit te wis moet geselekteer word. - + You must select an image to replace the background with. 'n Beeld wat die agtergrond vervang moet gekies word. - + Missing Image(s) Vermisde Beeld(e) - + The following image(s) no longer exist: %s Die volgende beeld(e) bestaan nie meer nie: %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? Die volgende beeld(e) bestaan nie meer nie: %s Voeg steeds die ander beelde by? - + There was a problem replacing your background, the image file "%s" no longer exists. Daar was 'n probleem om die agtergrond te vervang. Die beeld lêer "%s" bestaan ine meer nie. @@ -937,41 +937,6 @@ Voeg steeds die ander beelde by? <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. - - - Load a new Media - Laai nuwe Media - - - - Add a new Media - Voeg nuwe Media by - - - - Edit the selected Media - Redigeer die geselekteerde Media - - - - Delete the selected Media - Wis die geselekteerde Media uit - - - - Preview the selected Media - Sien voorskou van 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 - Media @@ -990,41 +955,76 @@ Voeg steeds die ander beelde by? container title Media + + + Load a new Media. + + + + + Add a new Media. + + + + + Edit the selected Media. + + + + + Delete the selected Media. + + + + + Preview the selected Media. + + + + + Send the selected Media live. + + + + + Add the selected Media to the service. + + MediaPlugin.MediaItem - + Select Media Selekteer Media - + You must select a media file to delete. 'n Media lêer om uit te wis moet geselekteer word. - + Missing Media File Vermisde Media Lêer - + The file %s no longer exists. Die lêer %s bestaan nie meer nie. - + You must select a media file to replace the background with. 'n Media lêer wat die agtergrond vervang moet gekies word. - + There was a problem replacing your background, the media file "%s" no longer exists. Daar was 'n probleem om die agtergrond te vervang. Die media lêer "%s" bestaan nie meer nie. - + Videos (%s);;Audio (%s);;%s (*) Videos (%s);;Audio (%s);;%s (*) @@ -1330,70 +1330,70 @@ Tinggaard, Frode Woldsund OpenLP.DisplayTagDialog - + Edit Selection Redigeer Seleksie - - Update - Opdatteer - - - + Description Beskrywing - + Tag Etiket - + Start tag Begin etiket - + End tag Eind-etiket - + Default Verstek - + Tag Id Haak Id - + Start HTML Begin HTML - + End HTML Eindig HTML + + + Save + + OpenLP.DisplayTagTab - + Update Error Opdateer Fout - + Tag "n" already defined. Etiket "n" alreeds gedefinieër. - + Tag %s already defined. Etiket %s alreeds gedefinieër. @@ -1433,7 +1433,7 @@ Tinggaard, Frode Woldsund Heg 'n Lêer aan - + Description characters to enter : %s Beskrywende karakters om in te voer: %s @@ -1489,7 +1489,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1735,122 +1735,122 @@ Om die Eerste-keer gids heeltemal te kanselleer, druk die vollledig-knoppie hier 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 - + Slide loop delay: Skyfie herhaal vertraging: - + 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 @@ -1871,7 +1871,7 @@ Om die Eerste-keer gids heeltemal te kanselleer, druk die vollledig-knoppie hier OpenLP.MainDisplay - + OpenLP Display OpenLP Vertooning @@ -1879,287 +1879,287 @@ Om die Eerste-keer gids heeltemal te kanselleer, druk die vollledig-knoppie hier OpenLP.MainWindow - + &File &Lêer - + &Import &Invoer - + &Export Uitvo&er - + &View &Bekyk - + M&ode M&odus - + &Tools &Gereedskap - + &Settings Ver&stellings - + &Language Taa&l - + &Help &Hulp - + Media Manager Media Bestuurder - + Service Manager Diens Bestuurder - + Theme Manager Tema Bestuurder - + &New &Nuwe - + &Open Maak &Oop - + Open an existing service. Maak 'n bestaande diens oop. - + &Save &Stoor - + Save the current service to disk. Stoor die huidige diens na skyf. - + Save &As... Stoor &As... - + Save Service As Stoor Diens As - + Save the current service under a new name. Stoor die huidige diens onder 'n nuwe naam. - + E&xit &Uitgang - + Quit OpenLP Sluit OpenLP Af - + &Theme &Tema - + &Configure OpenLP... &Konfigureer OpenLP... - + &Media Manager &Media Bestuurder - + Toggle Media Manager Wissel Media Bestuurder - + Toggle the visibility of the media manager. Wissel sigbaarheid van die media bestuurder. - + &Theme Manager &Tema Bestuurder - + Toggle Theme Manager Wissel Tema Bestuurder - + Toggle the visibility of the theme manager. Wissel sigbaarheid van die tema bestuurder. - + &Service Manager &Diens Bestuurder - + Toggle Service Manager Wissel Diens Bestuurder - + Toggle the visibility of the service manager. Wissel sigbaarheid van die diens bestuurder. - + &Preview Panel Voorskou &Paneel - + Toggle Preview Panel Wissel Voorskou Paneel - + Toggle the visibility of the preview panel. Wissel sigbaarheid van die voorskou paneel. - + &Live Panel Regstreekse Panee&l - + Toggle Live Panel Wissel Regstreekse Paneel - + Toggle the visibility of the live panel. Wissel sigbaarheid van die regstreekse paneel. - + &Plugin List Mini-&program Lys - + List the Plugins Lys die Mini-programme - + &User Guide Gebr&uikers Gids - + &About &Aangaande - + More information about OpenLP Meer inligting aangaande OpenLP - + &Online Help &Aanlyn Hulp - + &Web Site &Web Tuiste - + Use the system language, if available. Gebruik die sisteem se taal as dit beskikbaar is. - + Set the interface language to %s Verstel die koppelvlak taal na %s - + Add &Tool... Voeg Gereedskaps&tuk by... - + Add an application to the list of tools. Voeg 'n applikasie by die lys van gereedskapstukke. - + &Default &Verstek - + Set the view mode back to the default. Verstel skou modus terug na verstek modus. - + &Setup Op&stel - + Set the view mode to Setup. Verstel die skou modus na Opstel modus. - + &Live &Regstreeks - + Set the view mode to Live. Verstel die skou modus na Regstreeks. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2168,22 +2168,22 @@ You can download the latest version from http://openlp.org/. Die nuutste weergawe kan afgelaai word vanaf http://openlp.org/. - + OpenLP Version Updated OpenLP Weergawe is Opdateer - + OpenLP Main Display Blanked OpenLP Hoof Vertoning Blanko - + The Main Display has been blanked out Die Hoof Skerm is afgeskakel - + Default Theme: %s Verstek Tema: %s @@ -2194,45 +2194,55 @@ Die nuutste weergawe kan afgelaai word vanaf http://openlp.org/. Afrikaans - + Configure &Shortcuts... Konfigureer Kortpaaie - + Close OpenLP Mook OpenLP toe - + Are you sure you want to close OpenLP? Maak OpenLP sekerlik toe? - + Print the current Service Order. Druk die huidige Diens Bestelling. - + Open &Data Folder... Maak &Data Lêer oop... - + Open the folder where songs, bibles and other data resides. Maak die lêer waar liedere, bybels en ander data is, oop. - + &Configure Display Tags Konfigureer Vertoon Haakies - + &Autodetect Spoor outom&aties op + + + Update Theme Images + + + + + Update the preview images for all themes. + + OpenLP.MediaManagerItem @@ -2242,46 +2252,56 @@ Die nuutste weergawe kan afgelaai word vanaf http://openlp.org/. 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. - + Duplicate file name %s. Filename already exists in list + + + You must select one or more items to add. + + + + + No Search Results + + OpenLP.PluginForm @@ -2403,19 +2423,19 @@ Filename already exists in list - Add page break before each text item. + Add page break before each text item OpenLP.ScreenList - + Screen Skerm - + primary primêr @@ -2431,224 +2451,209 @@ Filename already exists in list OpenLP.ServiceManager - - Load an existing service - Laai 'n bestaande diens - - - - Save this service - Stoor hierdie diens - - - - Select a theme for the service - Selekteer 'n tema vir die diens - - - + 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 - + File is not a valid service. The content encoding is not UTF-8. 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 Stort alles ineen - + Collapse all the service items. Stort al die diens items ineen - + Open File Maak Lêer oop - + OpenLP Service Files (*.osz) OpenLP Diens Lêers (*.osz) - + 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 - + Modified Service Redigeer Diens - + &Start Time Begin Tyd - + Show &Preview Wys Voorskou - + Show &Live Vertoon Regstreeks - + The current service has been modified. Would you like to save this service? Die huidige diens was verander. Stoor hierdie diens? - + File could not be opened because it is corrupt. - + Empty File - + This service file does not contain any data. - + Corrupt File @@ -2668,15 +2673,30 @@ Die inhoud enkodering is nie UTF-8 nie. - + Untitled Service - + This file is either corrupt or not an OpenLP 2.0 service file. + + + Load an existing service. + + + + + Save this service. + + + + + Select a theme for the service. + + OpenLP.ServiceNoteForm @@ -2765,100 +2785,105 @@ Die inhoud enkodering is nie UTF-8 nie. OpenLP.SlideController - + Move to previous Beweeg na vorige - + Move to next Beweeg na volgende - + Hide Verskuil - + Move to live Verskuif na regstreekse skerm - + Start continuous loop Begin aaneenlopende lus - + Stop continuous loop Stop deurlopende lus - + Delay between slides in seconds Vertraging tussen skyfies in sekondes - + Start playing media Begin media speel - + Go To Gaan Na - + Edit and reload song preview Redigeer en laai weer 'n lied voorskou - + Blank Screen Blanko Skerm - + Blank to Theme Blanko na Tema - + Show Desktop Wys Werkskerm - + Previous Slide Vorige Skyfie - + Next Slide Volgende Skyfie - + Previous Service Vorige Diens - + Next Service Volgende Diens - + Escape Item Ontsnap Item - + Start/Stop continuous loop + + + Add to Service + + OpenLP.SpellTextEdit @@ -3027,69 +3052,69 @@ 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. - + 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. The content encoding is not UTF-8. Lêer is nie 'n geldige tema nie. Die inhoud enkodering is nie UTF-8 nie. - + File is not a valid theme. Lêer is nie 'n geldige tema nie. - + Theme %s is used in the %s plugin. Tema %s is in gebruik deur die %s mini-program. @@ -3109,47 +3134,47 @@ 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) @@ -3573,7 +3598,7 @@ Die inhoud enkodering is nie UTF-8 nie. Begin %s - + &Vertical Align: &Vertikale Sporing: @@ -3781,7 +3806,7 @@ Die inhoud enkodering is nie UTF-8 nie. Gereed. - + Starting import... Invoer begin... @@ -3930,11 +3955,6 @@ Die inhoud enkodering is nie UTF-8 nie. View - - - View Model - - Duplicate Error @@ -3955,11 +3975,16 @@ Die inhoud enkodering is nie UTF-8 nie. XML syntax error + + + View Mode + + OpenLP.displayTagDialog - + Configure Display Tags Konfigureer Vertoon Hakkies @@ -3971,31 +3996,6 @@ Die inhoud enkodering is nie UTF-8 nie. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. <strong>Aanbieding Mini-program</strong><br/>Die aanbieding mini-program bied die vermoë om aanbiedings van verskillende programme te vertoon. Die keuse van beskikbare aanbieding-programme word aan die gebruiker vertoon deur 'n hangkieslys. - - - Load a new Presentation - Laai 'n nuwe Aanbiedieng - - - - Delete the selected Presentation - Wis die geselekteerde Aanbieding uit - - - - Preview the selected Presentation - Sien voorskou van die geselekteerde Aanbieding - - - - Send the selected Presentation live - Stuur die geselekteerde Aanbieding regstreeks - - - - Add the selected Presentation to the service - Voeg die geselekteerde Aanbieding by die diens - Presentation @@ -4014,56 +4014,81 @@ Die inhoud enkodering is nie UTF-8 nie. container title Aanbiedinge + + + Load a new Presentation. + + + + + Delete the selected Presentation. + + + + + Preview the selected Presentation. + + + + + Send the selected Presentation live. + + + + + Add the selected Presentation to the service. + + PresentationPlugin.MediaItem - + Select Presentation(s) Selekteer Aanbieding(e) - + Automatic Outomaties - + Present using: Bied aan met: - + File Exists Lêer Bestaan Reeds - + A presentation with that filename already exists. 'n Aanbieding met daardie lêernaam bestaan reeds. - + This type of presentation is not supported. Hierdie tipe aanbieding word nie ondersteun nie. - + Presentations (%s) Aanbiedinge (%s) - + Missing Presentation Vermisde Aanbieding - + The Presentation %s no longer exists. Die Aanbieding %s bestaan nie meer nie. - + The Presentation %s is incomplete, please reload. Die Aanbieding %s is onvolledig, herlaai asseblief. @@ -4115,20 +4140,30 @@ Die inhoud enkodering is nie UTF-8 nie. RemotePlugin.RemoteTab - + Serve on IP address: Bedien op hierdie IP adres: - + Port number: Poort nommer: - + Server Settings Bediener Verstellings + + + Remote URL: + + + + + Stage view URL: + + SongUsagePlugin @@ -4313,36 +4348,6 @@ was suksesvol geskep. Reindexing songs... Besig om liedere indek te herskep... - - - Add a new Song - Voeg 'n nuwe Lied by - - - - Edit the selected Song - Redigeer die geselekteerde Lied - - - - Delete the selected Song - Wis die geselekteerde Lied uit - - - - Preview the selected Song - Skou die geselekteerde Lied - - - - Send the selected Song live - Stuur die geselekteerde Lied regstreeks - - - - Add the selected Song to the service - Voeg die geselekteerde Lied by die diens - Song @@ -4458,6 +4463,36 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling.Exports songs using the export wizard. Voer liedere uit deur gebruik te maak van die uitvoer gids. + + + Add a new Song. + + + + + Edit the selected Song. + + + + + Delete the selected Song. + + + + + Preview the selected Song. + + + + + Send the selected Song live. + + + + + Add the selected Song to the service. + + SongsPlugin.AuthorsForm @@ -4691,7 +4726,7 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling.Daar word 'n outeur benodig vir hierdie lied. - + You need to type some text in to the verse. Daar word teks benodig vir die vers. @@ -4699,20 +4734,35 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling. SongsPlugin.EditVerseForm - + Edit Verse Redigeer Vers - + &Verse type: &Vers tipe: - + &Insert Sit Tussen-&in + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4908,43 +4958,43 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling. SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - Handhaaf die lys van skrywers, onderwerpe en boeke - - - + Titles Titels - + Lyrics Lirieke - + Delete Song(s)? Wis Lied(ere) uit? - + 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(ere)? + + + Maintain the lists of authors, topics and books. + + SongsPlugin.OpenLP1SongImport diff --git a/resources/i18n/cs.ts b/resources/i18n/cs.ts index 18d93bf52..ff4cd7262 100644 --- a/resources/i18n/cs.ts +++ b/resources/i18n/cs.ts @@ -184,22 +184,22 @@ Chcete přesto pokračovat? BiblePlugin.HTTPBible - + Download Error Chyba stahování - + 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. Při stahování výběru veršů se vyskytl problém. Prosím prověřte své internetové připojení. Pokud se tato chyba stále objevuje, zvašte prosím nahlášení chyby. - + Parse Error Chyba zpracování - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. Při rozbalování výběru veršů se vyskytl problém. Pokud se tato chyba stále objevuje, zvašte prosím nahlášení chyby. @@ -207,12 +207,12 @@ Chcete přesto pokračovat? BiblePlugin.MediaItem - + Bible not fully loaded. Bible není celá načtena. - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? Nelze kombinovat jednoduché a dvojité výsledky hledání veršů v Bibli. Přejete si smazat výsledky hledání a začít s novým vyhledáváním? @@ -229,41 +229,6 @@ Chcete přesto pokračovat? <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. <strong>Modul Bible</strong><br />Modul Bible dovoluje během služby zobrazovat biblické verše z různých zdrojů. - - - Import a Bible - Import Bible - - - - Add a new Bible - Přidat Bibli - - - - Edit the selected Bible - Upravit vybranou Bibli - - - - Delete the selected Bible - Smazat vybranou Bibli - - - - Preview the selected Bible - Náhled vybrané Bible - - - - Send the selected Bible live - Vybraná Bibli naživo - - - - Add the selected Bible to the service - Přidat vybranou Bibli k službě - Bible @@ -283,47 +248,82 @@ Chcete přesto pokračovat? Bible - + No Book Found Kniha nenalezena - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. V Bibli nebyla nalezena odpovídající kniha. Prověřte, že název knihy byl zadán správně. + + + Import a Bible. + + + + + Add a new Bible. + + + + + Edit the selected Bible. + + + + + Delete the selected Bible. + + + + + Preview the selected Bible. + + + + + Send the selected Bible live. + + + + + Add the selected Bible to the service. + + BiblesPlugin.BibleManager - + Scripture Reference Error Chyba v odkazu do Bible - + Web Bible cannot be used Bibli z www nelze použít - + Text Search is not available with Web Bibles. Hledání textu není dostupné v Bibli z www. - + 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. Nebylo zadáno slovo pro hledání. K hledání textu obsahující všechna slova je nutno tato slova oddělit mezerou. Oddělením slov čárkou se bude hledat text obsahující alespoň jedno ze zadaných slov. - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. Žádné Bible nejsou nainstalovány. K p?idání jedné nebo více Biblí prosím použijte Pr?vodce importem. - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -342,7 +342,7 @@ Kniha Kapitola:Verš-Verš,Kapitola:Verš-Verš Kniha Kapitola:Verš-Kapitola:Verš - + No Bibles Available Žádné Bible k dispozici @@ -579,70 +579,60 @@ demand and thus an internet connection is required. BiblesPlugin.MediaItem - + Quick Rychlý - + Find: Hledat: - - Results: - Výsledky: - - - + Book: Kniha: - + Chapter: Kapitola: - + Verse: Verš: - + From: Od: - + To: Do: - + Text Search Hledání textu - - Clear - Vyprázdnit - - - - Keep - Ponechat - - - + Second: Druhý: - + Scripture Reference Odkaz do Bible + + + Toggle to keep or clear the previous results. + + BiblesPlugin.Opensong @@ -716,12 +706,12 @@ demand and thus an internet connection is required. Upravit všechny snímky najednou. - + Split Slide Rozdělit snímek - + Split a slide into two by inserting a slide splitter. Vložením oddělovače se snímek rozdělí na dva. @@ -736,12 +726,12 @@ demand and thus an internet connection is required. &Zásluhy: - + You need to type in a title. Je nutno zadat název. - + You need to add at least one slide Je nutno přidat alespoň jeden snímek @@ -750,49 +740,19 @@ demand and thus an internet connection is required. Ed&it All Upra&it vše + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide + + CustomsPlugin - - - Import a Custom - Import uživatelského - - - - Load a new Custom - Na?íst nový uživatelský - - - - Add a new Custom - P?idat nový uživatelský - - - - Edit the selected Custom - Upravit vybraný uživatelský - - - - Delete the selected Custom - Smazat vybraný uživatelský - - - - Preview the selected Custom - Náhled vybraného uživatelského - - - - Send the selected Custom live - Vybraný uživatelský snímek naživo - - - - Add the selected Custom to the service - P?idat vybraný uživatelský ke služb? - Custom @@ -811,11 +771,51 @@ demand and thus an internet connection is required. container title Uživatelský + + + Load a new Custom. + + + + + Import a Custom. + + + + + Add a new Custom. + + + + + Edit the selected Custom. + + + + + Delete the selected Custom. + + + + + Preview the selected Custom. + + + + + Send the selected Custom live. + + + + + Add the selected Custom to the service. + + GeneralTab - + General Obecné @@ -827,41 +827,6 @@ demand and thus an internet connection is required. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. <strong>Modul obrázek</strong><br />Modul obrázek se stará o zobrazování obrázků.<br />Jedna z charakteristických funkcí tohoto modulu je schopnost ve správci služby seskupit několik obrázků dohromady. Tato vlastnost zjednodušuje zobrazení více obrázků. Tento modul také využívá vlastnosti "časová smyčka" aplikace OpenLP a je tudíž možno vytvořit prezentaci obrázků, která poběží samostatně. Nadto lze využitím obrázků z modulu překrýt pozadí současného motivu. - - - Load a new Image - Načíst nový obrázek - - - - Add a new Image - Přidat nový obrázek - - - - Edit the selected Image - Upravit vybraný obrázek - - - - Delete the selected Image - Smazat vybraný obrázek - - - - Preview the selected Image - Náhled vybraného obrázku - - - - Send the selected Image live - Vybraný obrázek naživo - - - - Add the selected Image to the service - Přidat vybraný obrázek ke službě - Image @@ -880,11 +845,46 @@ demand and thus an internet connection is required. container title Obrázky + + + Load a new Image. + + + + + Add a new Image. + + + + + Edit the selected Image. + + + + + Delete the selected Image. + + + + + Preview the selected Image. + + + + + Send the selected Image live. + + + + + Add the selected Image to the service. + + ImagePlugin.ExceptionDialog - + Select Attachment Vybrat přílohu @@ -892,39 +892,39 @@ demand and thus an internet connection is required. ImagePlugin.MediaItem - + Select Image(s) Vybrat obrázky - + You must select an image to delete. Pro smazání musíte nejdříve vybrat obrázek. - + You must select an image to replace the background with. K nahrazení pozadí musíte nejdříve vybrat obrázek. - + Missing Image(s) Chybějící obrázky - + The following image(s) no longer exist: %s Následující obrázky už neexistují: %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? Následující obrázky už neexistují: % Chcete přidat ostatní obrázky? - + There was a problem replacing your background, the image file "%s" no longer exists. Problém s nahrazením pozadí. Obrázek "%s" už neexistuje. @@ -936,41 +936,6 @@ Chcete přidat ostatní obrázky? <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. <strong>Modul média</strong><br />Modul média umožňuje přehrávat audio a video. - - - Load a new Media - Načíst nové médium - - - - Add a new Media - Přidat nové médium - - - - Edit the selected Media - Upravit vybrané médium - - - - Delete the selected Media - Smazat vybrané médium - - - - Preview the selected Media - Náhled vybraného média - - - - Send the selected Media live - Vybrané médium naživo - - - - Add the selected Media to the service - Přidat vybrané médium ke službě - Media @@ -989,41 +954,76 @@ Chcete přidat ostatní obrázky? container title Média + + + Load a new Media. + + + + + Add a new Media. + + + + + Edit the selected Media. + + + + + Delete the selected Media. + + + + + Preview the selected Media. + + + + + Send the selected Media live. + + + + + Add the selected Media to the service. + + MediaPlugin.MediaItem - + Select Media Vybrat médium - + You must select a media file to delete. Ke smazání musíte nejdříve vybrat soubor s médiem. - + You must select a media file to replace the background with. K nahrazení pozadí musíte nejdříve vybrat soubor s médiem. - + There was a problem replacing your background, the media file "%s" no longer exists. Problém s nahrazením pozadí. Soubor s médiem "%s" už neexistuje. - + Missing Media File Chybějící soubory s médii - + The file %s no longer exists. Soubor %s už neexistuje. - + Videos (%s);;Audio (%s);;%s (*) Video (%s);;Audio (%s);;%s (*) @@ -1328,70 +1328,70 @@ Tinggaard, Frode Woldsund OpenLP.DisplayTagDialog - + Edit Selection Upravit výběr - - Update - Aktualizovat - - - + Description Popis - + Tag Značka - + Start tag Začátek značky - + End tag Konec značky - + Default Výchozí - + Tag Id Id značky - + Start HTML Začátek HTML - + End HTML Konec HTML + + + Save + + OpenLP.DisplayTagTab - + Update Error Aktualizovat chybu - + Tag "n" already defined. Značka "n" je už definovaná. - + Tag %s already defined. Značka %s je už definovaná. @@ -1431,7 +1431,7 @@ Tinggaard, Frode Woldsund Přiložit soubor - + Description characters to enter : %s Znaky popisu pro vložení : %s @@ -1487,7 +1487,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1734,122 +1734,122 @@ Pro úplné zrušení Průvodce prvním spuštění klepněte nyní na tlačítk 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ě - + Slide loop delay: Zpoždění smyčky snímku: - + 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 @@ -1870,7 +1870,7 @@ Pro úplné zrušení Průvodce prvním spuštění klepněte nyní na tlačítk OpenLP.MainDisplay - + OpenLP Display Zobrazení OpenLP @@ -1878,287 +1878,287 @@ Pro úplné zrušení Průvodce prvním spuštění klepněte nyní na tlačítk OpenLP.MainWindow - + &File &Soubor - + &Import &Import - + &Export &Export - + &View &Zobrazit - + M&ode &Režim - + &Tools &Nástroje - + &Settings &Nastavení - + &Language &Jazyk - + &Help &Nápověda - + Media Manager Správce médií - + Service Manager Správce služby - + Theme Manager Správce motivů - + &New &Nový - + &Open &Otevřít - + Open an existing service. Otevřít existující službu. - + &Save &Uložit - + Save the current service to disk. Uložit současnou službu na disk. - + Save &As... Uložit &jako... - + Save Service As Uložit službu jako - + Save the current service under a new name. Uložit současnou službu s novým názvem. - + E&xit U&končit - + Quit OpenLP Ukončit OpenLP - + &Theme &Motiv - + &Configure OpenLP... &Nastavit OpenLP... - + &Media Manager Správce &médií - + Toggle Media Manager Přepnout správce médií - + Toggle the visibility of the media manager. Přepnout viditelnost správce médií. - + &Theme Manager Správce &motivů - + Toggle Theme Manager Přepnout správce motivů - + Toggle the visibility of the theme manager. Přepnout viditelnost správce motivů. - + &Service Manager Správce &služby - + Toggle Service Manager Přepnout správce služby - + Toggle the visibility of the service manager. Přepnout viditelnost správce služby. - + &Preview Panel Panel &náhledu - + Toggle Preview Panel Přepnout panel náhledu - + Toggle the visibility of the preview panel. Přepnout viditelnost panelu náhled. - + &Live Panel Panel na&živo - + Toggle Live Panel Přepnout panel naživo - + Toggle the visibility of the live panel. Přepnout viditelnost panelu naživo. - + &Plugin List Seznam &modulů - + List the Plugins Vypsat moduly - + &User Guide &Uživatelská příručka - + &About &O aplikaci - + More information about OpenLP Více informací o aplikaci OpenLP - + &Online Help &Online nápověda - + &Web Site &Webová stránka - + Use the system language, if available. Použít jazyk systému, pokud je dostupný. - + Set the interface language to %s Jazyk rozhraní nastaven na %s - + Add &Tool... Přidat &nástroj... - + Add an application to the list of tools. Přidat aplikaci do seznamu nástrojů. - + &Default &Výchozí - + Set the view mode back to the default. Nastavit režim zobrazení zpět na výchozí. - + &Setup &Nastavení - + Set the view mode to Setup. Nastavit režim zobrazení na Nastavení. - + &Live &Naživo - + Set the view mode to Live. Nastavit režim zobrazení na Naživo. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2167,22 +2167,22 @@ You can download the latest version from http://openlp.org/. Nejnovější verzi lze stáhnout z http://openlp.org/. - + OpenLP Version Updated Verze OpenLP aktualizována - + OpenLP Main Display Blanked Hlavní zobrazení OpenLP je prázdné - + The Main Display has been blanked out Hlavní zobrazení nastaveno na prázdný snímek - + Default Theme: %s Výchozí motiv: %s @@ -2193,45 +2193,55 @@ Nejnovější verzi lze stáhnout z http://openlp.org/. Angličtina - + Configure &Shortcuts... Nastavit &Zkratky - + Close OpenLP Zavřít OpenLP - + Are you sure you want to close OpenLP? Chcete opravdu zavřít aplikaci OpenLP? - + Print the current Service Order. Tisk současného Pořadí Služby. - + &Configure Display Tags &Nastavit značky zobrazení - + Open &Data Folder... Otevřít složku s &daty... - + Open the folder where songs, bibles and other data resides. Otevřít složku, kde se nachází písně, Bible a ostatní data. - + &Autodetect &Automaticky detekovat + + + Update Theme Images + + + + + Update the preview images for all themes. + + OpenLP.MediaManagerItem @@ -2241,46 +2251,56 @@ Nejnovější verzi lze stáhnout z http://openlp.org/. 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. - + Duplicate file name %s. Filename already exists in list + + + You must select one or more items to add. + + + + + No Search Results + + OpenLP.PluginForm @@ -2402,19 +2422,19 @@ Filename already exists in list - Add page break before each text item. - Přidat zalomení stránky před každou textovou položkou. + Add page break before each text item + OpenLP.ScreenList - + Screen Obrazovka - + primary Primární @@ -2430,224 +2450,209 @@ Filename already exists in list OpenLP.ServiceManager - - Load an existing service - Načíst existující službu - - - - Save this service - Uložit tuto službu - - - - Select a theme for the service - Vybrat motiv služby - - - + Move to &top Přesun &nahoru - + Move item to the top of the service. Přesun položky ve službě úplně nahoru. - + Move &up Přesun &výše - + Move item up one position in the service. Přesun položky ve službě o jednu pozici výše. - + Move &down P?esun &níže - + Move item down one position in the service. P?esun položky ve služb? o jednu pozici níže. - + Move to &bottom Přesun &dolu - + Move item to the end of the service. Přesun položky ve službě úplně dolů. - + &Delete From Service &Smazat ze služby - + Delete the selected item from the service. Smazat vybranou položku ze služby. - + &Add New Item &Přidat novou položku - + &Add to Selected Item &Přidat k vybrané položce - + &Edit Item &Upravit položku - + &Reorder Item &Změnit pořadí položky - + &Notes &Poznámky - + &Change Item Theme &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í - + &Expand all &Rozvinou vše - + Expand all the service items. Rozvinout všechny položky služby. - + &Collapse all &Svinout vše - + Collapse all the service items. Svinout všechny položky služby. - + Open File Otevřít soubor - + Moves the selection down the window. Přesune výběr v rámci okna dolu. - + Move up Přesun nahoru - + Moves the selection up the window. Přesune výběr v rámci okna nahoru. - + Go Live Zobrazit naživo - + Send the selected item to Live. Zobrazí vybranou položku naživo. - + &Start Time &Spustit čas - + Show &Preview Zobrazit &náhled - + Show &Live Zobrazit n&aživo - + Modified Service Změněná služba - + The current service has been modified. Would you like to save this service? 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 @@ -2667,15 +2672,30 @@ Obsah souboru není v kódování UTF-8. - + Untitled Service - + This file is either corrupt or not an OpenLP 2.0 service file. + + + Load an existing service. + + + + + Save this service. + + + + + Select a theme for the service. + + OpenLP.ServiceNoteForm @@ -2764,100 +2784,105 @@ Obsah souboru není v kódování UTF-8. OpenLP.SlideController - + Move to previous Přesun na předchozí - + Move to next Přesun na následující - + Hide Skrýt - + Move to live Přesun naživo - + Edit and reload song preview Upravit a znovu načíst náhled písně - + Start continuous loop Spustit souvislou smyčku - + Stop continuous loop Zastavit souvislou smyčku - + Delay between slides in seconds Zpoždění mezi snímky v sekundách - + Start playing media Spustit přehrávání média - + Go To Přejít na - + Blank Screen Prázdná obrazovka - + Blank to Theme Prázdný motiv - + Show Desktop Zobrazit plochu - + Previous Slide Předchozí snímek - + Next Slide Následující snímek - + Previous Service Předchozí služba - + Next Service Následující služba - + Escape Item Zrušit položku - + Start/Stop continuous loop + + + Add to Service + + OpenLP.SpellTextEdit @@ -3026,69 +3051,69 @@ Obsah souboru není v kódování UTF-8. Nastavit jako &Globální výchozí - + %s (default) %s (výchozí) - + You must select a theme to edit. Pro úpravy je třeba vybrat motiv. - + You are unable to delete the default theme. Není možno smazat výchozí motiv. - + Theme %s is used in the %s plugin. Motiv %s je používán v modulu %s. - + You have not selected a theme. Není vybrán žádný motiv. - + Save Theme - (%s) Uložit motiv - (%s) - + Theme Exported Motiv exportován - + Your theme has been successfully exported. Motiv byl úspěšně exportován. - + Theme Export Failed Export motivu selhal - + Your theme could not be exported due to an error. Kvůli chybě nebylo možno motiv exportovat. - + Select Theme Import File Vybrat soubor k importu motivu - + File is not a valid theme. The content encoding is not UTF-8. Soubor není platný motiv. Obsah souboru není v kódování UTF-8. - + File is not a valid theme. Soubor není platný motiv. @@ -3108,47 +3133,47 @@ Obsah souboru není v kódování UTF-8. &Export motivu - + You must select a theme to rename. K přejmenování je třeba vybrat motiv. - + Rename Confirmation Potvrzení přejmenování - + Rename %s theme? Přejmenovat motiv %s? - + You must select a theme to delete. Pro smazání je třeba vybrat motiv. - + Delete Confirmation Potvrzení smazání - + Delete %s theme? Smazat motiv %s? - + Validation Error Chyba ověřování - + A theme with this name already exists. Motiv s tímto názvem již existuje. - + OpenLP Themes (*.theme *.otz) OpenLP motivy (*.theme *.otz) @@ -3725,7 +3750,7 @@ Obsah souboru není v kódování UTF-8. Přesun výběru o jednu pozici níže. - + &Vertical Align: &Svislé zarovnání: @@ -3780,7 +3805,7 @@ Obsah souboru není v kódování UTF-8. Připraven. - + Starting import... Spouštím import... @@ -3929,11 +3954,6 @@ Obsah souboru není v kódování UTF-8. View Zobrazit - - - View Model - Model zobrazení - Duplicate Error @@ -3954,11 +3974,16 @@ Obsah souboru není v kódování UTF-8. XML syntax error + + + View Mode + + OpenLP.displayTagDialog - + Configure Display Tags Nastavit značky zobrazení @@ -3970,31 +3995,6 @@ Obsah souboru není v kódování UTF-8. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. <strong>Modul prezentace</strong><br />Modul prezentace dovoluje zobrazovat prezentace z několika různých programů. Výběr dostupných prezentačních programů je uživateli přístupný v rozbalovacím menu. - - - Load a new Presentation - Načíst novou prezentaci - - - - Delete the selected Presentation - Smazat vybranou prezentaci - - - - Preview the selected Presentation - Náhled vybrané prezentace - - - - Send the selected Presentation live - Vybranou prezentaci naživo - - - - Add the selected Presentation to the service - Přidat vybranou prezentaci ke službě - Presentation @@ -4013,56 +4013,81 @@ Obsah souboru není v kódování UTF-8. container title Prezentace + + + Load a new Presentation. + + + + + Delete the selected Presentation. + + + + + Preview the selected Presentation. + + + + + Send the selected Presentation live. + + + + + Add the selected Presentation to the service. + + PresentationPlugin.MediaItem - + Select Presentation(s) Vybrat prezentace - + Automatic Automaticky - + Present using: Nyní používající: - + File Exists Soubor existuje - + A presentation with that filename already exists. Prezentace s tímto názvem souboru už existuje. - + This type of presentation is not supported. Tento typ prezentace není podporován. - + Presentations (%s) Prezentace (%s) - + Missing Presentation Chybějící prezentace - + The Presentation %s no longer exists. Prezentace %s už neexistuje. - + The Presentation %s is incomplete, please reload. Prezentace %s není kompletní, prosím načtěte ji znovu. @@ -4114,20 +4139,30 @@ Obsah souboru není v kódování UTF-8. RemotePlugin.RemoteTab - + Serve on IP address: Poslouchat na IP adresse: - + Port number: Číslo portu: - + Server Settings Nastavení serveru + + + Remote URL: + + + + + Stage view URL: + + SongUsagePlugin @@ -4312,36 +4347,6 @@ bylo úspěšně vytvořeno. Reindexing songs... Přeindexovávám písně... - - - Add a new Song - Přidat novou píseň - - - - Edit the selected Song - Upravit vybranou píseň - - - - Delete the selected Song - Smazat vybranou píseň - - - - Preview the selected Song - Náhled vybrané písně - - - - Send the selected Song live - Poslat vybraná píseň naživo - - - - Add the selected Song to the service - Přidat vybranou píseň ke službě - Arabic (CP-1256) @@ -4456,6 +4461,36 @@ Kódování zodpovídá za správnou reprezentaci znaků. Exports songs using the export wizard. Exportuje písně průvodcem exportu. + + + Add a new Song. + + + + + Edit the selected Song. + + + + + Delete the selected Song. + + + + + Preview the selected Song. + + + + + Send the selected Song live. + + + + + Add the selected Song to the service. + + SongsPlugin.AuthorsForm @@ -4689,7 +4724,7 @@ Kódování zodpovídá za správnou reprezentaci znaků. Pro tuto píseň je potřeba zadat autora. - + You need to type some text in to the verse. Ke sloce je potřeba zadat nějaký text. @@ -4697,20 +4732,35 @@ Kódování zodpovídá za správnou reprezentaci znaků. SongsPlugin.EditVerseForm - + Edit Verse Upravit sloku - + &Verse type: &Typ sloky: - + &Insert &Vložit + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4906,37 +4956,32 @@ Kódování zodpovídá za správnou reprezentaci znaků. SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - Udržovat seznam autorů, témat a zpěvníků - - - + Titles Názvy - + Lyrics Text písně - + Delete Song(s)? Smazat 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 vybraných písní? @@ -4944,6 +4989,11 @@ Kódování zodpovídá za správnou reprezentaci znaků. + + + Maintain the lists of authors, topics and books. + + SongsPlugin.OpenLP1SongImport diff --git a/resources/i18n/de.ts b/resources/i18n/de.ts index 951efab03..50ab55bcf 100644 --- a/resources/i18n/de.ts +++ b/resources/i18n/de.ts @@ -178,28 +178,28 @@ Möchten Sie trotzdem fortfahren? Importing verses... done. - Importiere Verse... Fertig + Importiere Verse... Fertig. BiblePlugin.HTTPBible - + Download Error Download Fehler - + Parse Error Formatfehler - + 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. - + 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. @@ -207,12 +207,12 @@ Möchten Sie trotzdem fortfahren? BiblePlugin.MediaItem - + Bible not fully loaded. Bibel wurde nicht vollständig geladen - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? Es ist nicht möglich Einzel- und Zweifach Bibelvers Suchergebnisse zu kombinieren. Sollen die Suchergebnisse gelöscht und eine neue Suche gestartet werden? @@ -229,11 +229,6 @@ Möchten Sie trotzdem fortfahren? <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. <strong>Bibel Erweiterung</strong><br />Die Bibel Erweiterung ermöglicht es Bibelverse aus verschiedenen Quellen anzuzeigen. - - - Import a Bible - Neue Bibel importieren - Bible @@ -253,77 +248,82 @@ Möchten Sie trotzdem fortfahren? Bibeln - + No Book Found Kein Buch gefunden - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. Es konnte kein passendes Buch gefunden werden. Überprüfen Sie bitte die Schreibweise. + + + Import a Bible. + Neue Bibel importieren. + - Add a new Bible - Füge eine neue Bibel hinzu + Add a new Bible. + Füge eine neue Bibel hinzu. - Edit the selected Bible - Bearbeite die ausgewählte Bibel + Edit the selected Bible. + Bearbeite die ausgewählte Bibel. - Delete the selected Bible - Lösche die ausgewählte Bibel + Delete the selected Bible. + Lösche die ausgewählte Bibel. - Preview the selected Bible - Zeige die ausgewählte Bibelverse in der Vorschau - - - - Send the selected Bible live - Zeige die ausgewählte Bibelverse Live + Preview the selected Bible. + Zeige die ausgewählte Bibelverse in der Vorschau. - Add the selected Bible to the service - Füge die ausgewählten Bibelverse zum Ablauf hinzu + Send the selected Bible live. + Zeige die ausgewählte Bibelverse Live. + + + + Add the selected Bible to the service. + Füge die ausgewählten Bibelverse zum Ablauf hinzu. BiblesPlugin.BibleManager - + Scripture Reference Error Fehler im Textverweis - + Web Bible cannot be used Für Onlinebibeln nicht verfügbar - + Text Search is not available with Web Bibles. In Onlinebibeln ist Textsuche nicht möglich. - + 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. Es wurde kein Suchbegriff eingegeben. Um nach mehreren Begriffen gleichzeitig zu suchen, müssen die Begriffe durch ein Leerzeichen getrennt sein. Alternative Suchbegriffe müssen per Komma getrennt sein. - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. Zurzeit sind keine Bibelübersetzungen installiert. Zur Suche muss eine solche mit dem Importassistent importiert werden. - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -342,7 +342,7 @@ Buch Kapitel:Verse-Verse,Kapitel:Verse-Verse Buch Kapitel:Verse-Kapitel:Verse - + No Bibles Available Keine Bibeln verfügbar @@ -581,70 +581,60 @@ Daher ist eine Verbindung zum Internet erforderlich. BiblesPlugin.MediaItem - + Quick Schnellsuche - + Find: Suchen: - - Results: - Ergebnisse: - - - + Book: Buch: - + Chapter: Kapitel: - + Verse: Vers: - + From: Von: - + To: Bis: - + Text Search Textsuche - - Clear - ersetzen - - - - Keep - ergänzen - - - + Second: Vergleichstext: - + Scripture Reference Bibelstelle + + + Toggle to keep or clear the previous results. + Vorheriges Suchergebnis behalten oder verwerfen. + BiblesPlugin.Opensong @@ -703,7 +693,7 @@ Daher ist eine Verbindung zum Internet erforderlich. &Titel: - + Split Slide Folie teilen @@ -720,30 +710,30 @@ Daher ist eine Verbindung zum Internet erforderlich. Add a new slide at bottom. - Neue Folie am Ende einfügen + Füge eine neue Folie am Ende ein. Edit the selected slide. - Ausgewählte Folie bearbeiten + Bearbeite ausgewählte Folie. Edit all the slides at once. - Alle Folien bearbeiten + Bearbeite alle Folien. - + Split a slide into two by inserting a slide splitter. - Einen Folienumbruch einfügen + Füge einen Folienumbruch ein. - + You need to type in a title. Bitte geben Sie einen Titel ein. - + You need to add at least one slide Es muss mindestens eine Folie erstellt werden. @@ -752,14 +742,19 @@ Daher ist eine Verbindung zum Internet erforderlich. Ed&it All &Alle bearbeiten + + + Split a slide into two only if it does not fit on the screen as one slide. + Teile ein Folie, wenn sie als Ganzes nicht auf den Bildschirm passt. + + + + Insert Slide + Folie einfügen + CustomsPlugin - - - Import a Custom - Sonderfolien importieren - Custom @@ -780,44 +775,49 @@ Daher ist eine Verbindung zum Internet erforderlich. - Load a new Custom - Eine neue Sonderfolie laden + Load a new Custom. + Eine neue Sonderfolie laden. + + + + Import a Custom. + Importieren eine Sonderfolie. - Add a new Custom - Erstelle eine neue Sonderfolie + Add a new Custom. + Erstelle eine neue Sonderfolie. - Edit the selected Custom - Bearbeite die ausgewählte Sonderfolie + Edit the selected Custom. + Bearbeite die ausgewählte Sonderfolie. - Delete the selected Custom - Lösche die ausgewählte Sonderfolie + Delete the selected Custom. + Lösche die ausgewählte Sonderfolie. - - Preview the selected Custom - Zeige die ausgewählte Sonderfolie in der Vorschau + + Preview the selected Custom. + Zeige die ausgewählte Sonderfolie in der Vorschau. - - Send the selected Custom live - Zeige die ausgewählte Sonderfolie Live + + Send the selected Custom live. + Zeige die ausgewählte Sonderfolie Live. - - Add the selected Custom to the service - Füge die ausgewählte Sonderfolie zum Ablauf hinzu + + Add the selected Custom to the service. + Füge die ausgewählte Sonderfolie zum Ablauf hinzu. GeneralTab - + General Allgemein @@ -849,44 +849,44 @@ Daher ist eine Verbindung zum Internet erforderlich. - Load a new Image - Lade ein neues Bild + Load a new Image. + Lade ein neues Bild. - Add a new Image - Füge eine neues Bild hinzu + Add a new Image. + Füge eine neues Bild hinzu. - Edit the selected Image - Bearbeite das ausgewählte Bild + Edit the selected Image. + Bearbeite das ausgewählte Bild. - Delete the selected Image - Lösche da ausgewählte Bild + Delete the selected Image. + Lösche das ausgewählte Bild. - Preview the selected Image - Zeige das ausgewählte Bild in der Vorschau + Preview the selected Image. + Zeige das ausgewählte Bild in der Vorschau. - Send the selected Image live - Zeige die ausgewählte Bild Live + Send the selected Image live. + Zeige die ausgewählte Bild Live. - Add the selected Image to the service - Füge das ausgewählte Bild zum Ablauf hinzu + Add the selected Image to the service. + Füge das ausgewählte Bild zum Ablauf hinzu. ImagePlugin.ExceptionDialog - + Select Attachment Anhang auswählen @@ -894,39 +894,39 @@ Daher ist eine Verbindung zum Internet erforderlich. ImagePlugin.MediaItem - + Select Image(s) Bilder auswählen - + You must select an image to delete. Das Bild, das entfernt werden soll, muss ausgewählt sein. - + You must select an image to replace the background with. Das Bild, das Sie als Hintergrund setzen möchten, muss ausgewählt sein. - + Missing Image(s) Fehlende Bilder - + The following image(s) no longer exist: %s Auf die folgenden Bilder kann nicht mehr zugegriffen werden: %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? Auf die folgenden Bilder kann nicht mehr zugegriffen werden: %s Wollen Sie die anderen Bilder trotzdem hinzufügen? - + There was a problem replacing your background, the image file "%s" no longer exists. Da auf das Bild »%s« nicht mehr zugegriffen werden kann, konnte es nicht als Hintergrund gesetzt werden. @@ -958,74 +958,74 @@ Wollen Sie die anderen Bilder trotzdem hinzufügen? - Load a new Media - Lade eine neue Audio-/Videodatei + Load a new Media. + Lade eine neue Audio-/Videodatei. - Add a new Media - Füge eine neue Audio-/Videodatei hinzu + Add a new Media. + Füge eine neue Audio-/Videodatei hinzu. - Edit the selected Media - Bearbeite die ausgewählte Audio-/Videodatei + Edit the selected Media. + Bearbeite die ausgewählte Audio-/Videodatei. - Delete the selected Media - Lösche 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 + 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 + 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 + Add the selected Media to the service. + Füge die ausgewählte Audio-/Videodatei zum Ablauf hinzu. MediaPlugin.MediaItem - + Select Media Audio-/Videodatei auswählen - + You must select a media file to delete. Die Audio-/Videodatei, die entfernt werden soll, muss ausgewählt sein. - + Missing Media File Fehlende Audio-/Videodatei - + The file %s no longer exists. Die Audio-/Videodatei »%s« existiert nicht mehr. - + You must select a media file to replace the background with. Das Video, das Sie als Hintergrund setzen möchten, muss ausgewählt sein. - + There was a problem replacing your background, the media file "%s" no longer exists. Da auf die Mediendatei »%s« nicht mehr zugegriffen werden kann, konnte sie nicht als Hintergrund gesetzt werden. - + Videos (%s);;Audio (%s);;%s (*) Video (%s);;Audio (%s);;%s (*) @@ -1252,12 +1252,12 @@ Tinggaard, Frode Woldsund Number of recent files to display: - Anzahl der zuletzt geöffneter Abläufe: + Anzahl zuletzt geöffneter Abläufe: Remember active media manager tab on startup - Aktiven Reiter der Medienverwaltung speichern + Erinnere aktiven Reiter der Medienverwaltung @@ -1282,7 +1282,7 @@ Tinggaard, Frode Woldsund Hide mouse cursor when over display window - Verstecke den Mauszeiger auf dem Hauptbildschirm + Verstecke den Mauszeiger auf dem Bildschrim @@ -1318,86 +1318,86 @@ 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. OpenLP.DisplayTagDialog - + Edit Selection Auswahl bearbeiten - - Update - Aktualisieren - - - + Description Beschreibung - + Tag Tag - + Start tag Anfangs Tag - + End tag End Tag - + Default Standard - + Tag Id Tag Nr. - + Start HTML Anfangs HTML - + End HTML End HTML + + + Save + Speichern + OpenLP.DisplayTagTab - + Update Error Aktualisierungsfehler - + Tag "n" already defined. Tag »n« bereits definiert. - + Tag %s already defined. Tag »%s« bereits definiert. @@ -1438,7 +1438,7 @@ dieser Fehler auftrat. Bitte verwenden Sie (wenn möglich) Englisch.Datei einhängen - + Description characters to enter : %s Mindestens noch %s Zeichen eingeben @@ -1494,7 +1494,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1572,7 +1572,7 @@ Version: %s Download complete. Click the finish button to start OpenLP. - Download vollständig. Klicken Sie »Fertig« um OpenLP zu starten. + Download vollständig. Klicken Sie »Abschließen« um OpenLP zu starten. @@ -1670,7 +1670,7 @@ To cancel the First Time Wizard completely, press the finish button now. +Um den Einrichtungsassistent nicht auszuführen, drücken Sie »Abschließen«. @@ -1741,122 +1741,122 @@ Um den Einrichtungsassistent nicht auszuführen, drücken Sie »Fertig«. 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 - + Slide loop delay: Schleifenverzögerung: - + 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 @@ -1877,7 +1877,7 @@ Um den Einrichtungsassistent nicht auszuführen, drücken Sie »Fertig«. OpenLP.MainDisplay - + OpenLP Display OpenLP-Anzeige @@ -1885,307 +1885,307 @@ Um den Einrichtungsassistent nicht auszuführen, drücken Sie »Fertig«. OpenLP.MainWindow - + &File &Datei - + &Import &Importieren - + &Export &Exportieren - + &View &Ansicht - + M&ode An&sichtsmodus - + &Tools E&xtras - + &Settings &Einstellungen - + &Language &Sprache - + &Help &Hilfe - + Media Manager Medienverwaltung - + Service Manager Ablaufverwaltung - + Theme Manager Designverwaltung - + &New &Neu - + &Open Ö&ffnen - + Open an existing service. Einen vorhandenen Ablauf öffnen. - + &Save &Speichern - + Save the current service to disk. Den aktuellen Ablauf speichern. - + Save &As... Speichern &unter... - + Save Service As Den aktuellen Ablauf unter einem neuen Namen speichern - + Save the current service under a new name. Den aktuellen Ablauf unter einem neuen Namen speichern. - + E&xit &Beenden - + Quit OpenLP OpenLP beenden - + &Theme &Design - + &Configure OpenLP... &Einstellungen... - + &Media Manager &Medienverwaltung - + Toggle Media Manager Die Medienverwaltung ein- bzw. ausblenden - + Toggle the visibility of the media manager. Die Medienverwaltung ein- bzw. ausblenden. - + &Theme Manager &Designverwaltung - + Toggle Theme Manager Die Designverwaltung ein- bzw. ausblenden - + Toggle the visibility of the theme manager. Die Designverwaltung ein- bzw. ausblenden. - + &Service Manager &Ablaufverwaltung - + Toggle Service Manager Die Ablaufverwaltung ein- bzw. ausblenden - + Toggle the visibility of the service manager. Die Ablaufverwaltung ein- bzw. ausblenden. - + &Preview Panel &Vorschau-Ansicht - + Toggle Preview Panel Die Vorschau ein- bzw. ausblenden - + Toggle the visibility of the preview panel. Die Vorschau ein- bzw. ausschalten. - + &Live Panel &Live-Ansicht - + Toggle Live Panel Die Live Ansicht ein- bzw. ausschalten - + Toggle the visibility of the live panel. Die Live Ansicht ein- bzw. ausschalten. - + &Plugin List Er&weiterungen... - + List the Plugins Erweiterungen verwalten - + &User Guide Benutzer&handbuch - + &About &Info über OpenLP - + More information about OpenLP Mehr Informationen über OpenLP - + &Online Help &Online Hilfe - + &Web Site &Webseite - + Use the system language, if available. Die Systemsprache, sofern diese verfügbar ist, verwenden. - + Set the interface language to %s Die Sprache von OpenLP auf %s stellen - + Add &Tool... Hilfsprogramm hin&zufügen... - + Add an application to the list of tools. Eine Anwendung zur Liste der Hilfsprogramme hinzufügen. - + &Default &Standard - + Set the view mode back to the default. Den Ansichtsmodus auf Standardeinstellung setzen. - + &Setup &Einrichten - + Set the view mode to Setup. Die Ansicht für die Ablauferstellung optimieren. - + &Live &Live - + Set the view mode to Live. Die Ansicht für den Live-Betrieb optimieren. - + OpenLP Version Updated Neue OpenLP Version verfügbar - + OpenLP Main Display Blanked Hauptbildschirm abgedunkelt - + The Main Display has been blanked out Die Projektion ist momentan nicht aktiv. - + Default Theme: %s Standarddesign: %s - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2200,45 +2200,55 @@ Sie können die letzte Version auf http://openlp.org abrufen. Deutsch - + Configure &Shortcuts... &Tastenkürzel einrichten... - + Close OpenLP OpenLP beenden - + Are you sure you want to close OpenLP? Sind Sie sicher, dass OpenLP beendet werden soll? - + Print the current Service Order. Drucke den aktuellen Ablauf. - + Open &Data Folder... Öffne &Datenverzeichnis... - + Open the folder where songs, bibles and other data resides. Öffne das Verzeichnis, wo Lieder, Bibeln und andere Daten gespeichert sind. - + &Configure Display Tags &Formatvorlagen - + &Autodetect &Automatisch + + + Update Theme Images + Aktualisiere Design Bilder + + + + Update the preview images for all themes. + Aktualisiert die Vorschaubilder aller Designs. + OpenLP.MediaManagerItem @@ -2248,44 +2258,55 @@ Sie können die letzte Version auf http://openlp.org abrufen. 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. - + Duplicate file name %s. Filename already exists in list + Doppelter Dateiname %s. +Dateiname existiert bereits in der Liste. + + + + No Search Results + Kein Suchergebnis + + + + You must select one or more items to add. @@ -2409,19 +2430,19 @@ Filename already exists in list - Add page break before each text item. + Add page break before each text item Einen Seitenumbruch nach jedem Text-Element einfügen OpenLP.ScreenList - + Screen Bildschirm - + primary Primär @@ -2437,234 +2458,219 @@ Filename already exists in list OpenLP.ServiceManager - - 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 - - - + 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 - + 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 - + OpenLP Service Files (*.osz) OpenLP Ablaufdateien (*.osz) - + Moves the selection up the window. Ausgewähltes nach oben schieben - + Move up Nach oben - + Go Live Live - + Send the selected item to Live. Zeige das ausgewählte Element Live. - + Moves the selection down the window. Ausgewähltes nach unten schieben - + 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? - + &Start Time &Startzeit - + Show &Preview &Vorschau - + Show &Live &Live - + 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 - + Untitled Service Unbenannt - + This file is either corrupt or not an OpenLP 2.0 service file. Entweder ist die Datei fehlerhaft oder sie ist keine OpenLP 2.0 Ablauf-Datei. @@ -2683,6 +2689,21 @@ Der Inhalt ist nicht in UTF-8 kodiert. Playing time: Spiellänge: + + + 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. + OpenLP.ServiceNoteForm @@ -2771,100 +2792,105 @@ Der Inhalt ist nicht in UTF-8 kodiert. OpenLP.SlideController - + Move to previous Vorherige Folie anzeigen - + Move to next Nächste Folie anzeigen - + Hide Verbergen - + Move to live Zur Live Ansicht verschieben - + Start continuous loop Endlosschleife starten - + Stop continuous loop Endlosschleife stoppen - + Delay between slides in seconds Pause zwischen den Folien in Sekunden - + Start playing media Abspielen - + Go To Gehe zu - + Edit and reload song preview Bearbeiten und Vorschau aktualisieren - + Blank Screen Anzeige abdunkeln - + Blank to Theme Design leeren - + Show Desktop Desktop anzeigen - + Previous Slide Vorherige Folie - + Next Slide Nächste Folie - + Previous Service Vorheriges Element - + Next Service Nächstes Element - + Escape Item Folie schließen - + Start/Stop continuous loop Starte/Stoppe Endlosschleife + + + Add to Service + Füge zum Ablauf hinzu. + OpenLP.SpellTextEdit @@ -2904,7 +2930,7 @@ Der Inhalt ist nicht in UTF-8 kodiert. Item Start and Finish Time - + Element Start- und Endzeit @@ -2914,7 +2940,7 @@ Der Inhalt ist nicht in UTF-8 kodiert. Finish - + Ende @@ -2924,7 +2950,7 @@ Der Inhalt ist nicht in UTF-8 kodiert. Time Validation Error - + Ungültige Zeitangaben @@ -3008,69 +3034,69 @@ 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. - + 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. The content encoding is not UTF-8. Die Datei ist keine gültige OpenLP Designdatei. Sie ist nicht in UTF-8 kodiert. - + File is not a valid theme. Diese Datei ist keine gültige OpenLP Designdatei. - + Theme %s is used in the %s plugin. Das Design »%s« wird in der »%s« Erweiterung benutzt. @@ -3090,42 +3116,42 @@ Sie 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. @@ -3155,7 +3181,7 @@ Sie ist nicht in UTF-8 kodiert. Exportiere Design - + OpenLP Themes (*.theme *.otz) OpenLP Designs (*.theme *.otz) @@ -3549,7 +3575,7 @@ Sie ist nicht in UTF-8 kodiert. Ablauf - + &Vertical Align: &Vertikale Ausrichtung: @@ -3571,7 +3597,7 @@ Sie ist nicht in UTF-8 kodiert. Create a new service. - Erstelle neuen Ablauf + Erstelle neuen Ablauf. @@ -3787,7 +3813,7 @@ Sie ist nicht in UTF-8 kodiert. Fertig. - + Starting import... Beginne Import... @@ -3936,11 +3962,6 @@ Sie ist nicht in UTF-8 kodiert. View Ansicht - - - View Model - Ansichtsmodus - Duplicate Error @@ -3961,11 +3982,16 @@ Sie ist nicht in UTF-8 kodiert. XML syntax error XML Syntax Fehler + + + View Mode + Ansichtsmodus + OpenLP.displayTagDialog - + Configure Display Tags Konfiguriere Formatvorlagen @@ -3997,79 +4023,79 @@ Sie ist nicht in UTF-8 kodiert. - Load a new Presentation - Lade eine neue Präsentation + Load a new Presentation. + Lade eine neue Präsentation. - - Delete the selected Presentation - Lösche die ausgewählte Präsentation + + Delete the selected Presentation. + Lösche die ausgewählte Präsentation. - - Preview the selected Presentation - Zeige die ausgewählte Präsentation in der Vorschau + + Preview the selected Presentation. + Zeige die ausgewählte Präsentation in der Vorschau. - - Send the selected Presentation live - Zeige die ausgewählte Präsentation Live + + Send the selected Presentation live. + Zeige die ausgewählte Präsentation Live. - - Add the selected Presentation to the service - Füge die ausgewählte Präsentation zum Ablauf hinzu + + Add the selected Presentation to the service. + Füge die ausgewählte Präsentation zum Ablauf hinzu. PresentationPlugin.MediaItem - + Select Presentation(s) Präsentationen auswählen - + Automatic automatisch - + Present using: Anzeigen mit: - + A presentation with that filename already exists. Eine Präsentation mit diesem Dateinamen existiert bereits. - + File Exists Datei existiert - + This type of presentation is not supported. Präsentationsdateien dieses Dateiformats werden nicht unterstützt. - + Presentations (%s) Präsentationen (%s) - + Missing Presentation Fehlende Präsentation - + The Presentation %s no longer exists. Die Präsentation »%s« existiert nicht mehr. - + The Presentation %s is incomplete, please reload. Die Präsentation »%s« ist nicht vollständig, bitte neu laden. @@ -4121,20 +4147,30 @@ Sie ist nicht in UTF-8 kodiert. RemotePlugin.RemoteTab - + Serve on IP address: Verfügbar über IP-Adresse: - + Port number: Port-Nummer: - + Server Settings Server-Einstellungen + + + Remote URL: + Fernsteuerung: + + + + Stage view URL: + Bühnenmonitor: + SongUsagePlugin @@ -4436,33 +4472,33 @@ Einstellung korrekt. - Add a new Song - Erstelle eine neues Lied + Add a new Song. + Erstelle eine neues Lied. - Edit the selected Song - Bearbeite das ausgewählte Lied + Edit the selected Song. + Bearbeite das ausgewählte Lied. - Delete the selected Song - Lösche das ausgewählte Lied + Delete the selected Song. + Lösche das ausgewählte Lied. - Preview the selected Song - Zeige das ausgewählte Lied in der Vorschau + Preview the selected Song. + Zeige das ausgewählte Lied in der Vorschau. - Send the selected Song live - Zeige das ausgewählte Lied Live + Send the selected Song live. + Zeige das ausgewählte Lied Live. - Add the selected Song to the service - Füge das ausgewählte Lied zum Ablauf hinzu + Add the selected Song to the service. + Füge das ausgewählte Lied zum Ablauf hinzu. @@ -4697,7 +4733,7 @@ Einstellung korrekt. Das Lied benötigt mindestens einen Autor. - + You need to type some text in to the verse. Das Lied benötigt mindestens einen Vers. @@ -4705,20 +4741,35 @@ Einstellung korrekt. SongsPlugin.EditVerseForm - + Edit Verse Vers bearbeiten - + &Verse type: &Verstyp: - + &Insert &Einfügen + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + Teile ein Folie, wenn sie als Ganzes nicht auf den Bildschirm passt. + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4914,43 +4965,43 @@ Einstellung korrekt. SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - Autoren, Themen und Bücher verwalten - - - + Titles Titel - + Lyrics Liedtext - + Delete Song(s)? Lied(er) löschen? - + CCLI License: CCLI-Lizenz: - + Entire Song Ganzes Lied - + Are you sure you want to delete the %n selected song(s)? 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. + SongsPlugin.OpenLP1SongImport diff --git a/resources/i18n/en.ts b/resources/i18n/en.ts index 114d673b9..51f68ece8 100644 --- a/resources/i18n/en.ts +++ b/resources/i18n/en.ts @@ -182,22 +182,22 @@ Do you want to continue anyway? BiblePlugin.HTTPBible - + 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. - + Parse Error - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. @@ -205,12 +205,12 @@ Do you want to continue anyway? BiblePlugin.MediaItem - + Bible not fully loaded. - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? @@ -227,41 +227,6 @@ Do you want to continue anyway? <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - - - Import a Bible - - - - - Add a new Bible - - - - - Edit the selected Bible - - - - - Delete the selected Bible - - - - - Preview the selected Bible - - - - - Send the selected Bible live - - - - - Add the selected Bible to the service - - Bible @@ -281,46 +246,81 @@ Do you want to continue anyway? - + No Book Found - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. + + + Import a Bible. + + + + + Add a new Bible. + + + + + Edit the selected Bible. + + + + + Delete the selected Bible. + + + + + Preview the selected Bible. + + + + + Send the selected Bible live. + + + + + Add the selected Bible to the service. + + BiblesPlugin.BibleManager - + Scripture Reference Error - + Web Bible cannot be used - + Text Search is not available with Web Bibles. - + 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. - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -332,7 +332,7 @@ Book Chapter:Verse-Chapter:Verse - + No Bibles Available @@ -568,70 +568,60 @@ demand and thus an internet connection is required. BiblesPlugin.MediaItem - + Quick - + Find: - - Results: - - - - + Book: - + Chapter: - + Verse: - + From: - + To: - + Text Search - - Clear - - - - - Keep - - - - + Second: - + Scripture Reference + + + Toggle to keep or clear the previous results. + + BiblesPlugin.Opensong @@ -705,12 +695,12 @@ demand and thus an internet connection is required. - + Split Slide - + Split a slide into two by inserting a slide splitter. @@ -725,12 +715,12 @@ demand and thus an internet connection is required. - + You need to type in a title. - + You need to add at least one slide @@ -739,49 +729,19 @@ demand and thus an internet connection is required. Ed&it All + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide + + CustomsPlugin - - - Import a Custom - - - - - Load a new Custom - - - - - Add a new Custom - - - - - Edit the selected Custom - - - - - Delete the selected Custom - - - - - Preview the selected Custom - - - - - Send the selected Custom live - - - - - Add the selected Custom to the service - - Custom @@ -800,11 +760,51 @@ demand and thus an internet connection is required. container title + + + Load a new Custom. + + + + + Import a Custom. + + + + + Add a new Custom. + + + + + Edit the selected Custom. + + + + + Delete the selected Custom. + + + + + Preview the selected Custom. + + + + + Send the selected Custom live. + + + + + Add the selected Custom to the service. + + GeneralTab - + General @@ -816,41 +816,6 @@ demand and thus an internet connection is required. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. - - - Load a new Image - - - - - Add a new Image - - - - - Edit the selected Image - - - - - Delete the selected Image - - - - - Preview the selected Image - - - - - Send the selected Image live - - - - - Add the selected Image to the service - - Image @@ -869,11 +834,46 @@ demand and thus an internet connection is required. container title + + + Load a new Image. + + + + + Add a new Image. + + + + + Edit the selected Image. + + + + + Delete the selected Image. + + + + + Preview the selected Image. + + + + + Send the selected Image live. + + + + + Add the selected Image to the service. + + ImagePlugin.ExceptionDialog - + Select Attachment @@ -881,38 +881,38 @@ demand and thus an internet connection is required. ImagePlugin.MediaItem - + Select Image(s) - + You must select an image to delete. - + You must select an image to replace the background with. - + Missing Image(s) - + The following image(s) no longer exist: %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? - + There was a problem replacing your background, the image file "%s" no longer exists. @@ -924,41 +924,6 @@ Do you want to add the other images anyway? <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. - - - Load a new Media - - - - - Add a new Media - - - - - Edit the selected Media - - - - - Delete the selected Media - - - - - Preview the selected Media - - - - - Send the selected Media live - - - - - Add the selected Media to the service - - Media @@ -977,41 +942,76 @@ Do you want to add the other images anyway? container title + + + Load a new Media. + + + + + Add a new Media. + + + + + Edit the selected Media. + + + + + Delete the selected Media. + + + + + Preview the selected Media. + + + + + Send the selected Media live. + + + + + Add the selected Media to the service. + + MediaPlugin.MediaItem - + Select Media - + You must select a media file to delete. - + You must select a media file to replace the background with. - + There was a problem replacing your background, the media file "%s" no longer exists. - + Missing Media File - + The file %s no longer exists. - + Videos (%s);;Audio (%s);;%s (*) @@ -1246,70 +1246,70 @@ Tinggaard, Frode Woldsund OpenLP.DisplayTagDialog - + Edit Selection - - Update - - - - + Description - + Tag - + Start tag - + End tag - + Default - + Tag Id - + Start HTML - + End HTML + + + Save + + OpenLP.DisplayTagTab - + Update Error - + Tag "n" already defined. - + Tag %s already defined. @@ -1348,7 +1348,7 @@ Tinggaard, Frode Woldsund - + Description characters to enter : %s @@ -1390,7 +1390,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1620,122 +1620,122 @@ To cancel the First Time Wizard completely, press the finish button now. 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 - + Slide loop delay: - + 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 @@ -1756,7 +1756,7 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainDisplay - + OpenLP Display @@ -1764,309 +1764,309 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainWindow - + &File - + &Import - + &Export - + &View - + M&ode - + &Tools - + &Settings - + &Language - + &Help - + Media Manager - + Service Manager - + Theme Manager - + &New - + &Open - + Open an existing service. - + &Save - + Save the current service to disk. - + Save &As... - + Save Service As - + Save the current service under a new name. - + E&xit - + Quit OpenLP - + &Theme - + &Configure OpenLP... - + &Media Manager - + Toggle Media Manager - + Toggle the visibility of the media manager. - + &Theme Manager - + Toggle Theme Manager - + Toggle the visibility of the theme manager. - + &Service Manager - + Toggle Service Manager - + Toggle the visibility of the service manager. - + &Preview Panel - + Toggle Preview Panel - + Toggle the visibility of the preview panel. - + &Live Panel - + Toggle Live Panel - + Toggle the visibility of the live panel. - + &Plugin List - + List the Plugins - + &User Guide - + &About - + More information about OpenLP - + &Online Help - + &Web Site - + Use the system language, if available. - + Set the interface language to %s - + Add &Tool... - + Add an application to the list of tools. - + &Default - + Set the view mode back to the default. - + &Setup - + Set the view mode to Setup. - + &Live - + Set the view mode to Live. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. - + OpenLP Version Updated - + OpenLP Main Display Blanked - + The Main Display has been blanked out - + Default Theme: %s @@ -2077,45 +2077,55 @@ You can download the latest version from http://openlp.org/. - + Configure &Shortcuts... - + Close OpenLP - + Are you sure you want to close OpenLP? - + Print the current Service Order. - + &Configure Display Tags - + Open &Data Folder... - + Open the folder where songs, bibles and other data resides. - + &Autodetect + + + Update Theme Images + + + + + Update the preview images for all themes. + + OpenLP.MediaManagerItem @@ -2125,46 +2135,56 @@ You can download the latest version from http://openlp.org/. - + &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. - + Duplicate file name %s. Filename already exists in list + + + You must select one or more items to add. + + + + + No Search Results + + OpenLP.PluginForm @@ -2286,19 +2306,19 @@ Filename already exists in list - Add page break before each text item. + Add page break before each text item OpenLP.ScreenList - + Screen - + primary @@ -2314,203 +2334,188 @@ Filename already exists in list OpenLP.ServiceManager - - Load an existing service - - - - - Save this service - - - - - Select a theme for the service - - - - + Move to &top - + Move item to the top of the service. - + Move &up - + Move item up one position in the service. - + Move &down - + Move item down one position in the service. - + Move to &bottom - + Move item to the end of the service. - + &Delete From Service - + Delete the selected item from the service. - + &Add New Item - + &Add to Selected Item - + &Edit Item - + &Reorder Item - + &Notes - + &Change Item Theme - + 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 - + &Expand all - + Expand all the service items. - + &Collapse all - + Collapse all the service items. - + Open File - + Moves the selection down the window. - + Move up - + Moves the selection up the window. - + Go Live - + Send the selected item to Live. - + &Start Time - + Show &Preview - + Show &Live - + Modified Service - + The current service has been modified. Would you like to save this service? @@ -2530,35 +2535,50 @@ The content encoding is not UTF-8. - + Untitled 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 not an OpenLP 2.0 service file. + + + Load an existing service. + + + + + Save this service. + + + + + Select a theme for the service. + + OpenLP.ServiceNoteForm @@ -2647,100 +2667,105 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Move to previous - + Move to next - + Hide - + Move to live - + Edit and reload song preview - + Start continuous loop - + Stop continuous loop - + Delay between slides in seconds - + Start playing media - + Go To - + Blank Screen - + Blank to Theme - + Show Desktop - + Previous Slide - + Next Slide - + Previous Service - + Next Service - + Escape Item - + Start/Stop continuous loop + + + Add to Service + + OpenLP.SpellTextEdit @@ -2909,68 +2934,68 @@ The content encoding is not UTF-8. - + %s (default) - + You must select a theme to edit. - + You are unable to delete the default theme. - + Theme %s is used in the %s plugin. - + You have not selected a theme. - + Save Theme - (%s) - + Theme Exported - + Your theme has been successfully exported. - + Theme Export Failed - + Your theme could not be exported due to an error. - + Select Theme Import File - + File is not a valid theme. The content encoding is not UTF-8. - + File is not a valid theme. @@ -2990,47 +3015,47 @@ The content encoding is not UTF-8. - + You must select a theme to rename. - + Rename Confirmation - + Rename %s theme? - + You must select a theme to delete. - + Delete Confirmation - + Delete %s theme? - + Validation Error - + A theme with this name already exists. - + OpenLP Themes (*.theme *.otz) @@ -3607,7 +3632,7 @@ The content encoding is not UTF-8. - + &Vertical Align: @@ -3662,7 +3687,7 @@ The content encoding is not UTF-8. - + Starting import... @@ -3821,11 +3846,6 @@ The content encoding is not UTF-8. View - - - View Model - - Title and/or verses not found @@ -3836,11 +3856,16 @@ The content encoding is not UTF-8. XML syntax error + + + View Mode + + OpenLP.displayTagDialog - + Configure Display Tags @@ -3852,31 +3877,6 @@ The content encoding is not UTF-8. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. - - - Load a new Presentation - - - - - Delete the selected Presentation - - - - - Preview the selected Presentation - - - - - Send the selected Presentation live - - - - - Add the selected Presentation to the service - - Presentation @@ -3895,56 +3895,81 @@ The content encoding is not UTF-8. container title + + + Load a new Presentation. + + + + + Delete the selected Presentation. + + + + + Preview the selected Presentation. + + + + + Send the selected Presentation live. + + + + + Add the selected Presentation to the service. + + PresentationPlugin.MediaItem - + Select Presentation(s) - + Automatic - + Present using: - + File Exists - + A presentation with that filename already exists. - + This type of presentation is not supported. - + Presentations (%s) - + Missing Presentation - + The Presentation %s no longer exists. - + The Presentation %s is incomplete, please reload. @@ -3996,20 +4021,30 @@ The content encoding is not UTF-8. RemotePlugin.RemoteTab - + Serve on IP address: - + Port number: - + Server Settings + + + Remote URL: + + + + + Stage view URL: + + SongUsagePlugin @@ -4192,36 +4227,6 @@ has been successfully created. Reindexing songs... - - - Add a new Song - - - - - Edit the selected Song - - - - - Delete the selected Song - - - - - Preview the selected Song - - - - - Send the selected Song live - - - - - Add the selected Song to the service - - Arabic (CP-1256) @@ -4333,6 +4338,36 @@ The encoding is responsible for the correct character representation. Exports songs using the export wizard. + + + Add a new Song. + + + + + Edit the selected Song. + + + + + Delete the selected Song. + + + + + Preview the selected Song. + + + + + Send the selected Song live. + + + + + Add the selected Song to the service. + + SongsPlugin.AuthorsForm @@ -4566,7 +4601,7 @@ The encoding is responsible for the correct character representation. - + You need to type some text in to the verse. @@ -4574,20 +4609,35 @@ The encoding is responsible for the correct character representation. SongsPlugin.EditVerseForm - + Edit Verse - + &Verse type: - + &Insert + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4783,42 +4833,42 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - - - - + Titles - + Lyrics - + Delete Song(s)? - + CCLI License: - + Entire Song - + Are you sure you want to delete the %n selected song(s)? + + + Maintain the lists of authors, topics and books. + + SongsPlugin.OpenLP1SongImport diff --git a/resources/i18n/en_GB.ts b/resources/i18n/en_GB.ts index 2ca4543cb..50f424f86 100644 --- a/resources/i18n/en_GB.ts +++ b/resources/i18n/en_GB.ts @@ -184,22 +184,22 @@ Do you want to continue anyway? BiblePlugin.HTTPBible - + Download Error Download Error - + Parse Error Parse 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. - + 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. @@ -207,12 +207,12 @@ Do you want to continue anyway? BiblePlugin.MediaItem - + Bible not fully loaded. Bible not fully loaded. - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? @@ -229,41 +229,6 @@ Do you want to continue anyway? <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - - - Import a Bible - Import a Bible - - - - Add a new Bible - Add a new Bible - - - - Edit the selected Bible - Edit the selected Bible - - - - Delete the selected Bible - Delete the selected Bible - - - - Preview the selected Bible - Preview the selected Bible - - - - Send the selected Bible live - Send the selected Bible live - - - - Add the selected Bible to the service - Add the selected Bible to the service - Bible @@ -283,47 +248,82 @@ Do you want to continue anyway? Bibles - + No Book Found No Book Found - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. + + + Import a Bible. + + + + + Add a new Bible. + + + + + Edit the selected Bible. + + + + + Delete the selected Bible. + + + + + Preview the selected Bible. + + + + + Send the selected Bible live. + + + + + Add the selected Bible to the service. + + BiblesPlugin.BibleManager - + Scripture Reference Error Scripture Reference Error - + Web Bible cannot be used Web Bible cannot be used - + Text Search is not available with Web Bibles. Text Search is not available with Web Bibles. - + 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. 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. - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -342,7 +342,7 @@ Book Chapter:Verse-Verse,Chapter:Verse-Verse Book Chapter:Verse-Chapter:Verse - + No Bibles Available No Bibles Available @@ -580,70 +580,60 @@ demand and thus an internet connection is required. BiblesPlugin.MediaItem - + Quick Quick - + Find: Find: - - Results: - Results: - - - + Book: Book: - + Chapter: Chapter: - + Verse: Verse: - + From: From: - + To: To: - + Text Search Text Search - - Clear - Clear - - - - Keep - Keep - - - + Second: Second: - + Scripture Reference Scripture Reference + + + Toggle to keep or clear the previous results. + + BiblesPlugin.Opensong @@ -717,12 +707,12 @@ demand and thus an internet connection is required. Edit all the slides at once. - + Split Slide Split Slide - + Split a slide into two by inserting a slide splitter. Split a slide into two by inserting a slide splitter. @@ -737,12 +727,12 @@ demand and thus an internet connection is required. &Credits: - + You need to type in a title. You need to type in a title. - + You need to add at least one slide You need to add at least one slide @@ -751,49 +741,19 @@ demand and thus an internet connection is required. Ed&it All Ed&it All + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide + + CustomsPlugin - - - Import a Custom - Import a Custom - - - - Load a new Custom - Load a new Custom - - - - Add a new Custom - Add a new Custom - - - - Edit the selected Custom - Edit the selected Custom - - - - Delete the selected Custom - Delete the selected Custom - - - - Preview the selected Custom - Preview the selected Custom - - - - Send the selected Custom live - Send the selected Custom live - - - - Add the selected Custom to the service - Add the selected Custom to the service - Custom @@ -812,11 +772,51 @@ demand and thus an internet connection is required. container title Custom + + + Load a new Custom. + + + + + Import a Custom. + + + + + Add a new Custom. + + + + + Edit the selected Custom. + + + + + Delete the selected Custom. + + + + + Preview the selected Custom. + + + + + Send the selected Custom live. + + + + + Add the selected Custom to the service. + + GeneralTab - + General General @@ -828,41 +828,6 @@ demand and thus an internet connection is required. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. - - - Load a new Image - Load a new Image - - - - Add a new Image - Add a new Image - - - - Edit the selected Image - Edit the selected Image - - - - Delete the selected Image - Delete the selected Image - - - - Preview the selected Image - Preview the selected Image - - - - Send the selected Image live - Send the selected Image live - - - - Add the selected Image to the service - Add the selected Image to the service - Image @@ -881,11 +846,46 @@ demand and thus an internet connection is required. container title Images + + + Load a new Image. + + + + + Add a new Image. + + + + + Edit the selected Image. + + + + + Delete the selected Image. + + + + + Preview the selected Image. + + + + + Send the selected Image live. + + + + + Add the selected Image to the service. + + ImagePlugin.ExceptionDialog - + Select Attachment Select Attachment @@ -893,39 +893,39 @@ demand and thus an internet connection is required. ImagePlugin.MediaItem - + Select Image(s) Select Image(s) - + You must select an image to delete. You must select an image to delete. - + You must select an image to replace the background with. You must select an image to replace the background with. - + Missing Image(s) Missing Image(s) - + The following image(s) no longer exist: %s The following image(s) no longer exist: %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? The following image(s) no longer exist: %s Do you want to add the other images anyway? - + There was a problem replacing your background, the image file "%s" no longer exists. There was a problem replacing your background, the image file "%s" no longer exists. @@ -937,41 +937,6 @@ Do you want to add the other images anyway? <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. - - - Load a new Media - Load a new Media - - - - Add a new Media - Add a 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 - Media @@ -990,41 +955,76 @@ Do you want to add the other images anyway? container title Media + + + Load a new Media. + + + + + Add a new Media. + + + + + Edit the selected Media. + + + + + Delete the selected Media. + + + + + Preview the selected Media. + + + + + Send the selected Media live. + + + + + Add the selected Media to the service. + + MediaPlugin.MediaItem - + Select Media Select Media - + You must select a media file to delete. You must select a media file to delete. - + Missing Media File Missing Media File - + The file %s no longer exists. The file %s no longer exists. - + You must select a media file to replace the background with. You must select a media file to replace the background with. - + There was a problem replacing your background, the media file "%s" no longer exists. There was a problem replacing your background, the media file "%s" no longer exists. - + Videos (%s);;Audio (%s);;%s (*) Videos (%s);;Audio (%s);;%s (*) @@ -1329,70 +1329,70 @@ Tinggaard, Frode Woldsund OpenLP.DisplayTagDialog - + Edit Selection Edit Selection - - Update - Update - - - + Description Description - + Tag Tag - + Start tag Start tag - + End tag End tag - + Default Default - + Tag Id Tag Id - + Start HTML Start HTML - + End HTML End HTML + + + Save + + OpenLP.DisplayTagTab - + Update Error Update Error - + Tag "n" already defined. Tag "n" already defined. - + Tag %s already defined. Tag %s already defined. @@ -1432,7 +1432,7 @@ Tinggaard, Frode Woldsund Attach File - + Description characters to enter : %s Description characters to enter : %s @@ -1488,7 +1488,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1735,122 +1735,122 @@ To cancel the First Time Wizard completely, press the finish button now. 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 - + Slide loop delay: Slide loop delay: - + 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 @@ -1871,7 +1871,7 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainDisplay - + OpenLP Display OpenLP Display @@ -1879,287 +1879,287 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainWindow - + &File &File - + &Import &Import - + &Export &Export - + &View &View - + M&ode M&ode - + &Tools &Tools - + &Settings &Settings - + &Language &Language - + &Help &Help - + Media Manager Media Manager - + Service Manager Service Manager - + Theme Manager Theme Manager - + &New &New - + &Open &Open - + Open an existing service. Open an existing service. - + &Save &Save - + Save the current service to disk. Save the current service to disk. - + Save &As... Save &As... - + Save Service As Save Service As - + Save the current service under a new name. Save the current service under a new name. - + E&xit E&xit - + Quit OpenLP Quit OpenLP - + &Theme &Theme - + &Configure OpenLP... &Configure OpenLP... - + &Media Manager &Media Manager - + Toggle Media Manager Toggle Media Manager - + Toggle the visibility of the media manager. Toggle the visibility of the media manager. - + &Theme Manager &Theme Manager - + Toggle Theme Manager Toggle Theme Manager - + Toggle the visibility of the theme manager. Toggle the visibility of the theme manager. - + &Service Manager &Service Manager - + Toggle Service Manager Toggle Service Manager - + Toggle the visibility of the service manager. Toggle the visibility of the service manager. - + &Preview Panel &Preview Panel - + Toggle Preview Panel Toggle Preview Panel - + Toggle the visibility of the preview panel. Toggle the visibility of the preview panel. - + &Live Panel &Live Panel - + Toggle Live Panel Toggle Live Panel - + Toggle the visibility of the live panel. Toggle the visibility of the live panel. - + &Plugin List &Plugin List - + List the Plugins List the Plugins - + &User Guide &User Guide - + &About &About - + More information about OpenLP More information about OpenLP - + &Online Help &Online Help - + &Web Site &Web Site - + Use the system language, if available. Use the system language, if available. - + Set the interface language to %s Set the interface language to %s - + Add &Tool... Add &Tool... - + Add an application to the list of tools. Add an application to the list of tools. - + &Default &Default - + Set the view mode back to the default. Set the view mode back to the default. - + &Setup &Setup - + Set the view mode to Setup. Set the view mode to Setup. - + &Live &Live - + Set the view mode to Live. Set the view mode to Live. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2167,22 +2167,22 @@ You can download the latest version from http://openlp.org/. You can download the latest version from http://openlp.org/. - + OpenLP Version Updated OpenLP Version Updated - + OpenLP Main Display Blanked OpenLP Main Display Blanked - + The Main Display has been blanked out The Main Display has been blanked out - + Default Theme: %s Default Theme: %s @@ -2193,45 +2193,55 @@ You can download the latest version from http://openlp.org/. English (United Kingdom) - + Configure &Shortcuts... Configure &Shortcuts... - + Close OpenLP Close OpenLP - + Are you sure you want to close OpenLP? Are you sure you want to close OpenLP? - + Print the current Service Order. Print the current Service Order. - + Open &Data Folder... Open &Data Folder... - + Open the folder where songs, bibles and other data resides. Open the folder where songs, Bibles and other data resides. - + &Configure Display Tags &Configure Display Tags - + &Autodetect &Autodetect + + + Update Theme Images + + + + + Update the preview images for all themes. + + OpenLP.MediaManagerItem @@ -2241,46 +2251,56 @@ You can download the latest version from http://openlp.org/. 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. - + Duplicate file name %s. Filename already exists in list + + + You must select one or more items to add. + + + + + No Search Results + + OpenLP.PluginForm @@ -2402,19 +2422,19 @@ Filename already exists in list - Add page break before each text item. + Add page break before each text item OpenLP.ScreenList - + Screen Screen - + primary primary @@ -2430,224 +2450,209 @@ Filename already exists in list OpenLP.ServiceManager - - 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 - - - + 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 - + 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 - + OpenLP Service Files (*.osz) OpenLP Service Files (*.osz) - + 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. - + Modified Service Modified Service - + &Start Time &Start Time - + Show &Preview Show &Preview - + Show &Live Show &Live - + 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? - + File could not be opened because it is corrupt. - + Empty File - + This service file does not contain any data. - + Corrupt File @@ -2667,15 +2672,30 @@ The content encoding is not UTF-8. - + Untitled Service - + This file is either corrupt or not an OpenLP 2.0 service file. + + + Load an existing service. + + + + + Save this service. + + + + + Select a theme for the service. + + OpenLP.ServiceNoteForm @@ -2764,100 +2784,105 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Move to previous Move to previous - + Move to next Move to next - + Hide Hide - + Move to live Move to live - + Start continuous loop Start continuous loop - + Stop continuous loop Stop continuous loop - + Delay between slides in seconds Delay between slides in seconds - + Start playing media Start playing media - + Go To Go To - + Edit and reload song preview Edit and reload song preview - + Blank Screen Blank Screen - + Blank to Theme Blank to Theme - + Show Desktop Show Desktop - + Previous Slide Previous Slide - + Next Slide Next Slide - + Previous Service Previous Service - + Next Service Next Service - + Escape Item Escape Item - + Start/Stop continuous loop + + + Add to Service + + OpenLP.SpellTextEdit @@ -3026,69 +3051,69 @@ 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. - + 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. The content encoding is not UTF-8. File is not a valid theme. The content encoding is not UTF-8. - + File is not a valid theme. File is not a valid theme. - + Theme %s is used in the %s plugin. Theme %s is used in the %s plugin. @@ -3108,47 +3133,47 @@ 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) @@ -3572,7 +3597,7 @@ The content encoding is not UTF-8. Start %s - + &Vertical Align: &Vertical Align: @@ -3780,7 +3805,7 @@ The content encoding is not UTF-8. Ready. - + Starting import... Starting import... @@ -3929,11 +3954,6 @@ The content encoding is not UTF-8. View - - - View Model - - Duplicate Error @@ -3954,11 +3974,16 @@ The content encoding is not UTF-8. XML syntax error + + + View Mode + + OpenLP.displayTagDialog - + Configure Display Tags Configure Display Tags @@ -3970,31 +3995,6 @@ The content encoding is not UTF-8. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. - - - Load a new Presentation - Load a new Presentation - - - - Delete the selected Presentation - Delete the selected Presentation - - - - Preview the selected Presentation - Preview the selected Presentation - - - - Send the selected Presentation live - Send the selected Presentation live - - - - Add the selected Presentation to the service - Add the selected Presentation to the service - Presentation @@ -4013,56 +4013,81 @@ The content encoding is not UTF-8. container title Presentations + + + Load a new Presentation. + + + + + Delete the selected Presentation. + + + + + Preview the selected Presentation. + + + + + Send the selected Presentation live. + + + + + Add the selected Presentation to the service. + + PresentationPlugin.MediaItem - + Select Presentation(s) Select Presentation(s) - + Automatic Automatic - + Present using: Present using: - + File Exists File Exists - + A presentation with that filename already exists. A presentation with that filename already exists. - + This type of presentation is not supported. This type of presentation is not supported. - + Presentations (%s) Presentations (%s) - + Missing Presentation Missing Presentation - + The Presentation %s no longer exists. The Presentation %s no longer exists. - + The Presentation %s is incomplete, please reload. The Presentation %s is incomplete, please reload. @@ -4114,20 +4139,30 @@ The content encoding is not UTF-8. RemotePlugin.RemoteTab - + Serve on IP address: Serve on IP address: - + Port number: Port number: - + Server Settings Server Settings + + + Remote URL: + + + + + Stage view URL: + + SongUsagePlugin @@ -4312,36 +4347,6 @@ has been successfully created. Reindexing songs... Reindexing songs... - - - Add a new Song - Add a new Song - - - - Edit the selected Song - Edit the selected Song - - - - Delete the selected Song - Delete the selected Song - - - - Preview the selected Song - Preview the selected Song - - - - Send the selected Song live - Send the selected Song live - - - - Add the selected Song to the service - Add the selected Song to the service - Song @@ -4456,6 +4461,36 @@ The encoding is responsible for the correct character representation.Exports songs using the export wizard. Exports songs using the export wizard. + + + Add a new Song. + + + + + Edit the selected Song. + + + + + Delete the selected Song. + + + + + Preview the selected Song. + + + + + Send the selected Song live. + + + + + Add the selected Song to the service. + + SongsPlugin.AuthorsForm @@ -4689,7 +4724,7 @@ The encoding is responsible for the correct character representation.You need to have an author for this song. - + You need to type some text in to the verse. You need to type some text in to the verse. @@ -4697,20 +4732,35 @@ The encoding is responsible for the correct character representation. SongsPlugin.EditVerseForm - + Edit Verse Edit Verse - + &Verse type: &Verse type: - + &Insert &Insert + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4906,43 +4956,43 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - Maintain the lists of authors, topics and books - - - + Titles Titles - + Lyrics Lyrics - + Delete Song(s)? Delete Song(s)? - + 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? + + + Maintain the lists of authors, topics and books. + + SongsPlugin.OpenLP1SongImport diff --git a/resources/i18n/en_ZA.ts b/resources/i18n/en_ZA.ts index ea32e1c35..40eeddebe 100644 --- a/resources/i18n/en_ZA.ts +++ b/resources/i18n/en_ZA.ts @@ -184,22 +184,22 @@ Do you want to continue anyway? BiblePlugin.HTTPBible - + Download Error Download Error - + Parse Error Parse 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. - + 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. @@ -207,12 +207,12 @@ Do you want to continue anyway? BiblePlugin.MediaItem - + Bible not fully loaded. Bible not fully loaded. - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? @@ -229,41 +229,6 @@ Do you want to continue anyway? <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - - - Import a Bible - Import a Bible - - - - Add a new Bible - Add a new Bible - - - - Edit the selected Bible - Edit the selected Bible - - - - Delete the selected Bible - Delete the selected Bible - - - - Preview the selected Bible - Preview the selected Bible - - - - Send the selected Bible live - Send the selected Bible live - - - - Add the selected Bible to the service - Add the selected Bible to the service - Bible @@ -283,47 +248,82 @@ Do you want to continue anyway? Bibles - + No Book Found No Book Found - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. + + + Import a Bible. + + + + + Add a new Bible. + + + + + Edit the selected Bible. + + + + + Delete the selected Bible. + + + + + Preview the selected Bible. + + + + + Send the selected Bible live. + + + + + Add the selected Bible to the service. + + BiblesPlugin.BibleManager - + Scripture Reference Error Scripture Reference Error - + Web Bible cannot be used Web Bible cannot be used - + Text Search is not available with Web Bibles. Text Search is not available with Web Bibles. - + 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. 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. - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -342,7 +342,7 @@ Book Chapter:Verse-Verse,Chapter:Verse-Verse Book Chapter:Verse-Chapter:Verse - + No Bibles Available No Bibles Available @@ -581,70 +581,60 @@ demand and thus an internet connection is required. BiblesPlugin.MediaItem - + Quick Quick - + Find: Find: - - Results: - Results: - - - + Book: Book: - + Chapter: Chapter: - + Verse: Verse: - + From: From: - + To: To: - + Text Search Text Search - - Clear - Clear - - - - Keep - Keep - - - + Second: Second: - + Scripture Reference Scripture Reference + + + Toggle to keep or clear the previous results. + + BiblesPlugin.Opensong @@ -718,12 +708,12 @@ demand and thus an internet connection is required. Edit all the slides at once. - + Split Slide Split Slide - + Split a slide into two by inserting a slide splitter. Split a slide into two by inserting a slide splitter. @@ -738,12 +728,12 @@ demand and thus an internet connection is required. &Credits: - + You need to type in a title. You need to type in a title. - + You need to add at least one slide You need to add at least one slide @@ -752,49 +742,19 @@ demand and thus an internet connection is required. Ed&it All Ed&it All + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide + + CustomsPlugin - - - Import a Custom - Import a Custom - - - - Load a new Custom - Load a new Custom - - - - Add a new Custom - Add a new Custom - - - - Edit the selected Custom - Edit the selected Custom - - - - Delete the selected Custom - Delete the selected Custom - - - - Preview the selected Custom - Preview the selected Custom - - - - Send the selected Custom live - Send the selected Custom live - - - - Add the selected Custom to the service - Add the selected Custom to the service - Custom @@ -813,11 +773,51 @@ demand and thus an internet connection is required. container title Custom + + + Load a new Custom. + + + + + Import a Custom. + + + + + Add a new Custom. + + + + + Edit the selected Custom. + + + + + Delete the selected Custom. + + + + + Preview the selected Custom. + + + + + Send the selected Custom live. + + + + + Add the selected Custom to the service. + + GeneralTab - + General General @@ -829,41 +829,6 @@ demand and thus an internet connection is required. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. - - - Load a new Image - Load a new Image - - - - Add a new Image - Add a new Image - - - - Edit the selected Image - Edit the selected Image - - - - Delete the selected Image - Delete the selected Image - - - - Preview the selected Image - Preview the selected Image - - - - Send the selected Image live - Send the selected Image live - - - - Add the selected Image to the service - Add the selected Image to the service - Image @@ -882,11 +847,46 @@ demand and thus an internet connection is required. container title Images + + + Load a new Image. + + + + + Add a new Image. + + + + + Edit the selected Image. + + + + + Delete the selected Image. + + + + + Preview the selected Image. + + + + + Send the selected Image live. + + + + + Add the selected Image to the service. + + ImagePlugin.ExceptionDialog - + Select Attachment Select Attachment @@ -894,39 +894,39 @@ demand and thus an internet connection is required. ImagePlugin.MediaItem - + Select Image(s) Select Image(s) - + You must select an image to delete. You must select an image to delete. - + You must select an image to replace the background with. You must select an image to replace the background with. - + Missing Image(s) Missing Image(s) - + The following image(s) no longer exist: %s The following image(s) no longer exist: %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? The following image(s) no longer exist: %s Do you want to add the other images anyway? - + There was a problem replacing your background, the image file "%s" no longer exists. There was a problem replacing your background, the image file "%s" no longer exists. @@ -938,41 +938,6 @@ Do you want to add the other images anyway? <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. - - - Load a new Media - Load a new Media - - - - Add a new Media - Add a 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 - Media @@ -991,41 +956,76 @@ Do you want to add the other images anyway? container title Media + + + Load a new Media. + + + + + Add a new Media. + + + + + Edit the selected Media. + + + + + Delete the selected Media. + + + + + Preview the selected Media. + + + + + Send the selected Media live. + + + + + Add the selected Media to the service. + + MediaPlugin.MediaItem - + Select Media Select Media - + You must select a media file to delete. You must select a media file to delete. - + Missing Media File Missing Media File - + The file %s no longer exists. The file %s no longer exists. - + You must select a media file to replace the background with. You must select a media file to replace the background with. - + There was a problem replacing your background, the media file "%s" no longer exists. There was a problem replacing your background, the media file "%s" no longer exists. - + Videos (%s);;Audio (%s);;%s (*) Videos (%s);;Audio (%s);;%s (*) @@ -1330,70 +1330,70 @@ Tinggaard, Frode Woldsund OpenLP.DisplayTagDialog - + Edit Selection Edit Selection - - Update - Update - - - + Description Description - + Tag Tag - + Start tag Start tag - + End tag End tag - + Default Default - + Tag Id Tag Id - + Start HTML Start HTML - + End HTML End HTML + + + Save + + OpenLP.DisplayTagTab - + Update Error Update Error - + Tag "n" already defined. Tag "n" already defined. - + Tag %s already defined. Tag %s already defined. @@ -1433,7 +1433,7 @@ Tinggaard, Frode Woldsund Attach File - + Description characters to enter : %s Description characters to enter : %s @@ -1489,7 +1489,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1736,122 +1736,122 @@ To cancel the First Time Wizard completely, press the finish button now. 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 - + 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 - + 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 - + Slide loop delay: Slide loop delay: - + sec sec - + Check for updates to OpenLP Check for updates to OpenLP - + Unblank display when adding new live item @@ -1872,7 +1872,7 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainDisplay - + OpenLP Display OpenLP Display @@ -1880,307 +1880,307 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainWindow - + &File &File - + &Import &Import - + &Export &Export - + &View &View - + M&ode M&ode - + &Tools &Tools - + &Settings &Settings - + &Language &Language - + &Help &Help - + Media Manager Media Manager - + Service Manager Service Manager - + Theme Manager Theme Manager - + &New &New - + &Open &Open - + Open an existing service. Open an existing service. - + &Save &Save - + Save the current service to disk. Save the current service to disk. - + Save &As... Save &As... - + Save Service As Save Service As - + Save the current service under a new name. Save the current service under a new name. - + E&xit E&xit - + Quit OpenLP Quit OpenLP - + &Theme &Theme - + &Configure OpenLP... &Configure OpenLP... - + &Media Manager &Media Manager - + Toggle Media Manager Toggle Media Manager - + Toggle the visibility of the media manager. Toggle the visibility of the media manager. - + &Theme Manager &Theme Manager - + Toggle Theme Manager Toggle Theme Manager - + Toggle the visibility of the theme manager. Toggle the visibility of the theme manager. - + &Service Manager &Service Manager - + Toggle Service Manager Toggle Service Manager - + Toggle the visibility of the service manager. Toggle the visibility of the service manager. - + &Preview Panel &Preview Panel - + Toggle Preview Panel Toggle Preview Panel - + Toggle the visibility of the preview panel. Toggle the visibility of the preview panel. - + &Live Panel &Live Panel - + Toggle Live Panel Toggle Live Panel - + Toggle the visibility of the live panel. Toggle the visibility of the live panel. - + &Plugin List &Plugin List - + List the Plugins List the Plugins - + &User Guide &User Guide - + &About &About - + More information about OpenLP More information about OpenLP - + &Online Help &Online Help - + &Web Site &Web Site - + Use the system language, if available. Use the system language, if available. - + Set the interface language to %s Set the interface language to %s - + Add &Tool... Add &Tool... - + Add an application to the list of tools. Add an application to the list of tools. - + &Default &Default - + Set the view mode back to the default. Set the view mode back to the default. - + &Setup &Setup - + Set the view mode to Setup. Set the view mode to Setup. - + &Live &Live - + Set the view mode to Live. Set the view mode to Live. - + OpenLP Version Updated OpenLP Version Updated - + OpenLP Main Display Blanked OpenLP Main Display Blanked - + The Main Display has been blanked out The Main Display has been blanked out - + Default Theme: %s Default Theme: %s - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2195,45 +2195,55 @@ You can download the latest version from http://openlp.org/. English (South Africa) - + Configure &Shortcuts... Configure &Shortcuts... - + Close OpenLP Close OpenLP - + Are you sure you want to close OpenLP? Are you sure you want to close OpenLP? - + Print the current Service Order. Print the current Service Order. - + Open &Data Folder... Open &Data Folder... - + Open the folder where songs, bibles and other data resides. Open the folder where songs, Bibles and other data resides. - + &Configure Display Tags &Configure Display Tags - + &Autodetect &Autodetect + + + Update Theme Images + + + + + Update the preview images for all themes. + + OpenLP.MediaManagerItem @@ -2243,46 +2253,56 @@ You can download the latest version from http://openlp.org/. 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. - + Duplicate file name %s. Filename already exists in list + + + You must select one or more items to add. + + + + + No Search Results + + OpenLP.PluginForm @@ -2404,19 +2424,19 @@ Filename already exists in list - Add page break before each text item. + Add page break before each text item OpenLP.ScreenList - + Screen Screen - + primary primary @@ -2432,224 +2452,209 @@ Filename already exists in list OpenLP.ServiceManager - - 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 - - - + 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 - + 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 - + OpenLP Service Files (*.osz) OpenLP Service Files (*.osz) - + 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. - + Modified Service Modified Service - + &Start Time &Start Time - + Show &Preview Show &Preview - + Show &Live Show &Live - + 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? - + File could not be opened because it is corrupt. - + Empty File - + This service file does not contain any data. - + Corrupt File @@ -2669,15 +2674,30 @@ The content encoding is not UTF-8. - + Untitled Service - + This file is either corrupt or not an OpenLP 2.0 service file. + + + Load an existing service. + + + + + Save this service. + + + + + Select a theme for the service. + + OpenLP.ServiceNoteForm @@ -2766,100 +2786,105 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Move to previous Move to previous - + Move to next Move to next - + Hide Hide - + Move to live Move to live - + Start continuous loop Start continuous loop - + Stop continuous loop Stop continuous loop - + Delay between slides in seconds Delay between slides in seconds - + Start playing media Start playing media - + Go To Go To - + Edit and reload song preview Edit and reload song preview - + Blank Screen Blank Screen - + Blank to Theme Blank to Theme - + Show Desktop Show Desktop - + Previous Slide Previous Slide - + Next Slide Next Slide - + Previous Service Previous Service - + Next Service Next Service - + Escape Item Escape Item - + Start/Stop continuous loop + + + Add to Service + + OpenLP.SpellTextEdit @@ -3028,69 +3053,69 @@ 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. - + 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. The content encoding is not UTF-8. File is not a valid theme. The content encoding is not UTF-8. - + File is not a valid theme. File is not a valid theme. - + Theme %s is used in the %s plugin. Theme %s is used in the %s plugin. @@ -3110,47 +3135,47 @@ 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) @@ -3574,7 +3599,7 @@ The content encoding is not UTF-8. Start %s - + &Vertical Align: &Vertical Align: @@ -3782,7 +3807,7 @@ The content encoding is not UTF-8. Ready. - + Starting import... Starting import... @@ -3931,11 +3956,6 @@ The content encoding is not UTF-8. View - - - View Model - - Duplicate Error @@ -3956,11 +3976,16 @@ The content encoding is not UTF-8. XML syntax error + + + View Mode + + OpenLP.displayTagDialog - + Configure Display Tags Configure Display Tags @@ -3972,31 +3997,6 @@ The content encoding is not UTF-8. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. - - - Load a new Presentation - Load a new Presentation - - - - Delete the selected Presentation - Delete the selected Presentation - - - - Preview the selected Presentation - Preview the selected Presentation - - - - Send the selected Presentation live - Send the selected Presentation live - - - - Add the selected Presentation to the service - Add the selected Presentation to the service - Presentation @@ -4015,56 +4015,81 @@ The content encoding is not UTF-8. container title Presentations + + + Load a new Presentation. + + + + + Delete the selected Presentation. + + + + + Preview the selected Presentation. + + + + + Send the selected Presentation live. + + + + + Add the selected Presentation to the service. + + PresentationPlugin.MediaItem - + Select Presentation(s) Select Presentation(s) - + Automatic Automatic - + Present using: Present using: - + File Exists File Exists - + A presentation with that filename already exists. A presentation with that filename already exists. - + This type of presentation is not supported. This type of presentation is not supported. - + Presentations (%s) Presentations (%s) - + Missing Presentation Missing Presentation - + The Presentation %s no longer exists. The Presentation %s no longer exists. - + The Presentation %s is incomplete, please reload. The Presentation %s is incomplete, please reload. @@ -4116,20 +4141,30 @@ The content encoding is not UTF-8. RemotePlugin.RemoteTab - + Serve on IP address: Serve on IP address: - + Port number: Port number: - + Server Settings Server Settings + + + Remote URL: + + + + + Stage view URL: + + SongUsagePlugin @@ -4314,36 +4349,6 @@ has been successfully created. Reindexing songs... Reindexing songs... - - - Add a new Song - Add a new Song - - - - Edit the selected Song - Edit the selected Song - - - - Delete the selected Song - Delete the selected Song - - - - Preview the selected Song - Preview the selected Song - - - - Send the selected Song live - Send the selected Song live - - - - Add the selected Song to the service - Add the selected Song to the service - Song @@ -4458,6 +4463,36 @@ The encoding is responsible for the correct character representation.Exports songs using the export wizard. Exports songs using the export wizard. + + + Add a new Song. + + + + + Edit the selected Song. + + + + + Delete the selected Song. + + + + + Preview the selected Song. + + + + + Send the selected Song live. + + + + + Add the selected Song to the service. + + SongsPlugin.AuthorsForm @@ -4691,7 +4726,7 @@ The encoding is responsible for the correct character representation.You need to have an author for this song. - + You need to type some text in to the verse. You need to type some text in to the verse. @@ -4699,20 +4734,35 @@ The encoding is responsible for the correct character representation. SongsPlugin.EditVerseForm - + Edit Verse Edit Verse - + &Verse type: &Verse type: - + &Insert &Insert + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4908,43 +4958,43 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - Maintain the lists of authors, topics and books - - - + Titles Titles - + Lyrics Lyrics - + Delete Song(s)? Delete Song(s)? - + 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)? + + + Maintain the lists of authors, topics and books. + + SongsPlugin.OpenLP1SongImport diff --git a/resources/i18n/es.ts b/resources/i18n/es.ts index 21bc210fd..c996124fc 100644 --- a/resources/i18n/es.ts +++ b/resources/i18n/es.ts @@ -12,18 +12,19 @@ Do you want to continue anyway? No Parameter Found - + Parámetro no encontrado No Placeholder Found - + Marcador No Encontrado The alert text does not contain '<>'. Do you want to continue anyway? - + El texto de alerta no contiene '<>'. +¿Desea continuar de todos modos? @@ -31,35 +32,35 @@ Do you want to continue anyway? &Alert - &Alerta + &Alerta Show an alert message. - Mostrar mensaje de alerta + Mostrar mensaje de alerta. <strong>Alerts Plugin</strong><br />The alert plugin controls the displaying of nursery alerts on the display screen - <strong>Alerts Plugin</strong><br />El plugin de alertas controla la visualización de mensajes de guardería + <strong>Complemento de Alertas</strong><br />El complemento de alertas controla la visualización de mensajes de guardería Alert name singular - Alerta + Alerta Alerts name plural - Alertas + Alertas Alerts container title - Alertas + Alertas @@ -67,22 +68,22 @@ Do you want to continue anyway? Alert Message - Mensaje de Alerta + Mensaje de Alerta Alert &text: - &Texto de Alerta: + &Texto de alerta: &New - &Nuevo + &Nuevo &Save - &Guardar + &Guardar @@ -107,7 +108,7 @@ Do you want to continue anyway? &Parameter: - + &Parámetro: @@ -123,7 +124,7 @@ Do you want to continue anyway? Font - Tipo de Letra + Fuente @@ -138,7 +139,7 @@ Do you want to continue anyway? Background color: - Color de Fondo: + Color de fondo: @@ -148,7 +149,7 @@ Do you want to continue anyway? Alert timeout: - Espera: + Tiempo de espera: @@ -156,64 +157,64 @@ Do you want to continue anyway? Importing testaments... %s - + Importando testamentos... %s Importing testaments... done. - + Importando testamentos... listo. Importing books... %s - + Importando libros... %s Importing verses from %s... Importing verses from <book name>... - + Importando versículos de %s... Importing verses... done. - + Importando versículos... listo. BiblePlugin.HTTPBible - + Download Error - + Error de Descarga - + Parse Error - + Error de Análisis - + 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. - + Hubo un problema al descargar los versículos seleccionados. Por favor revise la conexión a internet, y si el error persiste considere reportar esta falla. - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. - + Hubo un problema al extraer los versículos seleccionados. Si el error persiste considere reportar esta falla. BiblePlugin.MediaItem - + Bible not fully loaded. - + Carga incompleta. - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? - + No puede mezclar busquedas individuales y dobles de versículos. ¿Desea borrar los resultados y abrir una busqueda nueva? @@ -221,107 +222,108 @@ Do you want to continue anyway? &Bible - &Biblia + &Biblia <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>Bible Plugin</strong><br />El plugin de Biblia proporciona la capacidad de mostrar versículos de la Biblia de fuentes diferentes durante el servicio.. - - - - Import a Bible - - - - - Add a new Bible - - - - - Edit the selected Bible - - - - - Delete the selected Bible - - - - - Preview the selected Bible - - - - - Send the selected Bible live - - - - - Add the selected Bible to the service - + <strong>Complemento de Biblias</strong><br />El complemento de Biblias proporciona la capacidad de mostrar versículos de la Biblia, de diversas fuentes, durante el servicio. Bible name singular - Biblia + Biblia Bibles name plural - Biblias + Biblias Bibles container title - Biblias + Biblias - + No Book Found - No se encontró el libro + No se encontró el libro - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. - + No se hayó el nombre en esta Biblia. Revise que el nombre del libro esté deletreado correctamente. + + + + Import a Bible. + Importar una Biblia. + + + + Add a new Bible. + Agregar una Biblia nueva. + + + + Edit the selected Bible. + Editar la Biblia seleccionada. + + + + Delete the selected Bible. + Eliminar la Biblia seleccionada. + + + + Preview the selected Bible. + Visualizar la Biblia seleccionada. + + + + Send the selected Bible live. + Proyectar la Biblia seleccionada. + + + + Add the selected Bible to the service. + Agregar esta Biblia al servicio. BiblesPlugin.BibleManager - + Scripture Reference Error Error de Referencia Bíblica - + Web Bible cannot be used - + No se puede usar la Biblia Web - + Text Search is not available with Web Bibles. - + LA búsqueda no esta disponible para Biblias Web. - + 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. - + No ingreso una palabra clave a buscar. +Puede separar palabras clave por un espacio para buscar todas las palabras clave y puede separar conr una coma para buscar una de ellas. - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. - + No existen Bilbias instaladas. Puede usar el Asistente de Importación para instalar una o varias más. - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -330,12 +332,19 @@ Book Chapter:Verse-Verse Book Chapter:Verse-Verse,Verse-Verse Book Chapter:Verse-Verse,Chapter:Verse-Verse Book Chapter:Verse-Chapter:Verse - + OpenLP no soporta su referencia bíblica o esta no es válida. Por favor asegurese que tenga una estructura similar a alguno de los siguientes patrones: + +Libro Capítulo +Libro Capítulo-Capítulo +Libro Capítulo:Versículo-Versículo +Libro Capítulo:Versículo-Versículo,Versículo-Versículo +Libro Capítulo:Versículo-Versículo,Capítulo:Versículo-Versículo +Libro Capítulo:Versículo-Capítulo:Versículo - + No Bibles Available - + Biblias no Disponibles @@ -343,48 +352,49 @@ Book Chapter:Verse-Chapter:Verse Verse Display - Visualización de versículos + Visualización de versículos Only show new chapter numbers - Solo mostrar los números de capítulos nuevos + Solo mostrar números para capítulos nuevos Bible theme: - + Tema: No Brackets - + Sin paréntesis ( And ) - + ( Y ) { And } - + { Y } [ And ] - + [ Y ] Note: Changes do not affect verses already in the service. - + Nota: +Los cambios no se aplican a ítems en el servcio. Display second Bible verses - + Mostrar versículos secundarios @@ -392,245 +402,236 @@ Changes do not affect verses already in the service. Bible Import Wizard - Asistente de Importación de Biblias + Asistente para Biblias This wizard will help you to import Bibles from a variety of formats. Click the next button below to start the process by selecting a format to import from. - Este asistente le ayudará a importar Biblias en una variedad de formatos. Haga clic en el botón siguiente para empezar el proceso seleccionando un formato a importar. + Este asistente le ayudará a importar Biblias en una variedad de formatos. Haga clic en el botón siguiente para empezar el proceso seleccionando un formato a importar. Web Download - Descarga Web + Descarga Web Location: - Ubicación: + Ubicación: Crosswalk - Crosswalk + Crosswalk BibleGateway - BibleGateway + BibleGateway Bible: - Biblia: + Biblia: Download Options - Opciones de Descarga + Opciones de Descarga Server: - Servidor: + Servidor: Username: - Usuario: + Usuario: Password: - Contraseña: + Contraseña: Proxy Server (Optional) - Servidor Proxy (Opcional) + Servidor Proxy (Opcional) License Details - Detalles de Licencia + Detalles de Licencia Set up the Bible's license details. - Establezca los detalles de licencia de la Biblia. + Establezca los detalles de licencia de la Biblia. Version name: - + Nombre de la versión: Copyright: - Derechos de autor: + Derechos de autor: Please wait while your Bible is imported. - Por favor, espere mientras que la Biblia es importada. + Por favor, espere mientras que la Biblia es importada. You need to specify a file with books of the Bible to use in the import. - + Debe especificar un archivo que contenga los libros de la Biblia para importar. You need to specify a file of Bible verses to import. - + Debe especificar un archivo que contenga los versículos de la Biblia para importar. You need to specify a version name for your Bible. - + Debe ingresar un nombre para la versión de esta Biblia. Bible Exists - Ya existe la Biblia + Ya existe la Biblia Your Bible import failed. - La importación de su Biblia falló. + La importación de su Biblia falló. You need to set a copyright for your Bible. Bibles in the Public Domain need to be marked as such. - + Debe establecer los derechos de autor de su Biblia. Si es de Dominio Público debe indicarlo. This Bible already exists. Please import a different Bible or first delete the existing one. - + Ya existe esta Biblia. Por favor importe una diferente o borre la anterior antes de continuar. Starting Registering bible... - + Iniciando el Registro de la biblia... Registered bible. Please note, that verses will be downloaded on demand and thus an internet connection is required. - + Biblia registrada. Tome nota, los versículos se descargan según se necesiten +por lo tanto se requiere de una conexón activa a internet. Permissions: - + Permisos: CSV File - + Archivo CSV Bibleserver - + Servidor Bible file: - + Archivo de biblia: Testaments file: - + Archivo de testamentos: Books file: - + Archivo de libros: Verses file: - + Archivo de versículos: You have not specified a testaments file. Do you want to proceed with the import? - + No ha especificado un archivo con los testamentos. ¿Desea proceder con la importación? openlp.org 1.x Bible Files - + Archivos de Biblia openlp.org 1.x BiblesPlugin.MediaItem - + Quick - Rápida + Rápida - + Find: - Encontrar: + Encontrar: - - Results: - Resultados: - - - + Book: - Libro: + Libro: - + Chapter: - Capítulo: + Capítulo: - + Verse: - Versículo: + Versículo: - + From: - Desde: + Desde: - + To: - Hasta: + Hasta: - + Text Search - Búsqueda de texto + Buscar texto - - Clear - Limpiar - - - - Keep - Conservar - - - + Second: - + Secundaria: - + Scripture Reference + Referencia Bíblica + + + + Toggle to keep or clear the previous results. @@ -640,7 +641,7 @@ demand and thus an internet connection is required. Importing %s %s... Importing <book name> <chapter>... - + Importando %s %s... @@ -648,13 +649,13 @@ demand and thus an internet connection is required. Detecting encoding (this may take a few minutes)... - + Detectando codificación (esto puede tardar algunos minutos)... Importing %s %s... Importing <book name> <chapter>... - + Importando %s %s... @@ -662,7 +663,7 @@ demand and thus an internet connection is required. <strong>Custom Plugin</strong><br />The custom plugin provides the ability to set up custom text slides that can be displayed on the screen the same way songs are. This plugin provides greater freedom over the songs plugin. - + <strong>Diapositivas</strong><br />Este complemento le permite mostar diapositivas de texto, de igual manera que se muestran las canciones. Este complemento ofrece una mayor libertad que el complemento de canciones. @@ -670,12 +671,12 @@ demand and thus an internet connection is required. Custom Display - Presentación Personalizada + Pantalla Personal Display footer - + Mostrar pie de página @@ -683,131 +684,141 @@ demand and thus an internet connection is required. Edit Custom Slides - Editar Diapositivas Personalizadas + Editar Diapositivas &Title: - + &Título: Add a new slide at bottom. - + Nueva diapositiva al final. Edit the selected slide. - + Editar la diapositiva seleccionada. Edit all the slides at once. - + Editar todas las diapositivas a la vez. - + Split Slide - + Dividir la Diapositiva - + Split a slide into two by inserting a slide splitter. - + Dividir la diapositiva insertando un separador. The&me: - + Te&ma: &Credits: - + &Creditos: - + You need to type in a title. - + Debe escribir un título. - + You need to add at least one slide - + Debe agregar al menos una diapositiva Ed&it All + Ed&itar Todo + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide CustomsPlugin - - - Import a Custom - - - - - Load a new Custom - - - - - Add a new Custom - - - - - Edit the selected Custom - - - - - Delete the selected Custom - - - - - Preview the selected Custom - - - - - Send the selected Custom live - - - - - Add the selected Custom to the service - - Custom name singular - + Diapositiva Customs name plural - + Diapositivas Custom container title - + Diapositivas + + + + Load a new Custom. + Cargar nueva Diapositiva. + + + + Import a Custom. + Importar nueva Diapositiva. + + + + Add a new Custom. + Agregar nueva Diapositiva. + + + + Edit the selected Custom. + Editar Diapositiva seleccionada. + + + + Delete the selected Custom. + Eliminar Diapositiva seleccionada. + + + + Preview the selected Custom. + Visualizar Diapositiva seleccionada. + + + + Send the selected Custom live. + Proyectar Diapositiva seleccionada. + + + + Add the selected Custom to the service. + Agregar Diapositiva al servicio. GeneralTab - + General - + General @@ -815,107 +826,108 @@ demand and thus an internet connection is required. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. - - - - - Load a new Image - - - - - Add a new Image - - - - - Edit the selected Image - - - - - Delete the selected Image - - - - - Preview the selected Image - - - - - Send the selected Image live - - - - - Add the selected Image to the service - + <strong>Complemento de Imagen</strong><br />El complemento de imagen permite proyectar imágenes.<br />Una de sus características, es que permite agrupar imagenes para facilitar su proyección. Este plugin puede utilizar el "bulce de tiempo" de OpenLP para crear una presentación que avance automáticamente. Aparte, las imágenes de este plugin se pueden utilizar para reemplazar la imagen de fondo del tema en actual. Image name singular - Imagen + Imagen Images name plural - + Imágenes Images container title - + Imágenes + + + + Load a new Image. + Cargar una Imagen nueva. + + + + Add a new Image. + Agregar una Imagen nueva. + + + + Edit the selected Image. + Editar la Imágen seleccionada. + + + + Delete the selected Image. + Eliminar la Imagen seleccionada. + + + + Preview the selected Image. + Visualizar la Imagen seleccionada. + + + + Send the selected Image live. + Proyectar la Imagen seleccionada. + + + + Add the selected Image to the service. + Agregar esta Imagen al servicio. ImagePlugin.ExceptionDialog - + Select Attachment - + Seleccionar Anexo ImagePlugin.MediaItem - + Select Image(s) - Seleccionar Imagen(es) + Seleccionar Imagen(es) - + You must select an image to delete. - + Debe seleccionar una imagen para eliminar. - + You must select an image to replace the background with. - + Debe seleccionar una imagen para reemplazar el fondo. - + Missing Image(s) - + Imágen(es) faltante - + The following image(s) no longer exist: %s - + La siguiente imagen(es) ya no esta disponible: %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? - + La siguiente imagen(es) ya no esta disponible: %s +¿Desea agregar las demás imágenes? - + There was a problem replacing your background, the image file "%s" no longer exists. - + Ocurrió un problema al reemplazar el fondo, el archivo "%s" ya no existe. @@ -923,98 +935,98 @@ Do you want to add the other images anyway? <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. - - - - - Load a new Media - - - - - Add a new Media - - - - - Edit the selected Media - - - - - Delete the selected Media - - - - - Preview the selected Media - - - - - Send the selected Media live - - - - - Add the selected Media to the service - + <strong>Complemento de Medios</strong><br />El complemento de medios permite reproducir audio y video. Media name singular - Medios + Medio Media name plural - Medios + Medios Media container title - Medios + Medios + + + + Load a new Media. + Cargar un Medio nuevo. + + + + Add a new Media. + Agregar un Medio nuevo. + + + + Edit the selected Media. + Editar el Medio seleccionado. + + + + Delete the selected Media. + Eliminar el Medio seleccionado. + + + + Preview the selected Media. + Visualizar el Medio seleccionado. + + + + Send the selected Media live. + Proyectar el Medio seleccionado. + + + + Add the selected Media to the service. + Agregar este Medio al servicio. MediaPlugin.MediaItem - - - Select Media - Seleccionar Medios - - - - You must select a media file to delete. - - - - - Missing Media File - - - - - The file %s no longer exists. - - - - - You must select a media file to replace the background with. - - - - - There was a problem replacing your background, the media file "%s" no longer exists. - - + Select Media + Seleccionar Medios + + + + You must select a media file to delete. + Debe seleccionar un medio para eliminar. + + + + Missing Media File + Archivo de Medios faltante + + + + The file %s no longer exists. + El archivo %s ya no esta disponible. + + + + You must select a media file to replace the background with. + Debe seleccionar un archivo de medios para reemplazar el fondo. + + + + There was a problem replacing your background, the media file "%s" no longer exists. + Ocurrió un problema al reemplazar el fondo, el archivo "%s" ya no existe. + + + Videos (%s);;Audio (%s);;%s (*) - + Videos (%s);;Audio (%s);;%s (*) @@ -1022,12 +1034,12 @@ Do you want to add the other images anyway? Media Display - + Pantalla de Medios Use Phonon for video playback - + Use Phonon para reproducir video @@ -1035,7 +1047,7 @@ Do you want to add the other images anyway? Image Files - + Archivos de Imagen @@ -1049,37 +1061,43 @@ OpenLP is free church presentation software, or lyrics projection software, used 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 es un software gratuito de proyección para iglesias, o de proyección de cantos, utilizado para mostar diapositivas de canciones, versículos de la Biblia, videos, imágenes, e incluso presentaciones (si están instalados OpenOffice.org, PowerPoint o PowerPoint Viewer) para el servicio de alabanza, utilizando una computadora y un proyector de datos. + +Para más información de OpenLP visite: http://openlp.org/ + +OpenLP es desarrollado y mantenido por voluntarios. Si desea apoyar la creación de más software Cristiano gratuito, por favor considere contribuir mediante el botón de abajo. Credits - Créditos + Créditos License - Licencia + Licencia Contribute - Contribuir + Contribuir build %s - + compilación %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 es un programa gratuito; usted puede distribuirlo y/o modificarlo bajo los términos de GNU General Public License según la publicación de Free Software Foundation; versión 2 de la Licencia. 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. @@ -1144,7 +1162,67 @@ Final Credit on the cross, setting us free from sin. We bring this software to you for free because He has set us free. - + Líder de Proyecto + %s + +Desarrolladores + %s + +Contribuyentes + %s + +Probadores + %s + +Empaquetadores + %s + +Traductores + Africano (af) + %s + Alemán (de) + %s + Inglés, Reino Unido (en_GB) + %s + Inglés, Sudáfrica (en_ZA) + %s + Estonio (et) + %s + Francés (fr) + %s + Húngaro (hu) + %s + Japonés (ja) + %s + Bokmål Noruego (nb) + %s + Holandés (nl) + %s + Portugés, Brasil (pt_BR) + %s + Ruso (ru) + %s + +Documentación + %s + +Compilado con + Python: http://www.python.org/ + Qt4: http://qt.nokia.com/ + PyQt4: http://www.riverbankcomputing.co.uk/software/pyqt/intro + Oxygen Icons: http://oxygen-icons.org/ + +Crédito Final + "Porque de tal manera amó Dios al mundo, + que ha dado a su Hijo unigénito, + para que todo aquel que en él cree, + no se pierda, mas tenga vida eterna." -- Juan 3:16 + + Y por último pero no menos importante, + el crédito final va a Dios nuestro Padre, + por enviar a su Hijo a morir en la cruz, + liberándonos del pecado. Traemos este software + de forma gratuita, porque Él nos ha liberado. @@ -1153,7 +1231,11 @@ Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven Meinert Jordan, Andreas Preikschat, Christian Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten Tinggaard, Frode Woldsund - + Copyright © 2004-2011 Raoul Snyman +Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, +Meinert Jordan, Andreas Preikschat, Christian Richter, Philip +Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten +Tinggaard, Frode Woldsund @@ -1161,158 +1243,158 @@ Tinggaard, Frode Woldsund 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: + 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. OpenLP.DisplayTagDialog - + Edit Selection - + Editar Selección - - Update - - - - + Description - - - - - Tag - - - - - Start tag - + Descripción - End tag - + Tag + Marca + + + + Start tag + Marca inicial + End tag + Marca final + + + Default - + Por defecto - + Tag Id - + Id - + Start HTML - + Inicio HTML - + End HTML + Final HTML + + + + Save OpenLP.DisplayTagTab - + Update Error - + Error de Actualización - + Tag "n" already defined. - + Etiqueta "n" ya definida. - + Tag %s already defined. - + Etiqueta %s ya definida. @@ -1320,38 +1402,39 @@ Tinggaard, Frode Woldsund Oops! OpenLP hit a problem, and couldn't recover. The text in the box below contains information that might be helpful to the OpenLP developers, so please e-mail it to bugs@openlp.org, along with a detailed description of what you were doing when the problem occurred. - + ¡Uy! OpenLP encontró un problema, y no pudo recuperarse. El texto en el cuadro siguiente contiene información que podría ser útil para los desarrolladores de OpenLP, así que por favor envíe un correo a bugs@openlp.org, junto con una descripción detallada de lo que estaba haciendo cuando se produjo el problema. Error Occurred - + Se presento un Error Send E-Mail - + Enviar E-Mail Save to File - + Guardar a Archivo Please enter a description of what you were doing to cause this error (Minimum 20 characters) - + Por favor ingrese una descripción de lo que hacia al ocurrir el error +(Mínimo 20 caracteres) Attach File - + Archivo Adjunto - + Description characters to enter : %s - + Caracteres faltantes: %s @@ -1360,17 +1443,18 @@ Tinggaard, Frode Woldsund Platform: %s - + Plataforma: %s + Save Crash Report - + Guardar Reporte de Errores Text files (*.txt *.log *.text) - + Archivos de texto (*.txt *.log *.text) @@ -1388,10 +1472,23 @@ Version: %s --- Library Versions --- %s - + **OpenLP Bug Report** +Version: %s + +--- Details of the Exception. --- + +%s + + --- Exception Traceback --- +%s +--- System information --- +%s +--- Library Versions --- +%s + - + *OpenLP Bug Report* Version: %s @@ -1407,7 +1504,21 @@ Version: %s %s Please add the information that bug reports are favoured written in English. - + *Reporte de Errores OpenLP* +(Nota: Reporte de preferencia en Inglés) +Version: %s + +--- Detalles de la Excepción. --- + +%s + + --- Ratreo de Excepción --- +%s +--- Información del sistema --- +%s +--- Versión de Librerias --- +%s + @@ -1415,17 +1526,17 @@ Version: %s File Rename - + Cambiar Nombre New File Name: - + Nombre Nuevo: File Copy - + Copiar Archivo @@ -1433,17 +1544,17 @@ Version: %s Select Translation - + Seleccionar Idioma Choose the translation you'd like to use in OpenLP. - + Elija la traducción que desea utilizar en OpenLP. Translation: - + Traducción: @@ -1451,97 +1562,97 @@ Version: %s 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... First Time Wizard - + Asistente Inicial Welcome to the First Time Wizard - + Bienvenido al Asistente Inicial This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - + Este asistente le ayudará a configurar OpenLP para su primer uso. Haga clic en el botón siguiente para empezar el proceso, seleccionando sus preferencias iniciales. Activate required Plugins - + Activar complementos necesarios Select the Plugins you wish to use. - + Seleccione los complementos que desea usar. Songs - + Canciones Custom Text - + Texto Personalizado Bible - + Biblia Images - + Imágenes Presentations - + Presentaciones Media (Audio and Video) - + Medios (Audio y Video) Allow remote access - + Permitir acceso remoto Monitor Song Usage - + Monitorear el uso de Canciones Allow Alerts - + Permitir Alertas No Internet Connection - + Sin Conexión a Internet Unable to detect an Internet connection. - + No se detectó una conexión a Internet. @@ -1550,195 +1661,199 @@ Version: %s To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. To cancel the First Time Wizard completely, press the finish button now. - + No se encontró una conexión a Internet. El Asistente Inicial necesita una conexión a Internet para poder descargar canciones de muestra, Biblias y temas. + +Para volver a ejecutar el AsistenteInicial e importar estos datos de muestra posteriormente, presione el botón de cancelar ahora, compruebe su conexión a Internet y reinicie OpenLP. + +Para cancelar el Asistente Inicial por completo, pulse el botón Finalizar ahora. Sample Songs - + Canciones de Muestra Select and download public domain songs. - + Seleccionar y descargar canciones de dominio público. Sample Bibles - + Biblias de Muestra Select and download free Bibles. - + Seleccionar y descargar Biblias gratuitas. Sample Themes - + Temas de Muestra Select and download sample themes. - + Seleccionar y descargar temas de muestra. Default Settings - + Configuración por defecto Set up default settings to be used by OpenLP. - + Utilizar la configuración por defecto. Setting Up And Importing - + Preferencias e Inportación Please wait while OpenLP is set up and your data is imported. - + Por favor espere mientras OpenLP se configura e importa los datos. Default output display: - + Pantalla predeterminada: Select default theme: - + Seleccione el tema por defecto: Starting configuration process... - + Iniciando proceso de configuración... OpenLP.GeneralTab - + General - General + General - + Monitors - Monitores + Monitores - + Select monitor for output display: - Seleccionar monitor para visualizar la salida: + Seleccionar monitor para proyectar: - + Display if a single screen - + Mostar si solo hay una pantalla - + Application Startup - Inicio de la Aplicación + Inicio de la Aplicación - + Show blank screen warning - Mostrar advertencia de pantalla en blanco + Mostrar advertencia de pantalla en blanco - + Automatically open the last service - Abrir automáticamente el último servicio + 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 + + + + Slide loop delay: + Tiempo entre diapositivas: + + + + sec + seg - Show the splash screen - Mostrar pantalla de bienvenida - - - - Application Settings - Configuración del Programa - - - - Prompt to save before starting a new service - - - - - Automatically preview next item in service - - - - - Slide loop delay: - - - - - sec - - - - CCLI Details - Detalles de CCLI + Detalles de CCLI - + SongSelect username: - + Usuario SongSelect: - + SongSelect password: - - - - - Display Position - - - - - X - - - - - Y - - - - - Height - - - - - Width - - - - - Override display position - - - - - Check for updates to OpenLP - + 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 @@ -1746,375 +1861,387 @@ To cancel the First Time Wizard completely, press the finish button now. Language - + Idioma Please restart OpenLP to use your new language setting. - + Por favor reinicie OpenLP para usar su nuevo idioma. OpenLP.MainDisplay - + OpenLP Display - + Pantalla de OpenLP OpenLP.MainWindow - + &File - &Archivo + &Archivo - + &Import - &Importar + &Importar + + + + &Export + &Exportar + + + + &View + &Ver + + + + M&ode + M&odo + + + + &Tools + &Herramientas + + + + &Settings + &Preferencias + + + + &Language + &Idioma - &Export - &Exportar + &Help + &Ayuda - &View - &Ver - - - - M&ode - M&odo + Media Manager + Gestor de Medios - &Tools - &Herramientas + Service Manager + Gestor de Servicio - - &Settings - &Preferencias - - - - &Language - &Idioma + + Theme Manager + Gestor de Temas - &Help - &Ayuda - - - - Media Manager - Gestor de Medios + &New + &Nuevo - Service Manager - Gestor de Servicio + &Open + &Abrir - Theme Manager - Gestor de Temas + Open an existing service. + Abrir un servicio existente. - &New - &Nuevo - - - - &Open - &Abrir - - - - Open an existing service. - - - - &Save - &Guardar + &Guardar - + Save the current service to disk. - + Guardar el servicio actual en el disco. - + Save &As... - Guardar &Como... + Guardar &Como... + + + + Save Service As + Guardar Servicio Como + + + + Save the current service under a new name. + Guardar el servicio actual con un nombre nuevo. - Save Service As - Guardar Servicio Como + E&xit + &Salir - Save the current service under a new name. - - - - - E&xit - &Salir - - - Quit OpenLP - Salir de OpenLP + Salir de OpenLP - + &Theme - &Tema + &Tema - + &Configure OpenLP... - + &Configurar OpenLP... - + &Media Manager - Gestor de &Medios + Gestor de &Medios - + Toggle Media Manager - Alternar Gestor de Medios + Alternar Gestor de Medios - + Toggle the visibility of the media manager. - + Alernar la visibilidad del gestor de medios. - + &Theme Manager - Gestor de &Temas + Gestor de &Temas - + Toggle Theme Manager - Alternar Gestor de Temas + Alternar Gestor de Temas - + Toggle the visibility of the theme manager. - + Alernar la visibilidad del gestor de temas. - + &Service Manager - Gestor de &Servicio + Gestor de &Servicio - + Toggle Service Manager - Alternar Gestor de Servicio + Alternar Gestor de Servicio - + Toggle the visibility of the service manager. - + Alernar la visibilidad del gestor de servicio. - + &Preview Panel - &Panel de Vista Previa + &Panel de Vista Previa - + Toggle Preview Panel - Alternar Panel de Vista Previa + Alternar Panel de Vista Previa - + Toggle the visibility of the preview panel. - + Alernar la visibilidad del panel de vista previa. - + &Live Panel - + Panel de Pro&yección - + Toggle Live Panel - + Alternar Panel de Proyección - + Toggle the visibility of the live panel. - + Alternar la visibilidad del panel de proyección. + + + + &Plugin List + Lista de &Complementos + + + + List the Plugins + Lista de Complementos + + + + &User Guide + Guía de &Usuario + + + + &About + &Acerca de - &Plugin List - Lista de &Plugins + More information about OpenLP + Más información acerca de OpenLP - List the Plugins - Lista de Plugins - - - - &User Guide - Guía de &Usuario - - - - &About - &Acerca De + &Online Help + &Ayuda En Línea - More information about OpenLP - Más información acerca de OpenLP - - - - &Online Help - &Ayuda En Línea - - - &Web Site - Sitio &Web + Sitio &Web - + Use the system language, if available. - + Usar el idioma del sistema, si esta disponible. - + Set the interface language to %s - + Fijar el idioma de la interface en %s - + Add &Tool... - + Agregar &Herramienta... - + Add an application to the list of tools. - + Agregar una aplicación a la lista de herramientas. + + + + &Default + Por &defecto - &Default - + Set the view mode back to the default. + Modo de vizualización por defecto. - Set the view mode back to the default. - + &Setup + &Administración - - &Setup - + + Set the view mode to Setup. + Modo de Administración. - Set the view mode to Setup. - - - - &Live - En &vivo + En &vivo - + Set the view mode to Live. - + Modo de visualización.en Vivo. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. - + Esta disponible para descarga la versión %s de OpenLP (actualmente esta ejecutando la versión %s). + +Puede descargar la última versión desde http://openlp.org/. - + OpenLP Version Updated - Versión de OpenLP Actualizada + Versión de OpenLP Actualizada - + OpenLP Main Display Blanked - Pantalla Principal de OpenLP en Blanco + Pantalla Principal de OpenLP en Blanco - + The Main Display has been blanked out - La Pantalla Principal esta en negro + La Pantalla Principal se ha puesto en blanco - + Default Theme: %s - + Tema por defecto: %s English Please add the name of your language here - Español + Español - + Configure &Shortcuts... - + Configurar &Atajos... - + Close OpenLP - + Cerrar OpenLP - + Are you sure you want to close OpenLP? - + ¿Desea realmente salir de OpenLP? - + Print the current Service Order. - + Imprimir Orden del Servicio actual. - + Open &Data Folder... - + Abrir Folder de &Datos... - + Open the folder where songs, bibles and other data resides. - + Abrir el folder donde se almacenan las canciones, biblias y otros datos. - + &Configure Display Tags + &Configurar Etiquetas de Visualización + + + + &Autodetect + &Autodetectar + + + + Update Theme Images - - &Autodetect + + Update the preview images for all themes. @@ -2123,47 +2250,58 @@ You can download the latest version from http://openlp.org/. No Items Selected - + 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. - + Duplicate file name %s. Filename already exists in list + Nombre %s duplicado. +Este ya existe en la lista + + + + You must select one or more items to add. + + + + + No Search Results @@ -2172,42 +2310,42 @@ Filename already exists in list Plugin List - Lista de Plugins + Lista de Complementos Plugin Details - Detalles de Plugin + Detalles del Complemento Status: - Estado: + Estado: Active - Activo + Activo Inactive - Inactivo + Inactivo %s (Inactive) - + %s (Inactivo) %s (Active) - + %s (Activo) %s (Disabled) - + %s (Desabilitado) @@ -2215,12 +2353,12 @@ Filename already exists in list Fit Page - + Ajustar a Página Fit Width - + Ajustar a Ancho @@ -2228,80 +2366,80 @@ Filename already exists in list Options - + Opciones Close - + Cerrar Copy - + Copiar Copy as HTML - + Copiar como HTML Zoom In - + Acercar Zoom Out - + Alejar Zoom Original - + Zoom Original Other Options - + Otras Opciones Include slide text if available - + Incluir texto de diap. si está disponible Include service item notes - + Incluir las notas de servicio Include play length of media items - + Incluir la duración de los medios Service Order Sheet - + Hoja de Orden de Servicio - Add page break before each text item. - + Add page break before each text item + Agregar salto de página antes de cada ítem OpenLP.ScreenList - + Screen - + Pantalla - + primary - + principal @@ -2309,256 +2447,257 @@ Filename already exists in list Reorder Service Item - + Reorganizar ítem de Servicio OpenLP.ServiceManager - - Load an existing service - Abrir un servicio existente - - - - Save this service - Guardar este servicio - - - - Select a theme for the service - Seleccione un tema para el servicio - - - + Move to &top - + Mover al &inicio - + Move item to the top of the service. - + Mover el ítem al inicio del servicio. - + Move &up - + S&ubir - + Move item up one position in the service. - + Mover el ítem una posición hacia arriba. - + Move &down - + Ba&jar - + Move item down one position in the service. - + Mover el ítem una posición hacia abajo. - + Move to &bottom - + Mover al &final - + Move item to the end of the service. - + Mover el ítem al final del servicio. + + + + &Delete From Service + &Eliminar Del Servicio + + + + Delete the selected item from the service. + Eliminar el ítem seleccionado del servicio. + + + + &Add New Item + &Agregar un ítem nuevo + + + + &Add to Selected Item + &Agregar al ítem Seleccionado + + + + &Edit Item + &Editar ítem + + + + &Reorder Item + &Reorganizar ítem + + + + &Notes + &Notas + + + + &Change Item Theme + &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 + + + + &Expand all + &Expandir todo + + + + Expand all the service items. + Expandir todos los ítems del servicio. + + + + &Collapse all + &Colapsar todo + + + + Collapse all the service items. + Colapsar todos los ítems del servicio. + + + + Open File + Abrir Archivo + + + + OpenLP Service Files (*.osz) + Archivo de Servicio OpenLP (*.osz) + + + + Moves the selection down the window. + Mover selección hacia abajo. + + + + Move up + Subir + + + + Moves the selection up the window. + Mover selección hacia arriba. + + + + Go Live + Proyectar + + + + Send the selected item to Live. + Proyectar el ítem seleccionado. + + + + Modified Service + Servicio Modificado - &Delete From Service - + &Start Time + &Tiempo de Inicio - - Delete the selected item from the service. - - - - - &Add New Item - - - - - &Add to Selected Item - - - - - &Edit Item - &Editar Ítem - - - - &Reorder Item - - - - - &Notes - &Notas + + Show &Preview + Mostrar &Vista previa - &Change Item Theme - &Cambiar Tema de Ítem - - - - 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 - - - - - &Expand all - - - - - Expand all the service items. - - - - - &Collapse all - - - - - Collapse all the service items. - - - - - Open File - - - - - OpenLP Service Files (*.osz) - - - - - Moves the selection down the window. - - - - - Move up - - - - - Moves the selection up the window. - - - - - Go Live - - - - - Send the selected item to Live. - - - - - Modified Service - - - - - &Start Time - - - - - Show &Preview - - - - Show &Live - + Mostrar &Proyección - + The current service has been modified. Would you like to save this service? - + 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 Custom Service Notes: - + Notas Personales del Servicio: Notes: - + Notas: Playing time: - + Tiempo de reproducción: - + Untitled Service - + Servicio Sin nombre - + This file is either corrupt or not an OpenLP 2.0 service file. - + El archivo está corrompido o no es una archivo de OpenLP 2.0. + + + + Load an existing service. + Abrir un servicio existente. + + + + Save this service. + Guardar este servicio. + + + + Select a theme for the service. + Seleccione un tema para el servicio. @@ -2566,7 +2705,7 @@ The content encoding is not UTF-8. Service Item Notes - Notas de Elemento de Servicio + Notas de Elemento de Servicio @@ -2574,7 +2713,7 @@ The content encoding is not UTF-8. Configure OpenLP - + Configurar OpenLP @@ -2582,164 +2721,169 @@ The content encoding is not UTF-8. Customize Shortcuts - + Cambiar Atajos Action - + Acción Shortcut - + Atajo Duplicate Shortcut - + Duplicar Atajo The shortcut "%s" is already assigned to another action, please use a different shortcut. - + El atajo "%s" esta asignado a otra acción, por favor utilize un atajo diferente. Alternate - + Secundario Select an action and click one of the buttons below to start capturing a new primary or alternate shortcut, respectively. - + Seleccione una acción y presione uno de los siguientes botones para capturar un nuevo atajo primario y secundario, respectivamente. Default - + Por defecto Custom - + Personalizado Capture shortcut. - + Capturar atajo. Restore the default shortcut of this action. - + Restuarar el atajo por defecto para esta acción. Restore Default Shortcuts - + Restaurar los Atajos Por defecto Do you want to restore all shortcuts to their defaults? - + ¿Quiere restaurar todos los atajos a su valor original? OpenLP.SlideController - + Move to previous - Regresar al anterior + Ir al anterior - + Move to next - Ir al siguiente + Ir al siguiente - + Hide - + Ocultar - + Move to live - Proyectar en vivo + Proyectar en vivo - + Start continuous loop - Iniciar bucle continuo + Iniciar bucle - + Stop continuous loop - Detener el bucle + Detener bucle - + Delay between slides in seconds - Espera entre diapositivas en segundos + Espera entre diapositivas en segundos - + Start playing media - Iniciar la reproducción de medios + Iniciar la reproducción de medios - + Go To - + Ir A - + Edit and reload song preview - + Editar y actualizar la vista previa - + Blank Screen - + Pantalla en Blanco - + Blank to Theme - + Proyectar el Tema - + Show Desktop - + Mostrar Escritorio - + Previous Slide - + Diapositiva Anterior - + Next Slide - + Diapositiva Siguiente - + Previous Service - + Servicio Anterior - + Next Service - + Servicio Siguiente - + Escape Item - + Salir de ítem - + Start/Stop continuous loop + Iniciar/Detener bucle + + + + Add to Service @@ -2748,17 +2892,17 @@ The content encoding is not UTF-8. Spelling Suggestions - + Sugerencias Ortográficas Formatting Tags - + Etiquetas de Formato Language: - + Idioma: @@ -2766,52 +2910,52 @@ The content encoding is not UTF-8. Hours: - + Horas: Minutes: - + Minutos: Seconds: - + Segundos: Item Start and Finish Time - + Tiempo de Inicio y Final Start - + Inicio Finish - + Final Length - + Duración Time Validation Error - + Error de Validación de Tiempo End time is set after the end of the media item - + El tiempo final se establece despues del final del medio Start time is after the End Time of the media item - + El tiempo de inicio se establece despues del Tiempo Final del medio @@ -2819,32 +2963,32 @@ The content encoding is not UTF-8. 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. (%d lines per slide) - + (%d líneas por diap.) @@ -2852,188 +2996,189 @@ The content encoding is not UTF-8. Create a new theme. - + Crear un tema nuevo. Edit Theme - Editar Tema + Editar Tema Edit a theme. - + Editar un tema. Delete Theme - Eliminar Tema + Eliminar Tema Delete a theme. - + Eliminar un tema. Import Theme - Importar Tema + Importar Tema Import a theme. - + Importa un tema. Export Theme - Exportar Tema + Exportar Tema Export a theme. - + Exportar un tema. &Edit Theme - + &Editar Tema &Delete Theme - + Elimi&nar Tema Set As &Global Default - + &Global, por defecto - + %s (default) - + %s (por defecto) - + You must select a theme to edit. - + Debe seleccionar un tema para editar. - + You are unable to delete the default theme. - + No se puede eliminar el tema predeterminado. - + You have not selected a theme. - + No ha seleccionado un tema. - + Save Theme - (%s) - Guardar Tema - (%s) + Guardar Tema - (%s) - + Theme Exported - + Tema Exportado - + Your theme has been successfully exported. - + Su tema a sido exportado exitosamente. - + Theme Export Failed - + La importación falló - + Your theme could not be exported due to an error. - + No se pudo exportar el tema dedido a un error. - + Select Theme Import File - Seleccione el Archivo de Tema a Importar + Seleccione el Archivo de Tema a Importar - + File is not a valid theme. The content encoding is not UTF-8. - + Este no es un tema válido. +La codificación del contenido no es UTF-8. - + File is not a valid theme. - + El archivo no es un tema válido. - + Theme %s is used in the %s plugin. - + El tema %s se usa en el complemento %s. &Copy Theme - + &Copiar Tema &Rename Theme - + &Renombrar Tema &Export Theme - + &Exportar Tema - + You must select a theme to rename. - + Debe seleccionar un tema para renombrar. - + Rename Confirmation - + Confirmar Cambio de Nombre - + Rename %s theme? - + ¿Renombrar el tema %s? - + You must select a theme to delete. - + Debe seleccionar un tema para eliminar. - + Delete Confirmation - + Confirmar Eliminación - + Delete %s theme? - + ¿Eliminar el tema %s? - + Validation Error - + Error de Validación - + A theme with this name already exists. - + Ya existe un tema con este nombre. - + OpenLP Themes (*.theme *.otz) - + Tema OpenLP (*.theme *otz) @@ -3041,242 +3186,242 @@ The content encoding is not UTF-8. 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 + Color Sólido Gradient - Gradiente + Gradiente Color: - + Color: Gradient: - + Gradiente: Horizontal - Horizontal + Horizontal Vertical - Vertical + Vertical Circular - 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: + Fuente: Size: - Tamaño: + Tamaño: Line Spacing: - + Epaciado de Líneas: &Outline: - + &Contorno: &Shadow: - + &Sombra: Bold - Negrita + 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 + Izquierda Right - Derecha + Derecha Center - Centro + 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 + px Y position: - + Posición y: Width: - Ancho: + Ancho: Height: - Altura: + 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 Edit Theme - %s - + Editar Tema - %s @@ -3284,42 +3429,42 @@ The content encoding is not UTF-8. Global Theme - + Tema Global Theme Level - + Nivel S&ong Level - + &Canción Use the theme from each song in the database. If a song doesn't have a theme associated with it, then use the service's theme. If the service doesn't have a theme, then use the global theme. - Utilice el tema de cada canción en la base de datos. Si una canción no tiene un tema asociado, utilizar el tema del servicio. Si el servicio no tiene un tema, utilizar el tema global. + Utilizar el tema de la canción en la base de datos. Si una canción no tiene un tema asociado, utilizar el tema del servicio. Si el servicio no tiene un tema, utilizar el tema global. &Service Level - + &Servicio Use the theme from the service, overriding any of the individual songs' themes. If the service doesn't have a theme, then use the global theme. - Utilizar el tema del servicio, ignorando el tema de las canciones individuales. Si el servicio no tiene un tema, utilizar el tema global. + Utilizar el tema del servicio ignorando los temas individuales. Si el servicio no tiene un tema, utilizar el tema global. &Global Level - + &Global Use the global theme, overriding any themes associated with either the service or the songs. - Utilice el tema global, ignorado los temas asociados con el servicio o con las canciones. + Utilizar el tema global, ignorado los temas asociados con el servicio o con las canciones. @@ -3327,523 +3472,523 @@ The content encoding is not UTF-8. Error - Error + Error &Delete - &Eliminar + &Eliminar Delete the selected item. - + Eliminar el ítem seleccionado. Move selection up one position. - + Mover selección un espacio hacia arriba. Move selection down one position. - + Mover selección un espacio hacia abajo. &Add - + &Agregar Advanced - Avanzado + Avanzado All Files - + Todos los Archivos Create a new service. - + Crear un servicio nuevo. &Edit - &Editar + &Editar Import - + Importar Length %s - + Duración %s Live - + En vivo Load - + Cargar New - + Nuevo New Service - Servicio Nuevo + Servicio Nuevo OpenLP 2.0 - OpenLP 2.0 + OpenLP 2.0 Open Service - Abrir Servicio + Abrir Servicio Preview - Vista Previa + Vista previa Replace Background - + Reemplazar Fondo Replace Live Background - + Reemplazar el Fondo Proyectado Reset Background - + Restablecer Fondo Reset Live Background - + Restablecer el Fondo Proyectado Save Service - Guardar Servicio + Guardar Servicio Service - + Servicio Start %s - + Inicio %s - + &Vertical Align: - + Alinea. &Vertical: Top - Superior + Superior Middle - Medio + Medio Bottom - Inferior + Inferior About - Acerca De + Acerca de Browse... - + Explorar... Cancel - + Cancelar CCLI number: - + Número CCLI: Empty Field - + Campo Vacío Export - + Exportar pt Abbreviated font pointsize unit - pt + pto Image - Imagen + Imagen Live Background Error - + Error del Fondo en proyección Live Panel - + Panel de Proyección New Theme - + Tema Nuevo No File Selected Singular - + Archivo No Seleccionado No Files Selected Plural - + Archivos No Seleccionados No Item Selected Singular - + Nada Seleccionado No Items Selected Plural - + Nada Seleccionado openlp.org 1.x - + openlp.org 1.x Preview Panel - + Panel de Vista Previa Print Service Order - + Imprimir Orden del Servicio s The abbreviated unit for seconds - + s Save && Preview - Guardar && Vista Previa + Guardar && Previsualizar Search - Buscar + Buscar You must select an item to delete. - + Debe seleccionar un ítem para eliminar. You must select an item to edit. - + Debe seleccionar un ítem para editar. Theme Singular - Tema + Tema Themes Plural - + Temas Version - + Versión Finished import. - Importación finalizada. + Importación finalizada. Format: - Formato: + Formato: Importing - Importando + Importando Importing "%s"... - + Importando "%s"... Select Import Source - Seleccione Origen de Importación + Seleccione la Fuente para Importar Select the import format and the location to import from. - + Seleccione el formato a importar y su ubicación. The openlp.org 1.x importer has been disabled due to a missing Python module. If you want to use this importer, you will need to install the "python-sqlite" module. - + Se ha deshabilitado el importador openlp.org 1.x debido a la falta de un módulo Python. Si desea utilizar este importador, debe instalar el módulo "python-sqlite". Open %s File - + Abrir %s Archivo %p% - + %p% Ready. - + Listo. - + Starting import... - Iniciando importación... + Iniciando importación... You need to specify at least one %s file to import from. A file type e.g. OpenSong - + Debe especificar un archivo %s para importar. Welcome to the Bible Import Wizard - Bienvenido al Asistente de Importación de Biblias + Bienvenido al Asistente para Biblias Welcome to the Song Export Wizard - + Bienvenido al Asistente para Exportar Canciones Welcome to the Song Import Wizard - + Bienvenido al Asistente para Importar Canciones Author Singular - + Autor Authors Plural - Autores + Autores © Copyright symbol. - + © Song Book Singular - Himnario + Himnario Song Books Plural - + Himnarios Song Maintenance - + Administración de Canciones Topic Singular - Categoría + Categoría Topics Plural - Categoría + Categorías Continuous - + Continuo Default - + Por defecto Display style: - + Estilo de presentación: File - + Archivos Help - + Ayuda h The abbreviated unit for hours - + h Layout style: - + Distribución: Live Toolbar - + Barra de Proyección m The abbreviated unit for minutes - + m OpenLP is already running. Do you wish to continue? - + OpenLP ya esta abierto. ¿Desea continuar? Settings - + Preferencias Tools - + Herramientas Verse Per Slide - + Verso por Diapositiva Verse Per Line - + Verso Por Línea View - - - - - View Model - + Vista Duplicate Error - + Error de Duplicación Unsupported File - + Archivo no Soportado Title and/or verses not found - + Título y/o verso no encontrado XML syntax error + Error XML de sintaxis + + + + View Mode OpenLP.displayTagDialog - + Configure Display Tags - + Configurar Etiquetas de Visualización @@ -3851,103 +3996,103 @@ The content encoding is not UTF-8. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. - - - - - Load a new Presentation - - - - - Delete the selected Presentation - - - - - Preview the selected Presentation - - - - - Send the selected Presentation live - - - - - Add the selected Presentation to the service - + <strong>Complemento de Presentaciones</strong><br />El complemento de presentaciones permite mostrar presentaciones, usando diversos programas. La selección del programa se realiza por medio de una casilla de selección. Presentation name singular - Presentación + Presentación Presentations name plural - Presentaciones + Presentaciones Presentations container title - Presentaciones + Presentaciones + + + + Load a new Presentation. + Cargar una Presentación nueva. + + + + Delete the selected Presentation. + Eliminar la Presentación seleccionada. + + + + Preview the selected Presentation. + Visualizar la Presentación seleccionada. + + + + Send the selected Presentation live. + Proyectar la Presentación seleccionada. + + + + Add the selected Presentation to the service. + Agregar esta Presentación al servicio. PresentationPlugin.MediaItem - + Select Presentation(s) - Seleccionar Presentación(es) + Seleccionar Presentación(es) - + Automatic - + Automático - + Present using: - Mostrar usando: + Mostrar usando: - + File Exists - + Ya existe el Archivo - + A presentation with that filename already exists. - Ya existe una presentación con ese nombre. + Ya existe una presentación con este nombre. - + This type of presentation is not supported. - + No existe soporte para este tipo de presentación. - + Presentations (%s) - + Presentaciones (%s) - + Missing Presentation - + Presentación faltante - + The Presentation %s no longer exists. - + La Presentación %s ya no esta disponible. - + The Presentation %s is incomplete, please reload. - + La Presentación %s esta incompleta, por favor recargela. @@ -3955,17 +4100,17 @@ The content encoding is not UTF-8. Available Controllers - Controladores Disponibles + Controladores Disponibles Allow presentation application to be overriden - + Permitir tomar control sobre el programa de presentación %s (unavailable) - + %s (no disponible) @@ -3973,42 +4118,52 @@ The content encoding is not UTF-8. <strong>Remote Plugin</strong><br />The remote plugin provides the ability to send messages to a running version of OpenLP on a different computer via a web browser or through the remote API. - + <strong>Acceso Remoto</strong><br />El acceso remoto le permite enviar mensajes a otra versión del programa en un equipo diferente, por medio del navegador de internet o por medio de API. Remote name singular - + Remoto Remotes name plural - Remotas + Remotos Remote container title - + Acceso remoto RemotePlugin.RemoteTab - + Serve on IP address: - + Dirección IP a Servir: - + Port number: + Puerto número: + + + + Server Settings + Config. de Servidor + + + + Remote URL: - - Server Settings + + Stage view URL: @@ -4017,65 +4172,65 @@ The content encoding is not UTF-8. &Song Usage Tracking - + &Historial de Uso &Delete Tracking Data - + &Eliminar datos de Historial Delete song usage data up to a specified date. - + Borrar el historial de datos hasta la fecha especificada. &Extract Tracking Data - + &Extraer datos de Historial Generate a report on song usage. - + Generar un reporte del uso de las canciones. Toggle Tracking - + Alternar Historial Toggle the tracking of song usage. - + Alternar seguimiento del uso de las canciones. <strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services. - + <strong>Historial</strong><br />Este complemento mantiene un registro del número de veces que se usa una canción en los servicios. SongUsage name singular - + Historial SongUsage name plural - + Historiales SongUsage container title - + Historial Song Usage - + Historial @@ -4083,27 +4238,27 @@ The content encoding is not UTF-8. Delete Song Usage Data - + Borrar historial de canción Delete Selected Song Usage Events? - + ¿Borrar el historial de esta canción? Are you sure you want to delete selected Song Usage data? - + ¿Desea realmente borrar los datos del historial de la canción seleccionada? Deletion Successful - + Limpieza Exitosa All requested data has been deleted successfully. - + Todos los datos han sido borrados exitosamente. @@ -4111,54 +4266,56 @@ The content encoding is not UTF-8. Song Usage Extraction - + Extracción del Historial Select Date Range - + Seleccionar Rango de Fechas to - hasta + hasta Report Location - Ubicación de Reporte + Ubicación de Reporte Output File Location - Archivo de Salida + Archivo de Salida usage_detail_%s_%s.txt - + historial_%s_%s.txt Report Creation - + Crear Reporte Report %s has been successfully created. - + Reporte +%s +se ha creado satisfactoriamente. Output Path Not Selected - + Ruta de salida no seleccionada You have not set a valid output location for your song usage report. Please select an existing path on your computer. - + No se ha establecido una ubicación válida para el archivo de reporte. Por favor seleccione una ubicación en su equipo. @@ -4166,173 +4323,176 @@ has been successfully created. &Song - &Canción + &Canción Import songs using the import wizard. - + Importar canciones usando el asistente. <strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs. - + <strong>Complemento de Canciones</strong><br />El complemento de canciones permite mostar y editar canciones. &Re-index Songs - + &Re-indexar Canciones Re-index the songs database to improve searching and ordering. - + Reorganiza la base de datos para mejorar la busqueda y ordenamiento. Reindexing songs... - - - - - Add a new Song - - - - - Edit the selected Song - - - - - Delete the selected Song - - - - - Preview the selected Song - - - - - Send the selected Song live - - - - - Add the selected Song to the service - + Reindexando canciones... Song name singular - Canción + Canción Songs name plural - Canciones + Canciones Songs container title - Canciones + Canciones Arabic (CP-1256) - + Árabe (CP-1256) Baltic (CP-1257) - + Báltico (CP-1257) Central European (CP-1250) - + Europa Central (CP-1250) Cyrillic (CP-1251) - + Cirílico (CP-1251) Greek (CP-1253) - + Griego (CP-1253) Hebrew (CP-1255) - + Hebreo (CP-1255) Japanese (CP-932) - + Japonés (CP-932) Korean (CP-949) - + Koreano (CP-949) Simplified Chinese (CP-936) - + Chino Simplificado (CP-936) Thai (CP-874) - + Tailandés (CP-874) Traditional Chinese (CP-950) - + Chino Tradicional (CP-950) Turkish (CP-1254) - + Turco (CP-1254) Vietnam (CP-1258) - + Vietnamita (CP-1258) Western European (CP-1252) - + Europa Occidental (CP-1252) Character Encoding - + Codificación de Caracteres The codepage setting is responsible for the correct character representation. Usually you are fine with the preselected choice. - + La configuración de códigos de página es responsable +por la correcta representación de los caracteres. +Por lo general, la opción preseleccionada es la adecuada. Please choose the character encoding. The encoding is responsible for the correct character representation. - + Por favor elija una codificación de caracteres. +La codificación se encarga de la correcta representación de caracteres. Exports songs using the export wizard. - + Exportar canciones usando el asistente. + + + + Add a new Song. + Agregar una Canción nueva. + + + + Edit the selected Song. + Editar la Canción seleccionada. + + + + Delete the selected Song. + Eliminar la Canción seleccionada. + + + + Preview the selected Song. + Visualizar la Canción seleccionada. + + + + Send the selected Song live. + Proyectar la Canción seleccionada. + + + + Add the selected Song to the service. + Agregar esta Canción al servicio. @@ -4340,37 +4500,37 @@ The encoding is responsible for the correct character representation. Author Maintenance - Mantenimiento de Autores + Administración de Autores Display name: - Mostrar: + Mostrar: First name: - Nombre: + Nombre: Last name: - Apellido: + Apellido: You need to type in the first name of the author. - Tiene que escribir el nombre del autor. + Debe escribir el nombre del autor. You need to type in the last name of the author. - Debe ingresar el apellido del autor. + Debe ingresar el apellido del autor. You have not set a display name for the author, combine the first and last names? - + No a establecido un nombre para mostrar, ¿desea unir el nombre y el apellido? @@ -4378,7 +4538,7 @@ The encoding is responsible for the correct character representation. The file does not have a valid extension. - + El archivo no tiene una extensión válida. @@ -4386,7 +4546,7 @@ The encoding is responsible for the correct character representation. Administered by %s - + Administrado por %s @@ -4394,199 +4554,214 @@ The encoding is responsible for the correct character representation. Song Editor - Editor de Canción + Editor de Canción &Title: - + &Título: Alt&ernate title: - + Título alt&ernativo: &Lyrics: - + &Letras: &Verse order: - + Orden de &versos: Ed&it All - + Ed&itar Todo Title && Lyrics - Título && Letra + Título && Letra &Add to Song - &Agregar a Canción + &Agregar a Canción &Remove - &Quitar + &Quitar &Manage Authors, Topics, Song Books - + Ad&ministrar Autores, Categorías, Himnarios A&dd to Song - A&gregar a Canción + A&gregar a Canción R&emove - &Quitar + &Quitar Book: - Libro: + Libro: Number: - + Número: Authors, Topics && Song Book - + Autores, Categorías e Himnarios New &Theme - + &Tema Nuevo Copyright Information - Información de Derechos de Autor + Información de Derechos de Autor Comments - Comentarios + Comentarios Theme, Copyright Info && Comments - Tema, Derechos de Autor && Comentarios + Tema, Derechos de Autor && Comentarios Add Author - + Agregar Autor This author does not exist, do you want to add them? - + Este autor no existe, ¿desea agregarlo? This author is already in the list. - + Este autor ya esta en la lista. You have not selected a valid author. Either select an author from the list, or type in a new author and click the "Add Author to Song" button to add the new author. - + No seleccionado un autor válido. Seleccione un autor de la lista o ingrese un nombre nuevo y presione el botón "Agregar Autor a Canción" para agregar el autor nuevo. Add Topic - + Agregar Categoría This topic does not exist, do you want to add it? - + Esta categoría no existe, ¿desea agregarla? This topic is already in the list. - + Esta categoría ya esta en la lista. You have not selected a valid topic. Either select a topic from the list, or type in a new topic and click the "Add Topic to Song" button to add the new topic. - + No seleccionado una categoría válida. Seleccione una categoría de la lista o ingrese un nombre nuevo y presione el botón "Agregar Categoría a Canción" para agregar la categoría nueva. You need to type in a song title. - + Debe escribir un título. You need to type in at least one verse. - + Debe agregar al menos un verso. Warning - + Advertencia The verse order is invalid. There is no verse corresponding to %s. Valid entries are %s. - + El orden de los versos no es válido. Ningún verso corresponde a %s. Las entradas válidas so %s. You have not used %s anywhere in the verse order. Are you sure you want to save the song like this? - + No ha utilizado %s en el orden de los versos. ¿Desea guardar la canción de esta manera? Add Book - + Agregar Himnario This song book does not exist, do you want to add it? - + Este himnario no existe, ¿desea agregarlo? You need to have an author for this song. - + Debe ingresar un autor para esta canción. - + You need to type some text in to the verse. - + Debe ingresar algún texto en el verso. SongsPlugin.EditVerseForm - + Edit Verse - Editar Verso + Editar Verso - + &Verse type: + Tipo de &verso: + + + + &Insert + &Insertar + + + + &Split - - &Insert + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. @@ -4595,82 +4770,82 @@ The encoding is responsible for the correct character representation. Song Export Wizard - + Asistente para Exportar Canciones This wizard will help to export your songs to the open and free OpenLyrics worship song format. - + Este asistente le ayudará a exportar canciones al formato OpenLyrics que es gratuito y de código abierto. Select Songs - + Seleccione Canciones Uncheck All - + Desmarcar Todo Check All - + Marcar Todo Select Directory - + Seleccione un Directorio Select the directory you want the songs to be saved. - + Seleccione el directorio para guardar las canciones. Directory: - + Directorio: Exporting - + Exportando Please wait while your songs are exported. - + Por favor espere mientras se exportan las canciones. You need to add at least one Song to export. - + Debe agregar al menos una Canción para exportar. No Save Location specified - + Destino No especificado Starting export... - + Iniciando exportación... Check the songs you want to export. - + Revise las canciones a exportar. You need to specify a directory. - + Debe especificar un directorio. Select Destination Folder - + Seleccione Carpeta de Destino @@ -4678,156 +4853,156 @@ The encoding is responsible for the correct character representation. Select Document/Presentation Files - + Seleccione Documento/Presentación Song Import Wizard - + Asistente para Exportar Canciones This wizard will help you to import songs from a variety of formats. Click the next button below to start the process by selecting a format to import from. - + Este asistente le ayudará a importar canciones de diversos formatos. Presione Siguiente para iniciar el proceso al seleccionar un formato a importar. Generic Document/Presentation - + Documento/Presentación genérica Filename: - + Nombre: Add Files... - + Agregar Archivos... Remove File(s) - + Eliminar Archivo(s) The Songs of Fellowship importer has been disabled because OpenLP cannot find OpenOffice.org on your computer. - + Las canciones de Fellowship se han deshabilitado porque OpenOffice.org no se encuentra en este equipo. The generic document/presentation importer has been disabled because OpenLP cannot find OpenOffice.org on your computer. - + El importador Documento/Presentación se ha desabilitado porque OpenOffice.org no se encuentra en este equipo. Please wait while your songs are imported. - + Por favor espere mientras se exportan las canciones. The OpenLyrics importer has not yet been developed, but as you can see, we are still intending to do so. Hopefully it will be in the next release. - + El importador OpenLyrics no esta desarrollado, pero puede notar que tenemos la intención de hacerlo. Esperamos incluirlo en la siguiente versión. OpenLP 2.0 Databases - + Base de Datos OpenLP 2.0 openlp.org v1.x Databases - + Base de datos openlp v1.x Words Of Worship Song Files - + Archivo Words Of Worship Songs Of Fellowship Song Files - + Archivo Songs Of Fellowship SongBeamer Files - + Archivo SongBeamer SongShow Plus Song Files - + Archivo SongShow Plus You need to specify at least one document or presentation file to import from. - + Debe especificar al menos un documento o presentación para importar. Foilpresenter Song Files - + Archivo Foilpresenter Copy - + Copiar Save to File - + Guardar a Archivo SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - Administrar la lista de autores, categorías y libros - - - + Titles - Títulos + Títulos - + Lyrics - Letra + Letra - + Delete Song(s)? - + ¿Eliminar Canción(es)? - + 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)? + ¿Desea realmente borrar %n canciones seleccionadas? + + + Maintain the lists of authors, topics and books. + Administrar la lista de autores, categorías y libros. + SongsPlugin.OpenLP1SongImport Not a valid openlp.org 1.x song database. - + Base de datos openlp.org 1.x no válida. @@ -4835,7 +5010,7 @@ The encoding is responsible for the correct character representation. Not a valid OpenLP 2.0 song database. - + Base de datos OpenLP 2.0 no válida. @@ -4843,7 +5018,7 @@ The encoding is responsible for the correct character representation. Exporting "%s"... - + Exportando "%s"... @@ -4851,22 +5026,22 @@ The encoding is responsible for the correct character representation. Song Book Maintenance - + Administración de Himnarios &Name: - + &Nombre: &Publisher: - + &Editor: You need to type in a name for the book. - + Debe ingresar un nombre para el himnario. @@ -4874,12 +5049,12 @@ The encoding is responsible for the correct character representation. Finished export. - + Exportación finalizada. Your song export failed. - + La importación falló. @@ -4887,12 +5062,12 @@ The encoding is responsible for the correct character representation. copyright - + derechos de autor The following songs could not be imported: - + Las siguientes canciones no se importaron: @@ -4900,7 +5075,7 @@ The encoding is responsible for the correct character representation. Your song import failed. - + La importación falló. @@ -4908,107 +5083,107 @@ The encoding is responsible for the correct character representation. Could not add your author. - + No se pudo agregar el autor. This author already exists. - + Este autor ya existe. Could not add your topic. - + No se pudo agregar la categoría. This topic already exists. - + Esta categoría ya existe. Could not add your book. - + No se pudo agregar el himnario. This book already exists. - + Este himnario ya existe. Could not save your changes. - + No se pudo guardar los cambios. Could not save your modified topic, because it already exists. - + No se pudo guardar la categoría, porque esta ya existe. Delete Author - Borrar Autor + Borrar Autor Are you sure you want to delete the selected author? - ¿Está seguro que desea eliminar el autor seleccionado? + ¿Está seguro que desea eliminar el autor seleccionado? This author cannot be deleted, they are currently assigned to at least one song. - + No se puede eliminar el autor, esta asociado con al menos una canción. Delete Topic - Borrar Categoría + Borrar Categoría Are you sure you want to delete the selected topic? - ¿Está seguro que desea eliminar la categoría seleccionada? + ¿Está seguro que desea eliminar la categoría seleccionada? This topic cannot be deleted, it is currently assigned to at least one song. - + No se puede eliminar la categoría, esta asociada con al menos una canción. Delete Book - Eliminar Libro + Eliminar Libro Are you sure you want to delete the selected book? - ¿Está seguro de que quiere eliminar el libro seleccionado? + ¿Está seguro de que quiere eliminar el himnario seleccionado? This book cannot be deleted, it is currently assigned to at least one song. - + Este himnario no se puede eliminar, esta asociado con al menos una canción. Could not save your modified author, because the author already exists. - + No se pudo guardar el autor, porque este ya existe. The author %s already exists. Would you like to make songs with author %s use the existing author %s? - + El autor %s ya existe. ¿Desea que las canciones con el autor %s utilizen el existente %s? The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? - + La categoría %s ya existe. ¿Desea que las canciones con la categoría %s utilizen la existente %s? The book %s already exists. Would you like to make songs with book %s use the existing book %s? - + El himnario %s ya existe. ¿Desea que las canciones con el himnario %s utilizen el existente %s? @@ -5016,27 +5191,27 @@ The encoding is responsible for the correct character representation. Songs Mode - Modo de canciones + Modo de canciones Enable search as you type - + Buscar a medida que se escribe Display verses on live tool bar - + Mostar los versos en la barra de proyección Update service from song edit - + Actualizar servicio desde el editor Add missing songs when opening service - + Agregar canciones faltantes al abrir el servicio @@ -5044,17 +5219,17 @@ The encoding is responsible for the correct character representation. Topic Maintenance - Mantenimiento de Categorías + Administración de Categorías Topic name: - Categoría: + Categoría: You need to type in a topic name. - + Debe escribir un nombre para la categoría. @@ -5062,37 +5237,37 @@ The encoding is responsible for the correct character representation. Verse - Verso + Verso Chorus - Coro + Coro Bridge - Puente + Puente Pre-Chorus - Pre-Coro + Pre-Coro Intro - Intro + Intro Ending - Final + Final Other - Otro + Otro @@ -5100,7 +5275,7 @@ The encoding is responsible for the correct character representation. Themes - + Temas diff --git a/resources/i18n/et.ts b/resources/i18n/et.ts index 606156531..5b20c8196 100644 --- a/resources/i18n/et.ts +++ b/resources/i18n/et.ts @@ -1,5 +1,5 @@ - + AlertPlugin.AlertForm @@ -184,22 +184,22 @@ Kas tahad sellest hoolimata jätkata? BiblePlugin.HTTPBible - + Download Error Tõrge allalaadimisel - + Parse Error Parsimise viga - + 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. - + 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. @@ -207,12 +207,12 @@ Kas tahad sellest hoolimata jätkata? BiblePlugin.MediaItem - + Bible not fully loaded. Piibel ei ole täielikult laaditud. - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? Ühe- ja kahekeelseid piiblisalmide otsitulemusi pole võimalik kombineerida. Kas tahad otsingu tulemused kustutada ja alustada uue otsinguga? @@ -229,41 +229,6 @@ Kas tahad sellest hoolimata jätkata? <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. <strong>Piibli plugin</strong><br />Piibli plugina abil saab teenistuse ajal kuvada erinevate tõlgete piiblisalme. - - - Import a Bible - Piibli importimine - - - - Add a new Bible - Uue Piibli lisamine - - - - Edit the selected Bible - Valitud Piibli muutmine - - - - Delete the selected Bible - Valitud Piibli kustutamine - - - - Preview the selected Bible - Valitud Piibli eelvaade - - - - Send the selected Bible live - Valitud Piibli saatmine ekraanile - - - - Add the selected Bible to the service - Valitud Piibli lisamine teenistusse - Bible @@ -283,47 +248,82 @@ Kas tahad sellest hoolimata jätkata? Piiblid - + No Book Found Ühtegi raamatut ei leitud - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. Sellest Piiblist ei leitud vastavat raamatut. Kontrolli, kas sa sisestasid raamatu nime õigesti. + + + Import a Bible. + Piibli importimine. + + + + Add a new Bible. + Uue Piibli lisamine. + + + + Edit the selected Bible. + Valitud Piibli muutmine. + + + + Delete the selected Bible. + Valitud Piibli kustutamine. + + + + Preview the selected Bible. + Valitud Piibli eelvaade. + + + + Send the selected Bible live. + Valitud Piibli saatmine ekraanile. + + + + Add the selected Bible to the service. + Valitud Piibli lisamine teenistusele. + BiblesPlugin.BibleManager - + Scripture Reference Error Kirjakohaviite tõrge - + Web Bible cannot be used Veebipiiblit pole võimalik kasutada - + Text Search is not available with Web Bibles. Tekstiotsing veebipiiblist pole võimalik. - + 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. Sa ei sisestanud otsingusõna. Sa võid eraldada võtmesõnad tühikuga, et otsida neid kõiki, või eraldada need komaga, et otsitaks ühte neist. - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. Praegu pole ühtegi Piiblit paigaldatud. Palun paigalda mõni Piibel importimise nõustaja abil. - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -342,7 +342,7 @@ Raamat peatükk:salm-salm,peatükk:salm-salm Raamat peatükk:salm-peatükk:salm - + No Bibles Available Ühtegi Piiblit pole saadaval @@ -580,70 +580,60 @@ vajadusel, seetõttu on vajalik internetiühendus. BiblesPlugin.MediaItem - + Quick Kiirotsing - + Find: Otsing: - - Results: - Tulemused: - - - + Book: Raamat: - + Chapter: Peatükk: - + Verse: Salm: - + From: Algus: - + To: Kuni: - + Text Search Tekstiotsing - - Clear - Puhasta - - - - Keep - Säilita - - - + Second: Teine: - + Scripture Reference Salmiviide + + + Toggle to keep or clear the previous results. + + BiblesPlugin.Opensong @@ -717,12 +707,12 @@ vajadusel, seetõttu on vajalik internetiühendus. Kõigi slaidide muutmine ühekorraga. - + Split Slide Slaidi tükeldamine - + Split a slide into two by inserting a slide splitter. Tükelda slaid kaheks, sisestades slaidide eraldaja. @@ -737,12 +727,12 @@ vajadusel, seetõttu on vajalik internetiühendus. &Autorid: - + You need to type in a title. Pead sisestama pealkirja. - + You need to add at least one slide Pead lisama vähemalt ühe slaidi @@ -751,49 +741,19 @@ vajadusel, seetõttu on vajalik internetiühendus. Ed&it All Muuda &kõiki + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide + + CustomsPlugin - - - Import a Custom - Impordi kohandatud - - - - Load a new Custom - Laadi uus kohandatud - - - - Add a new Custom - Lisa uus kohandatud - - - - Edit the selected Custom - Muuda valitud kohandatut - - - - Delete the selected Custom - Kustuta valitud kohandatud - - - - Preview the selected Custom - Valitud kohandatu eelvaade - - - - Send the selected Custom live - Valitud kohandatu saatmine ekraanile - - - - Add the selected Custom to the service - Valitud kohandatud slaidi lisamine teenistusse - Custom @@ -812,11 +772,51 @@ vajadusel, seetõttu on vajalik internetiühendus. container title Kohandatud + + + Load a new Custom. + Uue kohandatud slaidi laadimine. + + + + Import a Custom. + Kohandatud slaidi importimine. + + + + Add a new Custom. + Uue kohandatud slaidi lisamine. + + + + Edit the selected Custom. + Valitud kohandatud slaidi muutmine. + + + + Delete the selected Custom. + Valitud kohandatud slaidi kustutamine. + + + + Preview the selected Custom. + Valitud kohandatud slaidi eelvaade. + + + + Send the selected Custom live. + Valitud kohandatud slaidi saatmine ekraanile. + + + + Add the selected Custom to the service. + Valitud kohandatud slaidi lisamine teenistusele. + GeneralTab - + General Üldine @@ -828,41 +828,6 @@ vajadusel, seetõttu on vajalik internetiühendus. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. <strong>Pildiplugin</strong><br />Pildiplugin võimaldab piltide kuvamise.<br />Üks selle plugina One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. - - - Load a new Image - Uue pildi laadimine - - - - Add a new Image - Uue pildi lisamine - - - - Edit the selected Image - Valitud pildi muutmine - - - - Delete the selected Image - Valitud pildi kustutamine - - - - Preview the selected Image - Valitud pildi eelvaatlemine - - - - Send the selected Image live - Valitud pildi saatmine ekraanile - - - - Add the selected Image to the service - Valitud pildi lisamine teenistusele - Image @@ -881,11 +846,46 @@ vajadusel, seetõttu on vajalik internetiühendus. container title Pildid + + + Load a new Image. + Uue pildi laadimine. + + + + Add a new Image. + Uue pildi lisamine. + + + + Edit the selected Image. + Valitud pildi muutmine. + + + + Delete the selected Image. + Valitud pildi kustutamine. + + + + Preview the selected Image. + Valitud pildi eelvaade. + + + + Send the selected Image live. + Valitud pildi saatmine ekraanile. + + + + Add the selected Image to the service. + Valitud pildi lisamine teenistusele. + ImagePlugin.ExceptionDialog - + Select Attachment Manuse valimine @@ -893,38 +893,38 @@ vajadusel, seetõttu on vajalik internetiühendus. ImagePlugin.MediaItem - + Select Image(s) Pildi (piltide) valimine - + You must select an image to delete. Pead valima pildi, mida kustutada. - + You must select an image to replace the background with. Pead enne valima pildi, millega tausta asendada. - + Missing Image(s) Puuduvad pildid - + The following image(s) no longer exist: %s Järgnevaid pilte enam pole: %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? Järgnevaid pilte enam pole: %sKas tahad teised pildid sellest hoolimata lisada? - + There was a problem replacing your background, the image file "%s" no longer exists. Tausta asendamisel esines viga, pildifaili "%s" enam pole. @@ -936,41 +936,6 @@ Do you want to add the other images anyway? <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. <strong>Meediaplugin</strong><br />Meedia plugin võimaldab audio- ja videofailide taasesitamist. - - - Load a new Media - Uue meedia laadimine - - - - Add a 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 teenistusse - Media @@ -989,41 +954,76 @@ Do you want to add the other images anyway? container title Meedia + + + Load a new Media. + Uue meedia laadimine. + + + + Add a 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 eelvaade. + + + + Send the selected Media live. + Valitud meedia saatmine ekraanile. + + + + Add the selected Media to the service. + Valitud meedia lisamine teenistusele. + MediaPlugin.MediaItem - + Select Media Meedia valimine - + You must select a media file to delete. Pead valima meedia, mida kustutada. - + Missing Media File Puuduv meediafail - + The file %s no longer exists. Faili %s ei ole enam olemas. - + You must select a media file to replace the background with. Pead enne valima meediafaili, millega tausta asendada. - + There was a problem replacing your background, the media file "%s" no longer exists. Tausta asendamisel esines viga, meediafaili "%s" enam pole. - + Videos (%s);;Audio (%s);;%s (*) Videod (%s);;Audio (%s);;%s (*) @@ -1301,7 +1301,7 @@ Jon Tibble, Carsten Tinggaard, Frode Woldsund Preview items when clicked in Media Manager - + Elemendi eelvaate kuvamine, kui sellele klõpsatakse meediahalduris @@ -1311,86 +1311,86 @@ Jon Tibble, Carsten Tinggaard, Frode Woldsund Click to select a color. - + Klõpsa värvi valimiseks. Browse for an image file to display. - + Vali pilt, mida kuvada. Revert to the default OpenLP logo. - + Vaikimisi OpenLP logo kasutamine. OpenLP.DisplayTagDialog - + Edit Selection Valiku muutmine - - Update - Uuenda - - - + Description Kirjeldus - + Tag Silt - + Start tag Alustamise silt - + End tag Lõpu silt - + Default Vaikimisi - + Tag Id Märgise ID - + Start HTML HTML alguses - + End HTML HTML lõpus + + + Save + + OpenLP.DisplayTagTab - + Update Error Tõrge uuendamisel - + Tag "n" already defined. Silt "n" on juba defineeritud. - + Tag %s already defined. Silt %s on juba defineeritud. @@ -1430,7 +1430,7 @@ Jon Tibble, Carsten Tinggaard, Frode Woldsund Pane fail kaasa - + Description characters to enter : %s Puuduvad tähed kirjelduses: %s @@ -1486,7 +1486,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1733,124 +1733,124 @@ Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule. OpenLP.GeneralTab - + General Üldine - + Monitors Monitorid - + Select monitor for output display: Vali väljundkuva ekraan: - + Display if a single screen Kuvatakse, 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 Enne uue teenistuse alustamist küsitakse, kas salvestada avatud teenistus - + Automatically preview next item in service Järgmise teenistuse elemendi automaatne eelvaade - + Slide loop delay: Slaidi pikkus korduses: - + sec sek - + 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 - + Uue elemendi saatmisel ekraanile võetakse ekraani tühjendamine maha @@ -1869,7 +1869,7 @@ Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule. OpenLP.MainDisplay - + OpenLP Display OpenLP kuva @@ -1877,307 +1877,307 @@ Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule. OpenLP.MainWindow - + &File &Fail - + &Import &Impordi - + &Export &Ekspordi - + &View &Vaade - + M&ode &Režiim - + &Tools &Tööriistad - + &Settings &Sätted - + &Language &Keel - + &Help A&bi - + Media Manager Meediahaldur - + Service Manager Teenistuse haldur - + Theme Manager Kujunduse haldur - + &New &Uus - + &Open &Ava - + Open an existing service. Olemasoleva teenistuse avamine. - + &Save &Salvesta - + Save the current service to disk. Praeguse teenistuse salvestamine kettale. - + Save &As... Salvesta &kui... - + Save Service As Salvesta teenistus kui - + Save the current service under a new name. Praeguse teenistuse salvestamine uue nimega. - + E&xit &Välju - + Quit OpenLP Lahku OpenLPst - + &Theme &Kujundus - + &Configure OpenLP... &Seadista OpenLP... - + &Media Manager &Meediahaldur - + Toggle Media Manager Meediahalduri lüliti - + Toggle the visibility of the media manager. Meediahalduri nähtavuse ümberlüliti. - + &Theme Manager &Kujunduse haldur - + Toggle Theme Manager Kujunduse halduri lüliti - + Toggle the visibility of the theme manager. Kujunduse halduri nähtavuse ümberlülitamine. - + &Service Manager &Teenistuse haldur - + Toggle Service Manager Teenistuse halduri lüliti - + Toggle the visibility of the service manager. Teenistuse halduri nähtavuse ümberlülitamine. - + &Preview Panel &Eelvaatluspaneel - + Toggle Preview Panel Eelvaatluspaneeli lüliti - + Toggle the visibility of the preview panel. Eelvaatluspaneeli nähtavuse ümberlülitamine. - + &Live Panel &Ekraani paneel - + Toggle Live Panel Ekraani paneeli lüliti - + Toggle the visibility of the live panel. Ekraani paneeli nähtavuse muutmine. - + &Plugin List &Pluginate loend - + List the Plugins Pluginate loend - + &User Guide &Kasutajajuhend - + &About &Lähemalt - + More information about OpenLP Lähem teave OpenLP kohta - + &Online Help &Abi veebis - + &Web Site &Veebileht - + Use the system language, if available. Kui saadaval, kasutatakse süsteemi keelt. - + Set the interface language to %s Kasutajaliidese keeleks %s määramine - + Add &Tool... Lisa &tööriist... - + Add an application to the list of tools. Rakenduse lisamine tööriistade loendisse. - + &Default &Vaikimisi - + Set the view mode back to the default. Vaikimisi kuvarežiimi taastamine. - + &Setup &Ettevalmistus - + Set the view mode to Setup. Ettevalmistuse kuvarežiimi valimine. - + &Live &Otse - + Set the view mode to Live. Vaate režiimiks ekraanivaate valimine. - + OpenLP Version Updated OpenLP uuendus - + OpenLP Main Display Blanked OpenLP peakuva on tühi - + The Main Display has been blanked out Peakuva on tühi - + Default Theme: %s Vaikimisi kujundus: %s - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2192,45 +2192,55 @@ Sa võid viimase versiooni alla laadida aadressilt http://openlp.org/.Eesti - + Configure &Shortcuts... &Kiirklahvide seadistamine... - + Close OpenLP OpenLP sulgemine - + Are you sure you want to close OpenLP? Kas oled kindel, et tahad OpenLP sulgeda? - + Print the current Service Order. Praeguse teenistuse järjekorra printimine. - + &Configure Display Tags &Kuvasiltide seadistamine - + Open &Data Folder... Ava &andmete kataloog... - + Open the folder where songs, bibles and other data resides. Laulude, Piiblite ja muude andmete kataloogi avamine. - + &Autodetect &Isetuvastus + + + Update Theme Images + + + + + Update the preview images for all themes. + + OpenLP.MediaManagerItem @@ -2240,44 +2250,55 @@ Sa võid viimase versiooni alla laadida aadressilt http://openlp.org/.Ü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. - + Duplicate file name %s. Filename already exists in list + Korduv failinimi %s. +Failinimi on loendis juba olemas + + + + You must select one or more items to add. + + + + + No Search Results @@ -2401,19 +2422,19 @@ Filename already exists in list - Add page break before each text item. - + Add page break before each text item + Iga tekstikirje algab uuelt lehelt OpenLP.ScreenList - + Screen Ekraan - + primary peamine @@ -2429,251 +2450,251 @@ Filename already exists in list OpenLP.ServiceManager - - Load an existing service - Olemasoleva teenistuse laadimine - - - - Save this service - Selle teenistuse salvestamine - - - - Select a theme for the service - Vali teenistuse jaoks kujundus - - - + 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 - + 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 ekraanil, kuna puudub seda käsitsev programm - + &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 - + OpenLP Service Files (*.osz) OpenLP teenistuse failid (*.osz) - + 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. - + Modified Service Teenistust on muudetud - + &Start Time &Alguse aeg - + Show &Preview Näita &eelvaadet - + Show &Live Näita &ekraanil - + The current service has been modified. Would you like to save this service? Praegust teensitust on muudetud. Kas tahad selle teenistuse salvestada? - + 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 Custom Service Notes: - + Kohandatud teenistuse märkmed: Notes: - + Märkmed: Playing time: - + Kestus: - + Untitled Service - + Pealkirjata teenistus - + This file is either corrupt or not an OpenLP 2.0 service file. - + See fail on rikutud või pole see OpenLP 2.0 teenistuse fail. + + + + Load an existing service. + Olemasoleva teenistuse laadimine. + + + + Save this service. + Selle teenistuse salvestamine. + + + + Select a theme for the service. + Teenistuse jaoks kujunduse valimine. @@ -2727,7 +2748,7 @@ Sisu ei ole UTF-8 kodeeringus. Select an action and click one of the buttons below to start capturing a new primary or alternate shortcut, respectively. - + Vali tegevus ja klõpsa kummalgi alumisel nupul, et salvestada uus peamine või alternatiivne kiirklahv. @@ -2742,119 +2763,124 @@ Sisu ei ole UTF-8 kodeeringus. Capture shortcut. - + Kiirklahvi salvestamine. Restore the default shortcut of this action. - + Selle tegevuse vaikimisi kiirklahvi taastamine. Restore Default Shortcuts - + Vaikimisi kiirklahvide taastamine Do you want to restore all shortcuts to their defaults? - + Kas tahad taastada kõigi kiirklahvide vaikimisi väärtused? OpenLP.SlideController - + Move to previous Eelmisele liikumine - + Move to next Järgmisele liikumine - + Hide Peida - + Move to live Tõsta ekraanile - + Edit and reload song preview Muuda ja kuva laulu eelvaade uuesti - + Start continuous loop Katkematu korduse alustamine - + Stop continuous loop Katkematu korduse lõpetamine - + Delay between slides in seconds Viivitus slaidide vahel sekundites - + Start playing media Meediaesituse alustamine - + Go To Liigu kohta - + Blank Screen Ekraani tühjendamine - + Blank to Theme Kujunduse tausta näitamine - + Show Desktop Töölaua näitamine - + Previous Slide Eelmine slaid - + Next Slide Järgmine slaid - + Previous Service Eelmine teenistus - + Next Service Järgmine teenistus - + Escape Item Kuva sulgemine - + Start/Stop continuous loop + Lõputu korduse alustamine/lõpetamine + + + + Add to Service @@ -2873,7 +2899,7 @@ Sisu ei ole UTF-8 kodeeringus. Language: - + Keel: @@ -2896,37 +2922,37 @@ Sisu ei ole UTF-8 kodeeringus. Item Start and Finish Time - + Elemendi algus ja lõpp Start - + Algus Finish - + Lõpp Length - + Pikkus Time Validation Error - + Valesti sisestatud aeg End time is set after the end of the media item - + Lõpu aeg on pärast meedia lõppu Start time is after the End Time of the media item - + Alguse aeg on pärast meedia lõppu @@ -3025,69 +3051,69 @@ 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 kujunduse 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. The content encoding is not UTF-8. See fail ei ole korrektne kujundus. Sisu kodeering ei ole UTF-8. - + File is not a valid theme. See fail ei ole sobilik kujundus. @@ -3107,47 +3133,47 @@ Sisu kodeering ei ole UTF-8. &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) @@ -3724,7 +3750,7 @@ Sisu kodeering ei ole UTF-8. Versioon - + &Vertical Align: &Vertikaaljoondus: @@ -3779,7 +3805,7 @@ Sisu kodeering ei ole UTF-8. Valmis. - + Starting import... Importimise alustamine... @@ -3869,12 +3895,12 @@ Sisu kodeering ei ole UTF-8. File - + Fail Help - + Abi @@ -3890,7 +3916,7 @@ Sisu kodeering ei ole UTF-8. Live Toolbar - + Ekraani tööriistariba @@ -3901,17 +3927,17 @@ Sisu kodeering ei ole UTF-8. OpenLP is already running. Do you wish to continue? - + OpenLP juba töötab. Kas tahad jätkata? Settings - + Sätted Tools - + Tööriistad @@ -3926,17 +3952,12 @@ Sisu kodeering ei ole UTF-8. View - - - - - View Model - + Vaade Duplicate Error - + Korduse viga @@ -3946,18 +3967,23 @@ Sisu kodeering ei ole UTF-8. Title and/or verses not found - + Pealkirja ja/või salme ei leitud XML syntax error + XML süntaksi viga + + + + View Mode OpenLP.displayTagDialog - + Configure Display Tags Kuvasiltide seadistamine @@ -3969,31 +3995,6 @@ Sisu kodeering ei ole UTF-8. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. <strong>Esitluse plugin</strong><br />Esitluse plugin võimaldab näidata esitlusi erinevate programmidega. Saadaolevate esitlusprogrammide valik on saadaval valikukastis. - - - Load a new Presentation - Uue esitluse laadimine - - - - Delete the selected Presentation - Valitud esitluse kustutamine - - - - Preview the selected Presentation - Valitud esitluse eelvaatlus - - - - Send the selected Presentation live - Valitud esitluse saatmine ekraanile - - - - Add the selected Presentation to the service - Valitud esitluse lisamine teenistusse - Presentation @@ -4012,56 +4013,81 @@ Sisu kodeering ei ole UTF-8. container title Esitlused + + + Load a new Presentation. + Uue esitluse laadimine. + + + + Delete the selected Presentation. + Valitud esitluse kustutamine. + + + + Preview the selected Presentation. + Valitud esitluse eelvaade. + + + + Send the selected Presentation live. + Valitud esitluse saatmine ekraanile. + + + + Add the selected Presentation to the service. + Valitud esitluse lisamine teenistusele. + PresentationPlugin.MediaItem - + Select Presentation(s) Esitlus(t)e valimine - + Automatic Automaatne - + Present using: Esitluseks kasutatakse: - + File Exists Fail on olemas - + A presentation with that filename already exists. Sellise nimega esitluse fail on juba olemas. - + This type of presentation is not supported. Seda liiki esitlus ei ole toetatud. - + Presentations (%s) Esitlused (%s) - + Missing Presentation Puuduv esitlus - + The Presentation %s no longer exists. Esitlust %s enam ei ole. - + The Presentation %s is incomplete, please reload. Esitlus %s ei ole täielik, palun laadi see uuesti. @@ -4113,20 +4139,30 @@ Sisu kodeering ei ole UTF-8. RemotePlugin.RemoteTab - + Serve on IP address: Saadaval IP-aadressilt: - + Port number: Pordi number: - + Server Settings Serveri sätted + + + Remote URL: + + + + + Stage view URL: + + SongUsagePlugin @@ -4191,7 +4227,7 @@ Sisu kodeering ei ole UTF-8. Song Usage - + Laulude kasutus @@ -4311,36 +4347,6 @@ on edukalt loodud. Reindexing songs... Laulude kordusindekseerimine... - - - Add a new Song - Uue laulu lisamine - - - - Edit the selected Song - Valitud laulu muutmine - - - - Delete the selected Song - Valitud laulu kustutamine - - - - Preview the selected Song - Valitud laulu eelvaatlus - - - - Send the selected Song live - Valitud laulu saatmine ekraanile - - - - Add the selected Song to the service - Valitud laulu lisamine teenistusele - Song @@ -4454,6 +4460,36 @@ Kodeering on vajalik märkide õige esitamise jaoks. Exports songs using the export wizard. Eksportimise nõustaja abil laulude eksportimine. + + + Add a new Song. + Uue laulu lisamine. + + + + Edit the selected Song. + Valitud laulu muutmine. + + + + Delete the selected Song. + Valitud laulu kustutamine. + + + + Preview the selected Song. + Valitud laulu eelvaade. + + + + Send the selected Song live. + Valitud laulu saatmine ekraanile. + + + + Add the selected Song to the service. + Valitud laulu lisamine teenistusele. + SongsPlugin.AuthorsForm @@ -4498,7 +4534,7 @@ Kodeering on vajalik märkide õige esitamise jaoks. The file does not have a valid extension. - + Sellel failil pole sobiv laiend. @@ -4687,7 +4723,7 @@ Kodeering on vajalik märkide õige esitamise jaoks. Pead lisama sellele laulule autori. - + You need to type some text in to the verse. Salm peab sisaldama teksti. @@ -4695,20 +4731,35 @@ Kodeering on vajalik märkide õige esitamise jaoks. SongsPlugin.EditVerseForm - + Edit Verse Salmi muutmine - + &Verse type: &Salmi liik: - + &Insert &Sisesta + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4904,49 +4955,50 @@ Kodeering on vajalik märkide õige esitamise jaoks. SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - Autorite, teemade ja raamatute loendi haldamine - - - + Titles Pealkirjad - + Lyrics Laulusõnad - + Delete Song(s)? Kas kustutada laul(ud)? - + 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? + + + Maintain the lists of authors, topics and books. + Autorite, teemade ja laulikute loendi haldamine. + SongsPlugin.OpenLP1SongImport Not a valid openlp.org 1.x song database. - + See pole openlp.org 1.x laulude andmebaas. @@ -4954,7 +5006,7 @@ Kodeering on vajalik märkide õige esitamise jaoks. Not a valid OpenLP 2.0 song database. - + See pole OpenLP 2.0 laulude andmebaas. @@ -5011,7 +5063,7 @@ Kodeering on vajalik märkide õige esitamise jaoks. The following songs could not be imported: - + Järgnevaid laule polnud võimalik importida: diff --git a/resources/i18n/fr.ts b/resources/i18n/fr.ts index e2303e92e..ed605435c 100644 --- a/resources/i18n/fr.ts +++ b/resources/i18n/fr.ts @@ -182,22 +182,22 @@ Do you want to continue anyway? BiblePlugin.HTTPBible - + Download Error Erreur de téléchargement - + 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. Il y a un problème de téléchargement de votre sélection de verset. Pouvez-vous contrôler votre connexion Internet, et si cette erreur persiste pensez a rapporter un dysfonctionnement. - + Parse Error Erreur syntaxique - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. Il y a un problème pour extraire votre sélection de verset. Si cette erreur persiste pensez a rapporter un dysfonctionnement. @@ -205,12 +205,12 @@ Do you want to continue anyway? BiblePlugin.MediaItem - + Bible not fully loaded. - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? @@ -246,82 +246,82 @@ Do you want to continue anyway? Bibles - - Import a Bible - Importer une Bible - - - - Add a new Bible - Ajouter une nouvelle Bible - - - - Edit the selected Bible - Édite la Bible sélectionnée - - - - Delete the selected Bible - Supprime la Bible sélectionnée - - - - Preview the selected Bible - Prévisualise la Bible sélectionnée - - - - Send the selected Bible live - Envoie la Bible sélectionnée en live - - - - Add the selected Bible to the service - Ajoute la Bible sélectionnée au service - - - + No Book Found Pas de livre trouvé - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. Pas de livre correspondant n'a été trouvé dans cette Bible. Contrôlez que vous avez correctement écris le mon du livre. + + + Import a Bible. + + + + + Add a new Bible. + + + + + Edit the selected Bible. + + + + + Delete the selected Bible. + + + + + Preview the selected Bible. + + + + + Send the selected Bible live. + + + + + Add the selected Bible to the service. + + BiblesPlugin.BibleManager - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. Il n'y a pas de Bibles actuellement installée. Pouvez-vous utiliser l'assistant d'importation pour installer une ou plusieurs Bibles. - + Scripture Reference Error Écriture de référence erronée. - + Web Bible cannot be used Les Bible Web ne peut être utilisée - + Text Search is not available with Web Bibles. La recherche textuelle n'est pas disponible pour les Bibles Web. - + 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. Vous n'avez pas introduit de mot clé de recherche. Vous pouvez séparer différents mot clé par une espace pour rechercher tous les mot clé et les séparer par des virgules pour en rechercher uniquement un. - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -333,7 +333,7 @@ Book Chapter:Verse-Chapter:Verse - + No Bibles Available @@ -571,70 +571,60 @@ a la demande, une connexion Interner fiable est donc nécessaire. BiblesPlugin.MediaItem - + Quick Rapide - + Second: Deuxième : - + Find: Recherche : - - Results: - Résultat : - - - + Book: Livre : - + Chapter: Chapitre : - + Verse: Verset : - + From: De : - + To: A : - + Text Search Recherche de texte - - Clear - Efface - - - - Keep - Laisse - - - + Scripture Reference + + + Toggle to keep or clear the previous results. + + BiblesPlugin.Opensong @@ -723,25 +713,35 @@ a la demande, une connexion Interner fiable est donc nécessaire. &Crédits : - + You need to type in a title. Vous devez introduire un titre. - + You need to add at least one slide Vous devez ajouter au moins une diapositive - + Split Slide Sépare la diapositive - + Split a slide into two by inserting a slide splitter. Sépare la diapositive en deux par l'inversion d'un séparateur de diapositive. + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide + + CustomsPlugin @@ -764,50 +764,50 @@ a la demande, une connexion Interner fiable est donc nécessaire. - - Import a Custom - Import un élément custom + + Load a new Custom. + - - Load a new Custom + + Import a Custom. - Add a new Custom - Ajoute un nouveau custom + Add a new Custom. + - Edit the selected Custom - Édite le custom sélectionner + Edit the selected Custom. + - Delete the selected Custom - Efface le custom sélectionné + Delete the selected Custom. + - - Preview the selected Custom - Prévisualise le custom sélectionné + + Preview the selected Custom. + - - Send the selected Custom live - Envoie le custom sélectionner en live + + Send the selected Custom live. + - - Add the selected Custom to the service - Ajoute le custom sélectionner au service + + Add the selected Custom to the service. + GeneralTab - + General Général @@ -839,44 +839,44 @@ a la demande, une connexion Interner fiable est donc nécessaire. - Load a new Image - Charge une nouvelle image + Load a new Image. + - Add a new Image - Ajoute une nouvelle image + Add a new Image. + - Edit the selected Image - Édite l'image sélectionnée + Edit the selected Image. + - Delete the selected Image - Efface l'image sélectionnée + Delete the selected Image. + - Preview the selected Image - Prévisualise l'image sélectionnée + Preview the selected Image. + - Send the selected Image live - Envoie l'image sélectionnée en direct + Send the selected Image live. + - Add the selected Image to the service - Ajoute l'image sélectionnée au service + Add the selected Image to the service. + ImagePlugin.ExceptionDialog - + Select Attachment @@ -884,39 +884,39 @@ a la demande, une connexion Interner fiable est donc nécessaire. ImagePlugin.MediaItem - + Select Image(s) Image(s) séléctionnée - + You must select an image to delete. Vous devez sélectionner une image a effacer. - + Missing Image(s) Image(s) manquante - + The following image(s) no longer exist: %s L(es) image(s) suivante(s) n'existe(nt) plus : %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? L(es) image(s) suivante(s) n'existe(nt) plus : %s Voulez-vous ajouter de toute façon d'autres images ? - + You must select an image to replace the background with. Vous devez sélectionner une image pour remplacer le fond. - + There was a problem replacing your background, the image file "%s" no longer exists. Il y a un problème pour remplacer votre fond, le fichier d'image "%s" n'existe plus. @@ -948,74 +948,74 @@ Voulez-vous ajouter de toute façon d'autres images ? - Load a new Media - Charge un nouveau média + Load a new Media. + - Add a new Media - Ajoute un nouveau média + Add a new Media. + - Edit the selected Media - Édite le média sélectionné + Edit the selected Media. + - Delete the selected Media - Efface le média sélectionné + Delete the selected Media. + - Preview the selected Media - Prévisualise le média sélectionné + Preview the selected Media. + - Send the selected Media live - Envoie le média en direct + Send the selected Media live. + - Add the selected Media to the service - Ajouter le média sélectionné au service + Add the selected Media to the service. + MediaPlugin.MediaItem - + Select Media Média sélectionné - + You must select a media file to replace the background with. Vous devez sélectionné un fichier média le fond. - + There was a problem replacing your background, the media file "%s" no longer exists. Il y a un problème pour remplacer le fond du direct, le fichier du média "%s" n'existe plus. - + Missing Media File Fichier du média manquant - + The file %s no longer exists. Le fichier %s n'existe plus. - + You must select a media file to delete. Vous devez sélectionné un fichier média à effacer. - + Videos (%s);;Audio (%s);;%s (*) @@ -1250,70 +1250,70 @@ Tinggaard, Frode Woldsund OpenLP.DisplayTagDialog - + Edit Selection Édite la sélection - - Update - Mettre à jours - - - + Description Description - + Tag Onglet - + Start tag Tag de démarrage - + End tag Tag de fin - + Default Défaut - + Tag Id - + Start HTML - + End HTML + + + Save + + OpenLP.DisplayTagTab - + Update Error Erreur de mise a jours - + Tag "n" already defined. - + Tag %s already defined. @@ -1352,7 +1352,7 @@ Tinggaard, Frode Woldsund - + Description characters to enter : %s @@ -1395,7 +1395,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1625,122 +1625,122 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.GeneralTab - + General Général - + Monitors Monitors - + Select monitor for output display: Select le moniteur 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 Affiche un écran noir d'avertissement - + 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 a sauver avant de commencer un nouveau service - + Automatically preview next item in service Prévisualise automatiquement le prochain élément de service - + Slide loop delay: Délais de boucle des diapositive : - + 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 @@ -1761,7 +1761,7 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainDisplay - + OpenLP Display Affichage OpenLP @@ -1769,292 +1769,292 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainWindow - + &File &Fichier - + &Import &Import - + &Export &Export - + &View &View - + M&ode M&ode - + &Tools &Outils - + &Settings &Options - + &Language &Langue - + &Help &Aide - + Media Manager Gestionnaire de médias - + Service Manager Gestionnaire de services - + Theme Manager Gestionnaire de thèmes - + &New &Nouveau - + &Open &Open - + Open an existing service. Ouvre un service existant. - + &Save &Enregistre - + Save the current service to disk. Enregistre le service courant sur le disque. - + Save &As... Enregistre &sous... - + Save Service As Enregistre le service sous - + Save the current service under a new name. Enregistre le service courant sous un nouveau nom. - + E&xit &Quitter - + Quit OpenLP Quitter OpenLP - + &Theme &Thème - + Configure &Shortcuts... Personnalise les &raccourcis... - + &Configure OpenLP... &Personnalise OpenLP... - + &Media Manager Gestionnaire de &médias - + Toggle Media Manager - + Toggle the visibility of the media manager. - + &Theme Manager Gestionnaire de &thèmes - + Toggle Theme Manager - + Toggle the visibility of the theme manager. - + &Service Manager Gestionnaire de &services - + Toggle Service Manager - + Toggle the visibility of the service manager. - + &Preview Panel Panneau de &prévisualisation - + Toggle Preview Panel - + Toggle the visibility of the preview panel. - + &Live Panel Panneau du &direct - + Toggle Live Panel - + Toggle the visibility of the live panel. - + &Plugin List Liste des &modules - + List the Plugins Liste des modules - + &User Guide &Guide utilisateur - + &About &Á propos - + More information about OpenLP Plus d'information sur OpenLP - + &Online Help &Aide en ligne - + &Web Site Site &Web - + Use the system language, if available. Utilise le langage système, si disponible. - + Set the interface language to %s Défini la langue de l'interface à %s - + Add &Tool... Ajoute un &outils.. - + Add an application to the list of tools. Ajoute une application a la liste des outils. - + &Default &Défaut - + Set the view mode back to the default. Redéfini le mode vue comme par défaut. - + &Setup - + Set the view mode to Setup. - + &Live &Direct - + Set the view mode to Live. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2063,32 +2063,32 @@ You can download the latest version from http://openlp.org/. Vous pouvez télécharger la dernière version depuis http://openlp.org/. - + OpenLP Version Updated Version d'OpenLP mis a jours - + OpenLP Main Display Blanked OpenLP affichage principale noirci - + The Main Display has been blanked out L'affichage principale a été noirci - + Close OpenLP Ferme OpenLP - + Are you sure you want to close OpenLP? Êtes vous sur de vouloir fermer OpenLP ? - + Default Theme: %s Thème par défaut : %s @@ -2099,30 +2099,40 @@ Vous pouvez télécharger la dernière version depuis http://openlp.org/.Anglais - + Print the current Service Order. - + Open &Data Folder... - + Open the folder where songs, bibles and other data resides. - + &Configure Display Tags - + &Autodetect + + + Update Theme Images + + + + + Update the preview images for all themes. + + OpenLP.MediaManagerItem @@ -2132,46 +2142,56 @@ Vous pouvez télécharger la dernière version depuis http://openlp.org/.Pas d'éléments sélectionné - + &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. - + Duplicate file name %s. Filename already exists in list + + + You must select one or more items to add. + + + + + No Search Results + + OpenLP.PluginForm @@ -2293,19 +2313,19 @@ Filename already exists in list - Add page break before each text item. + Add page break before each text item OpenLP.ScreenList - + Screen Écran - + primary primaire @@ -2321,224 +2341,209 @@ Filename already exists in list OpenLP.ServiceManager - - Load an existing service - Cherche un service existant - - - - Save this service - Enregistre ce service - - - - Select a theme for the service - Selecte un thème pour le service - - - + Move to &top Place en &premier - + Move item to the top of the service. Place l'élément au début du service. - + Move &up Déplace en &haut - + Move item up one position in the service. Déplace l'élément d'une position en haut. - + Move &down Déplace en %bas - + Move item down one position in the service. Déplace l'élément d'une position en bas. - + Move to &bottom Place en &dernier - + Move item to the end of the service. Place l'élément a la fin du service. - + Moves the selection up the window. - + Move up Déplace en haut - + &Delete From Service &Efface du service - + Delete the selected item from the service. Efface l'élément sélectionner du service. - + &Expand all &Développer tous - + Expand all the service items. Développe tous les éléments du service. - + &Collapse all &Réduire tous - + Collapse all the service items. Réduit tous les élément du service. - + Go Live Lance le direct - + Send the selected item to Live. Envoie l'élément sélectionné en direct. - + &Add New Item &Ajoute un nouvel élément - + &Add to Selected Item &Ajoute a l'élément sélectionné - + &Edit Item &Édite l'élément - + &Reorder Item &Réordonne l'élément - + &Notes &Remarques - + &Change Item Theme &Change le thème de l'élément - + Open File 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 - + Moves the selection down the window. - + Modified Service - + &Start Time - + Show &Preview - + Show &Live - + The current service has been modified. Would you like to save this service? - + File could not be opened because it is corrupt. - + Empty File - + This service file does not contain any data. - + Corrupt File @@ -2558,15 +2563,30 @@ Le contenu n'est pas de l'UTF-8. - + Untitled Service - + This file is either corrupt or not an OpenLP 2.0 service file. + + + Load an existing service. + + + + + Save this service. + + + + + Select a theme for the service. + + OpenLP.ServiceNoteForm @@ -2655,100 +2675,105 @@ Le contenu n'est pas de l'UTF-8. OpenLP.SlideController - + Previous Slide Diapositive précédente - + Move to previous Aller au précédent - + Next Slide Aller au suivant - + Move to next Aller au suivant - + Hide Cache - + Blank Screen Écran noir - + Blank to Theme Thème vide - + Show Desktop Affiche le bureau - + Start continuous loop Démarre une boucle continue - + Stop continuous loop Arrête la boucle continue - + Delay between slides in seconds Délais entre les diapositives en secondes - + Move to live Déplace en direct - + Edit and reload song preview Édite et recharge le chant prévisualisé - + Start playing media Démarre la lecture de média - + Go To Aller à - + Previous Service Service précédent - + Next Service Service suivant - + Escape Item - + Start/Stop continuous loop + + + Add to Service + + OpenLP.SpellTextEdit @@ -2932,114 +2957,114 @@ Le contenu n'est pas de l'UTF-8. &Exporte le thème - + %s (default) %s (défaut) - + You must select a theme to rename. Vous devez sélectionner a thème à renommer. - + Rename Confirmation Confirme le renommage - + Rename %s theme? Renomme le thème %s ? - + You must select a theme to edit. Vous devez sélectionner un thème a éditer. - + You must select a theme to delete. Vous devez sélectionner un thème à effacer. - + Delete Confirmation Confirmation d'effacement - + Delete %s theme? Efface le thème %s ? - + You have not selected a theme. Vous n'avez pas sélectionner de thème. - + Save Theme - (%s) Enregistre le thème - (%s) - + Theme Exported Thème exporté - + Your theme has been successfully exported. Votre thème a été exporter avec succès. - + Theme Export Failed L'export du thème a échoué - + Your theme could not be exported due to an error. Votre thème ne peut pas être exporter a cause d'une erreur. - + Select Theme Import File Select le fichier thème à importer - + File is not a valid theme. The content encoding is not UTF-8. Le fichier n'est pas un thème. Le contenu n'est pas de l'UTF-8. - + Validation Error Erreur de validation - + File is not a valid theme. Le fichier n'est pas un thème valide. - + A theme with this name already exists. Le thème avec ce nom existe déjà. - + You are unable to delete the default theme. Vous ne pouvez pas supprimer le thème par défaut. - + Theme %s is used in the %s plugin. Thème %s est utiliser par le module %s. - + OpenLP Themes (*.theme *.otz) @@ -3463,7 +3488,7 @@ Le contenu n'est pas de l'UTF-8. - + &Vertical Align: @@ -3671,7 +3696,7 @@ Le contenu n'est pas de l'UTF-8. Prêt. - + Starting import... Commence l'import... @@ -3820,11 +3845,6 @@ Le contenu n'est pas de l'UTF-8. View - - - View Model - - Duplicate Error @@ -3845,11 +3865,16 @@ Le contenu n'est pas de l'UTF-8. XML syntax error + + + View Mode + + OpenLP.displayTagDialog - + Configure Display Tags @@ -3881,79 +3906,79 @@ Le contenu n'est pas de l'UTF-8. - Load a new Presentation + Load a new Presentation. - - Delete the selected Presentation + + Delete the selected Presentation. - - Preview the selected Presentation + + Preview the selected Presentation. - - Send the selected Presentation live + + Send the selected Presentation live. - - Add the selected Presentation to the service + + Add the selected Presentation to the service. PresentationPlugin.MediaItem - + Select Presentation(s) - + Automatic - + Present using: - + Presentations (%s) - + File Exists - + A presentation with that filename already exists. - + This type of presentation is not supported. - + Missing Presentation - + The Presentation %s is incomplete, please reload. - + The Presentation %s no longer exists. @@ -4005,20 +4030,30 @@ Le contenu n'est pas de l'UTF-8. RemotePlugin.RemoteTab - + Server Settings - + Serve on IP address: - + Port number: + + + Remote URL: + + + + + Stage view URL: + + SongUsagePlugin @@ -4307,39 +4342,39 @@ The encoding is responsible for the correct character representation. container title + + + Exports songs using the export wizard. + + - Add a new Song + Add a new Song. - Edit the selected Song + Edit the selected Song. - Delete the selected Song + Delete the selected Song. - Preview the selected Song + Preview the selected Song. - Send the selected Song live + Send the selected Song live. - Add the selected Song to the service - - - - - Exports songs using the export wizard. + Add the selected Song to the service. @@ -4575,7 +4610,7 @@ The encoding is responsible for the correct character representation. - + You need to type some text in to the verse. @@ -4583,20 +4618,35 @@ The encoding is responsible for the correct character representation. SongsPlugin.EditVerseForm - + Edit Verse - + &Verse type: - + &Insert + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4792,32 +4842,27 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - - - - + Entire Song - + Titles - + Lyrics - + Delete Song(s)? - + Are you sure you want to delete the %n selected song(s)? @@ -4825,10 +4870,15 @@ The encoding is responsible for the correct character representation. - + CCLI License: + + + Maintain the lists of authors, topics and books. + + SongsPlugin.OpenLP1SongImport diff --git a/resources/i18n/hu.ts b/resources/i18n/hu.ts index e4402e592..09df69c6d 100644 --- a/resources/i18n/hu.ts +++ b/resources/i18n/hu.ts @@ -183,22 +183,22 @@ Folytatható? BiblePlugin.HTTPBible - + 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. @@ -206,12 +206,12 @@ Folytatható? BiblePlugin.MediaItem - + Bible not fully loaded. A Biblia nem töltődött be teljesen. - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? Az egyes és a kettőzött bibliaversek nem kombinálhatók. Töröljük a keresési eredményt és kezdjünk egy újabbat? @@ -228,41 +228,6 @@ Folytatható? <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. <strong>Biblia bővítmény</strong><br />A Biblia bővítmény különféle forrásokból származó igehelyek vetítését teszi lehetővé a szolgálat alatt. - - - Import a Bible - Biblia importálása - - - - Add a new Bible - Biblia hozzáadása - - - - Edit the selected Bible - A kijelölt Biblia szerkesztése - - - - Delete the selected Bible - A kijelölt Biblia törlése - - - - Preview the selected Bible - A kijelölt Biblia előnézete - - - - Send the selected Bible live - A kijelölt Biblia élő adásba küldése - - - - Add the selected Bible to the service - A kijelölt Biblia hozzáadása a szolgálati sorrendhez - Bible @@ -282,25 +247,60 @@ Folytatható? Bibliák - + No Book Found Nincs ilyen könyv - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. A kért könyv nem található ebben a Bibliában. Kérlek, ellenőrizd a könyv nevének helyesírását. + + + Import a Bible. + Biblia importálása. + + + + Add a new Bible. + Biblia hozzáadása. + + + + Edit the selected Bible. + A kijelölt Biblia szerkesztése. + + + + Delete the selected Bible. + A kijelölt Biblia törlése. + + + + Preview the selected Bible. + A kijelölt Biblia előnézete. + + + + Send the selected Bible live. + A kijelölt Biblia élő adásba küldése. + + + + Add the selected Bible to the service. + A kijelölt Biblia hozzáadása a szolgálati sorrendhez. + BiblesPlugin.BibleManager - + Scripture Reference Error Igehely hivatkozási hiba - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -319,29 +319,29 @@ Könyv fejezet:Vers-Vers,Fejezet:Vers-Vers Könyv fejezet:Vers-Fejezet:Vers - + Web Bible cannot be used Online Biblia nem használható - + Text Search is not available with Web Bibles. A keresés nem érhető el online Biblián. - + 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. Nincs megadva keresési kifejezés. Több kifejezés is megadható. Szóközzel történő elválasztás esetén minden egyes kifejezésre történik a keresés, míg vesszővel való elválasztás esetén csak az egyikre. - + No Bibles Available Nincsenek elérhető Bibliák - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. Jelenleg nincs telepített Biblia. Kérlek, használd a Bibliaimportáló tündért Bibliák telepítéséhez. @@ -406,7 +406,7 @@ A módosítások nem érintik a már a szolgálati sorrendben lévő verseket. This wizard will help you to import Bibles from a variety of formats. Click the next button below to start the process by selecting a format to import from. - A tündérrel különféle formátumú Bibliákat lehet importálni. Az alább található Tovább gombra való kattintással indítható a folyamat első lépése a formátum kiválasztásával. + A tündérrel különféle formátumú Bibliákat lehet importálni. Az alább található Következő gombra való kattintással indítható a folyamat első lépése a formátum kiválasztásával. @@ -578,70 +578,60 @@ demand and thus an internet connection is required. BiblesPlugin.MediaItem - + Quick Gyors - + Find: Keresés: - - Results: - Eredmények: - - - + Book: Könyv: - + Chapter: Fejezet: - + Verse: Vers: - + From: Innentől: - + To: Idáig: - + Text Search Szöveg keresése - - Clear - Törlés - - - - Keep - Megtartása - - - + Second: Második: - + Scripture Reference Igehely hivatkozás + + + Toggle to keep or clear the previous results. + + BiblesPlugin.Opensong @@ -671,7 +661,7 @@ demand and thus an internet connection is required. <strong>Custom Plugin</strong><br />The custom plugin provides the ability to set up custom text slides that can be displayed on the screen the same way songs are. This plugin provides greater freedom over the songs plugin. - <strong>Speciális bővítmény</strong><br />Az speciális bővítmény dalokhoz hasonló egyéni diák vetítését teszi lehetővé. Ugyanakkor több szabadságot enged meg, mint a dalok bővítmény. + <strong>Speciális bővítmény</strong><br />A speciális bővítmény dalokhoz hasonló egyéni diasor vetítését teszi lehetővé. Ugyanakkor több szabadságot enged meg, mint a dalok bővítmény. @@ -692,7 +682,7 @@ demand and thus an internet connection is required. Edit Custom Slides - Speciális diák szerkesztése + Speciális diasor szerkesztése @@ -715,12 +705,12 @@ demand and thus an internet connection is required. Minden kijelölt dia szerkesztése egyszerre. - + Split Slide Szétválasztás - + Split a slide into two by inserting a slide splitter. Dia ketté vágása egy diaelválasztó beszúrásával. @@ -735,12 +725,12 @@ demand and thus an internet connection is required. &Közreműködők: - + You need to type in a title. Meg kell adnod a címet. - + You need to add at least one slide Meg kell adnod legalább egy diát @@ -749,49 +739,19 @@ demand and thus an internet connection is required. Ed&it All &Összes szerkesztése + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide + + CustomsPlugin - - - Import a Custom - Speciális importálása - - - - Load a new Custom - Új speciális betöltése - - - - Add a new Custom - Új speciális hozzáadása - - - - Edit the selected Custom - A kijelölt speciális szerkesztése - - - - Delete the selected Custom - A kijelölt speciális törlése - - - - Preview the selected Custom - A kijelölt speciális előnézete - - - - Send the selected Custom live - A kijelölt speciális élő adásba küldése - - - - Add the selected Custom to the service - A kijelölt speciális hozzáadása a szolgálati sorrendhez - Custom @@ -810,13 +770,53 @@ demand and thus an internet connection is required. container title Speciális + + + Load a new Custom. + Új speciális betöltése. + + + + Import a Custom. + Speciális importálása. + + + + Add a new Custom. + Új speciális hozzáadása. + + + + Edit the selected Custom. + A kijelölt speciális szerkesztése. + + + + Delete the selected Custom. + A kijelölt speciális törlése. + + + + Preview the selected Custom. + A kijelölt speciális előnézete. + + + + Send the selected Custom live. + A kijelölt speciális élő adásba küldése. + + + + Add the selected Custom to the service. + A kijelölt speciális hozzáadása a szolgálati sorrendhez. + GeneralTab - + General - Általános + Általános @@ -824,42 +824,7 @@ demand and thus an internet connection is required. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. - <strong>Kép bővítmény</strong><br />A kép a bővítmény különféle képek vetítését teszi lehetővé.<br />A bővítmény egyik különös figyelmet érdemlő képessége az, hogy képes a sorrendkezelőn csoportba foglalni a képeket, így könnyebbé téve képek tömeges vetítését. A bővítmény képes az OpenLP „időzített körkörös” lejátszásra is, amivel a diákat automatikusan tudjuk léptetni. Továbbá, a bővítményben megadott képekkel felülírhatjuk a téma háttérképét, amellyel a szöveg alapú elemek, mint pl. a dalok, a megadott háttérképpel jelennek meg, a témában beállított háttérkép helyett. - - - - Load a new Image - Új kép betöltése - - - - Add a new Image - Új kép hozzáadása - - - - Edit the selected Image - A kijelölt kép szerkesztése - - - - Delete the selected Image - A kijelölt kép törlése - - - - Preview the selected Image - A kijelölt kép előnézete - - - - Send the selected Image live - A kijelölt kép élő adásba küldése - - - - Add the selected Image to the service - A kijelölt kép hozzáadása a szolgálati sorrendhez + <strong>Kép bővítmény</strong><br />A kép a bővítmény különféle képek vetítését teszi lehetővé.<br />A bővítmény egyik különös figyelmet érdemlő képessége az, hogy képes a sorrendkezelőn csoportba foglalni a képeket, így könnyebbé téve képek tömeges vetítését. A bővítmény képes az OpenLP „időzített körkörös” lejátszásra is, amivel a diasort automatikusan tudjuk léptetni. Továbbá, a bővítményben megadott képekkel felülírhatjuk a téma háttérképét, amellyel a szöveg alapú elemek, mint pl. a dalok, a megadott háttérképpel jelennek meg, a témában beállított háttérkép helyett. @@ -879,11 +844,46 @@ demand and thus an internet connection is required. container title Képek + + + Load a new Image. + Új kép betöltése. + + + + Add a new Image. + Új kép hozzáadása. + + + + Edit the selected Image. + A kijelölt kép szerkesztése. + + + + Delete the selected Image. + A kijelölt kép törlése. + + + + Preview the selected Image. + A kijelölt kép előnézete. + + + + Send the selected Image live. + A kijelölt kép élő adásba küldése. + + + + Add the selected Image to the service. + A kijelölt kép hozzáadása a szolgálati sorrendhez. + ImagePlugin.ExceptionDialog - + Select Attachment Melléklet kijelölése @@ -891,39 +891,39 @@ demand and thus an internet connection is required. ImagePlugin.MediaItem - + Select Image(s) Kép(ek) kijelölése - + You must select an image to delete. Ki kell választani egy képet a törléshez. - + You must select an image to replace the background with. Ki kell választani egy képet a háttér cseréjéhez. - + Missing Image(s) - + The following image(s) no longer exist: %s A következő kép(ek) nem létezik: %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? A következő kép(ek) nem létezik: %s Szeretnél más képeket megadni? - + There was a problem replacing your background, the image file "%s" no longer exists. Probléma történt a háttér cseréje során, a(z) „%s” kép nem létezik. @@ -935,41 +935,6 @@ Szeretnél más képeket megadni? <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é. - - - Load a new Media - Új médiafájl betöltése - - - - Add a 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 - Media @@ -988,41 +953,76 @@ Szeretnél más képeket megadni? container title Média + + + Load a new Media. + Új médiafájl betöltése. + + + + Add a 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. + MediaPlugin.MediaItem - + Select Media Médiafájl kijelölése - + You must select a media file to delete. Ki kell jelölni egy médiafájlt a törléshez. - + Videos (%s);;Audio (%s);;%s (*) Videók (%s);;Hang (%s);;%s (*) - + You must select a media file to replace the background with. Ki kell jelölni médiafájlt a háttér cseréjéhez. - + There was a problem replacing your background, the media file "%s" no longer exists. Probléma történt a háttér cseréje során, a(z) „%s” média fájl nem létezik. - + Missing Media File Hiányzó média fájl - + The file %s no longer exists. A(z) „%s” fájl nem létezik. @@ -1204,13 +1204,13 @@ Végső köszönet „Úgy szerette Isten a világot, hogy egyszülött Fiát adta oda, hogy egyetlen benne hívő se vesszen el, hanem - örök élete legyen." ‒ János 3,16 + örök élete legyen.” (Jn 3,16) És végül, de nem utolsósorban, a végső köszönet Istené, Atyánké, mert elküldte a Fiát, hogy meghaljon a kereszten, megszabadítva bennünket a bűntől. Ezért - ezt a programot ingyen készítettük neked, mert Ő - tett minket szabaddá. + ezt a programot szabadnak és ingyenesnek készítettük, + mert Ő tett minket szabaddá. @@ -1228,14 +1228,12 @@ Tinggaard, Frode Woldsund 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. - + 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. További részletekért lásd a alább. - + 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. További részletekért lásd a alább. @@ -1303,96 +1301,96 @@ Tinggaard, Frode Woldsund Preview items when clicked in Media Manager - + Elem előnézete a médiakezelőben való kattintáskor Advanced - Haladó + Haladó 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. OpenLP.DisplayTagDialog - + Edit Selection Kijelölés szerkesztése - - Update - Frissítés - - - + Description Leírás - + Tag Címke - + Start tag - Kezdő címke + Nyitó címke - + End tag Záró címke - + Default Alapértelmezett - + Tag Id - Címke ID + ID - + Start HTML - Kezdő HTML + Nyitó HTML - + End HTML Befejező HTML + + + Save + + OpenLP.DisplayTagTab - + Update Error Frissítési hiba - + Tag "n" already defined. Az „n” címke már létezik. - + Tag %s already defined. A címke már létezik: %s. @@ -1402,7 +1400,7 @@ Tinggaard, Frode Woldsund Oops! OpenLP hit a problem, and couldn't recover. The text in the box below contains information that might be helpful to the OpenLP developers, so please e-mail it to bugs@openlp.org, along with a detailed description of what you were doing when the problem occurred. - Hoppá! Az OpenLP hibába ütközött, és nem tudta lekezelni. Az alábbi dobozban található szöveg olyan információkat tartalmaz, amelyek hasznosak lehetnek az OpenLP fejlesztői számára, tehát kérjük, küld el bugs@openlp.org email címre egy részletes leírás mellett, amely tartalmazza, hogy éppen merre és mit tettél, amikor a hiba történt. + Hoppá! Az OpenLP hibába ütközött, és nem tudta lekezelni. Az alsó szövegdoboz olyan információkat tartalmaz, amelyek hasznosak lehetnek az OpenLP fejlesztői számára, tehát kérjük, küld el a bugs@openlp.org email címre egy részletes leírás mellett, amely tartalmazza, hogy éppen hol és mit tettél, amikor a hiba történt. @@ -1423,16 +1421,15 @@ Tinggaard, Frode Woldsund Please enter a description of what you were doing to cause this error (Minimum 20 characters) - Írd le mit tettél, ami a hibát okozta -(minimum 20 karakter) + Írd le mit tettél, ami a hibához vezetett (minimum 20 karakter) Attach File - Csatolt fájl + Fájl csatolása - + Description characters to enter : %s Leírás: %s @@ -1474,7 +1471,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1544,7 +1541,7 @@ Version: %s Enabling selected plugins... - Kijelölt beépülők engedélyezése… + Kijelölt bővítmények engedélyezése… @@ -1559,17 +1556,17 @@ Version: %s This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - A tündérrel előkészítheti az OpenLP első használatát. Az alább található Tovább gombra való kattintással indítható a folyamat első lépése. + A tündérrel előkészítheti az OpenLP első használatát. Az alább található Következő gombra való kattintással indítható a folyamat első lépése. Activate required Plugins - Szükséges beépülők aktiválása + Igényelt bővítmények aktiválása Select the Plugins you wish to use. - Jelöld ki az alkalmazni kívánt beépülőket. + Jelöld ki az alkalmazni kívánt bővítményeket. @@ -1579,7 +1576,7 @@ Version: %s Custom Text - Egyedi szöveg + Speciális @@ -1604,17 +1601,17 @@ Version: %s Allow remote access - Távvezérlés engedélyezése + Távvezérlő Monitor Song Usage - Dalstatisztika monitorozása + Dalstatisztika Allow Alerts - Értesítések engedélyezése + Értesítések @@ -1687,7 +1684,7 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go Please wait while OpenLP is set up and your data is imported. - Várj, amíg az OpenLP beállítások érvényre jutnak és míg at adatok importálódnak. + Várj, amíg az OpenLP beállítások érvényre jutnak és míg az adatok importálódnak. @@ -1708,124 +1705,124 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go 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 üres 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 - + Slide loop delay: - Időzített diák késleltetése: + Időzített dia késleltetése: - + 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 - + 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 - + Visszakapcsolás üres képernyőről, amikor egy új elem kerül élő adásba @@ -1844,7 +1841,7 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go OpenLP.MainDisplay - + OpenLP Display OpenLP megjelenítés @@ -1852,287 +1849,287 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go OpenLP.MainWindow - + &File &Fájl - + &Import &Importálás - + &Export &Exportálás - + &View &Nézet - + M&ode &Mód - + &Tools &Eszközök - + &Settings &Beállítások - + &Language &Nyelv - + &Help &Súgó - + Media Manager Médiakezelő - + Service Manager Sorrendkezelő - + Theme Manager Témakezelő - + &New &Új - + &Open Meg&nyitás - + Open an existing service. Meglévő sorrend megnyitása. - + &Save &Mentés - + Save the current service to disk. Aktuális sorrend mentése lemezre. - + Save &As... Mentés má&sként… - + Save Service As Sorrend mentése másként - + Save the current service under a new name. Az aktuális sorrend más néven való mentése. - + E&xit &Kilépés - + Quit OpenLP OpenLP bezárása - + &Theme &Téma - + &Configure OpenLP... OpenLP &beállítása… - + &Media Manager &Médiakezelő - + Toggle Media Manager Médiakezelő átváltása - + Toggle the visibility of the media manager. A médiakezelő láthatóságának átváltása. - + &Theme Manager &Témakezelő - + Toggle Theme Manager Témakezelő átváltása - + Toggle the visibility of the theme manager. A témakezelő láthatóságának átváltása. - + &Service Manager &Sorrendkezelő - + Toggle Service Manager Sorrendkezelő átváltása - + Toggle the visibility of the service manager. A sorrendkezelő láthatóságának átváltása. - + &Preview Panel &Előnézet panel - + Toggle Preview Panel Előnézet panel átváltása - + Toggle the visibility of the preview panel. Az előnézet panel láthatóságának átváltása. - + &Live Panel &Élő adás panel - + Toggle Live Panel Élő adás panel átváltása - + Toggle the visibility of the live panel. Az élő adás panel láthatóságának átváltása. - + &Plugin List &Bővítménylista - + List the Plugins Bővítmények listája - + &User Guide &Felhasználói kézikönyv - + &About &Névjegy - + More information about OpenLP További információ az OpenLP-ről - + &Online Help &Online súgó - + &Web Site &Weboldal - + Use the system language, if available. Rendszernyelv használata, ha elérhető. - + Set the interface language to %s A felhasználói felület nyelvének átváltása erre: %s - + Add &Tool... &Eszköz hozzáadása… - + Add an application to the list of tools. Egy alkalmazás hozzáadása az eszközök listához. - + &Default &Alapértelmezett - + Set the view mode back to the default. Nézetmód visszaállítása az alapértelmezettre. - + &Setup &Szerkesztés - + Set the view mode to Setup. Nézetmód váltása a Beállítás módra. - + &Live &Élő adás - + Set the view mode to Live. Nézetmód váltása a Élő módra. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2141,27 +2138,27 @@ You can download the latest version from http://openlp.org/. A legfrissebb verzió a http://openlp.org/ oldalról szerezhető be. - + OpenLP Version Updated OpenLP verziófrissítés - + OpenLP Main Display Blanked Sötét OpenLP fő képernyő - + The Main Display has been blanked out A fő képernyő el lett sötétítve - + Default Theme: %s Alapértelmezett téma: %s - + Configure &Shortcuts... &Gyorsbillentyűk beállítása… @@ -2172,40 +2169,50 @@ A legfrissebb verzió a http://openlp.org/ oldalról szerezhető be.Magyar - + Print the current Service Order. Az aktuális sorrend nyomtatása. - + &Configure Display Tags - Megjelenítési &címkek beállítása + Megjelenítési &címkék beállítása - + &Autodetect &Automatikus felismerés - + Open &Data Folder... &Adatmappa megnyitása… - + Open the folder where songs, bibles and other data resides. A dalokat, Bibliákat és egyéb adatokat tartalmazó mappa megnyitása. - + Close OpenLP OpenLP bezárása - + Are you sure you want to close OpenLP? Biztosan bezárható az OpenLP? + + + Update Theme Images + + + + + Update the preview images for all themes. + + OpenLP.MediaManagerItem @@ -2215,44 +2222,55 @@ A legfrissebb verzió a http://openlp.org/ oldalról szerezhető be.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. - + Duplicate file name %s. Filename already exists in list + Duplikátum fájlnév: %s. +A fájlnév már benn van a listában + + + + You must select one or more items to add. + + + + + No Search Results @@ -2376,19 +2394,19 @@ Filename already exists in list - Add page break before each text item. - + Add page break before each text item + Oldaltörés hozzádása minden szöveges elem elé OpenLP.ScreenList - + Screen Képernyő - + primary elsődleges @@ -2404,251 +2422,251 @@ Filename already exists in list OpenLP.ServiceManager - - Load an existing service - Egy meglévő szolgálati sorrend betöltése - - - - Save this service - Aktuális szolgálati sorrend mentése - - - - Select a theme for the service - Jelöljön ki egy témát a sorrendhez - - - + 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. - + 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 - + Open File Fájl megnyitása - + 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? - + 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 Custom Service Notes: - + Egyedi szolgálati elem jegyzetek: Notes: - + Jegyzetek: Playing time: - + Lejátszási idő: - + Untitled Service - + Névnélküli szolgálat - + This file is either corrupt or 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. + + + + 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. @@ -2702,134 +2720,139 @@ A tartalom kódolása nem UTF-8. Select an action and click one of the buttons below to start capturing a new primary or alternate shortcut, respectively. - + Válassz egy parancsot és kattints egyenként az egyik alább található gombra az elsődleges vagy alternatív gyorbillenytű elfogásához. Default - Alapértelmezett + Alapértelmezett Custom - Speciális + Egyéni Capture shortcut. - + Gyorbillentyű elfogása. Restore the default shortcut of this action. - + Az eredeti gyorsbillentyű visszaállítása. Restore Default Shortcuts - + Alapértelmezett gyorsbillentyűk visszaállítása Do you want to restore all shortcuts to their defaults? - + Valóban minden gyorsbillenytű visszaállítandó az alapértelmezettjére? OpenLP.SlideController - + Move to previous Mozgatás az előzőre - + Move to next Mozgatás a következőre - + Hide Elrejtés - + Move to live Élő adásba küldés - + Start continuous loop Folyamatos vetítés indítása - + Stop continuous loop Folyamatos vetítés leállítása - + Delay between slides in seconds Diák közötti késleltetés másodpercben - + Start playing media Médialejátszás indítása - + Go To Ugrás - + Edit and reload song preview Szerkesztés és az dal előnézetének újraolvasása - + Blank Screen Üres képernyő - + Blank to Theme Üres téma - + Show Desktop Asztal megjelenítése - + Previous Slide Előző dia - + Next Slide Következő dia - + Previous Service Előző sorrend - + Next Service Következő sorrend - + Escape Item Kilépés az elemből - + Start/Stop continuous loop + Folyamatos vetítés indítása/leállítása + + + + Add to Service @@ -2848,7 +2871,7 @@ A tartalom kódolása nem UTF-8. Language: - + Nyelv: @@ -2871,37 +2894,37 @@ A tartalom kódolása nem UTF-8. Item Start and Finish Time - + Elem kezdő és befejező idő Start - + Kezdés Finish - + Befejezés Length - + Hosszúság Time Validation Error - + Idő érvényességi hiba End time is set after the end of the media item - + A médiaelem befejező időpontja később van, mint a befejezése Start time is after the End Time of the media item - + A médiaelem kezdő időpontja később van, mint a befejezése @@ -3000,79 +3023,79 @@ 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 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 - + You are unable to delete the default theme. Az alapértelmezett témát nem lehet törölni. - + 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. The content encoding is not UTF-8. Nem érvényes témafájl. A tartalom kódolása nem UTF-8. - + File is not a valid theme. Nem érvényes témafájl. - + Theme %s is used in the %s plugin. A(z) %s témát a(z) %s bővítmény használja. @@ -3092,37 +3115,37 @@ A tartalom kódolása nem UTF-8. Téma e&xportálása - + Delete %s theme? Törölhető ez a téma: %s? - + 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? - + OpenLP Themes (*.theme *.otz) OpenLP témák (*.theme *.otz) - + Validation Error Érvényességi hiba - + A theme with this name already exists. Ilyen fájlnéven már létezik egy téma. @@ -3207,7 +3230,7 @@ A tartalom kódolása nem UTF-8. Define the font and display characteristics for the Display text - A fő szöveg betűkészlete és a megjelenési tulajdonságai + A fő szöveg betűkészlete és megjelenési tulajdonságai @@ -3252,7 +3275,7 @@ A tartalom kódolása nem UTF-8. Define the font and display characteristics for the Footer text - A lábléc szöveg betűkészlete és a megjelenési tulajdonságai + A lábléc szöveg betűkészlete és megjelenési tulajdonságai @@ -3342,7 +3365,7 @@ A tartalom kódolása nem UTF-8. 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. Felülírható már egy meglévő vagy egy új név megadásával új téma hozható létre + 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 @@ -3357,7 +3380,7 @@ A tartalom kódolása nem 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. - A tündérrel témákat lehet létrehozni és módosítani. Az alább található Tovább gombra való kattintással indítható a folyamat első lépése a háttér beállításával. + A tündérrel témákat lehet létrehozni és módosítani. Az alább található Következő gombra való kattintással indítható a folyamat első lépése a háttér beállításával. @@ -3699,7 +3722,7 @@ A tartalom kódolása nem UTF-8. Kiválasztás eggyel lejjebb helyezése. - + &Vertical Align: &Függőleges igazítás: @@ -3754,7 +3777,7 @@ A tartalom kódolása nem UTF-8. Kész. - + Starting import... Importálás indítása… @@ -3829,110 +3852,110 @@ A tartalom kódolása nem UTF-8. Continuous - Folytonos + Folytonos Default - Alapértelmezett + Alapértelmezett Display style: - Megjelenítési stílus: + Megjelenítési stílus: File - + Fájl Help - + Súgó h The abbreviated unit for hours - ó + ó Layout style: - Elrendezési stílus: + Elrendezési stílus: Live Toolbar - + Élő eszköztár m The abbreviated unit for minutes - p + p OpenLP is already running. Do you wish to continue? - + Az OpenLP mér fut. Folytatható? Settings - + Beállítások Tools - + Eszközök Verse Per Slide - Egy vers diánként + Egy vers diánként Verse Per Line - Egy vers soronként + Egy vers soronként View - - - - - View Model - + Nézet Duplicate Error - + Duplikátum hiba Unsupported File - Nem támogatott fájl + Nem támogatott fájl Title and/or verses not found - + A cím és/vagy a versszak nem található XML syntax error + XML szintaktikai hiba + + + + View Mode OpenLP.displayTagDialog - + Configure Display Tags Megjelenítési címkék beállítása @@ -3944,31 +3967,6 @@ A tartalom kódolása nem UTF-8. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. <strong>Bemutató bővítmény</strong><br />A bemutató bővítmény különböző külső programok segítségével bemutatók megjelenítését teszi lehetővé. A prezentációs programok egy listából választhatók ki. - - - Load a new Presentation - Új bemutató betöltése - - - - Delete the selected Presentation - A kijelölt bemutató törlése - - - - Preview the selected Presentation - A kijelölt bemutató előnézete - - - - Send the selected Presentation live - A kijelölt bemutató élő adásba küldése - - - - Add the selected Presentation to the service - A kijelölt bemutató hozzáadása a sorrendhez - Presentation @@ -3987,56 +3985,81 @@ A tartalom kódolása nem UTF-8. container title Bemutatók + + + Load a new Presentation. + Új bemutató betöltése. + + + + Delete the selected Presentation. + A kijelölt bemutató törlése. + + + + Preview the selected Presentation. + A kijelölt bemutató előnézete. + + + + Send the selected Presentation live. + A kijelölt bemutató élő adásba küldése. + + + + Add the selected Presentation to the service. + A kijelölt bemutató hozzáadása a sorrendhez. + PresentationPlugin.MediaItem - + Select Presentation(s) Bemutató(k) kijelölése - + Automatic Automatikus - + Present using: Bemutató ezzel: - + File Exists A fájl létezik - + A presentation with that filename already exists. Ilyen fájlnéven már létezik egy bemutató. - + This type of presentation is not supported. Ez a bemutató típus nem támogatott. - + Presentations (%s) Bemutatók (%s) - + Missing Presentation Hiányzó bemutató - + The Presentation %s is incomplete, please reload. A(z) %s bemutató hiányos, újra kell tölteni. - + The Presentation %s no longer exists. A(z) %s bemutató már nem létezik. @@ -4088,20 +4111,30 @@ A tartalom kódolása nem UTF-8. RemotePlugin.RemoteTab - + Serve on IP address: Szolgáltatás IP címe: - + Port number: Port száma: - + Server Settings Szerver beállítások + + + Remote URL: + + + + + Stage view URL: + + SongUsagePlugin @@ -4166,7 +4199,7 @@ A tartalom kódolása nem UTF-8. Song Usage - + Dalstatisztika @@ -4267,7 +4300,7 @@ has been successfully created. <strong>Songs Plugin</strong><br />The songs plugin provides the ability to display and manage songs. - <strong>Dalok bővítmény</strong><br />A dalok bővítmény dalok megjelenítését és kezelését teszi lehetővé. + <strong>Dal bővítmény</strong><br />A dal bővítmény dalok megjelenítését és kezelését teszi lehetővé. @@ -4284,36 +4317,6 @@ has been successfully created. Reindexing songs... Dalok indexelése folyamatban… - - - Add a new Song - Új dal hozzáadása - - - - Edit the selected Song - A kijelölt dal szerkesztése - - - - Delete the selected Song - A kijelölt dal törlése - - - - Preview the selected Song - A kijelölt dal előnézete - - - - Send the selected Song live - A kijelölt dal élő adásba küldése - - - - Add the selected Song to the service - A kijelölt dal hozzáadása a sorrendhez - Arabic (CP-1256) @@ -4428,6 +4431,36 @@ A kódlap felelős a karakterek helyes megjelenítéséért. container title Dalok + + + Add a new Song. + Új dal hozzáadása. + + + + Edit the selected Song. + A kijelölt dal szerkesztése. + + + + Delete the selected Song. + A kijelölt dal törlése. + + + + Preview the selected Song. + A kijelölt dal előnézete. + + + + Send the selected Song live. + A kijelölt dal élő adásba küldése. + + + + Add the selected Song to the service. + A kijelölt dal hozzáadása a sorrendhez. + SongsPlugin.AuthorsForm @@ -4472,7 +4505,7 @@ A kódlap felelős a karakterek helyes megjelenítéséért. The file does not have a valid extension. - + A fájlnév nem tartalmaz valós kiterjesztést. @@ -4480,7 +4513,7 @@ A kódlap felelős a karakterek helyes megjelenítéséért. Administered by %s - Adminisztrálta: %s + Adminisztrálta: %s @@ -4598,7 +4631,7 @@ A kódlap felelős a karakterek helyes megjelenítéséért. You have not selected a valid author. Either select an author from the list, or type in a new author and click the "Add Author to Song" button to add the new author. - Nincs kijelölve egyetlen szerző sem. Vagy válassz egy szerzőt a listából, vagy írj az új szerző mezőbe és kattints az „Szerző hozzáadása a dalhoz” gombon a szerző megjelöléséhez. + Nincs kijelölve egyetlen szerző sem. Vagy válassz egy szerzőt a listából, vagy írj az új szerző mezőbe és kattints a Hozzáadás gombra a szerző megjelöléséhez. @@ -4618,7 +4651,7 @@ A kódlap felelős a karakterek helyes megjelenítéséért. You have not selected a valid topic. Either select a topic from the list, or type in a new topic and click the "Add Topic to Song" button to add the new topic. - Nincs kijelölve egyetlen témakör sem. Vagy válassz egy témakört a listából, vagy írj az új témakör mezőbe és kattints a Témakör hozzáadása a dalhoz gombon a témakör megjelöléséhez. + Nincs kijelölve egyetlen témakör sem. Vagy válassz egy témakört a listából, vagy írj az új témakör mezőbe és kattints a Hozzáadás gombraa témakör megjelöléséhez. @@ -4661,7 +4694,7 @@ A kódlap felelős a karakterek helyes megjelenítéséért. Egy szerzőt meg kell adnod ehhez a dalhoz. - + You need to type some text in to the verse. Meg kell adnod a versszak szövegét. @@ -4669,20 +4702,35 @@ A kódlap felelős a karakterek helyes megjelenítéséért. SongsPlugin.EditVerseForm - + Edit Verse Versszak szerkesztése - + &Verse type: Versszak &típusa: - + &Insert &Beszúrás + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4782,7 +4830,7 @@ A kódlap felelős a karakterek helyes megjelenítéséért. This wizard will help you to import songs from a variety of formats. Click the next button below to start the process by selecting a format to import from. - A tündérrel különféle formátumú dalokat lehet importálni. Az alább található Tovább gombra való kattintással indítható a folyamat első lépése a formátum kiválasztásával. + A tündérrel különféle formátumú dalokat lehet importálni. Az alább található Következő gombra való kattintással indítható a folyamat első lépése a formátum kiválasztásával. @@ -4867,60 +4915,60 @@ A kódlap felelős a karakterek helyes megjelenítéséért. Copy - Másolás + Másolás Save to File - Mentés fájlba + Mentés fájlba SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - Szerzők, témakörök, könyvek listájának kezelése - - - + Titles Címek - + Lyrics Dalszöveg - + Delete Song(s)? Törölhető(ek) a dal(ok)? - + CCLI License: CCLI licenc: - + Entire Song Teljes dal - + Are you sure you want to delete the %n selected song(s)? Törölhetők a kijelölt dalok: %n? + + + Maintain the lists of authors, topics and books. + Szerzők, témakörök, könyvek listájának kezelése. + SongsPlugin.OpenLP1SongImport Not a valid openlp.org 1.x song database. - + Ez nem egy openlp.org 1.x daladatbázis. @@ -4928,7 +4976,7 @@ A kódlap felelős a karakterek helyes megjelenítéséért. Not a valid OpenLP 2.0 song database. - + Ez nem egy OpenLP 2.0 daladatbázis. @@ -4985,7 +5033,7 @@ A kódlap felelős a karakterek helyes megjelenítéséért. The following songs could not be imported: - + A következő dalok nem importálhatók: @@ -5193,7 +5241,7 @@ A kódlap felelős a karakterek helyes megjelenítéséért. Themes - Témák + Témák diff --git a/resources/i18n/id.ts b/resources/i18n/id.ts index 9844c233d..18aac5619 100644 --- a/resources/i18n/id.ts +++ b/resources/i18n/id.ts @@ -42,7 +42,7 @@ Tetap lanjutkan? <strong>Alerts Plugin</strong><br />The alert plugin controls the displaying of nursery alerts on the display screen - <strong>Plugin Peringatan</strong><br />Plugin peringatan mengendalikan tampilan pesan pada layar. + <strong>Plugin Peringatan</strong><br />Plugin peringatan mengendalikan tampilan pesan pada layar @@ -184,22 +184,22 @@ Tetap lanjutkan? BiblePlugin.HTTPBible - + Download Error Unduhan Gagal - + 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. Ada masalah dalam mengunduh ayat yang terpilih. Mohon periksa sambungan internet Anda dan jika masalah berlanjut, pertimbangkan untuk melaporkan hal ini sebagai kutu. - + Parse Error - Galat saat parsing. + Galat saat parsing - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. Ada masalah dalam mengekstrak ayat yang terpilih. Jika masalah berlanjut, pertimbangkan untuk melaporkan hal ini sebagai kutu. @@ -207,12 +207,12 @@ Tetap lanjutkan? BiblePlugin.MediaItem - + Bible not fully loaded. Alkitab belum termuat seluruhnya. - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? Tidak dapat menggabungkan hasil pencarian ayat. Ingin menghapus hasil pencarian dan mulai pencarian baru? @@ -229,41 +229,6 @@ Tetap lanjutkan? <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. <strong>Plugin Alkitab</strong><br />Plugin Alkitab memungkinkan program untuk menampilkan ayat-ayat dari berbagai sumber selama kebaktian. - - - Import a Bible - Impor Alkitab - - - - Add a new Bible - Tambahkan Alkitab - - - - Edit the selected Bible - Sunting Alkitab terpilih - - - - Delete the selected Bible - Hapus Alkitab terpilih - - - - Preview the selected Bible - Pratinjau Alkitab terpilih - - - - Send the selected Bible live - Tampilkan Alkitab terpilih - - - - Add the selected Bible to the service - Tambahkan Alkitab terpilih untuk kebaktian - Bible @@ -283,47 +248,82 @@ Tetap lanjutkan? Alkitab - + No Book Found Kitab Tidak Ditemukan - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. Kitab tidak ditemukan dalam Alkitab ini. Periksa apakah Anda telah mengeja nama kitab dengan benar. + + + Import a Bible. + Impor Alkitab. + + + + Add a new Bible. + Tambahkan Alkitab baru. + + + + Edit the selected Bible. + Sunting Alkitab terpilih. + + + + Delete the selected Bible. + Hapus Alkitab terpilih. + + + + Preview the selected Bible. + Pratinjau Alkitab terpilih. + + + + Send the selected Bible live. + Tayangkan Alkitab terpilih. + + + + Add the selected Bible to the service. + Tambahkan Alkitab terpilih ke dalam layanan. + BiblesPlugin.BibleManager - + Scripture Reference Error Referensi Kitab Suci Galat - + Web Bible cannot be used Alkitab Web tidak dapat digunakan - + Text Search is not available with Web Bibles. Pencarian teks tidak dapat dilakukan untuk Alkitab Web. - + 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. - Anda tidak memasukkan kata kunci pencarian. -Anda dapat memisahkan kata kunci dengan spasi untuk mencari seluruh kata kunci dan Anda dapat memisahkan kata kunci dengan koma untuk mencari salah satu. + Anda tidak memasukkan kata kunci pencarian. +Anda dapat memisahkan kata kunci dengan spasi untuk mencari seluruh kata kunci dan Anda dapat memisahkan kata kunci dengan koma untuk mencari salah satu kata kunci. - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. - TIdak ada Alkitab terpasang. Harap gunakan Import Wizard untuk memasang sebuah atau beberapa Alkitab. + TIdak ada Alkitab terpasang. Harap gunakan Wisaya Impor untuk memasang sebuah atau beberapa Alkitab. - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -342,7 +342,7 @@ Kitab Pasal:Ayat-Ayat,Pasal:Ayat-Ayat Kitab Pasal:Ayat-Pasal:Ayat - + No Bibles Available Alkitab tidak tersedia @@ -357,7 +357,7 @@ Kitab Pasal:Ayat-Pasal:Ayat Only show new chapter numbers - Hanya tampilkan nomor pasal baru + Hanya tampilkan nomor pasal baru @@ -402,12 +402,12 @@ Perubahan tidak akan mempengaruhi ayat yang kini tampil. Bible Import Wizard - Import Wizard Alkitab + Wisaya Impor Alkitab This wizard will help you to import Bibles from a variety of formats. Click the next button below to start the process by selecting a format to import from. - Wizard ini akan membantu Anda mengimpor Alkitab dari berbagai format. Klik tombol lanjut di bawah untuk memulai proses dengan memilih format untuk diimpor. + Wisaya ini akan membantu Anda mengimpor Alkitab dari berbagai format. Klik tombol lanjut di bawah untuk memulai proses dengan memilih format untuk diimpor. @@ -507,7 +507,7 @@ Perubahan tidak akan mempengaruhi ayat yang kini tampil. Bible Exists - Alkitab terpasang. + Alkitab Sudah Ada @@ -574,76 +574,66 @@ sesuai permintaan dan membutuhkan sambungan internet. openlp.org 1.x Bible Files - Ayat Alkitab openlp.org 1.x. + Ayat Alkitab openlp.org 1.x BiblesPlugin.MediaItem - + Quick Cepat - + Find: Temukan: - - Results: - Hasil: - - - + Book: Kitab: - + Chapter: Pasal: - + Verse: Ayat: - + From: Dari: - + To: Kepada: - + Text Search Pencarian Teks - - Clear - Bersihkan - - - - Keep - Simpan - - - + Second: Kedua: - + Scripture Reference Referensi Alkitab + + + Toggle to keep or clear the previous results. + + BiblesPlugin.Opensong @@ -717,12 +707,12 @@ sesuai permintaan dan membutuhkan sambungan internet. Sunting seluruh slide bersamaan. - + Split Slide Pecah Slide - + Split a slide into two by inserting a slide splitter. Pecah slide menjadi dua menggunakan pemecah slide. @@ -737,63 +727,33 @@ sesuai permintaan dan membutuhkan sambungan internet. &Kredit: - + You need to type in a title. Anda harus mengetikkan judul. - + You need to add at least one slide - Anda harus menambah paling sedikit satu slide. + Anda harus menambah paling sedikit satu salindia Ed&it All Sun&ting Semua + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide + + CustomsPlugin - - - Import a Custom - Impor sebuah Suaian - - - - Load a new Custom - Muat sebuah Suaian - - - - Add a new Custom - Tambah sebuah Suaian - - - - Edit the selected Custom - Sunting Suaian terpilih - - - - Delete the selected Custom - Hapus Suaian terpilih - - - - Preview the selected Custom - Pratinjau Suaian terpilih - - - - Send the selected Custom live - Kirim Suaian terpilih ke layar - - - - Add the selected Custom to the service - Tambah Suaian terpilih ke daftar layanan - Custom @@ -812,11 +772,51 @@ sesuai permintaan dan membutuhkan sambungan internet. container title Suaian + + + Load a new Custom. + Muat Suaian baru. + + + + Import a Custom. + Impor sebuah Suaian. + + + + Add a new Custom. + Tambahkan sebuah Suaian. + + + + Edit the selected Custom. + Sunting Suaian terpilih. + + + + Delete the selected Custom. + Hapus Suaian terpilih. + + + + Preview the selected Custom. + Pratinjau Suaian terpilih. + + + + Send the selected Custom live. + Tayangkan Suaian terpilih. + + + + Add the selected Custom to the service. + Tambahkan Suaian ke dalam layanan + GeneralTab - + General Umum @@ -828,41 +828,6 @@ sesuai permintaan dan membutuhkan sambungan internet. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. <strong>Plugin Gambar</strong><br />Plugin gambar memungkinkan penayangan gambar.<br />Salah satu keunggulan fitur ini adalah kemampuan untuk menggabungkan beberapa gambar pada Service Manager, yang menjadikan penayangan beberapa gambar mudah. Plugin ini juga dapat menggunakan "perulangan terwaktu" dari OpenLP untuk membuat slide show yang berjalan otomatis. Juga, gambar dari plugin dapat digunakan untuk menggantikan latar tema. - - - Load a new Image - Muat gambar baru - - - - Add a new Image - Tambah gambar baru - - - - Edit the selected Image - Ubah gambar terpilih - - - - Delete the selected Image - Hapus gambar terpilih - - - - Preview the selected Image - Pratinjau gambar terpilih - - - - Send the selected Image live - Tayangkan gambar terpilih - - - - Add the selected Image to the service - Tambahkan gambar terpilih ke service - Image @@ -881,11 +846,46 @@ sesuai permintaan dan membutuhkan sambungan internet. container title Gambar + + + Load a new Image. + Muat Gambar baru + + + + Add a new Image. + Tambahkan Gambar baru + + + + Edit the selected Image. + Sunting Gambar terpilih. + + + + Delete the selected Image. + Hapus Gambar terpilih. + + + + Preview the selected Image. + Pratinjau Gambar terpilih. + + + + Send the selected Image live. + Tayangkan Gambar terpilih. + + + + Add the selected Image to the service. + Tambahkan Gambar terpilih ke layanan. + ImagePlugin.ExceptionDialog - + Select Attachment Pilih Lampiran @@ -893,39 +893,39 @@ sesuai permintaan dan membutuhkan sambungan internet. ImagePlugin.MediaItem - + Select Image(s) Pilih Gambar - + You must select an image to delete. Pilih sebuah gambar untuk dihapus. - + You must select an image to replace the background with. Pilih sebuah gambar untuk menggantikan latar. - + Missing Image(s) Gambar Tidak Ditemukan - + The following image(s) no longer exist: %s Gambar berikut tidak ada lagi: %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? Gambar berikut tidak ada lagi: %s Ingin tetap menambah gambar lain? - + There was a problem replacing your background, the image file "%s" no longer exists. Ada masalah dalam mengganti latar, berkas gambar "%s" tidak ada lagi. @@ -937,41 +937,6 @@ Ingin tetap menambah gambar lain? <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. <strong>Media Plugin</strong><br />Media plugin mampu memutar audio dan video. - - - Load a new Media - Muat Media baru. - - - - Add a new Media - Tambahkan Media baru - - - - Edit the selected Media - Sunting Media terpilih - - - - Delete the selected Media - Hapus Media terpilih - - - - Preview the selected Media - Pratayang Media terpilih - - - - Send the selected Media live - Tayangkan Media terpilih - - - - Add the selected Media to the service - Tambahkan Media terpilih ke service - Media @@ -990,41 +955,76 @@ Ingin tetap menambah gambar lain? container title Media + + + Load a new Media. + Muat Media baru. + + + + Add a new Media. + Tambahkan Media baru. + + + + Edit the selected Media. + Sunting Media terpilih. + + + + Delete the selected Media. + Hapus Media terpilih. + + + + Preview the selected Media. + Pratinjau Media terpilih. + + + + Send the selected Media live. + Tayangkan Media terpilih. + + + + Add the selected Media to the service. + Tambahkan Media terpilih ke layanan. + MediaPlugin.MediaItem - + Select Media Pilih Media - + You must select a media file to delete. Pilih sebuah berkas media untuk dihapus. - + You must select a media file to replace the background with. Pilih sebuah media untuk menggantikan latar. - + There was a problem replacing your background, the media file "%s" no longer exists. - Ada masalah dalam mengganti latar, berkas media "%s: tidak ada lagi. + Ada masalah dalam mengganti latar, berkas media "%s" tidak ada lagi. - + Missing Media File Berkas Media hilang - + The file %s no longer exists. Berkas %s tidak ada lagi. - + Videos (%s);;Audio (%s);;%s (*) Videos (%s);;Audio (%s);;%s (*) @@ -1223,7 +1223,7 @@ Kredit Akhir kepada Allah Bapa kita, untuk mengirim anak-Nya untuk mati di salib, membebaskan kita dari dosa. Kami memberikan perangkat lunak ini gratis karena - Dia telah membebaskan kita. + Dia telah membebaskan kita. @@ -1259,7 +1259,7 @@ Tinggaard, Frode Woldsund Double-click to send items straight to live - Klik-ganda untuk menayangkan langsung barang terpilih. + Klik-ganda untuk menayangkan butir terpilih @@ -1314,86 +1314,86 @@ Tinggaard, Frode Woldsund 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. OpenLP.DisplayTagDialog - + Edit Selection Sunting pilihan - - Update - Perbarui - - - + Description Deskripsi - + Tag Label - + Start tag Label awal - + End tag Label akhir - + Default Bawaan - + Tag Id ID Label - + Start HTML HTML Awal - + End HTML Akhir HTML + + + Save + + OpenLP.DisplayTagTab - + Update Error Galat dalam Memperbarui - + Tag "n" already defined. Label "n" sudah terdefinisi. - + Tag %s already defined. Label %s telah terdefinisi. @@ -1433,7 +1433,7 @@ Tinggaard, Frode Woldsund Lampirkan Berkas - + Description characters to enter : %s Karakter deskripsi untuk dimasukkan: %s @@ -1489,7 +1489,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1518,7 +1518,7 @@ Version: %s %s --- Library Versions --- %s - +Mohon gunakan bahasa Inggris untuk laporan kutu. @@ -1577,12 +1577,12 @@ Version: %s First Time Wizard - Wisaya Pertama Kali + Wisaya Kali Pertama Welcome to the First Time Wizard - Selamat datang di Wisaya Pertama Kali + Selamat datang di Wisaya Kali Pertama @@ -1736,124 +1736,124 @@ Untuk membatalkan Wisaya Kali Pertama, tekan tombol selesai. 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 - + Slide loop delay: Waktu tunda perulangan slide: - + 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 item baru + Jangan kosongkan layar saat menambah butir tayang baru @@ -1872,7 +1872,7 @@ Untuk membatalkan Wisaya Kali Pertama, tekan tombol selesai. OpenLP.MainDisplay - + OpenLP Display Tampilan OpenLP @@ -1880,287 +1880,287 @@ Untuk membatalkan Wisaya Kali Pertama, tekan tombol selesai. OpenLP.MainWindow - + &File &File - + &Import &Impor - + &Export &Ekspor - + &View &Lihat - + M&ode M&ode - + &Tools Ala&t - + &Settings &Pengaturan - + &Language &Bahasa - + &Help Bantua&n - + Media Manager Manajer Media - + Service Manager Manajer Layanan - + Theme Manager Manajer Tema - + &New &Baru - + &Open &Buka - + Open an existing service. Buka layanan yang ada. - + &Save &Simpan - + Save the current service to disk. Menyimpan layanan aktif ke dalam diska. - + Save &As... Simp&an Sebagai... - + Save Service As Simpan Layanan Sebagai - + Save the current service under a new name. Menyimpan layanan aktif dengan nama baru. - + E&xit Kelua&r - + Quit OpenLP Keluar dari OpenLP - + &Theme &Tema - + &Configure OpenLP... &Konfigurasi OpenLP... - + &Media Manager - Manajer %Media + Manajer &Media - + Toggle Media Manager Ganti Manajer Media - + Toggle the visibility of the media manager. Mengganti kenampakan manajer media. - + &Theme Manager Manajer &Tema - + Toggle Theme Manager Ganti Manajer Tema - + Toggle the visibility of the theme manager. Mengganti kenampakan manajer tema. - + &Service Manager Manajer &Layanan - + Toggle Service Manager Ganti Manajer Layanan - + Toggle the visibility of the service manager. Mengganti kenampakan manajer layanan. - + &Preview Panel Panel &Pratinjau - + Toggle Preview Panel Ganti Panel Pratinjau - + Toggle the visibility of the preview panel. Ganti kenampakan panel pratinjau - + &Live Panel - Panel &Tayang + Pane&l Tayang - + Toggle Live Panel Ganti Panel Tayang - + Toggle the visibility of the live panel. Mengganti kenampakan panel tayang. - + &Plugin List Daftar &Plugin - + List the Plugins Melihat daftar Plugin - + &User Guide T&untunan Pengguna - + &About Tent&ang - + More information about OpenLP Informasi lebih lanjut tentang OpenLP - + &Online Help Bantuan &Daring - + &Web Site Situs &Web - + Use the system language, if available. Gunakan bahasa sistem, jika ada. - + Set the interface language to %s Ubah bahasa antarmuka menjadi %s - + Add &Tool... Tambahkan Ala&t... - + Add an application to the list of tools. Tambahkan aplikasi ke daftar alat. - + &Default &Bawaan - + Set the view mode back to the default. Ubah mode tampilan ke bawaan. - + &Setup &Persiapan - + Set the view mode to Setup. Pasang mode tampilan ke Persiapan. - + &Live &Tayang - + Set the view mode to Live. - Pasang mode tampilan ke Tayang + Pasang mode tampilan ke Tayang. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2169,22 +2169,22 @@ You can download the latest version from http://openlp.org/. Versi terbaru dapat diunduh dari http://openlp.org/. - + OpenLP Version Updated Versi OpenLP Terbarui - + OpenLP Main Display Blanked Tampilan Utama OpenLP Kosong - + The Main Display has been blanked out Tampilan Utama telah dikosongkan - + Default Theme: %s Tema Bawaan: %s @@ -2195,45 +2195,55 @@ Versi terbaru dapat diunduh dari http://openlp.org/. Inggris - + Configure &Shortcuts... Atur &Pintasan - + Close OpenLP Tutup OpenLP - + Are you sure you want to close OpenLP? Yakin ingin menutup OpenLP? - + Print the current Service Order. Cetak Daftar Layanan aktif - + Open &Data Folder... Buka Folder &Data - + Open the folder where songs, bibles and other data resides. Buka folder tempat lagu, Alkitab, dan data lain disimpan. - + &Configure Display Tags &Konfigurasi Label Tampilan - + &Autodetect &Autodeteksi + + + Update Theme Images + + + + + Update the preview images for all themes. + + OpenLP.MediaManagerItem @@ -2243,44 +2253,55 @@ Versi terbaru dapat diunduh dari http://openlp.org/. Tidak Ada Barang yang Terpilih - + &Add to selected Service Item - T%ambahkan Butir Layanan + 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. - + Duplicate file name %s. Filename already exists in list + Nama berkas %s ganda. +Nama berkas sudah ada di daftar. + + + + You must select one or more items to add. + + + + + No Search Results @@ -2324,7 +2345,7 @@ Filename already exists in list %s (Disabled) - + %s (Dihentikan) @@ -2404,19 +2425,19 @@ Filename already exists in list - Add page break before each text item. - Tambahkan batas halaman sebelum tiap butir teks. + Add page break before each text item + Tambahkan pemisan sebelum tiap butir teks OpenLP.ScreenList - + Screen Layar - + primary Utama @@ -2432,224 +2453,209 @@ Filename already exists in list OpenLP.ServiceManager - - Load an existing service - Muat layanan tersimpan - - - - Save this service - Simpan layanan ini - - - - Select a theme for the service - Pilih tema untuk layanan - - - + Move to &top Pindahkan ke punc&ak - + Move item to the top of the service. Pindahkan butir ke puncak daftar layanan. - + Move &up Pindahkan ke a&tas - + Move item up one position in the service. Naikkan butir satu posisi pada daftar layanan. - + Move &down Pindahkan ke &bawah - + Move item down one position in the service. Turunkan butir satu posisi pada daftar layanan. - + Move to &bottom Pindahkan ke &kaki - + Move item to the end of the service. Pindahkan butir ke kaki daftar layanan. - + &Delete From Service Hapus &dari Layanan - + Delete the selected item from the service. Hapus butir terpilih dari layanan, - + &Add New Item T&ambahkan Butir Baru - + &Add to Selected Item T&ambahkan ke Butir Terpilih - + &Edit Item &Sunting Butir - + &Reorder Item Atu&r Ulang Butir - + &Notes Catata&n - + &Change Item Theme &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 - + &Expand all - + Expand all the service items. - + &Collapse all - + Collapse all the service items. - + Open File Buka Berkas - + Moves the selection down the window. - + Move up - + Moves the selection up the window. - + Go Live - + Tayangkan - + Send the selected item to Live. - + Tayangkan butir terpilih. - + &Start Time - + Show &Preview - + Show &Live - + Tampi&lkan Tayang - + Modified Service - + The current service has been modified. Would you like to save this service? - + File could not be opened because it is corrupt. - + Empty File - + This service file does not contain any data. - + Corrupt File @@ -2669,15 +2675,30 @@ Isi berkas tidak berupa UTF-8. - + Untitled Service - + This file is either corrupt or not an OpenLP 2.0 service file. + + + Load an existing service. + + + + + Save this service. + + + + + Select a theme for the service. + + OpenLP.ServiceNoteForm @@ -2766,100 +2787,105 @@ Isi berkas tidak berupa UTF-8. OpenLP.SlideController - + Move to previous - + Move to next - + Hide - + Move to live - + Pindahkan ke tayang - + Edit and reload song preview - + Start continuous loop - + Stop continuous loop - + Delay between slides in seconds - + Start playing media - + Go To - + Blank Screen - + Blank to Theme - + Show Desktop - + Previous Slide - + Next Slide - + Previous Service - + Next Service - + Escape Item - + Start/Stop continuous loop + + + Add to Service + + OpenLP.SpellTextEdit @@ -3028,68 +3054,68 @@ Isi berkas tidak berupa UTF-8. - + %s (default) - + You must select a theme to edit. - + You are unable to delete the default theme. - + Theme %s is used in the %s plugin. - + You have not selected a theme. - + Save Theme - (%s) - + Theme Exported - + Your theme has been successfully exported. - + Theme Export Failed - + Your theme could not be exported due to an error. - + Select Theme Import File - + File is not a valid theme. The content encoding is not UTF-8. - + File is not a valid theme. @@ -3109,47 +3135,47 @@ The content encoding is not UTF-8. - + You must select a theme to rename. - + Rename Confirmation - + Rename %s theme? - + You must select a theme to delete. - + Delete Confirmation - + Delete %s theme? - + Validation Error - + A theme with this name already exists. - + OpenLP Themes (*.theme *.otz) @@ -3490,7 +3516,7 @@ The content encoding is not UTF-8. Live - + Tayang @@ -3573,7 +3599,7 @@ The content encoding is not UTF-8. - + &Vertical Align: @@ -3781,7 +3807,7 @@ The content encoding is not UTF-8. - + Starting import... @@ -3930,11 +3956,6 @@ The content encoding is not UTF-8. View - - - View Model - - Duplicate Error @@ -3955,11 +3976,16 @@ The content encoding is not UTF-8. XML syntax error + + + View Mode + + OpenLP.displayTagDialog - + Configure Display Tags @@ -3971,31 +3997,6 @@ The content encoding is not UTF-8. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. - - - Load a new Presentation - - - - - Delete the selected Presentation - - - - - Preview the selected Presentation - - - - - Send the selected Presentation live - - - - - Add the selected Presentation to the service - - Presentation @@ -4014,56 +4015,81 @@ The content encoding is not UTF-8. container title Presentasi + + + Load a new Presentation. + + + + + Delete the selected Presentation. + + + + + Preview the selected Presentation. + + + + + Send the selected Presentation live. + + + + + Add the selected Presentation to the service. + + PresentationPlugin.MediaItem - + Select Presentation(s) - + Automatic - + Present using: - + File Exists - + A presentation with that filename already exists. - + This type of presentation is not supported. - + Presentations (%s) - + Missing Presentation - + The Presentation %s no longer exists. - + The Presentation %s is incomplete, please reload. @@ -4115,20 +4141,30 @@ The content encoding is not UTF-8. RemotePlugin.RemoteTab - + Serve on IP address: - + Port number: - + Server Settings + + + Remote URL: + + + + + Stage view URL: + + SongUsagePlugin @@ -4311,36 +4347,6 @@ has been successfully created. Reindexing songs... - - - Add a new Song - - - - - Edit the selected Song - - - - - Delete the selected Song - - - - - Preview the selected Song - - - - - Send the selected Song live - - - - - Add the selected Song to the service - - Arabic (CP-1256) @@ -4452,6 +4458,36 @@ The encoding is responsible for the correct character representation. Exports songs using the export wizard. + + + Add a new Song. + + + + + Edit the selected Song. + + + + + Delete the selected Song. + + + + + Preview the selected Song. + + + + + Send the selected Song live. + + + + + Add the selected Song to the service. + + SongsPlugin.AuthorsForm @@ -4685,7 +4721,7 @@ The encoding is responsible for the correct character representation. - + You need to type some text in to the verse. @@ -4693,20 +4729,35 @@ The encoding is responsible for the correct character representation. SongsPlugin.EditVerseForm - + Edit Verse - + &Verse type: - + &Insert + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4902,42 +4953,42 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - - - - + Titles - + Lyrics - + Delete Song(s)? - + CCLI License: - + Entire Song - + Are you sure you want to delete the %n selected song(s)? + + + Maintain the lists of authors, topics and books. + + SongsPlugin.OpenLP1SongImport diff --git a/resources/i18n/ja.ts b/resources/i18n/ja.ts index cc435852d..d0e7167f8 100644 --- a/resources/i18n/ja.ts +++ b/resources/i18n/ja.ts @@ -184,22 +184,22 @@ Do you want to continue anyway? BiblePlugin.HTTPBible - + Download Error ダウンロードエラー - + Parse Error HTML構文エラー - + 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 extracting your verse selection. If this error continues to occur please consider reporting a bug. 選択された聖書の展開に失敗しました。エラーが再び起こったときは、バグ報告を検討してください。 @@ -207,12 +207,12 @@ Do you want to continue anyway? BiblePlugin.MediaItem - + Bible not fully loaded. 聖書が完全に読み込まれていません。 - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? 一つの聖書と複数の聖書の検索結果をくっつける事はできません。検索結果を削除して、再検索しますか? @@ -229,41 +229,6 @@ Do you want to continue anyway? <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. <strong>聖書プラグイン</strong><br />聖書プラグインは、礼拝プログラムで様々な訳の御言葉を表示する機能を提供します。 - - - Import a Bible - 聖書をインポート - - - - Add a new Bible - 聖書を追加 - - - - Edit the selected Bible - 選択した聖書を編集 - - - - Delete the selected Bible - 選択した聖書を削除 - - - - Preview the selected Bible - 選択した聖書をプレビュー - - - - Send the selected Bible live - 選択した聖書をライブへ送る - - - - Add the selected Bible to the service - 選択した聖書を礼拝プログラムに追加 - Bible @@ -283,47 +248,82 @@ Do you want to continue anyway? 聖書 - + No Book Found 書名がみつかりません - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. 該当する書名がこの聖書に見つかりません。書名が正しいか確認してください。 + + + Import a Bible. + 聖書をインポートします。 + + + + Add a new Bible. + 聖書を追加します。 + + + + Edit the selected Bible. + 選択したスライドを編集します。 + + + + Delete the selected Bible. + 選択した聖書を削除します。 + + + + Preview the selected Bible. + 選択した聖書をプレビューします。 + + + + Send the selected Bible live. + 選択した聖書をライブへ送ります。 + + + + Add the selected Bible to the service. + 選択した聖書を礼拝プログラムに追加します。 + BiblesPlugin.BibleManager - + Scripture Reference Error 書名章節番号エラー - + Web Bible cannot be used ウェブ聖書は使用できません - + Text Search is not available with Web Bibles. 本文検索はウェブ聖書では使用できません。 - + 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. 検索語句が入力されていません。 複数の語句をスペースで区切ると全てに該当する箇所を検索し、コンマ(,)で区切るといずれかに該当する箇所を検索します。 - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. 利用可能な聖書がありません。インポートガイドを利用して、一つ以上の聖書をインストールしてください。 - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -342,7 +342,7 @@ Book Chapter:Verse-Chapter:Verse 書 章:節-章:節 - + No Bibles Available 利用可能な聖書翻訳がありません @@ -578,70 +578,60 @@ demand and thus an internet connection is required. BiblesPlugin.MediaItem - + Quick 高速 - + Find: 検索: - - Results: - 結果: - - - + Book: 書名: - + Chapter: 章: - + Verse: 節: - + From: 開始: - + To: 終了: - + Text Search キーワード検索 - - Clear - 消去 - - - - Keep - 追加 - - - + Second: 第二訳: - + Scripture Reference 参照聖句 + + + Toggle to keep or clear the previous results. + + BiblesPlugin.Opensong @@ -715,12 +705,12 @@ demand and thus an internet connection is required. すべてのスライドを一括編集。 - + Split Slide スライドを分割 - + Split a slide into two by inserting a slide splitter. スライド分割機能を用い、スライドを分割してください。 @@ -730,12 +720,12 @@ demand and thus an internet connection is required. 外観テーマ(&m): - + You need to type in a title. タイトルの入力が必要です。 - + You need to add at least one slide 最低一枚のスライドが必要です @@ -749,49 +739,19 @@ demand and thus an internet connection is required. &Credits: クレジット(&C): + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide + + CustomsPlugin - - - Import a Custom - カスタムをインポート - - - - Load a new Custom - 新しいカスタムを読み込む - - - - Add a new Custom - 新しいカスタムを追加 - - - - Edit the selected Custom - 選択したカスタムを編集 - - - - Delete the selected Custom - 選択したカスタムを削除 - - - - Preview the selected Custom - 選択したカスタムをプレビュー - - - - Send the selected Custom live - 選択したカスタムをライブへ送る - - - - Add the selected Custom to the service - 選択したカスタムを礼拝プログラムに追加 - Custom @@ -810,13 +770,53 @@ demand and thus an internet connection is required. container title カスタム + + + Load a new Custom. + 新しいカスタムを読み込みます。 + + + + Import a Custom. + カスタムをインポートします。 + + + + Add a new Custom. + 新しいカスタムを追加します。 + + + + Edit the selected Custom. + 選択したカスタムを編集します。 + + + + Delete the selected Custom. + 選択したカスタムを削除します。 + + + + Preview the selected Custom. + 選択したカスタムをプレビューします。 + + + + Send the selected Custom live. + 選択したカスタムをライブへ送ります。 + + + + Add the selected Custom to the service. + 選択したカスタムを礼拝プログラムに追加します。 + GeneralTab - + General - 一般 + 一般 @@ -826,41 +826,6 @@ demand and thus an internet connection is required. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. <strong>画像プラグイン</strong><br />画像プラグインは、画像を表示する機能を提供します。<br />礼拝プログラムで複数の画像をグループ化したり、複数の画像を簡単に表示することができます。タイムアウトループの機能を使用してスライドショーを自動的に表示することもできます。さらに、賛美などのテキストベースの項目の背景を、外観テーマで指定されたものからこのプラグインの画像に変更することもできます。 - - - Load a new Image - 新しい画像を読み込み - - - - Add a new Image - 新しい画像を追加 - - - - Edit the selected Image - 選択した画像を編集 - - - - Delete the selected Image - 選択した画像を削除 - - - - Preview the selected Image - 選択した画像をプレビュー - - - - Send the selected Image live - 選択した画像をライブへ送る - - - - Add the selected Image to the service - 選択した画像を礼拝プログラムに追加 - Image @@ -879,11 +844,46 @@ demand and thus an internet connection is required. container title 画像 + + + Load a new Image. + 新しい画像を読み込みます。 + + + + Add a new Image. + 新しい画像を追加します。 + + + + Edit the selected Image. + 選択した画像を編集します。 + + + + Delete the selected Image. + 選択した画像を削除します。 + + + + Preview the selected Image. + 選択した画像をプレビューします。 + + + + Send the selected Image live. + 選択した画像をライブへ送ります。 + + + + Add the selected Image to the service. + 選択した画像を礼拝プログラムに追加します。 + ImagePlugin.ExceptionDialog - + Select Attachment 添付を選択 @@ -891,39 +891,39 @@ demand and thus an internet connection is required. ImagePlugin.MediaItem - + Select Image(s) 画像を選択 - + You must select an image to delete. 削除する画像を選択してください。 - + You must select an image to replace the background with. 置き換える画像を選択してください。 - + Missing Image(s) 画像が見つかりません - + The following image(s) no longer exist: %s 以下の画像は既に存在しません - + The following image(s) no longer exist: %s Do you want to add the other images anyway? 以下の画像は既に存在しません:%s それでも他の画像を追加しますか? - + There was a problem replacing your background, the image file "%s" no longer exists. 背景画像を置換する際に問題が発生しました。画像ファイル"%s"が存在しません。 @@ -935,41 +935,6 @@ Do you want to add the other images anyway? <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. <strong>メディアプラグイン</strong><br />メディアプラグインは、音声や動画を再生する機能を提供します。 - - - Load a new Media - 新しいメディアを読み込み - - - - Add a new Media - 新しいメディアを追加 - - - - Edit the selected Media - 選択したメディアを編集 - - - - Delete the selected Media - 選択したメディアを削除 - - - - Preview the selected Media - 選択したメディアをプレビュー - - - - Send the selected Media live - 選択したメディアをライブへ送る - - - - Add the selected Media to the service - 選択したメディアを礼拝プログラムに追加 - Media @@ -988,41 +953,76 @@ Do you want to add the other images anyway? container title メディア + + + Load a new Media. + 新しいメディアを読み込みます。 + + + + Add a new Media. + 新しいメディアを追加します。 + + + + Edit the selected Media. + 選択したメディアを編集します。 + + + + Delete the selected Media. + 選択したメディアを削除します。 + + + + Preview the selected Media. + 選択したメディアをプレビューします。 + + + + Send the selected Media live. + 選択したメディアをライブへ送ります。 + + + + Add the selected Media to the service. + 選択したメディアを礼拝プログラムに追加します。 + MediaPlugin.MediaItem - + Select Media メディア選択 - + You must select a media file to delete. 削除するメディアファイルを選択してください。 - + Missing Media File メディアファイルが見つかりません - + The file %s no longer exists. ファイル %s が見つかりません。 - + You must select a media file to replace the background with. 背景を置換するメディアファイルを選択してください。 - + There was a problem replacing your background, the media file "%s" no longer exists. 背景を置き換えする際に問題が発生しました。メディアファイル"%s"は既に存在しません。 - + Videos (%s);;Audio (%s);;%s (*) ビデオ (%s);;オーディオ (%s);;%s (*) @@ -1303,96 +1303,96 @@ Tinggaard, Frode Woldsund 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ロゴに戻す。 OpenLP.DisplayTagDialog - + Edit Selection 選択項目を編集 - - Update - 更新 - - - + Description 説明 - + Tag タグ - + Start tag 開始タグ - + End tag 終了タグ - + Default 初期設定 - + Tag Id タグID - + Start HTML 開始HTML - + End HTML 終了HTML + + + Save + + OpenLP.DisplayTagTab - + Update Error 更新エラー - + Tag "n" already defined. タグ「n」は既に定義されています。 - + Tag %s already defined. タグ「%s」は既に定義されています。 @@ -1432,7 +1432,7 @@ Tinggaard, Frode Woldsund ファイルを添付 - + Description characters to enter : %s 説明 : %s @@ -1488,7 +1488,7 @@ Version: %s %s - + *OpenLP Bug Report* Version: %s @@ -1735,124 +1735,124 @@ To cancel the First Time Wizard completely, press the finish button now. 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 自動的に次の項目をプレビューする - + Slide loop delay: スライド繰返の遅延: - + sec - + CCLI Details CCLI詳細 - + SongSelect username: SongSelect ユーザー名: - + SongSelect password: SongSelect パスワード: - + Display Position 表示位置 - + X - + Y - + Height - + Width - + Override display position 表示位置を変更する - + Check for updates to OpenLP OpenLPのバージョン更新の確認 - + Unblank display when adding new live item - + ライブ項目の追加時にブランクを解除 @@ -1871,7 +1871,7 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainDisplay - + OpenLP Display OpenLP ディスプレイ @@ -1879,287 +1879,287 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainWindow - + &File ファイル(&F) - + &Import インポート(&I) - + &Export エクスポート(&E) - + &View 表示(&V) - + M&ode モード(&O) - + &Tools ツール(&T) - + &Settings 設定(&S) - + &Language 言語(&L) - + &Help ヘルプ(&H) - + Media Manager メディアマネジャー - + Service Manager 礼拝プログラム - + Theme Manager 外観テーママネジャー - + &New 新規作成(&N) - + &Open 開く(&O) - + Open an existing service. 存在する礼拝プログラムを開きます。 - + &Save 保存(&S) - + Save the current service to disk. 現在の礼拝プログラムをディスクに保存します。 - + Save &As... 名前を付けて保存(&A)... - + Save Service As 名前をつけて礼拝プログラムを保存 - + Save the current service under a new name. 現在の礼拝プログラムを新しい名前で保存します。 - + E&xit 終了(&X) - + Quit OpenLP Open LPを終了 - + &Theme 外観テーマ(&T) - + &Configure OpenLP... OpenLPの設定(&C)... - + &Media Manager メディアマネジャー(&M) - + Toggle Media Manager メディアマネジャーを切り替える - + Toggle the visibility of the media manager. メディアマネジャーの可視性を切り替える。 - + &Theme Manager 外観テーママネジャー(&T) - + Toggle Theme Manager 外観テーママネジャーの切り替え - + Toggle the visibility of the theme manager. 外観テーママネジャーの可視性を切り替える。 - + &Service Manager 礼拝プログラム(&S) - + Toggle Service Manager 礼拝プログラムを切り替え - + Toggle the visibility of the service manager. 礼拝プログラムの可視性を切り替える。 - + &Preview Panel プレビューパネル(&P) - + Toggle Preview Panel プレビューパネルの切り替え - + Toggle the visibility of the preview panel. プレビューパネルの可視性を切り替える。 - + &Live Panel ライブパネル(&L) - + Toggle Live Panel ライブパネルの切り替え - + Toggle the visibility of the live panel. ライブパネルの可視性を切り替える。 - + &Plugin List プラグイン一覧(&P) - + List the Plugins プラグイン一覧 - + &User Guide ユーザガイド(&U) - + &About バージョン情報(&A) - + More information about OpenLP OpenLPの詳細情報 - + &Online Help オンラインヘルプ(&O) - + &Web Site ウェブサイト(&W) - + Use the system language, if available. システム言語を可能であれば使用します。 - + Set the interface language to %s インターフェイス言語を%sに設定 - + Add &Tool... ツールの追加(&T)... - + Add an application to the list of tools. ツールの一覧にアプリケーションを追加。 - + &Default デフォルト(&D) - + Set the view mode back to the default. 表示モードを既定に戻す。 - + &Setup 設定(&S) - + Set the view mode to Setup. ビューモードに設定します。 - + &Live ライブ(&L) - + Set the view mode to Live. 表示モードをライブにします。 - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2168,22 +2168,22 @@ You can download the latest version from http://openlp.org/. http://openlp.org/から最新版がダウンロード可能です。 - + OpenLP Version Updated OpenLPのバージョンアップ完了 - + OpenLP Main Display Blanked OpenLPのプライマリディスプレイがブランクです - + The Main Display has been blanked out OpenLPのプライマリディスプレイがブランクになりました - + Default Theme: %s 既定外観テーマ @@ -2194,45 +2194,55 @@ http://openlp.org/から最新版がダウンロード可能です。日本語 - + Configure &Shortcuts... ショートカットの設定(&S)... - + Close OpenLP OpenLPの終了 - + Are you sure you want to close OpenLP? 本当にOpenLPを終了してもよろしいですか? - + Print the current Service Order. 現在の礼拝プログラム順序を印刷します。 - + &Configure Display Tags 表示タグを設定(&C) - + Open &Data Folder... データフォルダを開く(&D)... - + Open the folder where songs, bibles and other data resides. 賛美、聖書データなどのデータが含まれているフォルダを開く。 - + &Autodetect 自動検出(&A) + + + Update Theme Images + + + + + Update the preview images for all themes. + + OpenLP.MediaManagerItem @@ -2242,44 +2252,55 @@ http://openlp.org/から最新版がダウンロード可能です。項目の選択がありません - + &Add to selected Service Item 選択された礼拝項目を追加(&A - + 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の項目を選択してください。 - + Duplicate file name %s. Filename already exists in list + 重複するファイル名 %s +このファイル名は既にリストに存在します + + + + You must select one or more items to add. + + + + + No Search Results @@ -2403,19 +2424,19 @@ Filename already exists in list - Add page break before each text item. - + Add page break before each text item + テキスト項目毎に改ページ OpenLP.ScreenList - + Screen スクリーン - + primary プライマリ @@ -2431,251 +2452,251 @@ Filename already exists in list OpenLP.ServiceManager - - Load an existing service - 既存の礼拝プログラムを読み込む - - - - Save this service - 礼拝プログラムを保存 - - - - Select a theme for the service - 礼拝プログラムの外観テーマを選択 - - - + Move to &top 一番上に移動(&t) - + Move item to the top of the service. 選択した項目を最も上に移動する。 - + Move &up 一つ上に移動(&u) - + Move item up one position in the service. 選択した項目を1つ上に移動する。 - + Move &down 一つ下に移動(&d) - + Move item down one position in the service. 選択した項目を1つ下に移動する。 - + Move to &bottom 一番下に移動(&b) - + Move item to the end of the service. 選択した項目を最も下に移動する。 - + &Delete From Service 削除(&D) - + Delete the selected item from the service. 選択した項目を礼拝プログラムから削除する。 - + &Add New Item 新しい項目を追加(&A) - + &Add to Selected Item 選択された項目を追加(&A) - + &Edit Item 項目の編集(&E) - + &Reorder Item 項目を並べ替え(&R) - + &Notes メモ(&N) - + &Change Item Theme 項目の外観テーマを変更(&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 必要なプラグインが見つからないか無効なため、項目を表示する事ができません - + &Expand all すべて展開(&E) - + Expand all the service items. 全ての項目を展開する。 - + &Collapse all すべて折り畳む(&C) - + Collapse all the service items. 全ての項目を折り畳みます。 - + Open File ファイルを開く - + OpenLP Service Files (*.osz) OpenLP 礼拝プログラムファイル (*.osz) - + Moves the selection down the window. 選択をウィンドウの下に移動する。 - + Move up 上に移動 - + Moves the selection up the window. 選択をウィンドウの上に移動する。 - + Go Live ライブへGO - + Send the selected item to Live. 選択された項目をライブ表示する。 - + Modified Service 礼拝プログラムの編集 - + &Start Time 開始時間(&S) - + Show &Preview プレビュー表示(&P) - + Show &Live ライブ表示(&L) - + The current service has been modified. Would you like to save this service? 現在の礼拝プログラムは、編集されています。保存しますか? - + File could not be opened because it is corrupt. - + ファイルが破損しているため開けません。 - + Empty File - + 空のファイル - + This service file does not contain any data. - + この礼拝プログラムファイルは空です。 - + Corrupt File - + 破損したファイル Custom Service Notes: - + カスタム礼拝項目メモ: Notes: - + メモ: Playing time: - + 再生時間: - + Untitled Service - + 無題 - + This file is either corrupt or not an OpenLP 2.0 service file. - + このファイルは破損しているかOpenLP 2.0の礼拝プログラムファイルではありません。 + + + + Load an existing service. + 既存の礼拝プログラムを読み込みます。 + + + + Save this service. + 礼拝プログラムを保存します。 + + + + Select a theme for the service. + 礼拝プログラムの外観テーマを選択します。 @@ -2729,134 +2750,139 @@ The content encoding is not UTF-8. Select an action and click one of the buttons below to start capturing a new primary or alternate shortcut, respectively. - + 動作を選択して下のボタンをクリックし、新しいショートカットを入力してください。 Default - 初期設定 + 初期設定 Custom - カスタム + カスタム Capture shortcut. - + ショートカットを入力する。 Restore the default shortcut of this action. - + この動作のショートカットを初期値に戻す。 Restore Default Shortcuts - + ショートカットを初期設定に戻す Do you want to restore all shortcuts to their defaults? - + 全てのショートカットを初期設定に戻しますか? OpenLP.SlideController - + Move to previous 前へ移動 - + Move to next 次へ移動 - + Hide 隠す - + Move to live ライブへ移動 - + Edit and reload song preview 編集し再読み込み - + Start continuous loop 繰り返し再生を開始 - + Stop continuous loop 繰り返し再生を停止 - + Delay between slides in seconds 次のスライドまでの遅延 - + Start playing media メディア再生を開始 - + Go To - + Blank Screen スクリーンをブランク - + Blank to Theme 外観テーマをブランク - + Show Desktop デスクトップを表示 - + Previous Slide 前スライド - + Next Slide 次スライド - + Previous Service 前の礼拝プログラム - + Next Service 次の礼拝プログラム - + Escape Item 項目をエスケープ - + Start/Stop continuous loop + 繰り返し再生を開始/停止 + + + + Add to Service @@ -2875,7 +2901,7 @@ The content encoding is not UTF-8. Language: - + 言語: @@ -2898,37 +2924,37 @@ The content encoding is not UTF-8. Item Start and Finish Time - + 項目の開始終了時間 Start - + 開始 Finish - + 終了 Length - + 長さ Time Validation Error - + 時間検証エラー End time is set after the end of the media item - + 終了時間がメディア項目の終了時間より後に設定されています Start time is after the End Time of the media item - + 開始時間がメディア項目の終了時間より後に設定されています @@ -3027,68 +3053,68 @@ The content encoding is not UTF-8. 全体の既定として設定(&G)) - + %s (default) %s (既定) - + You must select a theme to edit. 編集する外観テーマを選択してください。 - + You are unable to delete the default theme. 既定の外観テーマを削除する事はできません。 - + Theme %s is used in the %s plugin. %s プラグインでこの外観テーマは利用されています。 - + You have not selected a theme. 外観テーマの選択がありません。 - + Save Theme - (%s) 外観テーマを保存 - (%s) - + Theme Exported 外観テーマエキスポート - + Your theme has been successfully exported. 外観テーマは正常にエキスポートされました。 - + Theme Export Failed 外観テーマのエキスポート失敗 - + Your theme could not be exported due to an error. エラーが発生したため外観テーマは、エキスポートされませんでした。 - + Select Theme Import File インポート対象の外観テーマファイル選択 - + File is not a valid theme. The content encoding is not UTF-8. ファイルは無効な外観テーマです。文字コードがUTF-8ではありません。 - + File is not a valid theme. 無効な外観テーマファイルです。 @@ -3108,47 +3134,47 @@ The content encoding is not UTF-8. 外観テーマのエキスポート(&E) - + You must select a theme to rename. 名前を変更する外観テーマを選択してください。 - + Rename Confirmation 名前変更確認 - + Rename %s theme? %s外観テーマの名前を変更します。宜しいですか? - + You must select a theme to delete. 削除する外観テーマを選択してください。 - + Delete Confirmation 削除確認 - + Delete %s theme? %s 外観テーマを削除します。宜しいですか? - + Validation Error 検証エラー - + A theme with this name already exists. 同名の外観テーマが既に存在します。 - + OpenLP Themes (*.theme *.otz) OpenLP 外観テーマ (*.theme *.otz) @@ -3725,7 +3751,7 @@ The content encoding is not UTF-8. バージョン - + &Vertical Align: 垂直整列(&V): @@ -3780,7 +3806,7 @@ The content encoding is not UTF-8. 準備完了。 - + Starting import... インポートを開始しています.... @@ -3855,110 +3881,110 @@ The content encoding is not UTF-8. Continuous - 連続 + 連続 Default - 初期設定 + 初期設定 Display style: - 表示スタイル: + 表示スタイル: File - + ファイル Help - + ヘルプ h The abbreviated unit for hours - + Layout style: - レイアウトスタイル: + レイアウトスタイル: Live Toolbar - + ライブツールバー m The abbreviated unit for minutes - + OpenLP is already running. Do you wish to continue? - + OpenLPは既に実行されています。続けますか? Settings - + 設定 Tools - + ツール Verse Per Slide - スライドに1節 + スライドに1節 Verse Per Line - 1行に1節 + 1行に1節 View - - - - - View Model - + 表示 Duplicate Error - + 重複エラー Unsupported File - サポートされていないファイル + サポートされていないファイル Title and/or verses not found - + タイトル/歌詞が見つかりません XML syntax error + XML構文エラー + + + + View Mode OpenLP.displayTagDialog - + Configure Display Tags 表示タグを設定 @@ -3970,31 +3996,6 @@ The content encoding is not UTF-8. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. <strong>プレゼンテーションプラグイン</strong><br />プレゼンテーションプラグインは、外部のプログラムを使用してプレゼンテーションを表示する機能を提供します。使用可能なプログラムは、ドロップダウンボックスから選択できます。 - - - Load a new Presentation - 新しいプレゼンテーションを読み込み - - - - Delete the selected Presentation - 選択したプレゼンテーションを削除 - - - - Preview the selected Presentation - 選択したプレゼンテーションをプレビュー - - - - Send the selected Presentation live - 選択したプレゼンテーションをライブへ送る - - - - Add the selected Presentation to the service - 選択したプレゼンテーションを礼拝プログラムに追加 - Presentation @@ -4013,56 +4014,81 @@ The content encoding is not UTF-8. container title プレゼンテーション + + + Load a new Presentation. + 新しいプレゼンテーションを読み込みます。 + + + + Delete the selected Presentation. + 選択したプレゼンテーションを削除します。 + + + + Preview the selected Presentation. + 選択したプレゼンテーションをプレビューします。 + + + + Send the selected Presentation live. + 選択したプレゼンテーションをライブへ送ります。 + + + + Add the selected Presentation to the service. + 選択したプレゼンテーションを礼拝プログラムに追加します。 + PresentationPlugin.MediaItem - + Select Presentation(s) プレゼンテーション選択 - + Automatic 自動 - + Present using: 使用プレゼン: - + File Exists ファイルが存在します - + A presentation with that filename already exists. そのファイル名のプレゼンテーションは既に存在します。 - + This type of presentation is not supported. このタイプのプレゼンテーションはサポートされておりません。 - + Presentations (%s) プレゼンテーション (%s) - + Missing Presentation 不明なプレゼンテーション - + The Presentation %s no longer exists. プレゼンテーション%sが見つかりません。 - + The Presentation %s is incomplete, please reload. プレゼンテーション%sは不完全です。再度読み込んでください。 @@ -4114,20 +4140,30 @@ The content encoding is not UTF-8. RemotePlugin.RemoteTab - + Serve on IP address: 待ち受けるIPアドレス: - + Port number: ポート番号: - + Server Settings サーバ設定 + + + Remote URL: + + + + + Stage view URL: + + SongUsagePlugin @@ -4192,7 +4228,7 @@ The content encoding is not UTF-8. Song Usage - + 利用記録 @@ -4312,36 +4348,6 @@ has been successfully created. Reindexing songs... 賛美のインデックスを再作成中... - - - Add a new Song - 賛美を追加 - - - - Edit the selected Song - 選択した賛美を編集 - - - - Delete the selected Song - 選択した賛美を削除 - - - - Preview the selected Song - 選択した賛美をプレビュー - - - - Send the selected Song live - 選択した賛美をライブへ送る - - - - Add the selected Song to the service - 選択した賛美を礼拝プログラムに追加 - Song @@ -4453,6 +4459,36 @@ The encoding is responsible for the correct character representation. Exports songs using the export wizard. エキスポートガイドを使って賛美をエキスポートする。 + + + Add a new Song. + 賛美を追加します。 + + + + Edit the selected Song. + 選択した賛美を編集します。 + + + + Delete the selected Song. + 選択した賛美を削除します。 + + + + Preview the selected Song. + 選択した賛美をプレビューします。 + + + + Send the selected Song live. + 選択した賛美をライブへ送ります。 + + + + Add the selected Song to the service. + 選択した賛美を礼拝プログラムに追加します。 + SongsPlugin.AuthorsForm @@ -4497,7 +4533,7 @@ The encoding is responsible for the correct character representation. The file does not have a valid extension. - + ファイルの拡張子が無効です。 @@ -4505,7 +4541,7 @@ The encoding is responsible for the correct character representation. Administered by %s - %s によって管理されています + %s によって管理されています @@ -4686,7 +4722,7 @@ The encoding is responsible for the correct character representation. アーティストを入力する必要があります。 - + You need to type some text in to the verse. バースにテキストを入力する必要があります。 @@ -4694,20 +4730,35 @@ The encoding is responsible for the correct character representation. SongsPlugin.EditVerseForm - + Edit Verse バース編集 - + &Verse type: バースのタイプ(&): - + &Insert 挿入(&I) + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4862,7 +4913,7 @@ The encoding is responsible for the correct character representation. Words Of Worship Song Files - + Words Of Worship Song ファイル @@ -4892,60 +4943,60 @@ The encoding is responsible for the correct character representation. Copy - コピー + コピー Save to File - ファイルに保存 + ファイルに保存 SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - アーティスト、トピックとアルバムの一覧を保守 - - - + Titles タイトル - + Lyrics 賛美詞 - + Delete Song(s)? これらの賛美を削除しますか? - + 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. + アーティスト、トピックとアルバムの一覧を保守します。 + SongsPlugin.OpenLP1SongImport Not a valid openlp.org 1.x song database. - + 有効なopenlp.org v1.xデータベースではありません。 @@ -4953,7 +5004,7 @@ The encoding is responsible for the correct character representation. Not a valid OpenLP 2.0 song database. - + 有効なOpenLP 2.0データベースではありません。 @@ -5010,7 +5061,7 @@ The encoding is responsible for the correct character representation. The following songs could not be imported: - + 以下の賛美はインポートできませんでした: @@ -5218,7 +5269,7 @@ The encoding is responsible for the correct character representation. Themes - 外観テーマ + 外観テーマ diff --git a/resources/i18n/ko.ts b/resources/i18n/ko.ts index 26629c9ac..70c461774 100644 --- a/resources/i18n/ko.ts +++ b/resources/i18n/ko.ts @@ -182,22 +182,22 @@ Do you want to continue anyway? BiblePlugin.HTTPBible - + Download Error - + Parse 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 extracting your verse selection. If this error continues to occur please consider reporting a bug. @@ -205,12 +205,12 @@ Do you want to continue anyway? BiblePlugin.MediaItem - + Bible not fully loaded. - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? @@ -227,41 +227,6 @@ Do you want to continue anyway? <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. <strong>성경 플러그인</strong><br />성경 플러그인은 서비스 중에 성경 구절을 출력할 수 있는 기능을 제공합니다. - - - Import a Bible - - - - - Add a new Bible - - - - - Edit the selected Bible - - - - - Delete the selected Bible - - - - - Preview the selected Bible - - - - - Send the selected Bible live - - - - - Add the selected Bible to the service - - Bible @@ -281,46 +246,81 @@ Do you want to continue anyway? 성경 - + No Book Found - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. + + + Import a Bible. + + + + + Add a new Bible. + + + + + Edit the selected Bible. + + + + + Delete the selected Bible. + + + + + Preview the selected Bible. + + + + + Send the selected Bible live. + + + + + Add the selected Bible to the service. + + BiblesPlugin.BibleManager - + Scripture Reference Error 성경 참조 오류 - + Web Bible cannot be used - + Text Search is not available with Web Bibles. - + 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. - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -332,7 +332,7 @@ Book Chapter:Verse-Chapter:Verse - + No Bibles Available @@ -569,70 +569,60 @@ demand and thus an internet connection is required. BiblesPlugin.MediaItem - + Quick ?? - + Find: - - Results: - - - - + Book: - + Chapter: - + Verse: - + From: - + To: - + Text Search - - Clear - - - - - Keep - - - - + Second: - + Scripture Reference + + + Toggle to keep or clear the previous results. + + BiblesPlugin.Opensong @@ -706,12 +696,12 @@ demand and thus an internet connection is required. - + Split Slide - + Split a slide into two by inserting a slide splitter. @@ -726,12 +716,12 @@ demand and thus an internet connection is required. - + You need to type in a title. - + You need to add at least one slide @@ -740,49 +730,19 @@ demand and thus an internet connection is required. Ed&it All + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide + + CustomsPlugin - - - Import a Custom - - - - - Load a new Custom - - - - - Add a new Custom - - - - - Edit the selected Custom - - - - - Delete the selected Custom - - - - - Preview the selected Custom - - - - - Send the selected Custom live - - - - - Add the selected Custom to the service - - Custom @@ -801,11 +761,51 @@ demand and thus an internet connection is required. container title + + + Load a new Custom. + + + + + Import a Custom. + + + + + Add a new Custom. + + + + + Edit the selected Custom. + + + + + Delete the selected Custom. + + + + + Preview the selected Custom. + + + + + Send the selected Custom live. + + + + + Add the selected Custom to the service. + + GeneralTab - + General @@ -817,41 +817,6 @@ demand and thus an internet connection is required. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. - - - Load a new Image - - - - - Add a new Image - - - - - Edit the selected Image - - - - - Delete the selected Image - - - - - Preview the selected Image - - - - - Send the selected Image live - - - - - Add the selected Image to the service - - Image @@ -870,11 +835,46 @@ demand and thus an internet connection is required. container title + + + Load a new Image. + + + + + Add a new Image. + + + + + Edit the selected Image. + + + + + Delete the selected Image. + + + + + Preview the selected Image. + + + + + Send the selected Image live. + + + + + Add the selected Image to the service. + + ImagePlugin.ExceptionDialog - + Select Attachment @@ -882,38 +882,38 @@ demand and thus an internet connection is required. ImagePlugin.MediaItem - + Select Image(s) - + You must select an image to delete. - + You must select an image to replace the background with. - + Missing Image(s) - + The following image(s) no longer exist: %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? - + There was a problem replacing your background, the image file "%s" no longer exists. @@ -925,41 +925,6 @@ Do you want to add the other images anyway? <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. - - - Load a new Media - - - - - Add a new Media - - - - - Edit the selected Media - - - - - Delete the selected Media - - - - - Preview the selected Media - - - - - Send the selected Media live - - - - - Add the selected Media to the service - - Media @@ -978,41 +943,76 @@ Do you want to add the other images anyway? container title + + + Load a new Media. + + + + + Add a new Media. + + + + + Edit the selected Media. + + + + + Delete the selected Media. + + + + + Preview the selected Media. + + + + + Send the selected Media live. + + + + + Add the selected Media to the service. + + MediaPlugin.MediaItem - + Select Media - + You must select a media file to delete. - + Missing Media File - + The file %s no longer exists. - + You must select a media file to replace the background with. - + There was a problem replacing your background, the media file "%s" no longer exists. - + Videos (%s);;Audio (%s);;%s (*) @@ -1247,70 +1247,70 @@ Tinggaard, Frode Woldsund OpenLP.DisplayTagDialog - + Edit Selection - - Update - - - - + Description - + Tag - + Start tag - + End tag - + Default - + Tag Id - + Start HTML - + End HTML + + + Save + + OpenLP.DisplayTagTab - + Update Error - + Tag "n" already defined. - + Tag %s already defined. @@ -1349,7 +1349,7 @@ Tinggaard, Frode Woldsund - + Description characters to enter : %s @@ -1391,7 +1391,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1621,122 +1621,122 @@ To cancel the First Time Wizard completely, press the finish button now. 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 - + Slide loop delay: - + 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 @@ -1757,7 +1757,7 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainDisplay - + OpenLP Display @@ -1765,309 +1765,309 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainWindow - + &File - + &Import - + &Export - + &View - + M&ode - + &Tools - + &Settings - + &Language - + &Help - + Media Manager - + Service Manager - + Theme Manager - + &New 새로 만들기(&N) - + &Open - + Open an existing service. - + &Save 저장(&S) - + Save the current service to disk. - + Save &As... - + Save Service As - + Save the current service under a new name. - + E&xit - + Quit OpenLP - + &Theme - + &Configure OpenLP... - + &Media Manager - + Toggle Media Manager - + Toggle the visibility of the media manager. - + &Theme Manager - + Toggle Theme Manager - + Toggle the visibility of the theme manager. - + &Service Manager - + Toggle Service Manager - + Toggle the visibility of the service manager. - + &Preview Panel - + Toggle Preview Panel - + Toggle the visibility of the preview panel. - + &Live Panel - + Toggle Live Panel - + Toggle the visibility of the live panel. - + &Plugin List - + List the Plugins - + &User Guide - + &About - + More information about OpenLP - + &Online Help - + &Web Site - + Use the system language, if available. - + Set the interface language to %s - + Add &Tool... - + Add an application to the list of tools. - + &Default - + Set the view mode back to the default. - + &Setup - + Set the view mode to Setup. - + &Live - + Set the view mode to Live. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. - + OpenLP Version Updated - + OpenLP Main Display Blanked - + The Main Display has been blanked out - + Default Theme: %s @@ -2078,45 +2078,55 @@ You can download the latest version from http://openlp.org/. - + Configure &Shortcuts... - + Close OpenLP - + Are you sure you want to close OpenLP? - + Print the current Service Order. - + Open &Data Folder... - + Open the folder where songs, bibles and other data resides. - + &Configure Display Tags - + &Autodetect + + + Update Theme Images + + + + + Update the preview images for all themes. + + OpenLP.MediaManagerItem @@ -2126,46 +2136,56 @@ You can download the latest version from http://openlp.org/. - + &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. - + Duplicate file name %s. Filename already exists in list + + + You must select one or more items to add. + + + + + No Search Results + + OpenLP.PluginForm @@ -2287,19 +2307,19 @@ Filename already exists in list - Add page break before each text item. + Add page break before each text item OpenLP.ScreenList - + Screen - + primary @@ -2315,223 +2335,208 @@ Filename already exists in list OpenLP.ServiceManager - - Load an existing service - - - - - Save this service - - - - - Select a theme for the service - - - - + Move to &top - + Move item to the top of the service. - + Move &up - + Move item up one position in the service. - + Move &down - + Move item down one position in the service. - + Move to &bottom - + Move item to the end of the service. - + &Delete From Service - + Delete the selected item from the service. - + &Add New Item - + &Add to Selected Item - + &Edit Item - + &Reorder Item - + &Notes - + &Change Item Theme - + 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 - + &Expand all - + Expand all the service items. - + &Collapse all - + Collapse all the service items. - + Open File - + OpenLP Service Files (*.osz) - + Moves the selection down the window. - + Move up - + Moves the selection up the window. - + Go Live - + Send the selected item to Live. - + Modified Service - + &Start Time - + Show &Preview - + Show &Live - + The current service has been modified. Would you like to save this service? - + File could not be opened because it is corrupt. - + Empty File - + This service file does not contain any data. - + Corrupt File @@ -2551,15 +2556,30 @@ The content encoding is not UTF-8. - + Untitled Service - + This file is either corrupt or not an OpenLP 2.0 service file. + + + Load an existing service. + + + + + Save this service. + + + + + Select a theme for the service. + + OpenLP.ServiceNoteForm @@ -2648,100 +2668,105 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Move to previous - + Move to next - + Hide - + Move to live - + Start continuous loop - + Stop continuous loop - + Delay between slides in seconds - + Start playing media - + Go To - + Edit and reload song preview - + Blank Screen - + Blank to Theme - + Show Desktop - + Previous Slide - + Next Slide - + Previous Service - + Next Service - + Escape Item - + Start/Stop continuous loop + + + Add to Service + + OpenLP.SpellTextEdit @@ -2910,68 +2935,68 @@ The content encoding is not UTF-8. - + %s (default) - + You must select a theme to edit. - + You are unable to delete the default theme. - + You have not selected a theme. - + Save Theme - (%s) - + Theme Exported - + Your theme has been successfully exported. - + Theme Export Failed - + Your theme could not be exported due to an error. - + Select Theme Import File - + File is not a valid theme. The content encoding is not UTF-8. - + File is not a valid theme. - + Theme %s is used in the %s plugin. @@ -2991,47 +3016,47 @@ The content encoding is not UTF-8. - + You must select a theme to rename. - + Rename Confirmation - + Rename %s theme? - + You must select a theme to delete. - + Delete Confirmation - + Delete %s theme? - + Validation Error - + A theme with this name already exists. - + OpenLP Themes (*.theme *.otz) @@ -3455,7 +3480,7 @@ The content encoding is not UTF-8. - + &Vertical Align: @@ -3663,7 +3688,7 @@ The content encoding is not UTF-8. - + Starting import... @@ -3812,11 +3837,6 @@ The content encoding is not UTF-8. View - - - View Model - - Duplicate Error @@ -3837,11 +3857,16 @@ The content encoding is not UTF-8. XML syntax error + + + View Mode + + OpenLP.displayTagDialog - + Configure Display Tags @@ -3853,31 +3878,6 @@ The content encoding is not UTF-8. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. - - - Load a new Presentation - - - - - Delete the selected Presentation - - - - - Preview the selected Presentation - - - - - Send the selected Presentation live - - - - - Add the selected Presentation to the service - - Presentation @@ -3896,56 +3896,81 @@ The content encoding is not UTF-8. container title + + + Load a new Presentation. + + + + + Delete the selected Presentation. + + + + + Preview the selected Presentation. + + + + + Send the selected Presentation live. + + + + + Add the selected Presentation to the service. + + PresentationPlugin.MediaItem - + Select Presentation(s) - + Automatic - + Present using: - + File Exists - + A presentation with that filename already exists. - + This type of presentation is not supported. - + Presentations (%s) - + Missing Presentation - + The Presentation %s no longer exists. - + The Presentation %s is incomplete, please reload. @@ -3997,20 +4022,30 @@ The content encoding is not UTF-8. RemotePlugin.RemoteTab - + Serve on IP address: - + Port number: - + Server Settings + + + Remote URL: + + + + + Stage view URL: + + SongUsagePlugin @@ -4193,36 +4228,6 @@ has been successfully created. Reindexing songs... - - - Add a new Song - - - - - Edit the selected Song - - - - - Delete the selected Song - - - - - Preview the selected Song - - - - - Send the selected Song live - - - - - Add the selected Song to the service - - Song @@ -4334,6 +4339,36 @@ The encoding is responsible for the correct character representation. Exports songs using the export wizard. + + + Add a new Song. + + + + + Edit the selected Song. + + + + + Delete the selected Song. + + + + + Preview the selected Song. + + + + + Send the selected Song live. + + + + + Add the selected Song to the service. + + SongsPlugin.AuthorsForm @@ -4567,7 +4602,7 @@ The encoding is responsible for the correct character representation. - + You need to type some text in to the verse. @@ -4575,20 +4610,35 @@ The encoding is responsible for the correct character representation. SongsPlugin.EditVerseForm - + Edit Verse - + &Verse type: - + &Insert + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4784,42 +4834,42 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - - - - + Titles - + Lyrics - + Delete Song(s)? - + CCLI License: - + Entire Song - + Are you sure you want to delete the %n selected song(s)? + + + Maintain the lists of authors, topics and books. + + SongsPlugin.OpenLP1SongImport diff --git a/resources/i18n/nb.ts b/resources/i18n/nb.ts index 1df6b7fc3..a4e1cbb59 100644 --- a/resources/i18n/nb.ts +++ b/resources/i18n/nb.ts @@ -184,22 +184,22 @@ Vil du fortsette likevel? BiblePlugin.HTTPBible - + Download Error Nedlastningsfeil - + Parse Error Analysefeil - + 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. Det oppstod et problem ved nedlastingen av de valgte versene. Vennligst sjekk internettilkoblingen, dersom denne feilen vedvarer, vær vennlig å rapportere feilen. - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. Det oppstod et problem ved uthenting av de valgte versene. Dersom denne feilen vedvarer, vær vennlig å rapportere feilen. @@ -207,12 +207,12 @@ Vil du fortsette likevel? BiblePlugin.MediaItem - + Bible not fully loaded. Bibelen er ikke ferdiglastet. - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? Du kan ikke kombinere enkle og doble bibelverssøkeresultat. Vil du fjerne søkeresultatene og starte et nytt søk? @@ -229,41 +229,6 @@ Vil du fortsette likevel? <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. <strong>Bibeltillegg</strong><br />Bibeltillegget gir mulighet til å vise bibelvers fra ulike kilder under gudstjenesten. - - - Import a Bible - Importer en bibel - - - - Add a new Bible - Legg til ny bibel - - - - Edit the selected Bible - Rediger valgte bibel - - - - Delete the selected Bible - Slett valgte bibel - - - - Preview the selected Bible - Forhåndsvis valgte bibel - - - - Send the selected Bible live - Send valgt bibel live - - - - Add the selected Bible to the service - Legg til valgte bibel til møtet - Bible @@ -283,47 +248,82 @@ Vil du fortsette likevel? Bibler - + No Book Found Ingen bok funnet - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. Ingen samsvarende bok ble funnet i denne bibelen. Sjekk at du har stavet navnet på boken riktig. + + + Import a Bible. + + + + + Add a new Bible. + + + + + Edit the selected Bible. + + + + + Delete the selected Bible. + + + + + Preview the selected Bible. + + + + + Send the selected Bible live. + + + + + Add the selected Bible to the service. + + BiblesPlugin.BibleManager - + Scripture Reference Error Bibelreferansefeil - + Web Bible cannot be used Nettbibel kan ikke brukes - + Text Search is not available with Web Bibles. Tekstsøk er ikke tilgjengelig med nettbibler. - + 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. Du har ikke angitt et søkeord. Du kan skille ulike søkeord med mellomrom for å søke etter alle søkeordene dine, og du kan skille dem med komma for å søke etter ett av dem. - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. Det er ingen bibler installert. Vennligst bruk importeringsveiviseren for å installere en eller flere bibler. - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -342,7 +342,7 @@ Bok Kapittel:Vers-Vers,Kapittel:Vers-Vers Bok Kapittel:Vers-Kapittel:Vers - + No Bibles Available Ingen bibler tilgjengelig @@ -580,70 +580,60 @@ behov og derfor er en internettilkobling påkrevd. BiblesPlugin.MediaItem - + Quick Hurtig - + Find: Finn: - - Results: - Resultat: - - - + Book: Bok: - + Chapter: Kapittel: - + Verse: Vers: - + From: Fra: - + To: Til: - + Text Search Tekstsøk - - Clear - Blank - - - - Keep - Behold - - - + Second: Alternativ: - + Scripture Reference Bibelreferanse + + + Toggle to keep or clear the previous results. + + BiblesPlugin.Opensong @@ -717,12 +707,12 @@ behov og derfor er en internettilkobling påkrevd. Rediger alle lysbilder på en gang. - + Split Slide Del opp lysbilde - + Split a slide into two by inserting a slide splitter. Del lysbilde i to ved å sette inn en lysbildedeler. @@ -737,12 +727,12 @@ behov og derfor er en internettilkobling påkrevd. &Credits: - + You need to type in a title. Du må skrive inn en tittel. - + You need to add at least one slide Du må legge til minst et lysbilde @@ -751,49 +741,19 @@ behov og derfor er en internettilkobling påkrevd. Ed&it All Rediger alle + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide + + CustomsPlugin - - - Import a Custom - Importer et egendefinert lysbilde - - - - Load a new Custom - Last et nytt egendefinert lysbilde - - - - Add a new Custom - Legg til et nytt egendefinert lysbilde - - - - Edit the selected Custom - Rediger det valgte egendefinerte lysbildet - - - - Delete the selected Custom - Slett det valgte egendefinerte lysbildet - - - - Preview the selected Custom - Forhåndsvis det valgte egendefinerte lysbildet - - - - Send the selected Custom live - Send det valgte egendefinerte lysbildet live - - - - Add the selected Custom to the service - Legg til det valgte egendefinerte lysbildet til møtet - Custom @@ -812,11 +772,51 @@ behov og derfor er en internettilkobling påkrevd. container title Egendefinert lysbilde + + + Load a new Custom. + + + + + Import a Custom. + + + + + Add a new Custom. + + + + + Edit the selected Custom. + + + + + Delete the selected Custom. + + + + + Preview the selected Custom. + + + + + Send the selected Custom live. + + + + + Add the selected Custom to the service. + + GeneralTab - + General Generell @@ -828,41 +828,6 @@ behov og derfor er en internettilkobling påkrevd. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. <strong>Bildetillegg</strong><br />Bildetillegget gir mulighet til visning av bilder.<br />Et av særtrekkene med dette tillegget er muligheten til å gruppere flere bilder sammen i møteplanleggeren, noe som gjør visning av flere bilder enklere. Programtillegget kan også benytte seg av OpenLP's "tidsbestemte løkke"-funksjon til å lage en lysbildefremvisning som kjører automatisk. I tillegg kan bilder fra tillegget brukes til å overstyre gjeldende temabakgrunn, noe som gir tekstbaserte saker, som sanger, det valgte bildet som bakgrunn. - - - Load a new Image - Last et nytt bilde - - - - Add a new Image - Legg til nytt bilde - - - - Edit the selected Image - Rediger valgte bildet - - - - Delete the selected Image - Slett valgte bilde - - - - Preview the selected Image - Forhåndsvis valgte bilde - - - - Send the selected Image live - Send valgte bilde live - - - - Add the selected Image to the service - Legg til valgte bilde til møtet - Image @@ -881,11 +846,46 @@ behov og derfor er en internettilkobling påkrevd. container title Bilder + + + Load a new Image. + + + + + Add a new Image. + + + + + Edit the selected Image. + + + + + Delete the selected Image. + + + + + Preview the selected Image. + + + + + Send the selected Image live. + + + + + Add the selected Image to the service. + + ImagePlugin.ExceptionDialog - + Select Attachment Velg vedlegg @@ -893,39 +893,39 @@ behov og derfor er en internettilkobling påkrevd. ImagePlugin.MediaItem - + Select Image(s) Velg bilde(r) - + You must select an image to delete. Du må velge et bilde å slette. - + You must select an image to replace the background with. Du må velge et bilde å erstatte bakgrunnen med. - + Missing Image(s) Bilde(r) mangler - + The following image(s) no longer exist: %s De følgende bilde(r) finnes ikke lenger: %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? De følgende bilde(r) finnes ikke lenger: %s Vil du likevel legge til de andre bildene? - + There was a problem replacing your background, the image file "%s" no longer exists. Det oppstod et problem ved erstatting av bakgrunnen, bildefilen "%s" finnes ikke lenger. @@ -937,41 +937,6 @@ Vil du likevel legge til de andre bildene? <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. <strong>Mediatillegg</strong><br />Mediatillegget tilbyr avspilling av lyd og video. - - - Load a new Media - Last ny fil - - - - Add a new Media - Legg til ny fil - - - - Edit the selected Media - Rediger valgte fil - - - - Delete the selected Media - Slett valgte fil - - - - Preview the selected Media - Forhåndsvis valgte fil - - - - Send the selected Media live - Send valgte fil live - - - - Add the selected Media to the service - Legg valgte fil til møtet - Media @@ -990,41 +955,76 @@ Vil du likevel legge til de andre bildene? container title Media + + + Load a new Media. + + + + + Add a new Media. + + + + + Edit the selected Media. + + + + + Delete the selected Media. + + + + + Preview the selected Media. + + + + + Send the selected Media live. + + + + + Add the selected Media to the service. + + MediaPlugin.MediaItem - + Select Media Velg fil - + You must select a media file to delete. Du må velge en fil å slette - + Missing Media File Fil mangler - + The file %s no longer exists. Filen %s finnes ikke lenger - + You must select a media file to replace the background with. Du må velge en fil å erstatte bakgrunnen med. - + There was a problem replacing your background, the media file "%s" no longer exists. Det oppstod et problem ved bytting av bakgrunn, filen "%s" finnes ikke lenger. - + Videos (%s);;Audio (%s);;%s (*) Videoer (%s);;Lyd (%s);;%s (*) @@ -1323,70 +1323,70 @@ Tinggaard, Frode Woldsund OpenLP.DisplayTagDialog - + Edit Selection - - Update - - - - + Description - + Tag - + Start tag - + End tag - + Default - + Tag Id - + Start HTML - + End HTML + + + Save + + OpenLP.DisplayTagTab - + Update Error - + Tag "n" already defined. - + Tag %s already defined. @@ -1425,7 +1425,7 @@ Tinggaard, Frode Woldsund - + Description characters to enter : %s @@ -1467,7 +1467,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1697,122 +1697,122 @@ To cancel the First Time Wizard completely, press the finish button now. 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 - + Slide loop delay: - + 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 @@ -1833,7 +1833,7 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainDisplay - + OpenLP Display @@ -1841,309 +1841,309 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainWindow - + &File &Fil - + &Import &Importer - + &Export &Eksporter - + &View &Vis - + M&ode - + &Tools - + &Settings &Innstillinger - + &Language &Språk - + &Help &Hjelp - + Media Manager Innholdselementer - + Service Manager - + Theme Manager - + &New &Ny - + &Open &Åpne - + Open an existing service. - + &Save &Lagre - + Save the current service to disk. - + Save &As... - + Save Service As - + Save the current service under a new name. - + E&xit &Avslutt - + Quit OpenLP Avslutt OpenLP - + &Theme &Tema - + &Configure OpenLP... - + &Media Manager - + Toggle Media Manager - + Toggle the visibility of the media manager. - + &Theme Manager - + Toggle Theme Manager Åpne tema-behandler - + Toggle the visibility of the theme manager. - + &Service Manager - + Toggle Service Manager Vis møteplanlegger - + Toggle the visibility of the service manager. - + &Preview Panel &Forhåndsvisningspanel - + Toggle Preview Panel Vis forhåndsvisningspanel - + Toggle the visibility of the preview panel. - + &Live Panel - + Toggle Live Panel - + Toggle the visibility of the live panel. - + &Plugin List &Tillegsliste - + List the Plugins Hent liste over tillegg - + &User Guide &Brukerveiledning - + &About &Om - + More information about OpenLP - + &Online Help - + &Web Site &Internett side - + Use the system language, if available. - + Set the interface language to %s - + Add &Tool... Legg til & Verktøy... - + Add an application to the list of tools. - + &Default - + Set the view mode back to the default. - + &Setup - + Set the view mode to Setup. - + &Live &Direkte - + Set the view mode to Live. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. - + OpenLP Version Updated OpenLP versjonen har blitt oppdatert - + OpenLP Main Display Blanked - + The Main Display has been blanked out - + Default Theme: %s @@ -2154,45 +2154,55 @@ You can download the latest version from http://openlp.org/. Norsk - + Configure &Shortcuts... - + Close OpenLP - + Are you sure you want to close OpenLP? - + Print the current Service Order. - + Open &Data Folder... - + Open the folder where songs, bibles and other data resides. - + &Configure Display Tags - + &Autodetect + + + Update Theme Images + + + + + Update the preview images for all themes. + + OpenLP.MediaManagerItem @@ -2202,46 +2212,56 @@ You can download the latest version from http://openlp.org/. - + &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. - + Duplicate file name %s. Filename already exists in list + + + You must select one or more items to add. + + + + + No Search Results + + OpenLP.PluginForm @@ -2363,19 +2383,19 @@ Filename already exists in list - Add page break before each text item. + Add page break before each text item OpenLP.ScreenList - + Screen - + primary @@ -2391,223 +2411,208 @@ Filename already exists in list OpenLP.ServiceManager - - Load an existing service - - - - - Save this service - Lagre møteplan - - - - Select a theme for the service - - - - + Move to &top Flytt til &toppen - + Move item to the top of the service. - + Move &up - + Move item up one position in the service. - + Move &down - + Move item down one position in the service. - + Move to &bottom - + Move item to the end of the service. - + &Delete From Service - + Delete the selected item from the service. - + &Add New Item - + &Add to Selected Item - + &Edit Item - + &Reorder Item - + &Notes &Notis - + &Change Item Theme &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 - + &Expand all - + Expand all the service items. - + &Collapse all - + Collapse all the service items. - + Open File - + OpenLP Service Files (*.osz) - + Moves the selection down the window. - + Move up - + Moves the selection up the window. - + Go Live - + Send the selected item to Live. - + Modified Service - + &Start Time - + Show &Preview - + Show &Live - + The current service has been modified. Would you like to save this service? - + File could not be opened because it is corrupt. - + Empty File - + This service file does not contain any data. - + Corrupt File @@ -2627,15 +2632,30 @@ The content encoding is not UTF-8. - + Untitled Service - + This file is either corrupt or not an OpenLP 2.0 service file. + + + Load an existing service. + + + + + Save this service. + + + + + Select a theme for the service. + + OpenLP.ServiceNoteForm @@ -2724,100 +2744,105 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Move to previous Flytt til forrige - + Move to next - + Hide - + Move to live - + Start continuous loop Start kontinuerlig løkke - + Stop continuous loop - + Delay between slides in seconds Forsinkelse mellom lysbilder i sekund - + Start playing media Start avspilling av media - + Go To - + Edit and reload song preview - + Blank Screen - + Blank to Theme - + Show Desktop - + Previous Slide - + Next Slide - + Previous Service - + Next Service - + Escape Item - + Start/Stop continuous loop + + + Add to Service + + OpenLP.SpellTextEdit @@ -2986,68 +3011,68 @@ The content encoding is not UTF-8. - + %s (default) - + You must select a theme to edit. - + You are unable to delete the default theme. Du kan ikke slette det globale temaet. - + You have not selected a theme. - + Save Theme - (%s) - + Theme Exported - + Your theme has been successfully exported. - + Theme Export Failed - + Your theme could not be exported due to an error. - + Select Theme Import File - + File is not a valid theme. The content encoding is not UTF-8. - + File is not a valid theme. Filen er ikke et gyldig tema. - + Theme %s is used in the %s plugin. @@ -3067,47 +3092,47 @@ The content encoding is not UTF-8. - + You must select a theme to rename. - + Rename Confirmation - + Rename %s theme? - + You must select a theme to delete. - + Delete Confirmation - + Delete %s theme? - + Validation Error - + A theme with this name already exists. - + OpenLP Themes (*.theme *.otz) @@ -3531,7 +3556,7 @@ The content encoding is not UTF-8. - + &Vertical Align: @@ -3739,7 +3764,7 @@ The content encoding is not UTF-8. Klar. - + Starting import... Starter å importere... @@ -3888,11 +3913,6 @@ The content encoding is not UTF-8. View - - - View Model - - Duplicate Error @@ -3913,11 +3933,16 @@ The content encoding is not UTF-8. XML syntax error + + + View Mode + + OpenLP.displayTagDialog - + Configure Display Tags @@ -3929,31 +3954,6 @@ The content encoding is not UTF-8. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. - - - Load a new Presentation - - - - - Delete the selected Presentation - - - - - Preview the selected Presentation - - - - - Send the selected Presentation live - - - - - Add the selected Presentation to the service - - Presentation @@ -3972,56 +3972,81 @@ The content encoding is not UTF-8. container title + + + Load a new Presentation. + + + + + Delete the selected Presentation. + + + + + Preview the selected Presentation. + + + + + Send the selected Presentation live. + + + + + Add the selected Presentation to the service. + + PresentationPlugin.MediaItem - + Select Presentation(s) Velg presentasjon(er) - + Automatic Automatisk - + Present using: Presenter ved hjelp av: - + File Exists - + A presentation with that filename already exists. - + This type of presentation is not supported. - + Presentations (%s) - + Missing Presentation - + The Presentation %s no longer exists. - + The Presentation %s is incomplete, please reload. @@ -4073,20 +4098,30 @@ The content encoding is not UTF-8. RemotePlugin.RemoteTab - + Serve on IP address: - + Port number: - + Server Settings + + + Remote URL: + + + + + Stage view URL: + + SongUsagePlugin @@ -4269,36 +4304,6 @@ has been successfully created. Reindexing songs... - - - Add a new Song - - - - - Edit the selected Song - - - - - Delete the selected Song - - - - - Preview the selected Song - - - - - Send the selected Song live - - - - - Add the selected Song to the service - - Song @@ -4410,6 +4415,36 @@ The encoding is responsible for the correct character representation. Exports songs using the export wizard. + + + Add a new Song. + + + + + Edit the selected Song. + + + + + Delete the selected Song. + + + + + Preview the selected Song. + + + + + Send the selected Song live. + + + + + Add the selected Song to the service. + + SongsPlugin.AuthorsForm @@ -4643,7 +4678,7 @@ The encoding is responsible for the correct character representation. - + You need to type some text in to the verse. @@ -4651,20 +4686,35 @@ The encoding is responsible for the correct character representation. SongsPlugin.EditVerseForm - + Edit Verse Rediger Vers - + &Verse type: - + &Insert + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4860,43 +4910,43 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - Rediger liste over forfattere, emner og bøker - - - + Titles Titler - + Lyrics - + Delete Song(s)? - + CCLI License: - + Entire Song - + Are you sure you want to delete the %n selected song(s)? + + + Maintain the lists of authors, topics and books. + + SongsPlugin.OpenLP1SongImport diff --git a/resources/i18n/nl.ts b/resources/i18n/nl.ts index 45baae593..90a7aa98e 100644 --- a/resources/i18n/nl.ts +++ b/resources/i18n/nl.ts @@ -42,7 +42,7 @@ Toch doorgaan? <strong>Alerts Plugin</strong><br />The alert plugin controls the displaying of nursery alerts on the display screen - <strong>Waarschuwing Plugin</strong><br />Deze plugin regelt de weergave van waarschuwingen op het scherm. + <strong>Waarschuwing Plugin</strong><br />Deze plugin regelt de weergave van waarschuwingen op het scherm @@ -184,22 +184,22 @@ Toch doorgaan? BiblePlugin.HTTPBible - + Download Error Download fout - + Parse Error Verwerkingsfout - + 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. Er ging iets mis bij het downloaden van de bijbelverzen. Controleer uw internet verbinding (open bijv. een pagina in de internetbrowser). Als dit probleem zich blijft herhalen is er misschien sprake van een bug. - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. Er ging iets mis bij het uitpakken van de bijbelverzen. Als dit probleem zich blijft herhalen is er misschien sprake van een bug. @@ -207,12 +207,12 @@ Toch doorgaan? BiblePlugin.MediaItem - + Bible not fully loaded. Bijbel niet geheel geladen. - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? Enkele en dubbele bijbelvers zoekresultaten kunnen niet gecombineerd worden. Resultaten wissen en opnieuw beginnen? @@ -229,41 +229,6 @@ Toch doorgaan? <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. <strong>Bijbel plugin</strong><br />De Bijbel plugin maakt het mogelijk bijbelteksten uit verschillende vertalingen tijdens de dienst te gebruiken. - - - Import a Bible - Importeer een Bijbel - - - - Add a new Bible - Voeg een nieuwe Bijbel toe - - - - Edit the selected Bible - Geselecteerde Bijbel bewerken - - - - Delete the selected Bible - Geselecteerde Bijbel verwijderen - - - - Preview the selected Bible - Voorbeeld geselecteerde bijbeltekst - - - - Send the selected Bible live - Geselecteerde bijbeltekst live tonen - - - - Add the selected Bible to the service - Geselecteerde bijbeltekst aan de liturgie toevoegen - Bible @@ -283,47 +248,82 @@ Toch doorgaan? Bijbelteksten - + No Book Found Geen bijbelboek gevonden - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. Er kon geen bijbelboek met die naam gevonden worden. Controleer de spelling. + + + Import a Bible. + Importeer een Bijbel. + + + + Add a new Bible. + Voeg een nieuwe Bijbel toe. + + + + Edit the selected Bible. + Geselecteerde Bijbel bewerken. + + + + Delete the selected Bible. + Geselecteerde Bijbel verwijderen. + + + + Preview the selected Bible. + Voorbeeld geselecteerde bijbeltekst. + + + + Send the selected Bible live. + Geselecteerde bijbeltekst live tonen. + + + + Add the selected Bible to the service. + Geselecteerde bijbeltekst aan de liturgie toevoegen. + BiblesPlugin.BibleManager - + Scripture Reference Error Fouten in schriftverwijzingen - + Web Bible cannot be used Online bijbels kunnen niet worden gebruikt - + Text Search is not available with Web Bibles. In online bijbels kunt u niet zoeken op tekst. - + 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. Geen zoekterm opgegeven. Woorden met een spatie ertussen betekent zoeken naar alle woorden, Woorden met een komma ertussen betekent zoeken naar de afzonderlijke woorden. - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. Er zijn geen bijbels geïnstalleerd. Gebruik de Import assistent om een of meerdere bijbels te installeren. - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -342,7 +342,7 @@ Boek Hoofdstuk:Vers-Vers,Hoofdstuk:Vers-Vers Boek Hoofdstuk:Vers-Hoofdstuk:Vers - + No Bibles Available Geen bijbels beschikbaar @@ -580,70 +580,60 @@ N.B. bijbelteksten worden gedownload indien nodig internetverbinding is dus nood BiblesPlugin.MediaItem - + Quick Snelzoeken - + Find: Vind: - - Results: - Resulaten: - - - + Book: Boek: - + Chapter: Hoofdstuk: - + Verse: Vers: - + From: Van: - + To: Tot: - + Text Search Zoek op tekst - - Clear - Wissen - - - - Keep - Bewaren - - - + Second: Tweede: - + Scripture Reference Schriftverwijzing + + + Toggle to keep or clear the previous results. + + BiblesPlugin.Opensong @@ -702,7 +692,7 @@ N.B. bijbelteksten worden gedownload indien nodig internetverbinding is dus nood &Titel: - + Split Slide Dia splitsen @@ -732,17 +722,17 @@ N.B. bijbelteksten worden gedownload indien nodig internetverbinding is dus nood Alle dia's tegelijk bewerken. - + Split a slide into two by inserting a slide splitter. Dia doormidden delen door een dia 'splitter' in te voegen. - + You need to type in a title. Geef een titel op. - + You need to add at least one slide Minstens een dia invoegen @@ -751,49 +741,19 @@ N.B. bijbelteksten worden gedownload indien nodig internetverbinding is dus nood Ed&it All &Alles bewerken + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide + + CustomsPlugin - - - Import a Custom - Aangepaste dia importeren - - - - Load a new Custom - Aangepaste dia laden - - - - Add a new Custom - Aangepaste dia toevoegn - - - - Edit the selected Custom - Geselecteerde dia bewerken - - - - Delete the selected Custom - Geselecteerde aangepaste dia verwijderen - - - - Preview the selected Custom - Bekijk voorbeeld aangepaste dia - - - - Send the selected Custom live - Bekijk aangepaste dia live - - - - Add the selected Custom to the service - Aangepaste dia aan liturgie toevoegen - Custom @@ -812,13 +772,53 @@ N.B. bijbelteksten worden gedownload indien nodig internetverbinding is dus nood container title Aangepaste dia + + + Load a new Custom. + Aangepaste dia laden. + + + + Import a Custom. + Aangepaste dia importeren. + + + + Add a new Custom. + Aangepaste dia toevoegen. + + + + Edit the selected Custom. + Geselecteerde dia bewerken. + + + + Delete the selected Custom. + Geselecteerde aangepaste dia verwijderen. + + + + Preview the selected Custom. + Bekijk voorbeeld aangepaste dia. + + + + Send the selected Custom live. + Bekijk aangepaste dia live. + + + + Add the selected Custom to the service. + Aangepaste dia aan liturgie toevoegen. + GeneralTab - + General - Algemeen + Algemeen @@ -828,41 +828,6 @@ N.B. bijbelteksten worden gedownload indien nodig internetverbinding is dus nood <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. <strong>Afbeeldingen Plugin</strong><br />De afbeeldingen plugin voorziet in de mogelijkheid afbeeldingen te laten zien.<br />Een van de bijzondere mogelijkheden is dat meerdere afbeeldingen als groep in de liturgie worden opgenomen, zodat weergave van meerdere afbeeldingen eenvoudiger wordt. Deze plugin maakt doorlopende diashows (bijv. om de 3 sec. een nieuwe dia) mogelijk. Ook kun met deze plugin de achtergrondafbeelding van het thema vervangen met een andere afbeelding. Ook de combinatie van tekst en beeld is mogelijk. - - - Load a new Image - Afbeelding laden - - - - Add a new Image - Afbeelding toevoegen - - - - Edit the selected Image - Afbeelding bewerken - - - - Delete the selected Image - Geselecteerde afbeeldingen wissen - - - - Preview the selected Image - Geselecteerde afbeeldingen voorbeeld bekijken - - - - Send the selected Image live - Geselecteerde afbeeldingen Live tonen - - - - Add the selected Image to the service - Geselecteerde afbeeldingen aan liturgie toevoegen - Image @@ -881,11 +846,46 @@ N.B. bijbelteksten worden gedownload indien nodig internetverbinding is dus nood container title Afbeeldingen + + + Load a new Image. + Afbeelding laden. + + + + Add a new Image. + Afbeelding toevoegen. + + + + Edit the selected Image. + Afbeelding bewerken. + + + + Delete the selected Image. + Geselecteerde afbeeldingen wissen. + + + + Preview the selected Image. + Geselecteerde afbeeldingen voorbeeld bekijken. + + + + Send the selected Image live. + Geselecteerde afbeeldingen Live tonen. + + + + Add the selected Image to the service. + Geselecteerde afbeeldingen aan liturgie toevoegen. + ImagePlugin.ExceptionDialog - + Select Attachment Selecteer bijlage @@ -893,39 +893,39 @@ N.B. bijbelteksten worden gedownload indien nodig internetverbinding is dus nood ImagePlugin.MediaItem - + Select Image(s) Selecteer afbeelding(en) - + You must select an image to delete. Selecteer een afbeelding om te verwijderen. - + You must select an image to replace the background with. Selecteer een afbeelding om de achtergrond te vervangen. - + Missing Image(s) Ontbrekende afbeelding(en) - + The following image(s) no longer exist: %s De volgende afbeelding(en) ontbreken: %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? De volgende afbeelding(en) ontbreken: %s De andere afbeeldingen alsnog toevoegen? - + There was a problem replacing your background, the image file "%s" no longer exists. Achtergrond kan niet vervangen worden, omdat de afbeelding "%s" ontbreekt. @@ -937,41 +937,6 @@ De andere afbeeldingen alsnog toevoegen? <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. <strong>Media Plugin</strong><br />De media plugin voorziet in mogelijkheden audio en video af te spelen. - - - Load a new Media - Laad nieuw media bestand - - - - Add a new Media - Voeg nieuwe media toe - - - - Edit the selected Media - Bewerk geselecteerd media bestand - - - - Delete the selected Media - Verwijder geselecteerd media bestand - - - - Preview the selected Media - Toon voorbeeld van geselecteerd media bestand - - - - Send the selected Media live - Toon geselecteerd media bestand Live - - - - Add the selected Media to the service - Voeg geselecteerd media bestand aan liturgie toe - Media @@ -990,41 +955,76 @@ De andere afbeeldingen alsnog toevoegen? container title Media + + + Load a new Media. + Laad nieuw media bestand. + + + + Add a new Media. + Voeg nieuwe media toe. + + + + Edit the selected Media. + Bewerk geselecteerd media bestand. + + + + Delete the selected Media. + Verwijder geselecteerd media bestand. + + + + Preview the selected Media. + Toon voorbeeld van geselecteerd media bestand. + + + + Send the selected Media live. + Toon geselecteerd media bestand Live. + + + + Add the selected Media to the service. + Voeg geselecteerd media bestand aan liturgie toe. + MediaPlugin.MediaItem - + Select Media Secteer media bestand - + You must select a media file to delete. Selecteer een media bestand om te verwijderen. - + Missing Media File Ontbrekend media bestand - + The file %s no longer exists. Media bestand %s bestaat niet meer. - + You must select a media file to replace the background with. Selecteer een media bestand om de achtergrond mee te vervangen. - + There was a problem replacing your background, the media file "%s" no longer exists. Probleem met het vervangen van de achtergrond, omdat het bestand "%s" niet meer bestaat. - + Videos (%s);;Audio (%s);;%s (*) Video’s (%s);;Audio (%s);;%s (*) @@ -1305,96 +1305,96 @@ Tinggaard, Frode Woldsund Preview items when clicked in Media Manager - + Voorbeeld direct laten zien bij aanklikken in Media beheer Advanced - Geavanceerd + 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. OpenLP.DisplayTagDialog - + Edit Selection Bewerk selectie - - Update - Update - - - + Description Omschrijving - + Tag Tag - + Start tag Start tag - + End tag Eind tag - + Default Standaard - + Tag Id Tag Id - + Start HTML Start HTML - + End HTML Eind HTML + + + Save + + OpenLP.DisplayTagTab - + Update Error Update Fout - + Tag "n" already defined. Tag "n" bestaat al. - + Tag %s already defined. Tag %s bestaat al. @@ -1420,7 +1420,7 @@ Stuur een e-mail naar: bugs@openlp.org met een gedetailleerde beschrijving van h Save to File - Opslaan als… + Opslaan als bestand @@ -1435,7 +1435,7 @@ Stuur een e-mail naar: bugs@openlp.org met een gedetailleerde beschrijving van h Voeg bestand toe - + Description characters to enter : %s Toelichting aanvullen met nog %s tekens @@ -1491,7 +1491,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1738,124 +1738,124 @@ Om deze assistent over te slaan, klik op klaar. 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 - + Slide loop delay: Vertraging bij doorlopende diavoorstelling: - + 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 @@ -1874,7 +1874,7 @@ Om deze assistent over te slaan, klik op klaar. OpenLP.MainDisplay - + OpenLP Display OpenLP Weergave @@ -1882,307 +1882,307 @@ Om deze assistent over te slaan, klik op klaar. OpenLP.MainWindow - + &File &Bestand - + &Import &Importeren - + &Export &Exporteren - + &View &Weergave - + M&ode M&odus - + &Tools &Hulpmiddelen - + &Settings &Instellingen - + &Language Taa&l - + &Help &Help - + Media Manager Mediabeheer - + Service Manager Liturgie beheer - + Theme Manager Thema beheer - + &New &Nieuw - + &Open &Open - + Open an existing service. Open een bestaande liturgie. - + &Save Op&slaan - + Save the current service to disk. Deze liturgie opslaan. - + Save &As... Opslaan &als... - + Save Service As Liturgie opslaan als - + Save the current service under a new name. Deze liturgie onder een andere naam opslaan. - + E&xit &Afsluiten - + Quit OpenLP OpenLP afsluiten - + &Theme &Thema - + &Configure OpenLP... &Instellingen... - + &Media Manager &Media beheer - + Toggle Media Manager Media beheer wel / niet tonen - + Toggle the visibility of the media manager. Media beheer wel / niet tonen. - + &Theme Manager &Thema beheer - + Toggle Theme Manager Thema beheer wel / niet tonen - + Toggle the visibility of the theme manager. Thema beheer wel / niet tonen. - + &Service Manager &Liturgie beheer - + Toggle Service Manager Liturgie beheer wel / niet tonen - + Toggle the visibility of the service manager. Liturgie beheer wel / niet tonen. - + &Preview Panel &Voorbeeld - + Toggle Preview Panel Voorbeeld wel / niet tonen - + Toggle the visibility of the preview panel. Voorbeeld wel / niet tonen. - + &Live Panel &Live venster - + Toggle Live Panel Live venster wel / niet tonen - + Toggle the visibility of the live panel. Live venster wel / niet tonen. - + &Plugin List &Plugin Lijst - + List the Plugins Lijst met plugins =uitbreidingen van OpenLP - + &User Guide Gebr&uikshandleiding - + &About &Over OpenLP - + More information about OpenLP Meer Informatie over OpenLP - + &Online Help &Online help - + &Web Site &Website - + Use the system language, if available. Gebruik systeem standaardtaal, indien mogelijk. - + Set the interface language to %s %s als taal in OpenLP gebruiken - + Add &Tool... Hulpprogramma &toevoegen... - + Add an application to the list of tools. Voeg een hulpprogramma toe aan de lijst. - + &Default &Standaard - + Set the view mode back to the default. Terug naar de standaard weergave modus. - + &Setup &Setup - + Set the view mode to Setup. Weergave modus naar Setup. - + &Live &Live - + Set the view mode to Live. Weergave modus naar Live. - + OpenLP Version Updated Nieuwe OpenLP versie beschikbaar - + OpenLP Main Display Blanked OpenLP projectie op zwart - + The Main Display has been blanked out Projectie is uitgeschakeld: scherm staat op zwart - + Default Theme: %s Standaardthema: %s - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2197,45 +2197,55 @@ U kunt de laatste versie op http://openlp.org/ downloaden. Nederlands - + Configure &Shortcuts... &Sneltoetsen instellen... - + Close OpenLP OpenLP afsluiten - + Are you sure you want to close OpenLP? OpenLP afsluiten? - + Print the current Service Order. Druk de huidige liturgie af. - + Open &Data Folder... Open &Data map... - + Open the folder where songs, bibles and other data resides. Open de map waar liederen, bijbels en andere data staat. - + &Configure Display Tags &Configureer Weergave Tags - + &Autodetect &Autodetecteer + + + Update Theme Images + + + + + Update the preview images for all themes. + + OpenLP.MediaManagerItem @@ -2245,44 +2255,55 @@ U kunt de laatste versie op http://openlp.org/ downloaden. 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. - + Duplicate file name %s. Filename already exists in list + Dubbele bestandsnaam %s. +Deze bestandsnaam staat als in de lijst + + + + You must select one or more items to add. + + + + + No Search Results @@ -2406,19 +2427,19 @@ Filename already exists in list - Add page break before each text item. - + Add page break before each text item + Voeg een pagina-einde toe voor elke tekst item OpenLP.ScreenList - + Screen Beeldscherm - + primary primair scherm @@ -2434,251 +2455,251 @@ Filename already exists in list OpenLP.ServiceManager - - Load an existing service - Laad een bestaande liturgie - - - - Save this service - Deze liturgie opslaan - - - - Select a theme for the service - Selecteer een thema voor de liturgie - - - + Move to &top Bovenaan plaa&tsen - + Move item to the top of the service. Plaats dit onderdeel bovenaan. - + Move &up Naar b&oven - + Move item up one position in the service. Verplaats een plek naar boven. - + Move &down Naar bene&den - + Move item down one position in the service. Verplaats een plek naar beneden. - + Move to &bottom Onderaan &plaatsen - + Move item to the end of the service. Plaats dit onderdeel onderaan. - + &Delete From Service Verwij&deren uit de liturgie - + Delete the selected item from the service. Verwijder dit onderdeel uit de liturgie. - + &Add New Item &Voeg toe - + &Add to Selected Item &Voeg selectie toe - + &Edit Item B&ewerk onderdeel - + &Reorder Item He&rschik onderdeel - + &Notes Aa&ntekeningen - + &Change Item Theme &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 - + &Expand all Alles &uitklappen - + Expand all the service items. Alle liturgie onderdelen uitklappen. - + &Collapse all Alles &inklappen - + Collapse all the service items. Alle liturgie onderdelen inklappen. - + Open File Open bestand - + OpenLP Service Files (*.osz) OpenLP liturgie bestanden (*.osz) - + Moves the selection up the window. Verplaatst de selectie naar boven. - + Move up Naar boven - + Go Live Ga Live - + Send the selected item to Live. Toon selectie Live. - + Moves the selection down the window. Verplaatst de selectie naar beneden. - + Modified Service Gewijzigde liturgie - + &Start Time &Start Tijd - + Show &Preview Toon &Voorbeeld - + Show &Live Toon &Live - + The current service has been modified. Would you like to save this service? 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 Custom Service Notes: - + Aangepaste liturgie kanttekeningen: Notes: - + Aantekeningen: Playing time: - + Speeltijd: - + Untitled Service - + Liturgie zonder naam - + This file is either corrupt or not an OpenLP 2.0 service file. - + Dit bestand is beschadigd of geen OpenLP 2.0 liturgie bestand. + + + + Load an existing service. + Laad een bestaande liturgie. + + + + Save this service. + Deze liturgie opslaan. + + + + Select a theme for the service. + Selecteer een thema voor de liturgie. @@ -2732,134 +2753,139 @@ Tekst codering is geen UTF-8. Select an action and click one of the buttons below to start capturing a new primary or alternate shortcut, respectively. - + Selecteer een actie en klik op één van de knoppen hieronder om respectievelijk een primaire of alternatieve sneltoets vast te leggen. Default - Standaard + Standaard Custom - + Aangepaste dia Capture shortcut. - + Sneltoets vastleggen. Restore the default shortcut of this action. - + Herstel de standaard sneltoets voor de actie. Restore Default Shortcuts - + Herstel standaard sneltoetsen Do you want to restore all shortcuts to their defaults? - + Weet u zeker dat u alle standaard sneltoetsen wilt herstellen? OpenLP.SlideController - + Move to previous Naar vorige - + Move to next Naar volgende - + Hide Verbergen - + Move to live Naar Live - + Start continuous loop Start doorlopende diashow - + Stop continuous loop Stop doorlopende diashow - + Delay between slides in seconds Vertraging tussen dia's in seconden - + Start playing media Start afspelen media - + Go To Ga naar - + Edit and reload song preview Bewerk en lied voorbeeld opnieuw weergeven - + Blank Screen Zwart scherm - + Blank to Theme Zwart naar thema - + Show Desktop Toon bureaublad - + Previous Slide Vorige dia - + Next Slide Volgende dia - + Previous Service Vorige liturgie - + Next Service Volgende liturgie - + Escape Item Onderdeel annuleren - + Start/Stop continuous loop + Start/Stop doorlopende diashow + + + + Add to Service @@ -2878,7 +2904,7 @@ Tekst codering is geen UTF-8. Language: - + Taal: @@ -2901,37 +2927,37 @@ Tekst codering is geen UTF-8. Item Start and Finish Time - + Item start en eind tijd Start - + Start Finish - + Eind Length - + Lengte Time Validation Error - + Tijd validatie fout End time is set after the end of the media item - + Eind tijd is ingesteld tot na het eind van het media item Start time is after the End Time of the media item - + Start tijd is ingesteld tot na het eind van het media item @@ -3030,69 +3056,69 @@ Tekst codering is geen UTF-8. Instellen als al&gemene standaard - + %s (default) %s (standaard) - + You must select a theme to edit. Selecteer een thema om te bewerken. - + You are unable to delete the default theme. Het standaard thema kan niet worden verwijderd. - + You have not selected a theme. Selecteer een thema. - + Save Theme - (%s) Thema opslaan - (%s) - + Theme Exported Thema geëxporteerd - + Your theme has been successfully exported. Exporteren thema is gelukt. - + Theme Export Failed Exporteren thema is mislukt - + Your theme could not be exported due to an error. Thema kan niet worden geëxporteerd als gevolg van een fout. - + Select Theme Import File Selecteer te importeren thema bestand - + File is not a valid theme. The content encoding is not UTF-8. Geen geldig thema bestand. Tekst codering is geen UTF-8. - + File is not a valid theme. Geen geldig thema bestand. - + Theme %s is used in the %s plugin. Thema %s wordt gebruikt in de %s plugin. @@ -3112,47 +3138,47 @@ Tekst codering is geen UTF-8. &Exporteer thema - + You must select a theme to rename. Selecteer een thema om te hernoemen. - + Rename Confirmation Bevestig hernoemen - + Rename %s theme? %s thema hernoemen? - + You must select a theme to delete. Selecteer een thema om te verwijderen. - + Delete Confirmation Bevestig verwijderen - + Delete %s theme? %s thema verwijderen? - + Validation Error Validatie fout - + A theme with this name already exists. Er bestaat al een thema met deze naam. - + OpenLP Themes (*.theme *.otz) OpenLP Thema's (*.theme *.otz) @@ -3576,7 +3602,7 @@ Tekst codering is geen UTF-8. Start %s - + &Vertical Align: &Verticaal uitlijnen: @@ -3784,7 +3810,7 @@ Tekst codering is geen UTF-8. Klaar. - + Starting import... Start importeren... @@ -3859,110 +3885,110 @@ Tekst codering is geen UTF-8. Continuous - Doorlopend + Doorlopend Default - Standaard + Standaard Display style: - Weergave stijl: + Weergave stijl: File - + Bestand Help - + Help h The abbreviated unit for hours - h + h Layout style: - Paginaformaat: + Paginaformaat: Live Toolbar - + Live Werkbalk m The abbreviated unit for minutes - m + m OpenLP is already running. Do you wish to continue? - + OpenLP is reeds gestart. Weet u zeker dat u wilt doorgaan? Settings - + Instellingen Tools - + Hulpmiddelen Verse Per Slide - Bijbelvers per dia + Bijbelvers per dia Verse Per Line - Bijbelvers per regel + Bijbelvers per regel View - - - - - View Model - + Weergave Duplicate Error - + Dupliceer fout Unsupported File - Niet ondersteund bestandsformaat + Niet ondersteund bestandsformaat Title and/or verses not found - + Titel en/of verzen niet gevonden XML syntax error + XML syntax fout + + + + View Mode OpenLP.displayTagDialog - + Configure Display Tags Configureer Weergave Tags @@ -3974,31 +4000,6 @@ Tekst codering is geen UTF-8. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. <strong>Presentatie plugin</strong><br />De presentatie plugin voorziet in de mogelijkheid om verschillende soorten presentaties weer te geven. De keuze van beschikbare presentatie software staat in een uitklapmenu. - - - Load a new Presentation - Laad nieuwe presentatie - - - - Delete the selected Presentation - Geselecteerde presentatie verwijderen - - - - Preview the selected Presentation - Geef van geselecteerde presentatie voorbeeld weer - - - - Send the selected Presentation live - Geselecteerde presentatie Live - - - - Add the selected Presentation to the service - Voeg geselecteerde presentatie toe aan de liturgie - Presentation @@ -4017,56 +4018,81 @@ Tekst codering is geen UTF-8. container title Presentaties + + + Load a new Presentation. + Laad nieuwe presentatie. + + + + Delete the selected Presentation. + Geselecteerde presentatie verwijderen. + + + + Preview the selected Presentation. + Geef van geselecteerde presentatie voorbeeld weer. + + + + Send the selected Presentation live. + Geselecteerde presentatie Live. + + + + Add the selected Presentation to the service. + Voeg geselecteerde presentatie toe aan de liturgie. + PresentationPlugin.MediaItem - + Select Presentation(s) Selecteer presentatie(s) - + Automatic automatisch - + Present using: Presenteren met: - + A presentation with that filename already exists. Er bestaat al een presentatie met die naam. - + File Exists Bestand bestaat - + This type of presentation is not supported. Dit soort presentatie wordt niet ondersteund. - + Presentations (%s) Presentaties (%s) - + Missing Presentation Ontbrekende presentatie - + The Presentation %s no longer exists. De presentatie %s bestaat niet meer. - + The Presentation %s is incomplete, please reload. De presentatie %s is niet compleet, herladen aub. @@ -4118,20 +4144,30 @@ Tekst codering is geen UTF-8. RemotePlugin.RemoteTab - + Serve on IP address: Beschikbaar via IP-adres: - + Port number: Poort nummer: - + Server Settings Server instellingen + + + Remote URL: + + + + + Stage view URL: + + SongUsagePlugin @@ -4196,7 +4232,7 @@ Tekst codering is geen UTF-8. Song Usage - + Liedgebruik @@ -4316,36 +4352,6 @@ is gemaakt. Reindexing songs... Liederen her-indexeren... - - - Add a new Song - Voeg nieuw lied toe - - - - Edit the selected Song - Bewerk geselecteerde lied - - - - Delete the selected Song - Verwijder geselecteerde lied - - - - Preview the selected Song - Toon voorbeeld geselecteerd lied - - - - Send the selected Song live - Toon lied Live - - - - Add the selected Song to the service - Voeg geselecteerde lied toe aan de liturgie - Song @@ -4460,6 +4466,36 @@ Meestal voldoet de suggestie van OpenLP. Exports songs using the export wizard. Exporteer liederen met de export assistent. + + + Add a new Song. + Voeg nieuw lied toe. + + + + Edit the selected Song. + Bewerk geselecteerde lied. + + + + Delete the selected Song. + Verwijder geselecteerde lied. + + + + Preview the selected Song. + Toon voorbeeld geselecteerd lied. + + + + Send the selected Song live. + Toon lied Live. + + + + Add the selected Song to the service. + Voeg geselecteerde lied toe aan de liturgie. + SongsPlugin.AuthorsForm @@ -4504,7 +4540,7 @@ Meestal voldoet de suggestie van OpenLP. The file does not have a valid extension. - + Dit bestand heeft geen geldige extensie. @@ -4512,7 +4548,7 @@ Meestal voldoet de suggestie van OpenLP. Administered by %s - Beheerd door %s + Beheerd door %s @@ -4693,7 +4729,7 @@ Meestal voldoet de suggestie van OpenLP. Iemand heeft dit lied geschreven. - + You need to type some text in to the verse. Er moet toch een tekst zijn om te zingen. @@ -4701,20 +4737,35 @@ Meestal voldoet de suggestie van OpenLP. SongsPlugin.EditVerseForm - + Edit Verse Couplet bewerken - + &Verse type: Co&uplet type: - + &Insert &Invoegen + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4899,61 +4950,61 @@ Meestal voldoet de suggestie van OpenLP. Copy - Kopieer + Kopieer Save to File - Opslaan als… + Opslaan als bestand SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - Beheer de lijst met auteurs, onderwerpen en liedboeken - - - + Titles Titels - + Lyrics Liedtekst - + Delete Song(s)? Wis lied(eren)? - + 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 deze %n lied(eren) wilt verwijderen? - + Weet u zeker dat u dit %n lied wilt verwijderen? + Weet u zeker dat u deze %n liederen wilt verwijderen? + + + Maintain the lists of authors, topics and books. + Beheer de lijst met auteurs, onderwerpen en liedboeken. + SongsPlugin.OpenLP1SongImport Not a valid openlp.org 1.x song database. - + Geen geldige openlp.org v1.x lied database. @@ -4961,7 +5012,7 @@ Meestal voldoet de suggestie van OpenLP. Not a valid OpenLP 2.0 song database. - + Geen geldige OpenLP 2.0 lied database. @@ -5018,7 +5069,7 @@ Meestal voldoet de suggestie van OpenLP. The following songs could not be imported: - + De volgende liederen konden niet worden geïmporteerd: @@ -5226,7 +5277,7 @@ Meestal voldoet de suggestie van OpenLP. Themes - Thema's + Thema’s diff --git a/resources/i18n/pt_BR.ts b/resources/i18n/pt_BR.ts index 4c49de540..da0d87415 100644 --- a/resources/i18n/pt_BR.ts +++ b/resources/i18n/pt_BR.ts @@ -184,22 +184,22 @@ Você gostaria de continuar de qualquer maneira? BiblePlugin.HTTPBible - + Download Error Erro no Download - + Parse Error - Erro na Leitura + Erro de interpretação - + 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. - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. Houve um problema extraindo os versículos selecionados. Se este erro continuar ocorrendo, por favor considere relatar um bug. @@ -207,12 +207,12 @@ Você gostaria de continuar de qualquer maneira? BiblePlugin.MediaItem - + Bible not fully loaded. - A Bíblia não foi carregada. + Bíblia não carregada completamente. - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? Você não pode combinar um versículo simples e um duplo nos resultados das buscas. Você deseja deletar os resultados da sua pesquisa e comecar uma nova? @@ -227,42 +227,7 @@ Você gostaria de continuar de qualquer maneira? <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>Plugin da Bíblia</strong><br />Este plugin permite exibir versículos bíblicos de diferentes fontes durante o culto. - - - - Import a Bible - Importar Bíblia - - - - Add a new Bible - Adicionar nova Bíblia - - - - Edit the selected Bible - Editar a Bíblia selecionada - - - - Delete the selected Bible - Excluir a Bíblia selecionada - - - - Preview the selected Bible - Pré-Visualizar a Bíblia selecionada - - - - Send the selected Bible live - Projetar a Bíblia selecionada - - - - Add the selected Bible to the service - Adicione a Bíblia selecionada à Lista de Exibição + <strong>Plugin da Bíblia</strong><br />Este plugin permite exibir versículos bíblicos de diferentes origens durante o culto. @@ -283,47 +248,82 @@ Você gostaria de continuar de qualquer maneira? Bíblias - + No Book Found Nenhum Livro Encontrado - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. Nenhum livro correspondente foi encontrado nesta Bíblia. Verifique se você digitou o nome do livro corretamente. + + + Import a Bible. + Importar uma Bíblia + + + + Add a new Bible. + Adicionar uma Bíblia nova + + + + Edit the selected Bible. + Editar a Bíblia selecionada + + + + Delete the selected Bible. + Apagar a Bíblia selecionada + + + + Preview the selected Bible. + Pré-visualizar a Bíblia selecionada + + + + Send the selected Bible live. + Projetar a Bíblia selecionada. + + + + Add the selected Bible to the service. + Adicionar a Bíblia selecionada ao culto, + BiblesPlugin.BibleManager - + Scripture Reference Error Erro de Referência na Escritura - + Web Bible cannot be used Não é possível usar a Bíblia Online - + Text Search is not available with Web Bibles. A Pesquisa de Texto não está disponível para Bíblias Online. - + 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. Você não digitou uma palavra-chave de pesquisa. Você pode separar diferentes palavras-chave com um espaço para procurar por todas as palavras-chave e pode separá-las com uma vírgula para pesquisar por alguma delas. - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. Nenhuma Bíblia instalada atualmente. Por favor, utilize o Assistente de Importação para instalar uma ou mais Bíblias. - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -342,7 +342,7 @@ Capítulo do Livro:Versículo-Versículo,Capítulo:Versículo-Versículo Capítulo do Livro:Versículo-Capítulo:Versículo - + No Bibles Available Nenhum Bíblia Disponível @@ -528,7 +528,7 @@ Mudanças não afetam os versículos que já estão na lista de exibição. Registered bible. Please note, that verses will be downloaded on demand and thus an internet connection is required. - Bíblia registrada. Note que os versos serão baixados de acordo + Bíblia registrada. Por favor, observe que os versos serão baixados de acordo com o uso, portanto uma conexão com a internet é necessária. @@ -580,70 +580,60 @@ com o uso, portanto uma conexão com a internet é necessária. BiblesPlugin.MediaItem - + Quick Rápido - + Find: Buscar: - - Results: - Resultados: - - - + Book: Livro: - + Chapter: Capítulo: - + Verse: Versículo: - + From: De: - + To: Para: - + Text Search Busca por Texto - - Clear - Limpar - - - - Keep - Manter - - - + Second: Segundo: - + Scripture Reference Referência da Escritura + + + Toggle to keep or clear the previous results. + + BiblesPlugin.Opensong @@ -717,19 +707,19 @@ com o uso, portanto uma conexão com a internet é necessária. Editar todos os slides de uma vez. - + Split Slide Dividir Slide - + Split a slide into two by inserting a slide splitter. Dividir um slide em dois, inserindo um divisor de slides. The&me: - The&ma: + Te&ma: @@ -737,12 +727,12 @@ com o uso, portanto uma conexão com a internet é necessária. &Créditos: - + You need to type in a title. Você precisa digitar um título. - + You need to add at least one slide Você precisa adicionar pelo menos um slide @@ -751,49 +741,19 @@ com o uso, portanto uma conexão com a internet é necessária. Ed&it All &Editar Todos + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide + + CustomsPlugin - - - Import a Custom - Importar um Slide Personalizado - - - - Load a new Custom - Abrir um novo Slide Personalizado - - - - Add a new Custom - Adicionar um novo Slide Personalizado - - - - Edit the selected Custom - Editar o Slide selecionado - - - - Delete the selected Custom - Apagar o Slide selecionado - - - - Preview the selected Custom - Pré-visualizar o Slide selecionado - - - - Send the selected Custom live - Projetar o Slide selecionado - - - - Add the selected Custom to the service - Adicionar o Slide selecionado à Lista de Exibição - Custom @@ -804,19 +764,59 @@ com o uso, portanto uma conexão com a internet é necessária. Customs name plural - Customizados + Personalizados Custom container title - Customizado + Personalizado + + + + Load a new Custom. + Carregar um Personalizado novo. + + + + Import a Custom. + Importar um Personalizado + + + + Add a new Custom. + Adicionar um Personalizado novo. + + + + Edit the selected Custom. + Editar o Personalizado selecionado + + + + Delete the selected Custom. + Apagar o Personalizado selecionado + + + + Preview the selected Custom. + Pré-visualizar o Personalizado selecionado. + + + + Send the selected Custom live. + Projetar o Personalizado selecionado. + + + + Add the selected Custom to the service. + Adicionar o Personalizado ao culto, GeneralTab - + General Geral @@ -828,41 +828,6 @@ com o uso, portanto uma conexão com a internet é necessária. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. <strong>Plugin de Imagens</strong><br />O plugin de imagens fornece a exibição de imagens.<br />Uma das funcionalidades importantes deste plugin é a habilidade de agrupar várias imagens na Lista de Exibição, facilitando a exibição de várias imagens. Este plugin também pode usar a funcionalidade de "loop temporizado" do OpenLP para criar uma apresentação de slides que é executada automaticamente. Além disso, imagens do plugin podem ser usadas em sobreposição ao plano de fundo do tema atual, exibindo itens baseados em texto como músicas com a imagem selecionada ao fundo ao invés do plano de fundo fornecido pelo tema. - - - Load a new Image - Carregar um nova Imagem - - - - Add a new Image - Adicionar uma nova Imagem - - - - Edit the selected Image - Editar a Imagem selecionada - - - - Delete the selected Image - Excluir a Imagem selecionada - - - - Preview the selected Image - Visualizar a Imagem selecionada - - - - Send the selected Image live - Projetar a Imagem selecionada - - - - Add the selected Image to the service - Adicionar Imagem selecionada à Lista de Exibição - Image @@ -881,11 +846,46 @@ com o uso, portanto uma conexão com a internet é necessária. container title Imagens + + + Load a new Image. + Carregar uma Imagem nova. + + + + Add a new Image. + Adicionar uma Imagem nova. + + + + Edit the selected Image. + Editar a Imagem selecionada. + + + + Delete the selected Image. + Apagar a Imagem selecionada. + + + + Preview the selected Image. + Pré-visualizar a Imagem selecionada. + + + + Send the selected Image live. + Projetar a Imagem selecionada. + + + + Add the selected Image to the service. + Adicionar a Imagem selecionada ao culto. + ImagePlugin.ExceptionDialog - + Select Attachment Selecionar Anexo @@ -893,41 +893,41 @@ com o uso, portanto uma conexão com a internet é necessária. ImagePlugin.MediaItem - + Select Image(s) Selecionar Imagem(s) - + You must select an image to delete. Você precisa selecionar uma imagem para apagar. - + You must select an image to replace the background with. Você precisa selecionar uma imagem para definir como plano de fundo. - + Missing Image(s) Imagem(s) não encontrada(s) - + The following image(s) no longer exist: %s - As seguintes imagens não existem: %s + A(s) seguinte(s) imagem(s) não existe(m) mais: %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? - As seguintes imagens não existem: %s + A(s) seguinte(s) imagem(s) não existe(m): %s Deseja continuar adicionando as outras imagens? - + There was a problem replacing your background, the image file "%s" no longer exists. - Ocorreu um erro ao substituir o plano de fundo da Projeção. O arquivo de imagem "%s" não existe. + Ocorreu um erro ao substituir o plano de fundo. O arquivo de imagem "%s" não existe. @@ -937,41 +937,6 @@ Deseja continuar adicionando as outras imagens? <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 faz a reprodução de áudio e vídeo. - - - Load a new Media - Carregar nova Mídia - - - - Add a new Media - Adicionar nova Mídia - - - - Edit the selected Media - Editar 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 - Projetar a Mídia selecionada - - - - Add the selected Media to the service - Adicionar a Mídia selecionada à Lista de Exibição - Media @@ -990,41 +955,76 @@ Deseja continuar adicionando as outras imagens? container title Mídia + + + Load a new Media. + Carregar uma Mídia nova. + + + + Add a new Media. + Adicionar uma Mídia nova. + + + + Edit the selected Media. + Editar a Mídia selecionada. + + + + Delete the selected Media. + Apagar a Mídia selecionada. + + + + Preview the selected Media. + Pré-visualizar a Mídia selecionada. + + + + Send the selected Media live. + Projetar a Mídia selecionada. + + + + Add the selected Media to the service. + Adicionar a Mídia selecionada ao culto. + MediaPlugin.MediaItem - + Select Media Selecionar Mídia - + You must select a media file to delete. Você deve selecionar um arquivo de mídia para apagar. - + Missing Media File Arquivo de Mídia não encontrado - + The file %s no longer exists. O arquivo %s não existe. - + You must select a media file to replace the background with. Você precisa selecionar um arquivo de mídia para substituir o plano de fundo. - + There was a problem replacing your background, the media file "%s" no longer exists. Ocorreu um erro ao substituir o plano de fundo. O arquivo de mídia "%s" não existe. - + Videos (%s);;Audio (%s);;%s (*) Vídeos (%s);;Áudio (%s);;%s (*) @@ -1263,7 +1263,7 @@ Tinggaard, Frode Woldsund Expand new service items on creation - Expandir novos itens da lista de exibição + Expandir novos itens do culto ao serem criados @@ -1278,7 +1278,7 @@ Tinggaard, Frode Woldsund Hide mouse cursor when over display window - Ocultar o cursor do mouse quando estiver sobre a tela de exibição + Ocultar o cursor do mouse quando estiver sobre a tela de projeção @@ -1303,7 +1303,7 @@ Tinggaard, Frode Woldsund Preview items when clicked in Media Manager - + Pré-visualizar itens quando clicados no Gerenciador de Mídia @@ -1313,86 +1313,86 @@ Tinggaard, Frode Woldsund 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. OpenLP.DisplayTagDialog - + Edit Selection Editar Seleção - - Update - Atualizar - - - + Description Descrição - + Tag Etiqueta - + Start tag Etiqueta Inicial - + End tag Etiqueta Final - + Default Padrão - + Tag Id Id da Etiqueta - + Start HTML Início do HTML - + End HTML Fim do HTML + + + Save + + OpenLP.DisplayTagTab - + Update Error Erro no Update - + Tag "n" already defined. Etiqueta "n" já está definida. - + Tag %s already defined. Etiqueta %s já está definida. @@ -1432,9 +1432,9 @@ Tinggaard, Frode Woldsund Anexar Arquivo - + Description characters to enter : %s - Caracteres que podem ser escritos na descrição: %s + Caracteres que podem ser digitadas na descrição: %s @@ -1488,7 +1488,7 @@ Versão %s - + *OpenLP Bug Report* Version: %s @@ -1592,7 +1592,7 @@ Agradecemos se for possível escrever seu relatório em inglês. Activate required Plugins - Ativar os Plugins Requeridos + Ativar os Plugins necessários @@ -1607,7 +1607,7 @@ Agradecemos se for possível escrever seu relatório em inglês. Custom Text - Texto Customizado + Texto Personalizado @@ -1637,7 +1637,7 @@ Agradecemos se for possível escrever seu relatório em inglês. Monitor Song Usage - Monitor de Utilização das Músicas + Monitorar Utilização das Músicas @@ -1700,12 +1700,12 @@ Para cancelar o assistente completamente, clique no botão finalizar. Default Settings - Configurações Padrão + Configurações Padrões Set up default settings to be used by OpenLP. - Configure as configurações padrão que serão utilizadas pelo OpenLP. + Ajuste as configurações padrões que serão utilizadas pelo OpenLP. @@ -1720,12 +1720,12 @@ Para cancelar o assistente completamente, clique no botão finalizar. Default output display: - Painel de Projeção Padrão: + Saída de Projeção Padrão: Select default theme: - Selecione um tema padrão: + Selecione o tema padrão: @@ -1736,124 +1736,124 @@ Para cancelar o assistente completamente, clique no botão finalizar. OpenLP.GeneralTab - + General Geral - + Monitors Monitores - + Select monitor for output display: Selecione um monitor para exibição: - + Display if a single screen Exibir em caso de tela única - + Application Startup Inicialização da Aplicação - + Show blank screen warning Exibir alerta de tela em branco - + Automatically open the last service - Abrir a última Lista de Exibição automaticamente + Abrir a última Ordem de Culto automaticamente - + Show the splash screen Exibir a tela inicial - + Application Settings Configurações da Aplicação - + Prompt to save before starting a new service - Perguntar sobre salvamento antes de iniciar uma nova lista + Perguntar sobre salvamento antes de iniciar uma nova ordem de culto - + Automatically preview next item in service - Pré-visualizar automaticamente o próximo item na Lista de Exibição + Pré-visualizar automaticamente o próximo item na ordem de culto - + Slide loop delay: - Atraso no loop de slide: + Espera na repetição de slides: - + sec seg - + CCLI Details Detalhes de CCLI - + SongSelect username: Usuário SongSelect: - + SongSelect password: Senha do 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 updates do OpenLP + Procurar atualizações do OpenLP - + Unblank display when adding new live item - + Ativar projeção ao adicionar um item novo @@ -1872,295 +1872,295 @@ Para cancelar o assistente completamente, clique no botão finalizar. OpenLP.MainDisplay - + OpenLP Display - Exibição do OpenLP + Saída do OpenLP OpenLP.MainWindow - + &File &Arquivo - + &Import &Importar - + &Export &Exportar - + &View &Visualizar - + M&ode M&odo - + &Tools &Ferramentas - + &Settings &Configurações - + &Language &Idioma - + &Help &Ajuda - + Media Manager Gerenciador de Mídia - + Service Manager - Lista de Exibição + Gerenciador de Ordem de Culto - + Theme Manager Gerenciador de Temas - + &New &Novo - + &Open &Abrir - + Open an existing service. - Abrir uma Lista de Exibição existente. + Abrir uma ordem de culto existente. - + &Save &Salvar - + Save the current service to disk. - Salvar a Lista de Exibição no disco. + Salvar a ordem de culto atual no disco. - + Save &As... Salvar &Como... - + Save Service As - Salvar Lista de Exibição Como + Salvar Ordem de Culto Como - + Save the current service under a new name. - Salvar a Lista de Exibição atual com um novo nome. + Salvar a ordem de culto atual com um novo nome. - + E&xit S&air - + Quit OpenLP Fechar o OpenLP - + &Theme &Tema - + &Configure OpenLP... &Configurar o OpenLP... - + &Media Manager &Gerenciador de Mídia - + Toggle Media Manager Alternar Gerenciador de Mídia - + Toggle the visibility of the media manager. Alternar a visibilidade do gerenciador de mídia. - + &Theme Manager &Gerenciador de Temas - + Toggle Theme Manager Alternar para Gerenciamento de Temas - + Toggle the visibility of the theme manager. Alternar a visibilidade do Gerenciador de Temas. - + &Service Manager - &Lista de Exibição + Gerenciador de Ordem de Culto - + Toggle Service Manager - Alternar a Lista de Exibição + Alternar o Gerenciador de Ordem de Culto - + Toggle the visibility of the service manager. - Alternar visibilidade da Lista de Exibição. + Alternar visibilidade do gerenciador de ordem de culto. - + &Preview Panel &Painel de Pré-Visualização - + Toggle Preview Panel - Alternar para Painel de Pré-Visualização + Alternar o Painel de Pré-Visualização - + Toggle the visibility of the preview panel. - Alternar a visibilidade da coluna de pré-visualização. + Alternar a visibilidade do painel de pré-visualização. - + &Live Panel - &Coluna da Projeção + &Painel da Projeção - + Toggle Live Panel - Alternar Coluna da Projeção + Alternar Painel da Projeção - + Toggle the visibility of the live panel. - Alternar a visibilidade da coluna de projeção. + Alternar a visibilidade do painel de projeção. - + &Plugin List &Lista de Plugins - + List the Plugins Listar os Plugins - + &User Guide &Guia do Usuário - + &About &Sobre - + More information about OpenLP Mais informações sobre o OpenLP - + &Online Help &Ajuda Online - + &Web Site &Web Site - + Use the system language, if available. Usar o idioma do sistema, caso disponível. - + Set the interface language to %s Definir o idioma da interface como %s - + Add &Tool... Adicionar &Ferramenta... - + Add an application to the list of tools. - Adicionar uma aplicação à lista de ferramentas. + Adicionar um aplicação à lista de ferramentas. - + &Default &Padrão - + Set the view mode back to the default. - Reverter o modo de visualização de volta ao padrão. + Reverter o modo de visualização ao padrão. - + &Setup &Configurar - + Set the view mode to Setup. Configurar o modo de visualização para Setup. - + &Live &Ao Vivo - + Set the view mode to Live. Configurar o modo de visualização como Projeção. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2169,22 +2169,22 @@ You can download the latest version from http://openlp.org/. Voce pode baixar a versão mais nova em http://openlp.org/. - + OpenLP Version Updated Versão do OpenLP Atualizada - + OpenLP Main Display Blanked Tela Principal do OpenLP em Branco - + The Main Display has been blanked out A Tela Principal foi apagada - + Default Theme: %s Tema padrão: %s @@ -2192,48 +2192,58 @@ Voce pode baixar a versão mais nova em http://openlp.org/. English Please add the name of your language here - Português (Brasil) + Inglês - + Configure &Shortcuts... Configurar &Atalhos... - + Close OpenLP Fechar o OpenLP - + Are you sure you want to close OpenLP? Você tem certeza de que quer fechar o OpenLP? - + Print the current Service Order. - Imprimir a Lista de Exibição atual. + Imprimir a Ordem de Culto atual. - + &Configure Display Tags &Configurar Etiquetas de Exibição - + Open &Data Folder... Abrir Pasta de &Dados... - + Open the folder where songs, bibles and other data resides. Abrir a pasta na qual músicas, Bíblias e outros arquivos são armazenados. - + &Autodetect &Auto detectar + + + Update Theme Images + + + + + Update the preview images for all themes. + + OpenLP.MediaManagerItem @@ -2243,44 +2253,55 @@ Voce pode baixar a versão mais nova em http://openlp.org/. Nenhum Item Selecionado - + &Add to selected Service Item &Adicionar à Lista de Exibição selecionada - + You must select one or more items to preview. Você precisa selecionar um ou mais itens para pré-visualizar. - + You must select one or more items to send live. Você precisa selecionar um ou mais itens para projetar. - + You must select one or more items. Você precisa selecionar um ou mais itens. - + You must select an existing service item to add to. - Você precisa selecionar um item da lista ao qual adicionar. + Você precisa selecionar um item de culto existente ao qual adicionar. - + Invalid Service Item - Item da Lista de Exibição inválido + Item de Ordem de Culto inválido - + You must select a %s service item. - Você precisa selecionar um item %s da Lista de Exibição. + Você precisa selecionar um item de culto %s. - + Duplicate file name %s. Filename already exists in list + Nome de arquivo duplicado%s. +O nome do arquivo já existe na lista + + + + You must select one or more items to add. + + + + + No Search Results @@ -2332,12 +2353,12 @@ Filename already exists in list Fit Page - Ajustar na Página + Ajustar à Página Fit Width - Ajustar Largura + Ajustar à Largura @@ -2390,7 +2411,7 @@ Filename already exists in list Include service item notes - Incluir notas da lista de exibição + Incluir notas do item de culto @@ -2404,19 +2425,19 @@ Filename already exists in list - Add page break before each text item. - + Add page break before each text item + Adicionar uma quebra de página antes de cada item de texto OpenLP.ScreenList - + Screen Tela - + primary primário @@ -2426,257 +2447,257 @@ Filename already exists in list Reorder Service Item - Reordenar Item da Lista de Exibição + Reordenar Item de Culto OpenLP.ServiceManager - - Load an existing service - Carregar uma Lista de Exibição existente - - - - Save this service - Salvar esta Lista de Exibição - - - - Select a theme for the service - Selecione um tema para a Lista de Exibição - - - + Move to &top Mover para o &topo - + Move item to the top of the service. - Mover item para o topo da Lista de Exibição. + Mover item para o topo da ordem de culto. - + Move &up Mover para &cima - + Move item up one position in the service. - Mover item uma posição acima na Lista de Exibição. + Mover item uma posição para cima na ordem de culto. - + Move &down Mover para &baixo - + Move item down one position in the service. - Mover item uma posição abaixo na Lista de Exibição. + Mover item uma posição para baixo na ordem de culto. - + Move to &bottom Mover para o &final - + Move item to the end of the service. - Mover item para o final da Lista de Exibição. + Mover item para o final da ordem de culto. - + &Delete From Service - &Excluir da Lista de Exibição + &Excluir da Ordem de Culto - + Delete the selected item from the service. - Excluir o item selecionado da Lista de Exibição. + Excluir o item selecionado da ordem de 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 - &Notas + &Anotações - + &Change Item Theme &Alterar Tema do Item - + File is not a valid service. The content encoding is not UTF-8. - O arquivo não é uma lista válida. + O arquivo não é uma ordem de culto válida. A codificação do conteúdo não é UTF-8. - + File is not a valid service. - Arquivo não é uma Lista de Exibição válida. + Arquivo não é uma ordem de culto válida. - + Missing Display Handler - Faltando o Handler de Exibição + 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 handler para exibí-lo + 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á faltando ou está inativo + 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 da lista. + Expandir todos os itens da ordem de culto. - + &Collapse all &Recolher todos - + Collapse all the service items. - Ocultar todos os subitens da lista. + Recolher todos os itens da ordem de culto. - + Open File Abrir Arquivo - + OpenLP Service Files (*.osz) - Listas de Exibição do OpenLP (*.osz) + Arquivos de Ordem de Culto do OpenLP (*.osz) - + 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. - + Modified Service - Lista de Exibição Modificada + Ordem de Culto Modificado - + &Start Time &Horário Inicial - + Show &Preview - Exibir &Visualização + Exibir &Pré-visualização - + Show &Live Exibir &Projeção - + The current service has been modified. Would you like to save this service? - A lista de exibição atual foi modificada. Você gostaria de salvá-la? + A ordem de culto atual foi modificada. Você gostaria de salvá esta ordem de culto? - + 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. - + O arquivo de ordem de culto não contém dados. - + Corrupt File - + Arquivo corrompido Custom Service Notes: - + Anotações de Culto Personalizados: Notes: - + Anotações: Playing time: - + Duração: - + Untitled Service - + Ordem de Culto Sem Nome - + This file is either corrupt or not an OpenLP 2.0 service file. - + O arquivo está corrompido ou não é uma arquivo de culto OpenLP 2.0 + + + + Load an existing service. + Carregar uma ordem de culto existente. + + + + Save this service. + Salvar esta ordem de culto. + + + + Select a theme for the service. + Selecionar um tema para a ordem de culto. @@ -2715,7 +2736,7 @@ A codificação do conteúdo não é UTF-8. Duplicate Shortcut - Atalho Duplicado + Atalho Repetido @@ -2730,7 +2751,7 @@ A codificação do conteúdo não é UTF-8. Select an action and click one of the buttons below to start capturing a new primary or alternate shortcut, respectively. - + Selecione uma ação e clique em um dos botões abaixo para iniciar a captura de um novo atalho primário ou alternativo, respectivamente. @@ -2740,124 +2761,129 @@ A codificação do conteúdo não é UTF-8. Custom - Customizado + Personalizado Capture shortcut. - + Capturar atalho. Restore the default shortcut of this action. - + Restaurar o atalho padrão desta ação. Restore Default Shortcuts - + Restaurar Atalhos Padrões Do you want to restore all shortcuts to their defaults? - + Deseja restaurar todos os atalhos ao seus padrões? OpenLP.SlideController - + Move to previous Mover para o anterior - + Move to next Mover para o próximo - + Hide Ocultar - + Move to live Mover para projeção - + Start continuous loop Iniciar repetição contínua - + Stop continuous loop Parar repetição contínua - + Delay between slides in seconds Intervalo entre slides em segundos - + Start playing media Iniciar a reprodução de mídia - + Go To Ir Para - + Edit and reload song preview Editar e recarregar pré-visualização da música - + Blank Screen Apagar Tela - + Blank to Theme - Apagar e deixar Fundo + Apagar e deixar o Tema - + Show Desktop Mostrar a Área de Trabalho - + Previous Slide Slide Anterior - + Next Slide - Próximo Slide + Slide Seguinte - + Previous Service Lista Anterior - + Next Service Próxima Lista - + Escape Item Escapar Item - + Start/Stop continuous loop + Iniciar/Interromper repetição contínua + + + + Add to Service @@ -2866,7 +2892,7 @@ A codificação do conteúdo não é UTF-8. Spelling Suggestions - Sugestões de Ortografia + Sugestões Ortográficas @@ -2876,7 +2902,7 @@ A codificação do conteúdo não é UTF-8. Language: - + Idioma: @@ -2899,37 +2925,37 @@ A codificação do conteúdo não é UTF-8. Item Start and Finish Time - + Tempo de Início e Término do item Start - + Início Finish - + Fim Length - + Duração Time Validation Error - + Erro de Validação de Tempo End time is set after the end of the media item - + O Tempo Final está ajustado para após o fim da Mídia Start time is after the End Time of the media item - + O Tempo Inicial está após o Tempo Final da Mídia @@ -2947,7 +2973,7 @@ A codificação do conteúdo não é UTF-8. There is no name for this theme. Please enter one. - Não há nome neste tema. Por favor forneça um. + Não há nome para este tema. Por favor forneça um. @@ -3028,69 +3054,69 @@ 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. - + 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. The content encoding is not UTF-8. O arquivo não é um tema válido. A codificação do conteúdo não é UTF-8. - + File is not a valid theme. O arquivo não é um tema válido. - + Theme %s is used in the %s plugin. O tema %s é usado no plugin %s. @@ -3110,47 +3136,47 @@ 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 apagar. - + 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) @@ -3235,7 +3261,7 @@ A codificação do conteúdo não é UTF-8. Define the font and display characteristics for the Display text - Definir a fonte de características de exibição para o texto Exibido + Definir a fonte e características de exibição para o texto Exibido @@ -3250,7 +3276,7 @@ A codificação do conteúdo não é UTF-8. Line Spacing: - Espaçamento das linhas: + Espaçamento entre linhas: @@ -3275,22 +3301,22 @@ A codificação do conteúdo não é UTF-8. Footer Area Font Details - Detalhes da Área de Rodapé + Detalhes de Fonte da Área de Rodapé Define the font and display characteristics for the Footer text - Defina as características do texto do Rodapé + Defina a fone e as características de exibição do texto de Rodapé Text Formatting Details - Detalhes da Formatação da Fonte + Detalhes da Formatação de Texto Allows additional display formatting information to be defined - Permite que formatações adicionais sejam feitas + Permite que informações adicionais de formatações de exibição sejam definidas @@ -3315,12 +3341,12 @@ A codificação do conteúdo não é UTF-8. Output Area Locations - Localização da Área de Saída + Posições das Áreas de Saída Allows you to change and move the main and footer areas. - Permite mudar e modificar as áreas principal e de rodapé. + Permite modificar e mover as áreas principal e de rodapé. @@ -3330,7 +3356,7 @@ A codificação do conteúdo não é UTF-8. &Use default location - &Usar local padrão + &Usar posição padrão @@ -3360,7 +3386,7 @@ A codificação do conteúdo não é UTF-8. Use default location - Usar local padrão + Usar posição padrão @@ -3370,7 +3396,7 @@ A codificação do conteúdo não é UTF-8. 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, criando um novo tema + Visualizar o tema e salvá-lo, substituindo o atual ou mudar o nome para criar um novo tema @@ -3380,7 +3406,7 @@ A codificação do conteúdo não é 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. - Este assistente vai ajudá-lo a criar editar seus temas. Clique no botão Próximo para começar, configurando o plano de fundo. + Este assistente vai ajudá-lo a criar e editar seus temas. Clique abaixo no botão Próximo para começar,o processo, configurando o plano de fundo. @@ -3408,7 +3434,7 @@ A codificação do conteúdo não é UTF-8. Theme Level - Nível dos Temas + Nível do Tema @@ -3418,17 +3444,17 @@ A codificação do conteúdo não é UTF-8. Use the theme from each song in the database. If a song doesn't have a theme associated with it, then use the service's theme. If the service doesn't have a theme, then use the global theme. - Use o tema de cada música na base de dados. Se uma música não tiver um tema associado com ela, então use o tema da lista de exibição. Se a lista não tiver um tema, então use o tema global. + Use o tema de cada música na base de dados. Se uma música não tiver um tema associado a ela, então usar o tema da ordem de culto. Se a ordem de culto não tiver um tema, então usar o tema global. &Service Level - Nível da &Lista de Exibição + Nível de &Ordem de Culto Use the theme from the service, overriding any of the individual songs' themes. If the service doesn't have a theme, then use the global theme. - Usar o tema da lista de exibição, sobrescrevendo qualquer um dos temas individuais das músicas. Se a lista de exibição não tiver um tema, então use o tema global. + Usar o tema da ordem de culto, ignorando qualquer temas das músicas individuais. Se a ordem de culto não tiver um tema, então usar o tema global. @@ -3438,7 +3464,7 @@ A codificação do conteúdo não é UTF-8. Use the global theme, overriding any themes associated with either the service or the songs. - Usar o tema global, sobrescrevendo qualquer tema associado às lista de exibição ou músicas. + Usar o tema global, ignorando qualquer tema associado à ordem de culto ou às músicas. @@ -3456,7 +3482,7 @@ A codificação do conteúdo não é UTF-8. Delete the selected item. - Apagar o item selecionado. + Excluir o item selecionado. @@ -3511,7 +3537,7 @@ A codificação do conteúdo não é UTF-8. Create a new service. - Criar uma nova Lista de Exibição. + Criar uma nova ordem de culto. @@ -3582,7 +3608,7 @@ A codificação do conteúdo não é UTF-8. New Service - Nova Lista de Exibição + Nova Ordem de Culto @@ -3626,7 +3652,7 @@ A codificação do conteúdo não é UTF-8. Open Service - Abrir Lista de Exibição + Abrir Ordem de Culto @@ -3651,7 +3677,7 @@ A codificação do conteúdo não é UTF-8. Replace Live Background - Trocar Plano de Fundo da Projeção + Substituir Plano de Fundo da Projeção @@ -3727,7 +3753,7 @@ A codificação do conteúdo não é UTF-8. Versão - + &Vertical Align: Alinhamento &Vertical: @@ -3764,7 +3790,7 @@ A codificação do conteúdo não é UTF-8. The openlp.org 1.x importer has been disabled due to a missing Python module. If you want to use this importer, you will need to install the "python-sqlite" module. - O importador do openlp.org 1.x foi desabilitado devido à falta de um módulo Python. Se você deseja utilizar este importador, você precisa instalar o módulo "python-sqlite". + O importador do openlp.org 1.x foi desabilitado devido à falta de um módulo Python. Se você deseja utilizar este importador, você precisará instalar o módulo "python-sqlite". @@ -3782,7 +3808,7 @@ A codificação do conteúdo não é UTF-8. Pronto. - + Starting import... Iniciando importação... @@ -3829,7 +3855,7 @@ A codificação do conteúdo não é UTF-8. Song Book Singular - Livro de Músicas + Hinário @@ -3872,12 +3898,12 @@ A codificação do conteúdo não é UTF-8. File - + Arquivo Help - + Ajuda @@ -3893,7 +3919,7 @@ A codificação do conteúdo não é UTF-8. Live Toolbar - + Barra de Ferramentas de Projeção @@ -3904,17 +3930,17 @@ A codificação do conteúdo não é UTF-8. OpenLP is already running. Do you wish to continue? - + OpenLP já está sendo executado. Deseja continuar? Settings - + Configurações Tools - + Ferramentas @@ -3929,17 +3955,12 @@ A codificação do conteúdo não é UTF-8. View - - - - - View Model - + Visualizar Duplicate Error - + Erro de duplicidade @@ -3949,18 +3970,23 @@ A codificação do conteúdo não é UTF-8. Title and/or verses not found - + Título e/ou estrófes não encontradas XML syntax error + Erro de sintaxe XML + + + + View Mode OpenLP.displayTagDialog - + Configure Display Tags Configurar Etiquetas de Exibição @@ -3972,31 +3998,6 @@ A codificação do conteúdo não é UTF-8. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. <strong>Plugin de Apresentação</strong><br />O plugin de apresentação provê a habilidade de exibir apresentações utilizando um diferente número de programas. Os programas disponíveis são exibidos em uma caixa de seleção. - - - Load a new Presentation - Carregar uma nova Apresentação - - - - Delete the selected Presentation - Excluir a Apresentação selecionada - - - - Preview the selected Presentation - Pré-visualizar a Apresentação selecionada - - - - Send the selected Presentation live - Projetar a Apresentação selecionada - - - - Add the selected Presentation to the service - Adicionar a Apresentação selecionada à Lista de Exibição - Presentation @@ -4015,56 +4016,81 @@ A codificação do conteúdo não é UTF-8. container title Apresentações + + + Load a new Presentation. + Carregar uma Apresentação nova. + + + + Delete the selected Presentation. + Apagar a Apresentação selecionada. + + + + Preview the selected Presentation. + Pré-visualizar a Apresentação selecionada. + + + + Send the selected Presentation live. + Projetar a Apresentação selecionada. + + + + Add the selected Presentation to the service. + Adicionar a Apresentação selecionada à ordem de culto + PresentationPlugin.MediaItem - + Select Presentation(s) Selecionar Apresentação(ões) - + Automatic Automático - + Present using: Apresentar usando: - + File Exists O Arquivo já Existe - + A presentation with that filename already exists. Já existe uma apresentação com este nome. - + This type of presentation is not supported. Este tipo de apresentação não é suportado. - + Presentations (%s) Apresentações (%s) - + Missing Presentation Apresentação Não Encontrada - + The Presentation %s no longer exists. A Apresentação %s não existe mais. - + The Presentation %s is incomplete, please reload. A Apresentação %s está incompleta, por favor recarregue-a. @@ -4079,7 +4105,7 @@ A codificação do conteúdo não é UTF-8. Allow presentation application to be overriden - Permitir que a aplicação de apresentações seja substituída + Permitir que o aplicativo de apresentações seja substituída @@ -4116,20 +4142,30 @@ A codificação do conteúdo não é UTF-8. RemotePlugin.RemoteTab - + Serve on IP address: Endereço IP do servidor: - + Port number: Número de porta: - + Server Settings Configurações do Servidor + + + Remote URL: + + + + + Stage view URL: + + SongUsagePlugin @@ -4189,12 +4225,12 @@ A codificação do conteúdo não é UTF-8. SongUsage container title - Registro das Músicas + Uso das Músicas Song Usage - + Uso das Músicas @@ -4207,12 +4243,12 @@ A codificação do conteúdo não é UTF-8. Delete Selected Song Usage Events? - Deseja Excluir os Eventos de Registro das Músicas? + Deseja Excluir os Eventos de Uso das Músicas? Are you sure you want to delete selected Song Usage data? - Você tem certeza que deseja excluir o registro selecionado? + Você tem certeza de que deseja excluir os dados selecionados de Uso das Músicas? @@ -4240,7 +4276,7 @@ A codificação do conteúdo não é UTF-8. to - para + até @@ -4279,7 +4315,7 @@ foi criado com sucesso. You have not set a valid output location for your song usage report. Please select an existing path on your computer. - Você precisa selecionar uma localização válida para o relatório de uso de músicas. Por favor selecione um caminho existente no seu computador. + Você precisa selecionar uma localização de sapida válida para o relatório de uso de músicas. Por favor selecione um caminho existente no seu computador. @@ -4314,36 +4350,6 @@ foi criado com sucesso. Reindexing songs... Reindexando músicas... - - - Add a new Song - Adicionar uma nova Música - - - - Edit the selected Song - Editar a Música selecioanda - - - - Delete the selected Song - Apagar a Música selecionada - - - - Preview the selected Song - Pré-visualizar a Música selecionada - - - - Send the selected Song live - Projetar a Música selecionada - - - - Add the selected Song to the service - Adicionar a Música selecionada à Lista de Exibição - Song @@ -4442,9 +4448,9 @@ foi criado com sucesso. The codepage setting is responsible for the correct character representation. Usually you are fine with the preselected choice. - O Código de páginas é responsável + A configuraçao de página de código é responsável pela correta representação dos caracteres. -Normalmente a opção pré-selecionada é segura. +Normalmente pode usar a opção pré-selecionada. @@ -4456,7 +4462,37 @@ A codificação é responsável pela correta representação dos caracteres. Exports songs using the export wizard. - Exportar músicas utilizando o assistente. + Exporta músicas utilizando o assistente de exportação. + + + + Add a new Song. + Adicionar uma Música nova. + + + + Edit the selected Song. + Editar a Música selecionada. + + + + Delete the selected Song. + Apagar a Música selecionada. + + + + Preview the selected Song. + Pré-visualizar a Música selecionada. + + + + Send the selected Song live. + Projetar a Música selecionada. + + + + Add the selected Song to the service. + Adicionar a Música selecionada à ordem de culto. @@ -4469,7 +4505,7 @@ A codificação é responsável pela correta representação dos caracteres. Display name: - Nome da Tela: + Nome da Exibição: @@ -4494,7 +4530,7 @@ A codificação é responsável pela correta representação dos caracteres. You have not set a display name for the author, combine the first and last names? - Você não definiu um nome de tela para o autor, combinar o nome e o sobrenome? + Você não definiu um nome de exibição para o autor, combinar o nome e o sobrenome? @@ -4502,7 +4538,7 @@ A codificação é responsável pela correta representação dos caracteres. The file does not have a valid extension. - + O arquivo não possui uma extensão válida. @@ -4533,7 +4569,7 @@ A codificação é responsável pela correta representação dos caracteres. &Lyrics: - &Letras: + &Letra: @@ -4548,7 +4584,7 @@ A codificação é responsável pela correta representação dos caracteres. Title && Lyrics - Título && Letras + Título && Letra @@ -4578,7 +4614,7 @@ A codificação é responsável pela correta representação dos caracteres. Book: - Livro: + Hinário: @@ -4638,17 +4674,17 @@ A codificação é responsável pela correta representação dos caracteres. This topic does not exist, do you want to add it? - Este tópico não existe, deseja adicioná-lo? + Este assunto não existe, deseja adicioná-lo? This topic is already in the list. - Este tópico já está na lista. + Este assunto já está na lista. You have not selected a valid topic. Either select a topic from the list, or type in a new topic and click the "Add Topic to Song" button to add the new topic. - Não há nenhum tópico válido selecionado. Selecione um tópico da lista ou digite um novo tópico e clique em "Adicionar Tópico à Música" para adicionar o novo tópico. + Você não selecionou um assunto válido. Selecione um assunto da lista ou digite um novo assunto e clique em "Adicionar Assunto à Música" para adicioná-lo. @@ -4678,7 +4714,7 @@ A codificação é responsável pela correta representação dos caracteres. Add Book - Adicionar Livro + Adicionar Hinário @@ -4691,7 +4727,7 @@ A codificação é responsável pela correta representação dos caracteres.Você precisa de um autor para esta música. - + You need to type some text in to the verse. Você precisa digitar algum texto na estrofe. @@ -4699,20 +4735,35 @@ A codificação é responsável pela correta representação dos caracteres. SongsPlugin.EditVerseForm - + Edit Verse Editar Estrofe - + &Verse type: Tipo de &Estrofe: - + &Insert &Inserir + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4724,7 +4775,7 @@ A codificação é responsável pela correta representação dos caracteres. This wizard will help to export your songs to the open and free OpenLyrics worship song format. - Este assistente irá ajudá-lo a exportar as suas músicas para o formato aberto e gratuito OpenLyrics. + Este assistente irá ajudá-lo a exportar as suas músicas para o formato de músicas de louvor aberto e gratuito OpenLyrics. @@ -4779,7 +4830,7 @@ A codificação é responsável pela correta representação dos caracteres. No Save Location specified - Nenhum local para Salvar foi especificado + Nenhum Localização para Salvar foi especificado @@ -4794,7 +4845,7 @@ A codificação é responsável pela correta representação dos caracteres. Select Destination Folder - Selecione uma Pasta de Destino + Selecione a Pasta de Destino @@ -4802,7 +4853,7 @@ A codificação é responsável pela correta representação dos caracteres. Select Document/Presentation Files - Selecione Documentos/Apresentações + Selecione Arquivos de Documentos/Apresentações @@ -4812,7 +4863,7 @@ A codificação é responsável pela correta representação dos caracteres. This wizard will help you to import songs from a variety of formats. Click the next button below to start the process by selecting a format to import from. - Este assistente irá ajudá-lo a importar músicas de uma variedade de formatos. Clique no botão Próximo para iniciar o processo, escolhendo um desses formatos. + Este assistente irá ajudá-lo a importar músicas de uma variedade de formatos. Clique no abaixo no botão Próximo para iniciar o processo, escolhendo um desses formatos. @@ -4837,7 +4888,7 @@ A codificação é responsável pela correta representação dos caracteres. The Songs of Fellowship importer has been disabled because OpenLP cannot find OpenOffice.org on your computer. - O importador do Songs of Fellowship foi desabilitado porque o OpenOffice.org não foi encontrado. + O importador do Songs of Fellowship foi desabilitado porque o OpenOffice.org não foi encontrado no seu computador. @@ -4902,56 +4953,56 @@ A codificação é responsável pela correta representação dos caracteres. Save to File - Salvar para um Arquivo + Salvar em Arquivo SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - Gerenciar a lista de autores, tópicos e livros - - - + Titles Títulos - + Lyrics Letra - + Delete Song(s)? Apagar Música(s)? - + 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 quer apagar as %n música(s) selecionadas? - + Tem certeza de que quer apagar a(s) %n música(s) selecionada(s)? + Tem certeza de que quer apagar as %n músicas selecionadas? + + + Maintain the lists of authors, topics and books. + Garencia a lista de autores, tópicos e hinários. + SongsPlugin.OpenLP1SongImport Not a valid openlp.org 1.x song database. - + Não é uma base de dados de músicas válida do openlp.org 1.x @@ -4959,7 +5010,7 @@ A codificação é responsável pela correta representação dos caracteres. Not a valid OpenLP 2.0 song database. - + Não é uma base de dados de músicas válida do OpenLP 2.0 @@ -5003,7 +5054,7 @@ A codificação é responsável pela correta representação dos caracteres. Your song export failed. - A sua exportação falhou. + A sua exportação de músicas falhou. @@ -5016,7 +5067,7 @@ A codificação é responsável pela correta representação dos caracteres. The following songs could not be imported: - + As seguintes músicas não puderam ser importadas: @@ -5032,7 +5083,7 @@ A codificação é responsável pela correta representação dos caracteres. Could not add your author. - Não foi possível adicionar o autor. + Não foi possível adicionar seu autor. @@ -5042,17 +5093,17 @@ A codificação é responsável pela correta representação dos caracteres. Could not add your topic. - Não foi possível adicionar o tópico. + Não foi possível adicionar seu assunto. This topic already exists. - Este tópico já existe. + Este assunto já existe. Could not add your book. - Não foi possível adicionar o livro. + Não foi possível adicionar seu livro. @@ -5062,7 +5113,7 @@ A codificação é responsável pela correta representação dos caracteres. Could not save your changes. - Não foi possível salvar as alterações. + Não foi possível salvar suas alterações. @@ -5082,7 +5133,7 @@ A codificação é responsável pela correta representação dos caracteres. This author cannot be deleted, they are currently assigned to at least one song. - Este autor não pode ser apagado, pois está associado a ao menos uma música. + Este autor não pode ser apagado, pois está associado a pelo menos uma música. @@ -5097,7 +5148,7 @@ A codificação é responsável pela correta representação dos caracteres. This topic cannot be deleted, it is currently assigned to at least one song. - Este assunto não pode ser apagado, pois está associado a ao menos uma música. + Este assunto não pode ser apagado, pois está associado a pelo menos uma música. @@ -5117,7 +5168,7 @@ A codificação é responsável pela correta representação dos caracteres. Could not save your modified author, because the author already exists. - Não foi possível salvar alteração no autor, porque o autor já existe. + Não foi possível salvar sue autor modificado, pois o autor já existe. @@ -5127,7 +5178,7 @@ A codificação é responsável pela correta representação dos caracteres. The topic %s already exists. Would you like to make songs with topic %s use the existing topic %s? - O tópico %s já existe. Deseja que as músicas com o tópico %s usem o tópico %s existente? + O assunto %s já existe. Deseja que as músicas com o assunto %s usem o assunto %s existente? @@ -5145,22 +5196,22 @@ A codificação é responsável pela correta representação dos caracteres. Enable search as you type - Habilitar preenchimento automático + Habilitar busca ao digitar Display verses on live tool bar - Exibir versículos na barra de projeção + Exibir versículos na barra de ferramentas de projeção Update service from song edit - Atualizar Lista de Exibição após editar música + Atualizar ordem de culto após editar música Add missing songs when opening service - Adicionar músicas não existantes ao abrir lista + Adicionar músicas ausentes ao abrir ordem de culto diff --git a/resources/i18n/ru.ts b/resources/i18n/ru.ts index 301d7f7f1..a13ffc066 100644 --- a/resources/i18n/ru.ts +++ b/resources/i18n/ru.ts @@ -184,22 +184,22 @@ Do you want to continue anyway? BiblePlugin.HTTPBible - + 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. Возникла проблема при загрузке секции стихов. Пожалуйста, проверьте параметры Интернет соединения. В случае если ошибка происходит при нормальном Интернет соединении, сообщите о ней на сайте разработчика в разделе "Ошибки". - + Parse Error Обработка ошибки - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. Возникла проблема при распковкие раздела стихов. Если это ошибка будет повторяться, пожалуйста сообщите о ней. @@ -207,12 +207,12 @@ Do you want to continue anyway? BiblePlugin.MediaItem - + Bible not fully loaded. Библия загружена не полностью. - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? Вы не можете комбинировать результат поиска для одной и двух Библий. Желаете удалить результаты поиска и начать новый поиск? @@ -248,82 +248,82 @@ Do you want to continue anyway? Священное Писание - - Import a Bible - Импорт Библии - - - - Add a new Bible - Добавить новую Библию - - - - Edit the selected Bible - Редактировать выбранную Библию - - - - Delete the selected Bible - Удалить выбранную Библию - - - - Preview the selected Bible - Предпросмотр выбранной Библии - - - - Send the selected Bible live - Вывести выбранный Библию на проектор - - - - Add the selected Bible to the service - Добавить выбранную Библию к служению - - - + No Book Found Книги не найдены - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. Не было найдено подходящей книги в этой Библии. Проверьте что вы правильно указали название книги. + + + Import a Bible. + + + + + Add a new Bible. + + + + + Edit the selected Bible. + + + + + Delete the selected Bible. + + + + + Preview the selected Bible. + + + + + Send the selected Bible live. + + + + + Add the selected Bible to the service. + + BiblesPlugin.BibleManager - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. В настоящее время ни одна Библия не установлена. Пожалуйста, воспользуйтесь Мастером Импорта чтобы установить одну или более Библий. - + Scripture Reference Error Ошибка ссылки на Писание - + Web Bible cannot be used Веб-Библия не может быть использована - + Text Search is not available with Web Bibles. Текстовый поиск не доступен для Веб-Библий. - + 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. Вы не указали ключевое слово для поиска. Вы можете разделить разичные ключевые слова пробелами чтобы осуществить поиск по фразе, а также можете использовать запятые, чтобы искать по каждому из указанных ключевых слов. - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -342,7 +342,7 @@ Book Chapter:Verse-Chapter:Verse Книга Глава:Стих-Глава:Стих - + No Bibles Available Библии отсутствуют @@ -578,70 +578,60 @@ demand and thus an internet connection is required. BiblesPlugin.MediaItem - + Quick - + Second: - + Find: - - Results: - - - - + Book: Сборник: - + Chapter: - + Verse: - + From: - + To: - + Text Search - - Clear - - - - - Keep - - - - + Scripture Reference + + + Toggle to keep or clear the previous results. + + BiblesPlugin.Opensong @@ -730,25 +720,35 @@ demand and thus an internet connection is required. - + You need to type in a title. - + You need to add at least one slide - + Split Slide - + Split a slide into two by inserting a slide splitter. + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide + + CustomsPlugin @@ -771,50 +771,50 @@ demand and thus an internet connection is required. - - Import a Custom + + Load a new Custom. - - Load a new Custom + + Import a Custom. - Add a new Custom + Add a new Custom. - Edit the selected Custom + Edit the selected Custom. - Delete the selected Custom + Delete the selected Custom. - - Preview the selected Custom + + Preview the selected Custom. - - Send the selected Custom live + + Send the selected Custom live. - - Add the selected Custom to the service + + Add the selected Custom to the service. GeneralTab - + General @@ -846,44 +846,44 @@ demand and thus an internet connection is required. - Load a new Image - Загрузить новое Изображение + Load a new Image. + - Add a new Image - Добавить новое Изображение + Add a new Image. + - Edit the selected Image - Изменить выбранное изображение + Edit the selected Image. + - Delete the selected Image - Удалить выбранное изображение + Delete the selected Image. + - Preview the selected Image - Просмотреть выбранное Изображение + Preview the selected Image. + - Send the selected Image live - Послать выбранное Изображение на проектор + Send the selected Image live. + - Add the selected Image to the service - Добавить выбранное изображение к Служению + Add the selected Image to the service. + ImagePlugin.ExceptionDialog - + Select Attachment Выбрать Вложение @@ -891,39 +891,39 @@ demand and thus an internet connection is required. ImagePlugin.MediaItem - + Select Image(s) Выбрать Изображение(я) - + You must select an image to delete. Вы должны выбрать изображение для удаления. - + Missing Image(s) Отсутствующие Изображения - + The following image(s) no longer exist: %s Следующие изображения больше не существуют: %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? Следующие изображения больше не существуют: %s Добавить остальные изображения? - + You must select an image to replace the background with. Вы должны выбрать изображения, которым следует заменить фон. - + There was a problem replacing your background, the image file "%s" no longer exists. Возникла проблема при замене Фона проектора, файл "%s" больше не существует. @@ -955,74 +955,74 @@ Do you want to add the other images anyway? - Load a new Media - Открыть новый медиафайл + Load a new Media. + - Add a new Media - Добавить новый медиафайл + Add a 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. + MediaPlugin.MediaItem - + Select Media Выбрать медиафайл - + You must select a media file to replace the background with. Для замены фона вы должны выбрать видеофайл. - + There was a problem replacing your background, the media file "%s" no longer exists. Возникла проблема замены фона, поскольку файл "%s" не найден. - + Missing Media File Отсутствует медиафайл - + The file %s no longer exists. Файл %s не существует. - + You must select a media file to delete. Вы должны выбрать медиафайл для удаления. - + Videos (%s);;Audio (%s);;%s (*) Videos (%s);;Audio (%s);;%s (*) @@ -1257,70 +1257,70 @@ Tinggaard, Frode Woldsund OpenLP.DisplayTagDialog - + Edit Selection - - Update - - - - + Description - + Tag - + Start tag - + End tag - + Default - + Tag Id - + Start HTML - + End HTML + + + Save + + OpenLP.DisplayTagTab - + Update Error - + Tag "n" already defined. - + Tag %s already defined. @@ -1359,7 +1359,7 @@ Tinggaard, Frode Woldsund - + Description characters to enter : %s @@ -1415,7 +1415,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1658,122 +1658,122 @@ To cancel the First Time Wizard completely, press the finish button now. 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 - + Automatically preview next item in service - + Slide loop delay: - + sec - + CCLI Details - + SongSelect username: - + SongSelect password: - + Display Position - + X - + Y - + Height - + Width - + Override display position - + Unblank display when adding new live item @@ -1794,7 +1794,7 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainDisplay - + OpenLP Display Дисплей OpenLP @@ -1802,329 +1802,329 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainWindow - + &File &Файл - + &Import &Импорт - + &Export &Экспорт - + &View &Вид - + M&ode Р&ежим - + &Tools &Инструменты - + &Settings &Настройки - + &Language &Язык - + &Help &Помощь - + Media Manager Управление Материалами - + Service Manager Управление Служением - + Theme Manager Управление Темами - + &New &Новая - + &Open &Открыть - + Open an existing service. Открыть существующее служение. - + &Save &Сохранить - + Save the current service to disk. Сохранить текущее служение на диск. - + Save &As... Сохранить к&ак... - + Save Service As Сохранить служение как - + Save the current service under a new name. Сохранить текущее служение под новым именем. - + Print the current Service Order. Распечатать текущий Порядок Служения - + E&xit Вы&ход - + Quit OpenLP Завершить работу OpenLP - + &Theme Т&ема - + Configure &Shortcuts... Настройки и б&ыстрые клавиши... - + &Configure OpenLP... &Настроить OpenLP... - + &Media Manager Управление &Материалами - + Toggle Media Manager Свернуть Менеджер Медиа - + Toggle the visibility of the media manager. Свернуть видимость Менеджера Медиа. - + &Theme Manager Управление &темами - + Toggle Theme Manager Свернуть Менеджер Тем - + Toggle the visibility of the theme manager. Свернуть видимость Менеджера Тем. - + &Service Manager Управление &Служением - + Toggle Service Manager Свернуть Менеджер Служения - + Toggle the visibility of the service manager. Свернуть видимость Менеджера Служения. - + &Preview Panel Пан&ель предпросмотра - + Toggle Preview Panel Toggle Preview Panel - + Toggle the visibility of the preview panel. Toggle the visibility of the preview panel. - + &Live Panel &Панель проектора - + Toggle Live Panel Toggle Live Panel - + Toggle the visibility of the live panel. Toggle the visibility of the live panel. - + &Plugin List &Список плагинов - + List the Plugins Выводит список плагинов - + &User Guide &Руководство пользователя - + &About &О программе - + More information about OpenLP Больше информации про OpenLP - + &Online Help &Помощь онлайн - + &Web Site &Веб-сайт - + Use the system language, if available. Использовать системный язык, если доступно. - + Set the interface language to %s Изменить язык интерфеса на %s - + Add &Tool... Добавить &Инструмент... - + Add an application to the list of tools. Добавить приложение к списку инструментов - + &Default &По умолчанию - + Set the view mode back to the default. Установить вид в режим по умолчанию. - + &Setup &Настройка - + Set the view mode to Setup. - + &Live - + Set the view mode to Live. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. - + OpenLP Version Updated - + OpenLP Main Display Blanked - + The Main Display has been blanked out - + Close OpenLP - + Are you sure you want to close OpenLP? - + Default Theme: %s @@ -2135,25 +2135,35 @@ You can download the latest version from http://openlp.org/. Английский - + &Configure Display Tags - + Open &Data Folder... - + Open the folder where songs, bibles and other data resides. - + &Autodetect + + + Update Theme Images + + + + + Update the preview images for all themes. + + OpenLP.MediaManagerItem @@ -2163,46 +2173,56 @@ You can download the latest version from http://openlp.org/. Объекты не выбраны - + &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. - + Duplicate file name %s. Filename already exists in list + + + You must select one or more items to add. + + + + + No Search Results + + OpenLP.PluginForm @@ -2324,19 +2344,19 @@ Filename already exists in list - Add page break before each text item. + Add page break before each text item OpenLP.ScreenList - + Screen - + primary @@ -2352,223 +2372,208 @@ Filename already exists in list OpenLP.ServiceManager - - Load an existing service - - - - - Save this service - - - - - Select a theme for the service - - - - + Move to &top - + Move item to the top of the service. - + Move &up - + Move item up one position in the service. - + Move &down - + Move item down one position in the service. - + Move to &bottom - + Move item to the end of the service. - + Moves the selection down the window. - + Move up - + Moves the selection up the window. - + &Delete From Service - + Delete the selected item from the service. - + &Expand all - + Expand all the service items. - + &Collapse all - + Collapse all the service items. - + Go Live - + Send the selected item to Live. - + &Add New Item - + &Add to Selected Item - + &Edit Item - + &Reorder Item - + &Notes - + &Change Item Theme - + Open File - + OpenLP Service Files (*.osz) - + Modified Service - + 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 - + &Start Time - + Show &Preview - + Show &Live - + The current service has been modified. Would you like to save this service? - + File could not be opened because it is corrupt. - + Empty File - + This service file does not contain any data. - + Corrupt File @@ -2588,15 +2593,30 @@ The content encoding is not UTF-8. - + Untitled Service - + This file is either corrupt or not an OpenLP 2.0 service file. + + + Load an existing service. + + + + + Save this service. + + + + + Select a theme for the service. + + OpenLP.ServiceNoteForm @@ -2685,100 +2705,105 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Previous Slide - + Move to previous - + Next Slide - + Move to next - + Hide - + Blank Screen - + Blank to Theme - + Show Desktop - + Start continuous loop - + Stop continuous loop - + Delay between slides in seconds - + Move to live - + Edit and reload song preview - + Start playing media - + Go To - + Previous Service - + Next Service - + Escape Item - + Start/Stop continuous loop + + + Add to Service + + OpenLP.SpellTextEdit @@ -2962,113 +2987,113 @@ The content encoding is not UTF-8. - + %s (default) - + You must select a theme to rename. - + Rename Confirmation - + Rename %s theme? - + You must select a theme to edit. - + You must select a theme to delete. - + Delete Confirmation - + Delete %s theme? - + You have not selected a theme. - + Save Theme - (%s) - + Theme Exported - + Your theme has been successfully exported. - + Theme Export Failed - + Your theme could not be exported due to an error. - + Select Theme Import File - + File is not a valid theme. The content encoding is not UTF-8. - + Validation Error - + File is not a valid theme. - + A theme with this name already exists. - + You are unable to delete the default theme. - + Theme %s is used in the %s plugin. - + OpenLP Themes (*.theme *.otz) @@ -3645,7 +3670,7 @@ The content encoding is not UTF-8. Версия - + &Vertical Align: &Вертикальная привязка: @@ -3700,7 +3725,7 @@ The content encoding is not UTF-8. Готов. - + Starting import... Начинаю импорт... @@ -3849,11 +3874,6 @@ The content encoding is not UTF-8. View - - - View Model - - Duplicate Error @@ -3874,11 +3894,16 @@ The content encoding is not UTF-8. XML syntax error + + + View Mode + + OpenLP.displayTagDialog - + Configure Display Tags @@ -3910,79 +3935,79 @@ The content encoding is not UTF-8. - Load a new Presentation + Load a new Presentation. - - Delete the selected Presentation + + Delete the selected Presentation. - - Preview the selected Presentation + + Preview the selected Presentation. - - Send the selected Presentation live + + Send the selected Presentation live. - - Add the selected Presentation to the service + + Add the selected Presentation to the service. PresentationPlugin.MediaItem - + Select Presentation(s) - + Automatic - + Present using: - + Presentations (%s) - + File Exists - + A presentation with that filename already exists. - + This type of presentation is not supported. - + Missing Presentation - + The Presentation %s is incomplete, please reload. - + The Presentation %s no longer exists. @@ -4034,20 +4059,30 @@ The content encoding is not UTF-8. RemotePlugin.RemoteTab - + Server Settings - + Serve on IP address: - + Port number: + + + Remote URL: + + + + + Stage view URL: + + SongUsagePlugin @@ -4340,41 +4375,41 @@ The encoding is responsible for the correct character representation. container title Псалмы - - - Add a new Song - Добавить новый Псалом - - - - Edit the selected Song - Редактировать выбранный Псалом - - - - Delete the selected Song - Удалить выбранный Псалом - - - - Preview the selected Song - Прсомотреть выбранный Псалом - - - - Send the selected Song live - Вывести выбранный псалом на Проектор - - - - Add the selected Song to the service - Добавить выбранный Псалом к служению - Exports songs using the export wizard. Экспортировать песни используя мастер экспорта. + + + Add a new Song. + + + + + Edit the selected Song. + + + + + Delete the selected Song. + + + + + Preview the selected Song. + + + + + Send the selected Song live. + + + + + Add the selected Song to the service. + + SongsPlugin.AuthorsForm @@ -4608,7 +4643,7 @@ The encoding is responsible for the correct character representation. Этот сборник песен не существует. Хотите добавить его? - + You need to type some text in to the verse. Вы должны указать какой-то текст в этом куплете. @@ -4616,20 +4651,35 @@ The encoding is responsible for the correct character representation. SongsPlugin.EditVerseForm - + Edit Verse Изменить стих - + &Verse type: &Тип стиха: - + &Insert &Вставить + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4825,32 +4875,27 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - Обслуживание списка авторов, тем и песенников - - - + Entire Song Всю песню - + Titles Название - + Lyrics Слова - + Delete Song(s)? Удалить песню(и)? - + Are you sure you want to delete the %n selected song(s)? Вы уверены, что хотите удалить %n выбранную песню? @@ -4859,10 +4904,15 @@ The encoding is responsible for the correct character representation. - + CCLI License: Лицензия CCLI: + + + Maintain the lists of authors, topics and books. + + SongsPlugin.OpenLP1SongImport diff --git a/resources/i18n/sv.ts b/resources/i18n/sv.ts index 92b31d26f..09af3b4db 100644 --- a/resources/i18n/sv.ts +++ b/resources/i18n/sv.ts @@ -72,7 +72,7 @@ Do you want to continue anyway? Alert &text: - Larm&text: + Larm & text: @@ -166,7 +166,7 @@ Do you want to continue anyway? Importing books... %s - + Importerar böcker... %s @@ -183,35 +183,35 @@ Do you want to continue anyway? BiblePlugin.HTTPBible - + Download Error Fel vid nerladdning - + Parse Error Fel vid analys - + 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. Det var problem med nerladdningen av versurvalet. Kontrollera internetuppkopplingen och om problemet återkommer fundera på att rapportera det som en bugg. - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. - + Det var ett problem att extrahera ditt vers-val. Om problemet uppstår igen, överväg att rapportera en bugg. BiblePlugin.MediaItem - + Bible not fully loaded. - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? @@ -228,41 +228,6 @@ Do you want to continue anyway? <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. <strong>Bibelplugin</strong><br />Bibelpluginen tillhandahåller möjligheten att visa bibelverser från olika källor under gudstjänsten. - - - Import a Bible - Importera en bibel - - - - Add a new Bible - Lägg till en bibel - - - - Edit the selected Bible - Redigera vald bibel - - - - Delete the selected Bible - Ta bort vald bibel - - - - Preview the selected Bible - Förhandsgranska vald bibeln - - - - Send the selected Bible live - - - - - Add the selected Bible to the service - Lägg till vald bibel till gudstjänstordningen - Bible @@ -282,47 +247,82 @@ Do you want to continue anyway? Biblar - + No Book Found Ingen bok hittades - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. Ingen bok hittades i vald bibel. Kontrollera stavningen på bokens namn. + + + Import a Bible. + + + + + Add a new Bible. + + + + + Edit the selected Bible. + + + + + Delete the selected Bible. + + + + + Preview the selected Bible. + + + + + Send the selected Bible live. + + + + + Add the selected Bible to the service. + + BiblesPlugin.BibleManager - + Scripture Reference Error Felaktigt bibelställe - + Web Bible cannot be used Bibel på webben kan inte användas - + Text Search is not available with Web Bibles. Textsökning är inte tillgänglig för bibel på webben. - + 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. Du angav inget sökord. Du kan ange flera sökord avskilda med mellanslag för att söka på alla sökord och du kan avskilja sökorden med kommatecken för att söka efter ett av sökorden. - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. Det finns ingen bibel installerad. Använd guiden för bibelimport och installera en eller flera biblar. - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -334,7 +334,7 @@ Book Chapter:Verse-Chapter:Verse - + No Bibles Available @@ -509,18 +509,19 @@ Changes do not affect verses already in the service. This Bible already exists. Please import a different Bible or first delete the existing one. - + Denna Bibeln finns redan. Importera en annan Bibel eller radera den nuvarande. Starting Registering bible... - + Påbörjar registrering av Bibel. Registered bible. Please note, that verses will be downloaded on demand and thus an internet connection is required. - + Bibeln är registrerad. Notera att versarna kommer laddas ner +på begäran och kräver en internetuppkoppling. @@ -571,70 +572,60 @@ demand and thus an internet connection is required. BiblesPlugin.MediaItem - + Quick Snabb - + Find: Hitta: - - Results: - Resultat: - - - + Book: Bok: - + Chapter: Kapitel: - + Verse: Vers: - + From: Från: - + To: Till: - + Text Search Textsökning - - Clear - Rensa vid ny sökning - - - - Keep - Behåll vid ny sökning - - - + Second: - + Scripture Reference + + + Toggle to keep or clear the previous results. + + BiblesPlugin.Opensong @@ -708,12 +699,12 @@ demand and thus an internet connection is required. Redigera alla diabilder på en gång. - + Split Slide Dela diabilden - + Split a slide into two by inserting a slide splitter. Dela diabilden i två genom att lägga till en diabild delare. @@ -728,12 +719,12 @@ demand and thus an internet connection is required. - + You need to type in a title. Du måste ange en titel. - + You need to add at least one slide Du måste lägga till minst en diabild @@ -742,49 +733,19 @@ demand and thus an internet connection is required. Ed&it All Red&igera alla + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide + + CustomsPlugin - - - Import a Custom - - - - - Load a new Custom - - - - - Add a new Custom - - - - - Edit the selected Custom - - - - - Delete the selected Custom - - - - - Preview the selected Custom - - - - - Send the selected Custom live - - - - - Add the selected Custom to the service - - Custom @@ -803,11 +764,51 @@ demand and thus an internet connection is required. container title Anpassad + + + Load a new Custom. + + + + + Import a Custom. + + + + + Add a new Custom. + + + + + Edit the selected Custom. + + + + + Delete the selected Custom. + + + + + Preview the selected Custom. + + + + + Send the selected Custom live. + + + + + Add the selected Custom to the service. + + GeneralTab - + General @@ -819,41 +820,6 @@ demand and thus an internet connection is required. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. - - - Load a new Image - Ladda en ny bild - - - - Add a new Image - Lägg till en ny bild - - - - Edit the selected Image - Redigera vald bild - - - - Delete the selected Image - Ta bort vald bild - - - - Preview the selected Image - Förhandsgranska vald bild - - - - Send the selected Image live - - - - - Add the selected Image to the service - - Image @@ -872,11 +838,46 @@ demand and thus an internet connection is required. container title Bilder + + + Load a new Image. + Ladda en ny bild. + + + + Add a new Image. + Lägg till en ny bild. + + + + Edit the selected Image. + Redigera den valda bilden. + + + + Delete the selected Image. + Radera den valda bilden. + + + + Preview the selected Image. + Förhandsgranska den valda bilden. + + + + Send the selected Image live. + + + + + Add the selected Image to the service. + + ImagePlugin.ExceptionDialog - + Select Attachment @@ -884,41 +885,41 @@ demand and thus an internet connection is required. ImagePlugin.MediaItem - + Select Image(s) Välj bild(er) - + You must select an image to delete. Du måste välja en bild som skall tas bort. - + You must select an image to replace the background with. Du måste välja en bild att ersätta bakgrundsbilden med. - + Missing Image(s) Bild(er) saknas - + The following image(s) no longer exist: %s Följande bild(er) finns inte längre: %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? Följande bild(er) finns inte längre: %s Vill du lägga till dom andra bilderna ändå? - + There was a problem replacing your background, the image file "%s" no longer exists. - + Det uppstod ett problem med att ersätta din bakgrund, bildfilen "%s" finns inte längre. @@ -928,41 +929,6 @@ Vill du lägga till dom andra bilderna ändå? <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. - - - Load a new Media - - - - - Add a new Media - - - - - Edit the selected Media - - - - - Delete the selected Media - - - - - Preview the selected Media - - - - - Send the selected Media live - - - - - Add the selected Media to the service - - Media @@ -981,41 +947,76 @@ Vill du lägga till dom andra bilderna ändå? container title Media + + + Load a new Media. + + + + + Add a new Media. + + + + + Edit the selected Media. + + + + + Delete the selected Media. + + + + + Preview the selected Media. + + + + + Send the selected Media live. + + + + + Add the selected Media to the service. + + MediaPlugin.MediaItem - + Select Media Välj media - + You must select a media file to delete. Du måste välja en mediafil för borttagning. - + Missing Media File - + The file %s no longer exists. - + Filen %s finns inte längre. - + You must select a media file to replace the background with. - + There was a problem replacing your background, the media file "%s" no longer exists. - + Videos (%s);;Audio (%s);;%s (*) @@ -1052,7 +1053,13 @@ OpenLP is free church presentation software, or lyrics projection software, used 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> - Öppen Källkods Låttext-projektion + +OpenLP är en gratis kyrkpresentations-mjukvara, eller ett sångtextsprojektions-program, som är till för att visa slides med sånger, Bibelversar, videos, bilder och till och med presentationer (om OpenOffice.org, PowerPoint eller PowerPoint Viewer är installerat) för kyrkor som använder en dator och projektor. + +Lär dig mer om OpenLP: http://openlp.org + +OpenLP är skriven och underhålls av friviliga. Om du vill ha mer kristen mjukvara skriven, överväg att bidra genom knappen nedan. @@ -1156,7 +1163,11 @@ Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven Meinert Jordan, Andreas Preikschat, Christian Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten Tinggaard, Frode Woldsund - + Copyright © 2004-2011 Raoul Snyman +Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, +Meinert Jordan, Andreas Preikschat, Christian Richter, Philip +Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten +Tinggaard, Frode Woldsund @@ -1250,70 +1261,70 @@ Tinggaard, Frode Woldsund OpenLP.DisplayTagDialog - + Edit Selection - - Update - - - - + Description - + Tag - + Start tag - + End tag - + Default - + Tag Id - + Start HTML - + End HTML + + + Save + + OpenLP.DisplayTagTab - + Update Error - + Tag "n" already defined. - + Tag %s already defined. @@ -1352,7 +1363,7 @@ Tinggaard, Frode Woldsund - + Description characters to enter : %s @@ -1394,7 +1405,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1624,122 +1635,122 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.GeneralTab - + General Allmänt - + Monitors Skärmar - + Select monitor for output display: Välj skärm för utsignal: - + 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 automatiskt den senaste planeringen - + Show the splash screen Visa startbilden - + Application Settings Programinställningar - + Prompt to save before starting a new service - + Automatically preview next item in service Automatiskt förhandsgranska nästa post i planeringen - + Slide loop delay: - + sec sekunder - + CCLI Details CCLI-detaljer - + SongSelect username: SongSelect användarnamn: - + SongSelect password: SongSelect lösenord: - + Display Position - + X X - + Y Y - + Height Höjd - + Width Bredd - + Override display position - + Check for updates to OpenLP - + Unblank display when adding new live item @@ -1760,7 +1771,7 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainDisplay - + OpenLP Display @@ -1768,309 +1779,309 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainWindow - + &File &Fil - + &Import &Importera - + &Export &Exportera - + &View &Visa - + M&ode &Läge - + &Tools &Verktyg - + &Settings &Inställningar - + &Language &Språk - + &Help &Hjälp - + Media Manager Mediahanterare - + Service Manager Planeringshanterare - + Theme Manager Temahanterare - + &New &Ny - + &Open &Öppna - + Open an existing service. Öppna en befintlig planering. - + &Save &Spara - + Save the current service to disk. Spara den aktuella planeringen till disk. - + Save &As... S&para som... - + Save Service As Spara planering som - + Save the current service under a new name. Spara den aktuella planeringen under ett nytt namn. - + E&xit &Avsluta - + Quit OpenLP Avsluta OpenLP - + &Theme &Tema - + &Configure OpenLP... &Konfigurera OpenLP... - + &Media Manager &Mediahanterare - + Toggle Media Manager Växla mediahanterare - + Toggle the visibility of the media manager. Växla synligheten för mediahanteraren. - + &Theme Manager &Temahanterare - + Toggle Theme Manager Växla temahanteraren - + Toggle the visibility of the theme manager. Växla synligheten för temahanteraren. - + &Service Manager &Planeringshanterare - + Toggle Service Manager Växla planeringshanterare - + Toggle the visibility of the service manager. Växla synligheten för planeringshanteraren. - + &Preview Panel &Förhandsgranskningpanel - + Toggle Preview Panel Växla förhandsgranskningspanel - + Toggle the visibility of the preview panel. Växla synligheten för förhandsgranskningspanelen. - + &Live Panel - + Toggle Live Panel - + Toggle the visibility of the live panel. - + &Plugin List &Pluginlista - + List the Plugins Lista pluginen - + &User Guide &Användarguide - + &About &Om - + More information about OpenLP Mer information om OpenLP - + &Online Help &Hjälp online - + &Web Site &Webbsida - + Use the system language, if available. Använd systemspråket om möjligt. - + Set the interface language to %s Sätt användargränssnittets språk till %s - + Add &Tool... Lägg till &verktyg... - + Add an application to the list of tools. Lägg till en applikation i verktygslistan. - + &Default &Standard - + Set the view mode back to the default. - + &Setup - + Set the view mode to Setup. - + &Live &Live - + Set the view mode to Live. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. - + OpenLP Version Updated OpenLP-versionen uppdaterad - + OpenLP Main Display Blanked OpenLPs huvuddisplay rensad - + The Main Display has been blanked out Huvuddisplayen har rensats - + Default Theme: %s Standardtema: %s @@ -2081,45 +2092,55 @@ You can download the latest version from http://openlp.org/. Svenska - + Configure &Shortcuts... - + Close OpenLP - + Are you sure you want to close OpenLP? - + Print the current Service Order. - + Open &Data Folder... - + Open the folder where songs, bibles and other data resides. - + &Configure Display Tags - + &Autodetect + + + Update Theme Images + + + + + Update the preview images for all themes. + + OpenLP.MediaManagerItem @@ -2129,46 +2150,56 @@ You can download the latest version from http://openlp.org/. Inget objekt valt - + &Add to selected Service Item &Lägg till vald planeringsobjekt - + You must select one or more items to preview. Du måste välja ett eller flera objekt att förhandsgranska. - + You must select one or more items to send live. - + You must select one or more items. Du måste välja ett eller flera objekt. - + You must select an existing service item to add to. Du måste välja en befintligt planeringsobjekt att lägga till till. - + Invalid Service Item Felaktigt planeringsobjekt - + You must select a %s service item. Du måste välja ett %s planeringsobjekt. - + Duplicate file name %s. Filename already exists in list + + + You must select one or more items to add. + + + + + No Search Results + + OpenLP.PluginForm @@ -2290,19 +2321,19 @@ Filename already exists in list - Add page break before each text item. + Add page break before each text item OpenLP.ScreenList - + Screen - + primary @@ -2318,223 +2349,208 @@ Filename already exists in list OpenLP.ServiceManager - - Load an existing service - Ladda en planering - - - - Save this service - Spara denna planering - - - - Select a theme for the service - Välj ett tema för planeringen - - - + Move to &top Flytta högst &upp - + Move item to the top of the service. - + Move &up Flytta &upp - + Move item up one position in the service. - + Move &down Flytta &ner - + Move item down one position in the service. - + Move to &bottom Flytta längst &ner - + Move item to the end of the service. - + &Delete From Service &Ta bort från planeringen - + Delete the selected item from the service. - + &Add New Item - + &Add to Selected Item - + &Edit Item &Redigera objekt - + &Reorder Item - + &Notes &Anteckningar - + &Change Item Theme &Byt objektets tema - + 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 - + &Expand all - + Expand all the service items. - + &Collapse all - + Collapse all the service items. - + Open File - + OpenLP Service Files (*.osz) - + Moves the selection down the window. - + Move up - + Moves the selection up the window. - + Go Live - + Send the selected item to Live. - + Modified Service - + &Start Time - + Show &Preview - + Show &Live - + The current service has been modified. Would you like to save this service? - + File could not be opened because it is corrupt. - + Empty File - + This service file does not contain any data. - + Corrupt File @@ -2554,15 +2570,30 @@ The content encoding is not UTF-8. - + Untitled Service - + This file is either corrupt or not an OpenLP 2.0 service file. + + + Load an existing service. + + + + + Save this service. + + + + + Select a theme for the service. + + OpenLP.ServiceNoteForm @@ -2651,100 +2682,105 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Move to previous Flytta till föregående - + Move to next Flytta till nästa - + Hide - + Move to live Flytta till live - + Start continuous loop Börja oändlig loop - + Stop continuous loop Stoppa upprepad loop - + Delay between slides in seconds Fördröjning mellan bilder, i sekunder - + Start playing media Börja spela media - + Go To - + Edit and reload song preview - + Blank Screen - + Blank to Theme - + Show Desktop - + Previous Slide - + Next Slide - + Previous Service - + Next Service - + Escape Item - + Start/Stop continuous loop + + + Add to Service + + OpenLP.SpellTextEdit @@ -2913,68 +2949,68 @@ The content encoding is not UTF-8. - + %s (default) - + You must select a theme to edit. - + You are unable to delete the default theme. Du kan inte ta bort standardtemat. - + You have not selected a theme. Du har inte valt ett tema. - + Save Theme - (%s) Spara tema - (%s) - + Theme Exported - + Your theme has been successfully exported. - + Theme Export Failed - + Your theme could not be exported due to an error. - + Select Theme Import File Välj tema importfil - + File is not a valid theme. The content encoding is not UTF-8. - + File is not a valid theme. Filen är inte ett giltigt tema. - + Theme %s is used in the %s plugin. @@ -2994,47 +3030,47 @@ The content encoding is not UTF-8. - + You must select a theme to rename. - + Rename Confirmation - + Rename %s theme? - + You must select a theme to delete. - + Delete Confirmation - + Delete %s theme? - + Validation Error - + A theme with this name already exists. - + OpenLP Themes (*.theme *.otz) @@ -3458,7 +3494,7 @@ The content encoding is not UTF-8. - + &Vertical Align: @@ -3666,7 +3702,7 @@ The content encoding is not UTF-8. - + Starting import... @@ -3815,11 +3851,6 @@ The content encoding is not UTF-8. View - - - View Model - - Duplicate Error @@ -3840,11 +3871,16 @@ The content encoding is not UTF-8. XML syntax error + + + View Mode + + OpenLP.displayTagDialog - + Configure Display Tags @@ -3856,31 +3892,6 @@ The content encoding is not UTF-8. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. - - - Load a new Presentation - - - - - Delete the selected Presentation - - - - - Preview the selected Presentation - - - - - Send the selected Presentation live - - - - - Add the selected Presentation to the service - - Presentation @@ -3899,56 +3910,81 @@ The content encoding is not UTF-8. container title Presentationer + + + Load a new Presentation. + + + + + Delete the selected Presentation. + + + + + Preview the selected Presentation. + + + + + Send the selected Presentation live. + + + + + Add the selected Presentation to the service. + + PresentationPlugin.MediaItem - + Select Presentation(s) Välj presentation(er) - + Automatic Automatisk - + Present using: Presentera genom: - + File Exists - + A presentation with that filename already exists. En presentation med det namnet finns redan. - + This type of presentation is not supported. - + Presentations (%s) - + Missing Presentation - + The Presentation %s no longer exists. - + The Presentation %s is incomplete, please reload. @@ -4000,20 +4036,30 @@ The content encoding is not UTF-8. RemotePlugin.RemoteTab - + Serve on IP address: - + Port number: - + Server Settings + + + Remote URL: + + + + + Stage view URL: + + SongUsagePlugin @@ -4196,36 +4242,6 @@ has been successfully created. Reindexing songs... - - - Add a new Song - - - - - Edit the selected Song - - - - - Delete the selected Song - - - - - Preview the selected Song - - - - - Send the selected Song live - - - - - Add the selected Song to the service - - Song @@ -4337,6 +4353,36 @@ The encoding is responsible for the correct character representation. Exports songs using the export wizard. + + + Add a new Song. + + + + + Edit the selected Song. + + + + + Delete the selected Song. + + + + + Preview the selected Song. + + + + + Send the selected Song live. + + + + + Add the selected Song to the service. + + SongsPlugin.AuthorsForm @@ -4570,7 +4616,7 @@ The encoding is responsible for the correct character representation. - + You need to type some text in to the verse. @@ -4578,20 +4624,35 @@ The encoding is responsible for the correct character representation. SongsPlugin.EditVerseForm - + Edit Verse Redigera vers - + &Verse type: - + &Insert + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4787,43 +4848,43 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - Hantera listorna över författare, ämnen och böcker - - - + Titles Titlar - + Lyrics Sångtexter - + Delete Song(s)? - + CCLI License: - + Entire Song - + Are you sure you want to delete the %n selected song(s)? + + + Maintain the lists of authors, topics and books. + + SongsPlugin.OpenLP1SongImport diff --git a/resources/i18n/zh_CN.ts b/resources/i18n/zh_CN.ts index edb536d28..b33cdd6c0 100644 --- a/resources/i18n/zh_CN.ts +++ b/resources/i18n/zh_CN.ts @@ -182,22 +182,22 @@ Do you want to continue anyway? BiblePlugin.HTTPBible - + 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. - + Parse Error - + There was a problem extracting your verse selection. If this error continues to occur please consider reporting a bug. @@ -205,12 +205,12 @@ Do you want to continue anyway? BiblePlugin.MediaItem - + Bible not fully loaded. - + You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? @@ -227,41 +227,6 @@ Do you want to continue anyway? <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - - - Import a Bible - - - - - Add a new Bible - - - - - Edit the selected Bible - - - - - Delete the selected Bible - - - - - Preview the selected Bible - - - - - Send the selected Bible live - - - - - Add the selected Bible to the service - - Bible @@ -281,46 +246,81 @@ Do you want to continue anyway? - + No Book Found - + No matching book could be found in this Bible. Check that you have spelled the name of the book correctly. + + + Import a Bible. + + + + + Add a new Bible. + + + + + Edit the selected Bible. + + + + + Delete the selected Bible. + + + + + Preview the selected Bible. + + + + + Send the selected Bible live. + + + + + Add the selected Bible to the service. + + BiblesPlugin.BibleManager - + Scripture Reference Error - + Web Bible cannot be used - + Text Search is not available with Web Bibles. - + 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. - + There are no Bibles currently installed. Please use the Import Wizard to install one or more Bibles. - + Your scripture reference is either not supported by OpenLP or is invalid. Please make sure your reference conforms to one of the following patterns: Book Chapter @@ -332,7 +332,7 @@ Book Chapter:Verse-Chapter:Verse - + No Bibles Available @@ -568,70 +568,60 @@ demand and thus an internet connection is required. BiblesPlugin.MediaItem - + Quick - + Find: - - Results: - - - - + Book: - + Chapter: - + Verse: - + From: - + To: - + Text Search - - Clear - - - - - Keep - - - - + Second: - + Scripture Reference + + + Toggle to keep or clear the previous results. + + BiblesPlugin.Opensong @@ -705,12 +695,12 @@ demand and thus an internet connection is required. - + Split Slide - + Split a slide into two by inserting a slide splitter. @@ -725,12 +715,12 @@ demand and thus an internet connection is required. - + You need to type in a title. - + You need to add at least one slide @@ -739,49 +729,19 @@ demand and thus an internet connection is required. Ed&it All + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Insert Slide + + CustomsPlugin - - - Import a Custom - - - - - Load a new Custom - - - - - Add a new Custom - - - - - Edit the selected Custom - - - - - Delete the selected Custom - - - - - Preview the selected Custom - - - - - Send the selected Custom live - - - - - Add the selected Custom to the service - - Custom @@ -800,11 +760,51 @@ demand and thus an internet connection is required. container title + + + Load a new Custom. + + + + + Import a Custom. + + + + + Add a new Custom. + + + + + Edit the selected Custom. + + + + + Delete the selected Custom. + + + + + Preview the selected Custom. + + + + + Send the selected Custom live. + + + + + Add the selected Custom to the service. + + GeneralTab - + General @@ -816,41 +816,6 @@ demand and thus an internet connection is required. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. - - - Load a new Image - - - - - Add a new Image - - - - - Edit the selected Image - - - - - Delete the selected Image - - - - - Preview the selected Image - - - - - Send the selected Image live - - - - - Add the selected Image to the service - - Image @@ -869,11 +834,46 @@ demand and thus an internet connection is required. container title + + + Load a new Image. + + + + + Add a new Image. + + + + + Edit the selected Image. + + + + + Delete the selected Image. + + + + + Preview the selected Image. + + + + + Send the selected Image live. + + + + + Add the selected Image to the service. + + ImagePlugin.ExceptionDialog - + Select Attachment @@ -881,38 +881,38 @@ demand and thus an internet connection is required. ImagePlugin.MediaItem - + Select Image(s) - + You must select an image to delete. - + You must select an image to replace the background with. - + Missing Image(s) - + The following image(s) no longer exist: %s - + The following image(s) no longer exist: %s Do you want to add the other images anyway? - + There was a problem replacing your background, the image file "%s" no longer exists. @@ -924,41 +924,6 @@ Do you want to add the other images anyway? <strong>Media Plugin</strong><br />The media plugin provides playback of audio and video. - - - Load a new Media - - - - - Add a new Media - - - - - Edit the selected Media - - - - - Delete the selected Media - - - - - Preview the selected Media - - - - - Send the selected Media live - - - - - Add the selected Media to the service - - Media @@ -977,41 +942,76 @@ Do you want to add the other images anyway? container title + + + Load a new Media. + + + + + Add a new Media. + + + + + Edit the selected Media. + + + + + Delete the selected Media. + + + + + Preview the selected Media. + + + + + Send the selected Media live. + + + + + Add the selected Media to the service. + + MediaPlugin.MediaItem - + Select Media - + You must select a media file to delete. - + You must select a media file to replace the background with. - + There was a problem replacing your background, the media file "%s" no longer exists. - + Missing Media File - + The file %s no longer exists. - + Videos (%s);;Audio (%s);;%s (*) @@ -1246,70 +1246,70 @@ Tinggaard, Frode Woldsund OpenLP.DisplayTagDialog - + Edit Selection - - Update - - - - + Description - + Tag - + Start tag - + End tag - + Default - + Tag Id - + Start HTML - + End HTML + + + Save + + OpenLP.DisplayTagTab - + Update Error - + Tag "n" already defined. - + Tag %s already defined. @@ -1348,7 +1348,7 @@ Tinggaard, Frode Woldsund - + Description characters to enter : %s @@ -1390,7 +1390,7 @@ Version: %s - + *OpenLP Bug Report* Version: %s @@ -1620,122 +1620,122 @@ To cancel the First Time Wizard completely, press the finish button now. 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 - + Slide loop delay: - + 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 @@ -1756,7 +1756,7 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainDisplay - + OpenLP Display @@ -1764,309 +1764,309 @@ To cancel the First Time Wizard completely, press the finish button now. OpenLP.MainWindow - + &File - + &Import - + &Export - + &View - + M&ode - + &Tools - + &Settings - + &Language - + &Help - + Media Manager - + Service Manager - + Theme Manager - + &New - + &Open - + Open an existing service. - + &Save - + Save the current service to disk. - + Save &As... - + Save Service As - + Save the current service under a new name. - + E&xit - + Quit OpenLP - + &Theme - + &Configure OpenLP... - + &Media Manager - + Toggle Media Manager - + Toggle the visibility of the media manager. - + &Theme Manager - + Toggle Theme Manager - + Toggle the visibility of the theme manager. - + &Service Manager - + Toggle Service Manager - + Toggle the visibility of the service manager. - + &Preview Panel - + Toggle Preview Panel - + Toggle the visibility of the preview panel. - + &Live Panel - + Toggle Live Panel - + Toggle the visibility of the live panel. - + &Plugin List - + List the Plugins - + &User Guide - + &About - + More information about OpenLP - + &Online Help - + &Web Site - + Use the system language, if available. - + Set the interface language to %s - + Add &Tool... - + Add an application to the list of tools. - + &Default - + Set the view mode back to the default. - + &Setup - + Set the view mode to Setup. - + &Live - + Set the view mode to Live. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. - + OpenLP Version Updated - + OpenLP Main Display Blanked - + The Main Display has been blanked out - + Default Theme: %s @@ -2077,45 +2077,55 @@ You can download the latest version from http://openlp.org/. - + Configure &Shortcuts... - + Close OpenLP - + Are you sure you want to close OpenLP? - + Print the current Service Order. - + &Configure Display Tags - + Open &Data Folder... - + Open the folder where songs, bibles and other data resides. - + &Autodetect + + + Update Theme Images + + + + + Update the preview images for all themes. + + OpenLP.MediaManagerItem @@ -2125,46 +2135,56 @@ You can download the latest version from http://openlp.org/. - + &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. - + Duplicate file name %s. Filename already exists in list + + + You must select one or more items to add. + + + + + No Search Results + + OpenLP.PluginForm @@ -2286,19 +2306,19 @@ Filename already exists in list - Add page break before each text item. + Add page break before each text item OpenLP.ScreenList - + Screen - + primary @@ -2314,223 +2334,208 @@ Filename already exists in list OpenLP.ServiceManager - - Load an existing service - - - - - Save this service - - - - - Select a theme for the service - - - - + Move to &top - + Move item to the top of the service. - + Move &up - + Move item up one position in the service. - + Move &down - + Move item down one position in the service. - + Move to &bottom - + Move item to the end of the service. - + &Delete From Service - + Delete the selected item from the service. - + &Add New Item - + &Add to Selected Item - + &Edit Item - + &Reorder Item - + &Notes - + &Change Item Theme - + 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 - + &Expand all - + Expand all the service items. - + &Collapse all - + Collapse all the service items. - + Open File - + Moves the selection down the window. - + Move up - + Moves the selection up the window. - + Go Live - + Send the selected item to Live. - + &Start Time - + Show &Preview - + Show &Live - + Modified Service - + The current service has been modified. Would you like to save this service? - + File could not be opened because it is corrupt. - + Empty File - + This service file does not contain any data. - + Corrupt File @@ -2550,15 +2555,30 @@ The content encoding is not UTF-8. - + Untitled Service - + This file is either corrupt or not an OpenLP 2.0 service file. + + + Load an existing service. + + + + + Save this service. + + + + + Select a theme for the service. + + OpenLP.ServiceNoteForm @@ -2647,100 +2667,105 @@ The content encoding is not UTF-8. OpenLP.SlideController - + Move to previous - + Move to next - + Hide - + Move to live - + Edit and reload song preview - + Start continuous loop - + Stop continuous loop - + Delay between slides in seconds - + Start playing media - + Go To - + Blank Screen - + Blank to Theme - + Show Desktop - + Previous Slide - + Next Slide - + Previous Service - + Next Service - + Escape Item - + Start/Stop continuous loop + + + Add to Service + + OpenLP.SpellTextEdit @@ -2909,68 +2934,68 @@ The content encoding is not UTF-8. - + %s (default) - + You must select a theme to edit. - + You are unable to delete the default theme. - + Theme %s is used in the %s plugin. - + You have not selected a theme. - + Save Theme - (%s) - + Theme Exported - + Your theme has been successfully exported. - + Theme Export Failed - + Your theme could not be exported due to an error. - + Select Theme Import File - + File is not a valid theme. The content encoding is not UTF-8. - + File is not a valid theme. @@ -2990,47 +3015,47 @@ The content encoding is not UTF-8. - + You must select a theme to rename. - + Rename Confirmation - + Rename %s theme? - + You must select a theme to delete. - + Delete Confirmation - + Delete %s theme? - + Validation Error - + A theme with this name already exists. - + OpenLP Themes (*.theme *.otz) @@ -3607,7 +3632,7 @@ The content encoding is not UTF-8. - + &Vertical Align: @@ -3662,7 +3687,7 @@ The content encoding is not UTF-8. - + Starting import... @@ -3811,11 +3836,6 @@ The content encoding is not UTF-8. View - - - View Model - - Duplicate Error @@ -3836,11 +3856,16 @@ The content encoding is not UTF-8. XML syntax error + + + View Mode + + OpenLP.displayTagDialog - + Configure Display Tags @@ -3852,31 +3877,6 @@ The content encoding is not UTF-8. <strong>Presentation Plugin</strong><br />The presentation plugin provides the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. - - - Load a new Presentation - - - - - Delete the selected Presentation - - - - - Preview the selected Presentation - - - - - Send the selected Presentation live - - - - - Add the selected Presentation to the service - - Presentation @@ -3895,56 +3895,81 @@ The content encoding is not UTF-8. container title + + + Load a new Presentation. + + + + + Delete the selected Presentation. + + + + + Preview the selected Presentation. + + + + + Send the selected Presentation live. + + + + + Add the selected Presentation to the service. + + PresentationPlugin.MediaItem - + Select Presentation(s) - + Automatic - + Present using: - + File Exists - + A presentation with that filename already exists. - + This type of presentation is not supported. - + Presentations (%s) - + Missing Presentation - + The Presentation %s no longer exists. - + The Presentation %s is incomplete, please reload. @@ -3996,20 +4021,30 @@ The content encoding is not UTF-8. RemotePlugin.RemoteTab - + Serve on IP address: - + Port number: - + Server Settings + + + Remote URL: + + + + + Stage view URL: + + SongUsagePlugin @@ -4192,36 +4227,6 @@ has been successfully created. Reindexing songs... - - - Add a new Song - - - - - Edit the selected Song - - - - - Delete the selected Song - - - - - Preview the selected Song - - - - - Send the selected Song live - - - - - Add the selected Song to the service - - Arabic (CP-1256) @@ -4333,6 +4338,36 @@ The encoding is responsible for the correct character representation. Exports songs using the export wizard. + + + Add a new Song. + + + + + Edit the selected Song. + + + + + Delete the selected Song. + + + + + Preview the selected Song. + + + + + Send the selected Song live. + + + + + Add the selected Song to the service. + + SongsPlugin.AuthorsForm @@ -4566,7 +4601,7 @@ The encoding is responsible for the correct character representation. - + You need to type some text in to the verse. @@ -4574,20 +4609,35 @@ The encoding is responsible for the correct character representation. SongsPlugin.EditVerseForm - + Edit Verse - + &Verse type: - + &Insert + + + &Split + + + + + Split a slide into two only if it does not fit on the screen as one slide. + + + + + Split a slide into two by inserting a verse splitter. + + SongsPlugin.ExportWizardForm @@ -4783,42 +4833,42 @@ The encoding is responsible for the correct character representation. SongsPlugin.MediaItem - - Maintain the lists of authors, topics and books - - - - + Titles - + Lyrics - + Delete Song(s)? - + CCLI License: - + Entire Song - + Are you sure you want to delete the %n selected song(s)? + + + Maintain the lists of authors, topics and books. + + SongsPlugin.OpenLP1SongImport From 06d561f9fc3c80053950f3732c03ab932ed9f778 Mon Sep 17 00:00:00 2001 From: M2j Date: Mon, 23 May 2011 22:42:07 +0200 Subject: [PATCH 047/190] localized string sorting --- openlp/core/ui/thememanager.py | 3 ++- openlp/plugins/bibles/forms/bibleimportform.py | 5 +++-- openlp/plugins/bibles/lib/mediaitem.py | 5 +++-- openlp/plugins/songs/lib/mediaitem.py | 10 ++-------- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 190939ab9..659ee4137 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -28,6 +28,7 @@ import os import zipfile import shutil import logging +import locale from xml.etree.ElementTree import ElementTree, XML from PyQt4 import QtCore, QtGui @@ -461,7 +462,7 @@ class ThemeManager(QtGui.QWidget): QtCore.QVariant(theme.theme_name)) self.configUpdated() files = SettingsManager.get_files(self.settingsSection, u'.png') - files.sort() + files.sort(key=lambda filename: unicode(filename), 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/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index 439724b66..10815af46 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -30,6 +30,7 @@ import csv import logging import os import os.path +import locale from PyQt4 import QtCore, QtGui @@ -531,7 +532,7 @@ class BibleImportForm(OpenLPWizard): """ self.webTranslationComboBox.clear() bibles = self.web_bible_list[index].keys() - bibles.sort() + bibles.sort(cmp=locale.strcoll) self.webTranslationComboBox.addItems(bibles) def onOsisBrowseButtonClicked(self): @@ -765,4 +766,4 @@ class BibleImportForm(OpenLPWizard): self.progressLabel.setText(translate( 'BiblesPlugin.ImportWizardForm', 'Your Bible import failed.')) del self.manager.db_cache[importer.name] - delete_database(self.plugin.settingsSection, importer.file) \ No newline at end of file + delete_database(self.plugin.settingsSection, importer.file) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 9a9e3f9ec..2e21b9172 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -25,6 +25,7 @@ ############################################################################### import logging +import locale from PyQt4 import QtCore, QtGui @@ -358,7 +359,7 @@ class BibleMediaItem(MediaManagerItem): self.advancedSecondComboBox.addItem(u'') # Get all bibles and sort the list. bibles = self.parent.manager.get_bibles().keys() - bibles.sort() + bibles.sort(cmp=locale.strcoll) # Load the bibles into the combo boxes. for bible in bibles: if bible: @@ -442,7 +443,7 @@ class BibleMediaItem(MediaManagerItem): if bible: book_data = bibles[bible].get_books() books = [book.name + u' ' for book in book_data] - books.sort() + books.sort(cmp=locale.strcoll) add_widget_completer(books, self.quickSearchEdit) def onImportClick(self): diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 78c7825be..f4d4ee607 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -229,7 +229,8 @@ class SongMediaItem(MediaManagerItem): def displayResultsSong(self, searchresults): log.debug(u'display results Song') self.listView.clear() - searchresults.sort(cmp=self.collateSongTitles) + searchresults.sort(key=lambda song: unicode(song.title), + cmp=locale.strcoll) for song in searchresults: author_list = [author.display_name for author in song.authors] song_title = unicode(song.title) @@ -475,13 +476,6 @@ class SongMediaItem(MediaManagerItem): Receiver.send_message(u'service_item_update', u'%s:%s' % (editId, item._uuid)) - def collateSongTitles(self, song_1, song_2): - """ - Locale aware collation of song titles - """ - return locale.strcoll(unicode(song_1.title.lower()), - unicode(song_2.title.lower())) - def search(self, string): """ Search for some songs From 6b046d9afb20f67d6b33a10d946a9a37ed810821 Mon Sep 17 00:00:00 2001 From: Josh Miller Date: Mon, 23 May 2011 19:23:00 -0400 Subject: [PATCH 048/190] Another try at the code for enabling loop through a checkbox in general settings as the signal but ignores it in slidecontroller for some odd reason acting like it's not there... --- openlp.pyw | 1 + openlp/core/ui/generaltab.py | 2 +- openlp/core/ui/slidecontroller.py | 2334 ++++++++++++++--------------- 3 files changed, 1156 insertions(+), 1181 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index 76d334bae..f3b380c7a 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -257,3 +257,4 @@ if __name__ == u'__main__': Instantiate and run the application. """ main() + diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index ad01a592f..8c9336656 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -272,7 +272,7 @@ class GeneralTab(SettingsTab): self.showSplashCheckBox.setChecked(settings.value(u'show splash', QtCore.QVariant(True)).toBool()) self.checkForUpdatesCheckBox.setChecked(settings.value(u'update check', - QtCore.QVariant(True)).toBool()) + QtCore.QVariant(False)).toBool()) self.autoPreviewCheckBox.setChecked(settings.value(u'auto preview', QtCore.QVariant(False)).toBool()) self.enableLoopCheckbox.setChecked(settings.value(u'enable slide loop', diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index df595fba5..4da75ebb6 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -1,1181 +1,1155 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 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 # -# --------------------------------------------------------------------------- # -# 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 the GNU General Public License for # -# more details. # -# # -# You should have received a copy of the GNU General Public License along # -# with this program; if not, write to the Free Software Foundation, Inc., 59 # -# Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### - -import logging -import os - -from PyQt4 import QtCore, QtGui -from PyQt4.phonon import Phonon - -from openlp.core.lib import OpenLPToolbar, Receiver, resize_image, \ - ItemCapabilities, translate -from openlp.core.lib.ui import UiStrings, shortcut_action -from openlp.core.ui import HideMode, MainDisplay, ScreenList -from openlp.core.utils.actions import ActionList, CategoryOrder - -log = logging.getLogger(__name__) - -class SlideList(QtGui.QTableWidget): - """ - Customised version of QTableWidget which can respond to keyboard - events. - """ - def __init__(self, parent=None, name=None): - QtGui.QTableWidget.__init__(self, parent.controller) - self.parent = parent - - -class SlideController(QtGui.QWidget): - """ - SlideController is the slide controller widget. This widget is what the - user uses to control the displaying of verses/slides/etc on the screen. - """ - def __init__(self, parent, isLive=False): - """ - Set up the Slide Controller. - """ - QtGui.QWidget.__init__(self, parent) - self.isLive = isLive - self.parent = parent - self.screens = ScreenList.get_instance() - self.ratio = float(self.screens.current[u'size'].width()) / \ - float(self.screens.current[u'size'].height()) - self.image_manager = self.parent.image_manager - self.loopList = [ - u'Start Loop', - u'Loop Separator', - u'Image SpinBox' - ] - self.songEditList = [ - u'Edit Song', - ] - self.volume = 10 - self.timer_id = 0 - self.songEdit = False - self.selectedRow = 0 - self.serviceItem = None - self.alertTab = None - self.panel = QtGui.QWidget(parent.controlSplitter) - self.slideList = {} - # Layout for holding panel - self.panelLayout = QtGui.QVBoxLayout(self.panel) - self.panelLayout.setSpacing(0) - self.panelLayout.setMargin(0) - # Type label for the top of the slide controller - self.typeLabel = QtGui.QLabel(self.panel) - if self.isLive: - self.typeLabel.setText(UiStrings().Live) - self.split = 1 - self.typePrefix = u'live' - else: - self.typeLabel.setText(UiStrings().Preview) - self.split = 0 - self.typePrefix = u'preview' - self.typeLabel.setStyleSheet(u'font-weight: bold; font-size: 12pt;') - self.typeLabel.setAlignment(QtCore.Qt.AlignCenter) - self.panelLayout.addWidget(self.typeLabel) - # Splitter - self.splitter = QtGui.QSplitter(self.panel) - self.splitter.setOrientation(QtCore.Qt.Vertical) - self.panelLayout.addWidget(self.splitter) - # Actual controller section - self.controller = QtGui.QWidget(self.splitter) - self.controller.setGeometry(QtCore.QRect(0, 0, 100, 536)) - self.controller.setSizePolicy( - QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, - QtGui.QSizePolicy.Maximum)) - self.controllerLayout = QtGui.QVBoxLayout(self.controller) - self.controllerLayout.setSpacing(0) - self.controllerLayout.setMargin(0) - # Controller list view - self.previewListWidget = SlideList(self) - self.previewListWidget.setColumnCount(1) - self.previewListWidget.horizontalHeader().setVisible(False) - self.previewListWidget.setColumnWidth(0, self.controller.width()) - self.previewListWidget.isLive = self.isLive - self.previewListWidget.setObjectName(u'PreviewListWidget') - self.previewListWidget.setSelectionBehavior( - QtGui.QAbstractItemView.SelectRows) - self.previewListWidget.setSelectionMode( - QtGui.QAbstractItemView.SingleSelection) - self.previewListWidget.setEditTriggers( - QtGui.QAbstractItemView.NoEditTriggers) - self.previewListWidget.setHorizontalScrollBarPolicy( - QtCore.Qt.ScrollBarAlwaysOff) - self.previewListWidget.setAlternatingRowColors(True) - self.controllerLayout.addWidget(self.previewListWidget) - # Build the full toolbar - self.toolbar = OpenLPToolbar(self) - sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, - QtGui.QSizePolicy.Fixed) - sizeToolbarPolicy.setHorizontalStretch(0) - sizeToolbarPolicy.setVerticalStretch(0) - sizeToolbarPolicy.setHeightForWidth( - self.toolbar.sizePolicy().hasHeightForWidth()) - self.toolbar.setSizePolicy(sizeToolbarPolicy) - self.previousItem = self.toolbar.addToolbarButton( - translate('OpenLP.SlideController', 'Previous Slide'), - u':/slides/slide_previous.png', - translate('OpenLP.SlideController', 'Move to previous'), - self.onSlideSelectedPrevious, - shortcuts=[QtCore.Qt.Key_Up, QtCore.Qt.Key_PageUp], - context=QtCore.Qt.WidgetWithChildrenShortcut) - self.nextItem = self.toolbar.addToolbarButton( - translate('OpenLP.SlideController', 'Next Slide'), - u':/slides/slide_next.png', - translate('OpenLP.SlideController', 'Move to next'), - self.onSlideSelectedNext, - shortcuts=[QtCore.Qt.Key_Down, QtCore.Qt.Key_PageDown], - context=QtCore.Qt.WidgetWithChildrenShortcut) - self.toolbar.addToolbarSeparator(u'Close Separator') - if self.isLive: - self.hideMenu = QtGui.QToolButton(self.toolbar) - self.hideMenu.setText(translate('OpenLP.SlideController', 'Hide')) - self.hideMenu.setPopupMode(QtGui.QToolButton.MenuButtonPopup) - self.toolbar.addToolbarWidget(u'Hide Menu', self.hideMenu) - self.hideMenu.setMenu(QtGui.QMenu( - translate('OpenLP.SlideController', 'Hide'), self.toolbar)) - self.blankScreen = shortcut_action(self.hideMenu, u'blankScreen', - [QtCore.Qt.Key_Period], self.onBlankDisplay, - u':/slides/slide_blank.png', False, UiStrings().LiveToolbar) - self.blankScreen.setText( - translate('OpenLP.SlideController', 'Blank Screen')) - self.themeScreen = shortcut_action(self.hideMenu, u'themeScreen', - [QtGui.QKeySequence(u'T')], self.onThemeDisplay, - u':/slides/slide_theme.png', False, UiStrings().LiveToolbar) - self.themeScreen.setText( - translate('OpenLP.SlideController', 'Blank to Theme')) - self.desktopScreen = shortcut_action(self.hideMenu, - u'desktopScreen', [QtGui.QKeySequence(u'D')], - self.onHideDisplay, u':/slides/slide_desktop.png', False, - UiStrings().LiveToolbar) - self.desktopScreen.setText( - translate('OpenLP.SlideController', 'Show Desktop')) - self.hideMenu.setDefaultAction(self.blankScreen) - self.hideMenu.menu().addAction(self.blankScreen) - self.hideMenu.menu().addAction(self.themeScreen) - self.hideMenu.menu().addAction(self.desktopScreen) - self.toolbar.addToolbarSeparator(u'Loop Separator') - startLoop = self.toolbar.addToolbarButton( - # Does not need translating - control string. - u'Start Loop', u':/media/media_time.png', - translate('OpenLP.SlideController', 'Start continuous loop'), - self.onStartLoop) - action_list = ActionList.get_instance() - action_list.add_action(startLoop, UiStrings().LiveToolbar) - stopLoop = self.toolbar.addToolbarButton( - # Does not need translating - control string. - u'Stop Loop', u':/media/media_stop.png', - translate('OpenLP.SlideController', 'Stop continuous loop'), - self.onStopLoop) - action_list.add_action(stopLoop, UiStrings().LiveToolbar) - self.toogleLoop = shortcut_action(self, u'toogleLoop', - [QtGui.QKeySequence(u'L')], self.onToggleLoop, - category=UiStrings().LiveToolbar) - self.toogleLoop.setText(translate('OpenLP.SlideController', - 'Start/Stop continuous loop')) - self.addAction(self.toogleLoop) - self.delaySpinBox = QtGui.QSpinBox() - self.delaySpinBox.setRange(1, 180) - self.toolbar.addToolbarWidget(u'Image SpinBox', self.delaySpinBox) - self.delaySpinBox.setSuffix(UiStrings().Seconds) - self.delaySpinBox.setToolTip(translate('OpenLP.SlideController', - 'Delay between slides in seconds')) - else: - self.toolbar.addToolbarButton( - # Does not need translating - control string. - u'Go Live', u':/general/general_live.png', - translate('OpenLP.SlideController', 'Move to live'), - self.onGoLive) - self.toolbar.addToolbarSeparator(u'Close Separator') - self.toolbar.addToolbarButton( - # Does not need translating - control string. - u'Edit Song', u':/general/general_edit.png', - translate('OpenLP.SlideController', - 'Edit and reload song preview'), - self.onEditSong) - self.controllerLayout.addWidget(self.toolbar) - # Build a Media ToolBar - self.mediabar = OpenLPToolbar(self) - self.mediabar.addToolbarButton( - u'Media Start', u':/slides/media_playback_start.png', - translate('OpenLP.SlideController', 'Start playing media'), - self.onMediaPlay) - self.mediabar.addToolbarButton( - u'Media Pause', u':/slides/media_playback_pause.png', - translate('OpenLP.SlideController', 'Start playing media'), - self.onMediaPause) - self.mediabar.addToolbarButton( - u'Media Stop', u':/slides/media_playback_stop.png', - translate('OpenLP.SlideController', 'Start playing media'), - self.onMediaStop) - if self.isLive: - # Build the Song Toolbar - self.songMenu = QtGui.QToolButton(self.toolbar) - self.songMenu.setText(translate('OpenLP.SlideController', 'Go To')) - self.songMenu.setPopupMode(QtGui.QToolButton.InstantPopup) - self.toolbar.addToolbarWidget(u'Song Menu', self.songMenu) - self.songMenu.setMenu(QtGui.QMenu( - translate('OpenLP.SlideController', 'Go To'), self.toolbar)) - self.toolbar.makeWidgetsInvisible([u'Song Menu']) - # Build the volumeSlider. - self.volumeSlider = QtGui.QSlider(QtCore.Qt.Horizontal) - self.volumeSlider.setTickInterval(1) - self.volumeSlider.setTickPosition(QtGui.QSlider.TicksAbove) - self.volumeSlider.setMinimum(0) - self.volumeSlider.setMaximum(10) - else: - # Build the seekSlider. - self.seekSlider = Phonon.SeekSlider() - self.seekSlider.setGeometry(QtCore.QRect(90, 260, 221, 24)) - self.seekSlider.setObjectName(u'seekSlider') - self.mediabar.addToolbarWidget(u'Seek Slider', self.seekSlider) - self.volumeSlider = Phonon.VolumeSlider() - self.volumeSlider.setGeometry(QtCore.QRect(90, 260, 221, 24)) - self.volumeSlider.setObjectName(u'volumeSlider') - self.mediabar.addToolbarWidget(u'Audio Volume', self.volumeSlider) - self.controllerLayout.addWidget(self.mediabar) - # Screen preview area - self.previewFrame = QtGui.QFrame(self.splitter) - self.previewFrame.setGeometry(QtCore.QRect(0, 0, 300, 300 * self.ratio)) - self.previewFrame.setMinimumHeight(100) - self.previewFrame.setSizePolicy(QtGui.QSizePolicy( - QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Ignored, - QtGui.QSizePolicy.Label)) - self.previewFrame.setFrameShape(QtGui.QFrame.StyledPanel) - self.previewFrame.setFrameShadow(QtGui.QFrame.Sunken) - self.previewFrame.setObjectName(u'PreviewFrame') - self.grid = QtGui.QGridLayout(self.previewFrame) - self.grid.setMargin(8) - self.grid.setObjectName(u'grid') - self.slideLayout = QtGui.QVBoxLayout() - self.slideLayout.setSpacing(0) - self.slideLayout.setMargin(0) - self.slideLayout.setObjectName(u'SlideLayout') - if not self.isLive: - self.mediaObject = Phonon.MediaObject(self) - self.video = Phonon.VideoWidget() - self.video.setVisible(False) - self.audio = Phonon.AudioOutput(Phonon.VideoCategory, - self.mediaObject) - Phonon.createPath(self.mediaObject, self.video) - Phonon.createPath(self.mediaObject, self.audio) - self.video.setGeometry(QtCore.QRect(0, 0, 300, 225)) - self.slideLayout.insertWidget(0, self.video) - # Actual preview screen - self.slidePreview = QtGui.QLabel(self) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, - QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( - self.slidePreview.sizePolicy().hasHeightForWidth()) - self.slidePreview.setSizePolicy(sizePolicy) - self.slidePreview.setFrameShape(QtGui.QFrame.Box) - self.slidePreview.setFrameShadow(QtGui.QFrame.Plain) - self.slidePreview.setLineWidth(1) - self.slidePreview.setScaledContents(True) - self.slidePreview.setObjectName(u'SlidePreview') - self.slideLayout.insertWidget(0, self.slidePreview) - self.grid.addLayout(self.slideLayout, 0, 0, 1, 1) - # Signals - QtCore.QObject.connect(self.previewListWidget, - QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSlideSelected) - if self.isLive: - QtCore.QObject.connect(self.volumeSlider, - QtCore.SIGNAL(u'sliderReleased()'), self.mediaVolume) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'maindisplay_active'), self.updatePreview) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_live_spin_delay'), - self.receiveSpinDelay) - self.toolbar.makeWidgetsInvisible(self.loopList) - self.toolbar.actions[u'Stop Loop'].setVisible(False) - else: - QtCore.QObject.connect(self.previewListWidget, - QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), - self.onGoLiveClick) - self.toolbar.makeWidgetsInvisible(self.songEditList) - self.mediabar.setVisible(False) - if self.isLive: - self.setLiveHotkeys(self) - self.__addActionsToWidget(self.previewListWidget) - else: - self.setPreviewHotkeys() - self.previewListWidget.addActions( - [self.nextItem, - self.previousItem]) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_stop_loop' % self.typePrefix), - self.onStopLoop) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_first' % self.typePrefix), - self.onSlideSelectedFirst) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_next' % self.typePrefix), - self.onSlideSelectedNext) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_previous' % self.typePrefix), - self.onSlideSelectedPrevious) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_next_noloop' % self.typePrefix), - self.onSlideSelectedNextNoloop) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_previous_noloop' % - self.typePrefix), - self.onSlideSelectedPreviousNoloop) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_last' % self.typePrefix), - self.onSlideSelectedLast) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_change' % self.typePrefix), - self.onSlideChange) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_set' % self.typePrefix), - self.onSlideSelectedIndex) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_blank' % self.typePrefix), - self.onSlideBlank) - 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_%s_text_request' % self.typePrefix), - self.onTextRequest) - - def setPreviewHotkeys(self, parent=None): - self.previousItem.setObjectName(u'previousItemPreview') - self.nextItem.setObjectName(u'nextItemPreview') - action_list = ActionList.get_instance() - action_list.add_action(self.previousItem) - action_list.add_action(self.nextItem) - - def setLiveHotkeys(self, parent=None): - self.previousItem.setObjectName(u'previousItemLive') - self.nextItem.setObjectName(u'nextItemLive') - action_list = ActionList.get_instance() - action_list.add_category( - UiStrings().LiveToolbar, CategoryOrder.standardToolbar) - action_list.add_action(self.previousItem) - action_list.add_action(self.nextItem) - self.previousService = shortcut_action(parent, u'previousService', - [QtCore.Qt.Key_Left], self.servicePrevious, - category=UiStrings().LiveToolbar, - context=QtCore.Qt.WidgetWithChildrenShortcut) - self.previousService.setText( - translate('OpenLP.SlideController', 'Previous Service')) - self.nextService = shortcut_action(parent, 'nextService', - [QtCore.Qt.Key_Right], self.serviceNext, - category=UiStrings().LiveToolbar, - context=QtCore.Qt.WidgetWithChildrenShortcut) - self.nextService.setText( - translate('OpenLP.SlideController', 'Next Service')) - self.escapeItem = shortcut_action(parent, 'escapeItem', - [QtCore.Qt.Key_Escape], self.liveEscape, - category=UiStrings().LiveToolbar, - context=QtCore.Qt.WidgetWithChildrenShortcut) - self.escapeItem.setText( - translate('OpenLP.SlideController', 'Escape Item')) - - def liveEscape(self): - self.display.setVisible(False) - self.display.videoStop() - - def servicePrevious(self): - Receiver.send_message('servicemanager_previous_item') - - def serviceNext(self): - Receiver.send_message('servicemanager_next_item') - - def screenSizeChanged(self): - """ - Settings dialog has changed the screen size of adjust output and - screen previews. - """ - # rebuild display as screen size changed - self.display = MainDisplay(self, self.image_manager, self.isLive) - self.display.alertTab = self.alertTab - self.display.setup() - 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()) - self.previewSizeChanged() - if self.serviceItem: - self.refreshServiceItem() - - def __addActionsToWidget(self, widget): - widget.addActions([ - self.previousItem, self.nextItem, - self.previousService, self.nextService, - self.escapeItem]) - - def previewSizeChanged(self): - """ - Takes care of the SlidePreview's size. Is called when one of the the - splitters is moved or when the screen size is changed. Note, that this - method is (also) called frequently from the mainwindow *paintEvent*. - """ - if self.ratio < float(self.previewFrame.width()) / float( - self.previewFrame.height()): - # We have to take the height as limit. - max_height = self.previewFrame.height() - self.grid.margin() * 2 - self.slidePreview.setFixedSize(QtCore.QSize(max_height * self.ratio, - max_height)) - else: - # We have to take the width as limit. - max_width = self.previewFrame.width() - self.grid.margin() * 2 - self.slidePreview.setFixedSize(QtCore.QSize(max_width, - max_width / self.ratio)) - # Make sure that the frames have the correct size. - self.previewListWidget.setColumnWidth(0, - self.previewListWidget.viewport().size().width()) - if self.serviceItem: - # Sort out songs, bibles, etc. - if self.serviceItem.is_text(): - self.previewListWidget.resizeRowsToContents() - else: - # Sort out image heights. - width = self.parent.controlSplitter.sizes()[self.split] - for framenumber in range(len(self.serviceItem.get_frames())): - self.previewListWidget.setRowHeight( - framenumber, width / self.ratio) - - def onSongBarHandler(self): - request = unicode(self.sender().text()) - slideno = self.slideList[request] - self.__updatePreviewSelection(slideno) - self.slideSelected() - - def receiveSpinDelay(self, value): - """ - Adjusts the value of the ``delaySpinBox`` to the given one. - """ - self.delaySpinBox.setValue(int(value)) - - def enableToolBar(self, item): - """ - Allows the toolbars to be reconfigured based on Controller Type - and ServiceItem Type - """ - if self.isLive: - self.enableLiveToolBar(item) - else: - self.enablePreviewToolBar(item) - - def enableLiveToolBar(self, item): - """ - Allows the live toolbar to be customised - """ - self.toolbar.setVisible(True) - self.mediabar.setVisible(False) - self.toolbar.makeWidgetsInvisible([u'Song Menu']) - self.toolbar.makeWidgetsInvisible(self.loopList) - self.toogleLoop.setEnabled(False) - self.toolbar.actions[u'Start Loop'].setEnabled(False) - self.toolbar.actions[u'Stop Loop'].setEnabled(False) - self.toolbar.actions[u'Stop Loop'].setVisible(False) - if item.is_text(): - if QtCore.QSettings().value( - self.parent.songsSettingsSection + u'/display songbar', - QtCore.QVariant(True)).toBool() and len(self.slideList) > 0: - self.toolbar.makeWidgetsVisible([u'Song Menu']) - if item.is_capable(ItemCapabilities.AllowsLoop) and \ - len(item.get_frames()) > 1: - self.toolbar.makeWidgetsVisible(self.loopList) - self.toogleLoop.setEnabled(True) - self.toolbar.actions[u'Start Loop'].setEnabled(True) - self.toolbar.actions[u'Stop Loop'].setEnabled(True) - if item.is_media(): - self.toolbar.setVisible(False) - self.mediabar.setVisible(True) - - def enablePreviewToolBar(self, item): - """ - Allows the Preview toolbar to be customised - """ - self.toolbar.setVisible(True) - self.mediabar.setVisible(False) - self.toolbar.makeWidgetsInvisible(self.songEditList) - if item.is_capable(ItemCapabilities.AllowsEdit) and item.from_plugin: - self.toolbar.makeWidgetsVisible(self.songEditList) - elif item.is_media(): - self.toolbar.setVisible(False) - self.mediabar.setVisible(True) - self.volumeSlider.setAudioOutput(self.audio) - - def refreshServiceItem(self): - """ - Method to update the service item if the screen has changed - """ - log.debug(u'refreshServiceItem live = %s' % self.isLive) - if self.serviceItem.is_text() or self.serviceItem.is_image(): - item = self.serviceItem - item.render() - self._processItem(item, self.selectedRow) - - def addServiceItem(self, item): - """ - Method to install the service item into the controller - Called by plugins - """ - log.debug(u'addServiceItem live = %s' % self.isLive) - item.render() - slideno = 0 - if self.songEdit: - slideno = self.selectedRow - self.songEdit = False - self._processItem(item, slideno) - - def replaceServiceManagerItem(self, item): - """ - Replacement item following a remote edit - """ - if item.__eq__(self.serviceItem): - self._processItem(item, self.previewListWidget.currentRow()) - - def addServiceManagerItem(self, item, slideno): - """ - Method to install the service item into the controller and - request the correct toolbar for the plugin. - Called by ServiceManager - """ - log.debug(u'addServiceManagerItem live = %s' % self.isLive) - # If no valid slide number is specified we take the first one. - if slideno == -1: - slideno = 0 - # If service item is the same as the current on only change slide - if item.__eq__(self.serviceItem): - self.__checkUpdateSelectedSlide(slideno) - self.slideSelected() - return - self._processItem(item, slideno) - - def _processItem(self, serviceItem, slideno): - """ - Loads a ServiceItem into the system from ServiceManager - Display the slide number passed - """ - log.debug(u'processManagerItem live = %s' % self.isLive) - self.onStopLoop() - old_item = self.serviceItem - self.serviceItem = serviceItem - if old_item and self.isLive and old_item.is_capable( - ItemCapabilities.ProvidesOwnDisplay): - self._resetBlank() - Receiver.send_message(u'%s_start' % serviceItem.name.lower(), - [serviceItem, self.isLive, self.hideMode(), slideno]) - self.slideList = {} - width = self.parent.controlSplitter.sizes()[self.split] - self.previewListWidget.clear() - self.previewListWidget.setRowCount(0) - self.previewListWidget.setColumnWidth(0, width) - if self.isLive: - self.songMenu.menu().clear() - row = 0 - text = [] - for framenumber, frame in enumerate(self.serviceItem.get_frames()): - self.previewListWidget.setRowCount( - self.previewListWidget.rowCount() + 1) - item = QtGui.QTableWidgetItem() - slideHeight = 0 - if self.serviceItem.is_text(): - if frame[u'verseTag']: - # These tags are already translated. - verse_def = frame[u'verseTag'] - verse_def = u'%s%s' % (verse_def[0], verse_def[1:]) - two_line_def = u'%s\n%s' % (verse_def[0], verse_def[1:]) - row = two_line_def - if self.isLive: - if verse_def not in self.slideList: - self.slideList[verse_def] = framenumber - self.songMenu.menu().addAction(verse_def, - self.onSongBarHandler) - else: - row += 1 - item.setText(frame[u'text']) - else: - label = QtGui.QLabel() - label.setMargin(4) - label.setScaledContents(True) - if self.serviceItem.is_command(): - image = resize_image(frame[u'image'], - self.parent.renderer.width, - self.parent.renderer.height) - else: - # If current slide set background to image - if framenumber == slideno: - self.serviceItem.bg_image_bytes = \ - self.image_manager.get_image_bytes(frame[u'title']) - image = self.image_manager.get_image(frame[u'title']) - label.setPixmap(QtGui.QPixmap.fromImage(image)) - self.previewListWidget.setCellWidget(framenumber, 0, label) - slideHeight = width * self.parent.renderer.screen_ratio - row += 1 - text.append(unicode(row)) - self.previewListWidget.setItem(framenumber, 0, item) - if slideHeight != 0: - self.previewListWidget.setRowHeight(framenumber, slideHeight) - self.previewListWidget.setVerticalHeaderLabels(text) - if self.serviceItem.is_text(): - self.previewListWidget.resizeRowsToContents() - self.previewListWidget.setColumnWidth(0, - self.previewListWidget.viewport().size().width()) - self.__updatePreviewSelection(slideno) - self.enableToolBar(serviceItem) - # Pass to display for viewing. - # Postpone image build, we need to do this later to avoid the theme - # flashing on the screen - if not self.serviceItem.is_image(): - self.display.buildHtml(self.serviceItem) - if serviceItem.is_media(): - self.onMediaStart(serviceItem) - self.slideSelected(True) - self.previewListWidget.setFocus() - if old_item: - # Close the old item after the new one is opened - # This avoids the service theme/desktop flashing on screen - # However opening a new item of the same type will automatically - # close the previous, so make sure we don't close the new one. - if old_item.is_command() and not serviceItem.is_command(): - Receiver.send_message(u'%s_stop' % - old_item.name.lower(), [old_item, self.isLive]) - if old_item.is_media() and not serviceItem.is_media(): - self.onMediaClose() - Receiver.send_message(u'slidecontroller_%s_started' % self.typePrefix, - [serviceItem]) - - def __updatePreviewSelection(self, slideno): - """ - Utility method to update the selected slide in the list. - """ - if slideno > self.previewListWidget.rowCount(): - self.previewListWidget.selectRow( - self.previewListWidget.rowCount() - 1) - else: - self.__checkUpdateSelectedSlide(slideno) - - def onTextRequest(self): - """ - Return the text for the current item in controller - """ - data = [] - if self.serviceItem: - for framenumber, frame in enumerate(self.serviceItem.get_frames()): - dataItem = {} - if self.serviceItem.is_text(): - dataItem[u'tag'] = unicode(frame[u'verseTag']) - dataItem[u'text'] = unicode(frame[u'html']) - else: - dataItem[u'tag'] = unicode(framenumber) - dataItem[u'text'] = u'' - dataItem[u'selected'] = \ - (self.previewListWidget.currentRow() == framenumber) - data.append(dataItem) - Receiver.send_message(u'slidecontroller_%s_text_response' - % self.typePrefix, data) - - # Screen event methods - def onSlideSelectedFirst(self): - """ - Go to the first slide. - """ - if not self.serviceItem: - return - if self.serviceItem.is_command(): - Receiver.send_message(u'%s_first' % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive]) - self.updatePreview() - else: - self.previewListWidget.selectRow(0) - self.slideSelected() - - def onSlideSelectedIndex(self, message): - """ - Go to the requested slide - """ - index = int(message[0]) - if not self.serviceItem: - return - if self.serviceItem.is_command(): - Receiver.send_message(u'%s_slide' % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive, index]) - self.updatePreview() - else: - self.__checkUpdateSelectedSlide(index) - self.slideSelected() - - def mainDisplaySetBackground(self): - """ - Allow the main display to blank the main display at startup time - """ - log.debug(u'mainDisplaySetBackground live = %s' % self.isLive) - display_type = QtCore.QSettings().value( - self.parent.generalSettingsSection + u'/screen blank', - QtCore.QVariant(u'')).toString() - if not self.display.primary: - # Order done to handle initial conversion - if display_type == u'themed': - self.onThemeDisplay(True) - elif display_type == u'hidden': - self.onHideDisplay(True) - else: - self.onBlankDisplay(True) - - def onSlideBlank(self): - """ - Handle the slidecontroller blank event - """ - self.onBlankDisplay(True) - - def onSlideUnblank(self): - """ - Handle the slidecontroller unblank event - """ - self.onBlankDisplay(False) - - def onBlankDisplay(self, checked=None): - """ - Handle the blank screen button actions - """ - if checked is None: - checked = self.blankScreen.isChecked() - log.debug(u'onBlankDisplay %s' % checked) - self.hideMenu.setDefaultAction(self.blankScreen) - self.blankScreen.setChecked(checked) - self.themeScreen.setChecked(False) - self.desktopScreen.setChecked(False) - if checked: - QtCore.QSettings().setValue( - self.parent.generalSettingsSection + u'/screen blank', - QtCore.QVariant(u'blanked')) - else: - QtCore.QSettings().remove( - self.parent.generalSettingsSection + u'/screen blank') - self.blankPlugin() - self.updatePreview() - - def onThemeDisplay(self, checked=None): - """ - Handle the Theme screen button - """ - if checked is None: - checked = self.themeScreen.isChecked() - log.debug(u'onThemeDisplay %s' % checked) - self.hideMenu.setDefaultAction(self.themeScreen) - self.blankScreen.setChecked(False) - self.themeScreen.setChecked(checked) - self.desktopScreen.setChecked(False) - if checked: - QtCore.QSettings().setValue( - self.parent.generalSettingsSection + u'/screen blank', - QtCore.QVariant(u'themed')) - else: - QtCore.QSettings().remove( - self.parent.generalSettingsSection + u'/screen blank') - self.blankPlugin() - self.updatePreview() - - def onHideDisplay(self, checked=None): - """ - Handle the Hide screen button - """ - if checked is None: - checked = self.desktopScreen.isChecked() - log.debug(u'onHideDisplay %s' % checked) - self.hideMenu.setDefaultAction(self.desktopScreen) - self.blankScreen.setChecked(False) - self.themeScreen.setChecked(False) - self.desktopScreen.setChecked(checked) - if checked: - QtCore.QSettings().setValue( - self.parent.generalSettingsSection + u'/screen blank', - QtCore.QVariant(u'hidden')) - else: - QtCore.QSettings().remove( - self.parent.generalSettingsSection + u'/screen blank') - self.hidePlugin(checked) - self.updatePreview() - - def blankPlugin(self): - """ - Blank/Hide the display screen within a plugin if required. - """ - hide_mode = self.hideMode() - log.debug(u'blankPlugin %s ', hide_mode) - if self.serviceItem is not None: - if hide_mode: - if not self.serviceItem.is_command(): - Receiver.send_message(u'maindisplay_hide', hide_mode) - Receiver.send_message(u'%s_blank' - % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive, hide_mode]) - else: - if not self.serviceItem.is_command(): - Receiver.send_message(u'maindisplay_show') - Receiver.send_message(u'%s_unblank' - % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive]) - - def hidePlugin(self, hide): - """ - Tell the plugin to hide the display screen. - """ - log.debug(u'hidePlugin %s ', hide) - if self.serviceItem is not None: - if hide: - Receiver.send_message(u'maindisplay_hide', HideMode.Screen) - Receiver.send_message(u'%s_hide' - % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive]) - else: - if not self.serviceItem.is_command(): - Receiver.send_message(u'maindisplay_show') - Receiver.send_message(u'%s_unblank' - % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive]) - - def onSlideSelected(self, start=False): - """ - Slide selected in controller - """ - self.slideSelected() - - def slideSelected(self, start=False): - """ - Generate the preview when you click on a slide. - if this is the Live Controller also display on the screen - """ - row = self.previewListWidget.currentRow() - self.selectedRow = 0 - if row > -1 and row < self.previewListWidget.rowCount(): - if self.serviceItem.is_command(): - if self.isLive and not start: - Receiver.send_message( - u'%s_slide' % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive, row]) - self.updatePreview() - else: - toDisplay = self.serviceItem.get_rendered_frame(row) - if self.serviceItem.is_text(): - frame = self.display.text(toDisplay) - else: - if start: - self.display.buildHtml(self.serviceItem, toDisplay) - frame = self.display.preview() - else: - frame = self.display.image(toDisplay) - # reset the store used to display first image - self.serviceItem.bg_image_bytes = None - self.slidePreview.setPixmap(QtGui.QPixmap.fromImage(frame)) - self.selectedRow = row - self.__checkUpdateSelectedSlide(row) - Receiver.send_message(u'slidecontroller_%s_changed' % self.typePrefix, - row) - - def onSlideChange(self, row): - """ - The slide has been changed. Update the slidecontroller accordingly - """ - self.__checkUpdateSelectedSlide(row) - self.updatePreview() - Receiver.send_message(u'slidecontroller_%s_changed' % self.typePrefix, - row) - - def updatePreview(self): - """ - This updates the preview frame, for example after changing a slide or - using *Blank to Theme*. - """ - log.debug(u'updatePreview %s ' % self.screens.current[u'primary']) - if not self.screens.current[u'primary'] and self.serviceItem and \ - self.serviceItem.is_capable(ItemCapabilities.ProvidesOwnDisplay): - # Grab now, but try again in a couple of seconds if slide change - # is slow - QtCore.QTimer.singleShot(0.5, self.grabMainDisplay) - QtCore.QTimer.singleShot(2.5, self.grabMainDisplay) - else: - self.slidePreview.setPixmap( - QtGui.QPixmap.fromImage(self.display.preview())) - - def grabMainDisplay(self): - """ - Creates an image of the current screen and updates the preview frame. - """ - winid = QtGui.QApplication.desktop().winId() - rect = self.screens.current[u'size'] - winimg = QtGui.QPixmap.grabWindow(winid, rect.x(), - rect.y(), rect.width(), rect.height()) - self.slidePreview.setPixmap(winimg) - - def onSlideSelectedNextNoloop(self): - self.onSlideSelectedNext(False) - - def onSlideSelectedNext(self, loop): - """ - Go to the next slide. - """ - if checked: - loop = QtCore.QSettings().remove(self.parent.generalSettingsSection + u'general/enable slide loop', QtCore.QVariant(True)).toBool() - else: - loop = QtCore.QSettings().value( - u'general/enable slide loop') - if not self.serviceItem: - return - Receiver.send_message(u'%s_next' % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive]) - if self.serviceItem.is_command() and self.isLive: - self.updatePreview() - else: - row = self.previewListWidget.currentRow() + 1 - if row == self.previewListWidget.rowCount(): - if loop: - row = 0 - else: - Receiver.send_message('servicemanager_next_item') - return - self.__checkUpdateSelectedSlide(row) - self.slideSelected() - - def onSlideSelectedPreviousNoloop(self): - self.onSlideSelectedPrevious(False) - - def onSlideSelectedPrevious(self, loop): - """ - Go to the previous slide. - """ - if checked: - loop = QtCore.QSettings().remove(self.parent.generalSettingsSection + u'/enable slide loop', QtCore.QVariant(True)).toBool() - else: - loop = QtCore.QSettings().value( - u'general/enable slide loop') - if not self.serviceItem: - return - Receiver.send_message(u'%s_previous' % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive]) - if self.serviceItem.is_command() and self.isLive: - self.updatePreview() - else: - row = self.previewListWidget.currentRow() - 1 - if row == -1: - if loop: - row = self.previewListWidget.rowCount() - 1 - else: - row = 0 - self.__checkUpdateSelectedSlide(row) - self.slideSelected() - - def __checkUpdateSelectedSlide(self, row): - if row + 1 < self.previewListWidget.rowCount(): - self.previewListWidget.scrollToItem( - self.previewListWidget.item(row + 1, 0)) - self.previewListWidget.selectRow(row) - - def onSlideSelectedLast(self): - """ - Go to the last slide. - """ - if not self.serviceItem: - return - Receiver.send_message(u'%s_last' % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive]) - if self.serviceItem.is_command(): - self.updatePreview() - else: - self.previewListWidget.selectRow( - self.previewListWidget.rowCount() - 1) - self.slideSelected() - - def onToggleLoop(self, toggled): - """ - Toggles the loop state. - """ - if self.toolbar.actions[u'Start Loop'].isVisible(): - self.onStartLoop() - else: - self.onStopLoop() - - def onStartLoop(self): - """ - Start the timer loop running and store the timer id - """ - if self.previewListWidget.rowCount() > 1: - self.timer_id = self.startTimer( - int(self.delaySpinBox.value()) * 1000) - self.toolbar.actions[u'Stop Loop'].setVisible(True) - self.toolbar.actions[u'Start Loop'].setVisible(False) - - def onStopLoop(self): - """ - Stop the timer loop running - """ - if self.timer_id != 0: - self.killTimer(self.timer_id) - self.timer_id = 0 - self.toolbar.actions[u'Start Loop'].setVisible(True) - self.toolbar.actions[u'Stop Loop'].setVisible(False) - - def timerEvent(self, event): - """ - If the timer event is for this window select next slide - """ - if event.timerId() == self.timer_id: - self.onSlideSelectedNext() - - def onEditSong(self): - """ - From the preview display requires the service Item to be editied - """ - self.songEdit = True - Receiver.send_message(u'%s_edit' % self.serviceItem.name.lower(), - u'P:%s' % self.serviceItem.edit_id) - - def onGoLiveClick(self): - """ - triggered by clicking the Preview slide items - """ - if QtCore.QSettings().value(u'advanced/double click live', - QtCore.QVariant(False)).toBool(): - self.onGoLive() - - def onGoLive(self): - """ - If preview copy slide item to live - """ - row = self.previewListWidget.currentRow() - if row > -1 and row < self.previewListWidget.rowCount(): - if self.serviceItem.from_service: - Receiver.send_message('servicemanager_preview_live', - u'%s:%s' % (self.serviceItem._uuid, row)) - else: - self.parent.liveController.addServiceManagerItem( - self.serviceItem, row) - - def onMediaStart(self, item): - """ - Respond to the arrival of a media service item - """ - log.debug(u'SlideController onMediaStart') - file = os.path.join(item.get_frame_path(), item.get_frame_title()) - if self.isLive: - self.display.video(file, self.volume) - self.volumeSlider.setValue(self.volume) - else: - self.mediaObject.stop() - self.mediaObject.clearQueue() - self.mediaObject.setCurrentSource(Phonon.MediaSource(file)) - self.seekSlider.setMediaObject(self.mediaObject) - self.seekSlider.show() - self.onMediaPlay() - - def mediaVolume(self): - """ - Respond to the release of Volume Slider - """ - log.debug(u'SlideController mediaVolume') - self.volume = self.volumeSlider.value() - self.display.videoVolume(self.volume) - - def onMediaPause(self): - """ - Respond to the Pause from the media Toolbar - """ - log.debug(u'SlideController onMediaPause') - if self.isLive: - self.display.videoPause() - else: - self.mediaObject.pause() - - def onMediaPlay(self): - """ - Respond to the Play from the media Toolbar - """ - log.debug(u'SlideController onMediaPlay') - if self.isLive: - self.display.videoPlay() - else: - self.slidePreview.hide() - self.video.show() - self.mediaObject.play() - - def onMediaStop(self): - """ - Respond to the Stop from the media Toolbar - """ - log.debug(u'SlideController onMediaStop') - if self.isLive: - self.display.videoStop() - else: - self.mediaObject.stop() - self.video.hide() - self.slidePreview.clear() - self.slidePreview.show() - - def onMediaClose(self): - """ - Respond to a request to close the Video - """ - log.debug(u'SlideController onMediaStop') - if self.isLive: - self.display.resetVideo() - else: - self.mediaObject.stop() - self.mediaObject.clearQueue() - self.video.hide() - self.slidePreview.clear() - self.slidePreview.show() - - def _resetBlank(self): - """ - Used by command items which provide their own displays to reset the - screen hide attributes - """ - hide_mode = self.hideMode() - if hide_mode == HideMode.Blank: - self.onBlankDisplay(True) - elif hide_mode == HideMode.Theme: - self.onThemeDisplay(True) - elif hide_mode == HideMode.Screen: - self.onHideDisplay(True) - else: - self.hidePlugin(False) - - def hideMode(self): - """ - Determine what the hide mode should be according to the blank button - """ - if not self.isLive: - return None - elif self.blankScreen.isChecked(): - return HideMode.Blank - elif self.themeScreen.isChecked(): - return HideMode.Theme - elif self.desktopScreen.isChecked(): - return HideMode.Screen - else: - return None +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2011 Raoul Snyman # +# Portions copyright (c) 2008-2011 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 # +# --------------------------------------------------------------------------- # +# 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 the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + +import logging +import os + +from PyQt4 import QtCore, QtGui +from PyQt4.phonon import Phonon + +from openlp.core.lib import OpenLPToolbar, Receiver, resize_image, \ + ItemCapabilities, translate +from openlp.core.lib.ui import UiStrings, shortcut_action +from openlp.core.ui import HideMode, MainDisplay, ScreenList +from openlp.core.utils.actions import ActionList, CategoryOrder + +log = logging.getLogger(__name__) + +class SlideList(QtGui.QTableWidget): + """ + Customised version of QTableWidget which can respond to keyboard + events. + """ + def __init__(self, parent=None, name=None): + QtGui.QTableWidget.__init__(self, parent.controller) + self.parent = parent + + +class SlideController(QtGui.QWidget): + """ + SlideController is the slide controller widget. This widget is what the + user uses to control the displaying of verses/slides/etc on the screen. + """ + def __init__(self, parent, isLive=False): + """ + Set up the Slide Controller. + """ + QtGui.QWidget.__init__(self, parent) + self.isLive = isLive + self.parent = parent + self.screens = ScreenList.get_instance() + self.ratio = float(self.screens.current[u'size'].width()) / \ + float(self.screens.current[u'size'].height()) + self.image_manager = self.parent.image_manager + self.loopList = [ + u'Start Loop', + u'Loop Separator', + u'Image SpinBox' + ] + self.songEditList = [ + u'Edit Song', + ] + self.volume = 10 + self.timer_id = 0 + self.songEdit = False + self.selectedRow = 0 + self.serviceItem = None + self.alertTab = None + self.panel = QtGui.QWidget(parent.controlSplitter) + self.slideList = {} + # Layout for holding panel + self.panelLayout = QtGui.QVBoxLayout(self.panel) + self.panelLayout.setSpacing(0) + self.panelLayout.setMargin(0) + # Type label for the top of the slide controller + self.typeLabel = QtGui.QLabel(self.panel) + if self.isLive: + self.typeLabel.setText(UiStrings().Live) + self.split = 1 + self.typePrefix = u'live' + else: + self.typeLabel.setText(UiStrings().Preview) + self.split = 0 + self.typePrefix = u'preview' + self.typeLabel.setStyleSheet(u'font-weight: bold; font-size: 12pt;') + self.typeLabel.setAlignment(QtCore.Qt.AlignCenter) + self.panelLayout.addWidget(self.typeLabel) + # Splitter + self.splitter = QtGui.QSplitter(self.panel) + self.splitter.setOrientation(QtCore.Qt.Vertical) + self.panelLayout.addWidget(self.splitter) + # Actual controller section + self.controller = QtGui.QWidget(self.splitter) + self.controller.setGeometry(QtCore.QRect(0, 0, 100, 536)) + self.controller.setSizePolicy( + QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, + QtGui.QSizePolicy.Maximum)) + self.controllerLayout = QtGui.QVBoxLayout(self.controller) + self.controllerLayout.setSpacing(0) + self.controllerLayout.setMargin(0) + # Controller list view + self.previewListWidget = SlideList(self) + self.previewListWidget.setColumnCount(1) + self.previewListWidget.horizontalHeader().setVisible(False) + self.previewListWidget.setColumnWidth(0, self.controller.width()) + self.previewListWidget.isLive = self.isLive + self.previewListWidget.setObjectName(u'PreviewListWidget') + self.previewListWidget.setSelectionBehavior( + QtGui.QAbstractItemView.SelectRows) + self.previewListWidget.setSelectionMode( + QtGui.QAbstractItemView.SingleSelection) + self.previewListWidget.setEditTriggers( + QtGui.QAbstractItemView.NoEditTriggers) + self.previewListWidget.setHorizontalScrollBarPolicy( + QtCore.Qt.ScrollBarAlwaysOff) + self.previewListWidget.setAlternatingRowColors(True) + self.controllerLayout.addWidget(self.previewListWidget) + # Build the full toolbar + self.toolbar = OpenLPToolbar(self) + sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, + QtGui.QSizePolicy.Fixed) + sizeToolbarPolicy.setHorizontalStretch(0) + sizeToolbarPolicy.setVerticalStretch(0) + sizeToolbarPolicy.setHeightForWidth( + self.toolbar.sizePolicy().hasHeightForWidth()) + self.toolbar.setSizePolicy(sizeToolbarPolicy) + self.previousItem = self.toolbar.addToolbarButton( + translate('OpenLP.SlideController', 'Previous Slide'), + u':/slides/slide_previous.png', + translate('OpenLP.SlideController', 'Move to previous'), + self.onSlideSelectedPrevious, + shortcuts=[QtCore.Qt.Key_Up, QtCore.Qt.Key_PageUp], + context=QtCore.Qt.WidgetWithChildrenShortcut) + self.nextItem = self.toolbar.addToolbarButton( + translate('OpenLP.SlideController', 'Next Slide'), + u':/slides/slide_next.png', + translate('OpenLP.SlideController', 'Move to next'), + self.onSlideSelectedNext, + shortcuts=[QtCore.Qt.Key_Down, QtCore.Qt.Key_PageDown], + context=QtCore.Qt.WidgetWithChildrenShortcut) + self.toolbar.addToolbarSeparator(u'Close Separator') + if self.isLive: + self.hideMenu = QtGui.QToolButton(self.toolbar) + self.hideMenu.setText(translate('OpenLP.SlideController', 'Hide')) + self.hideMenu.setPopupMode(QtGui.QToolButton.MenuButtonPopup) + self.toolbar.addToolbarWidget(u'Hide Menu', self.hideMenu) + self.hideMenu.setMenu(QtGui.QMenu( + translate('OpenLP.SlideController', 'Hide'), self.toolbar)) + self.blankScreen = shortcut_action(self.hideMenu, u'blankScreen', + [QtCore.Qt.Key_Period], self.onBlankDisplay, + u':/slides/slide_blank.png', False, UiStrings().LiveToolbar) + self.blankScreen.setText( + translate('OpenLP.SlideController', 'Blank Screen')) + self.themeScreen = shortcut_action(self.hideMenu, u'themeScreen', + [QtGui.QKeySequence(u'T')], self.onThemeDisplay, + u':/slides/slide_theme.png', False, UiStrings().LiveToolbar) + self.themeScreen.setText( + translate('OpenLP.SlideController', 'Blank to Theme')) + self.desktopScreen = shortcut_action(self.hideMenu, + u'desktopScreen', [QtGui.QKeySequence(u'D')], + self.onHideDisplay, u':/slides/slide_desktop.png', False, + UiStrings().LiveToolbar) + self.desktopScreen.setText( + translate('OpenLP.SlideController', 'Show Desktop')) + self.hideMenu.setDefaultAction(self.blankScreen) + self.hideMenu.menu().addAction(self.blankScreen) + self.hideMenu.menu().addAction(self.themeScreen) + self.hideMenu.menu().addAction(self.desktopScreen) + self.toolbar.addToolbarSeparator(u'Loop Separator') + startLoop = self.toolbar.addToolbarButton( + # Does not need translating - control string. + u'Start Loop', u':/media/media_time.png', + translate('OpenLP.SlideController', 'Start continuous loop'), + self.onStartLoop) + action_list = ActionList.get_instance() + action_list.add_action(startLoop, UiStrings().LiveToolbar) + stopLoop = self.toolbar.addToolbarButton( + # Does not need translating - control string. + u'Stop Loop', u':/media/media_stop.png', + translate('OpenLP.SlideController', 'Stop continuous loop'), + self.onStopLoop) + action_list.add_action(stopLoop, UiStrings().LiveToolbar) + self.toogleLoop = shortcut_action(self, u'toogleLoop', + [QtGui.QKeySequence(u'L')], self.onToggleLoop, + category=UiStrings().LiveToolbar) + self.toogleLoop.setText(translate('OpenLP.SlideController', + 'Start/Stop continuous loop')) + self.addAction(self.toogleLoop) + self.delaySpinBox = QtGui.QSpinBox() + self.delaySpinBox.setRange(1, 180) + self.toolbar.addToolbarWidget(u'Image SpinBox', self.delaySpinBox) + self.delaySpinBox.setSuffix(UiStrings().Seconds) + self.delaySpinBox.setToolTip(translate('OpenLP.SlideController', + 'Delay between slides in seconds')) + else: + self.toolbar.addToolbarButton( + # Does not need translating - control string. + u'Go Live', u':/general/general_live.png', + translate('OpenLP.SlideController', 'Move to live'), + self.onGoLive) + self.toolbar.addToolbarSeparator(u'Close Separator') + self.toolbar.addToolbarButton( + # Does not need translating - control string. + u'Edit Song', u':/general/general_edit.png', + translate('OpenLP.SlideController', + 'Edit and reload song preview'), + self.onEditSong) + self.controllerLayout.addWidget(self.toolbar) + # Build a Media ToolBar + self.mediabar = OpenLPToolbar(self) + self.mediabar.addToolbarButton( + u'Media Start', u':/slides/media_playback_start.png', + translate('OpenLP.SlideController', 'Start playing media'), + self.onMediaPlay) + self.mediabar.addToolbarButton( + u'Media Pause', u':/slides/media_playback_pause.png', + translate('OpenLP.SlideController', 'Start playing media'), + self.onMediaPause) + self.mediabar.addToolbarButton( + u'Media Stop', u':/slides/media_playback_stop.png', + translate('OpenLP.SlideController', 'Start playing media'), + self.onMediaStop) + if self.isLive: + # Build the Song Toolbar + self.songMenu = QtGui.QToolButton(self.toolbar) + self.songMenu.setText(translate('OpenLP.SlideController', 'Go To')) + self.songMenu.setPopupMode(QtGui.QToolButton.InstantPopup) + self.toolbar.addToolbarWidget(u'Song Menu', self.songMenu) + self.songMenu.setMenu(QtGui.QMenu( + translate('OpenLP.SlideController', 'Go To'), self.toolbar)) + self.toolbar.makeWidgetsInvisible([u'Song Menu']) + # Build the volumeSlider. + self.volumeSlider = QtGui.QSlider(QtCore.Qt.Horizontal) + self.volumeSlider.setTickInterval(1) + self.volumeSlider.setTickPosition(QtGui.QSlider.TicksAbove) + self.volumeSlider.setMinimum(0) + self.volumeSlider.setMaximum(10) + else: + # Build the seekSlider. + self.seekSlider = Phonon.SeekSlider() + self.seekSlider.setGeometry(QtCore.QRect(90, 260, 221, 24)) + self.seekSlider.setObjectName(u'seekSlider') + self.mediabar.addToolbarWidget(u'Seek Slider', self.seekSlider) + self.volumeSlider = Phonon.VolumeSlider() + self.volumeSlider.setGeometry(QtCore.QRect(90, 260, 221, 24)) + self.volumeSlider.setObjectName(u'volumeSlider') + self.mediabar.addToolbarWidget(u'Audio Volume', self.volumeSlider) + self.controllerLayout.addWidget(self.mediabar) + # Screen preview area + self.previewFrame = QtGui.QFrame(self.splitter) + self.previewFrame.setGeometry(QtCore.QRect(0, 0, 300, 300 * self.ratio)) + self.previewFrame.setMinimumHeight(100) + self.previewFrame.setSizePolicy(QtGui.QSizePolicy( + QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Ignored, + QtGui.QSizePolicy.Label)) + self.previewFrame.setFrameShape(QtGui.QFrame.StyledPanel) + self.previewFrame.setFrameShadow(QtGui.QFrame.Sunken) + self.previewFrame.setObjectName(u'PreviewFrame') + self.grid = QtGui.QGridLayout(self.previewFrame) + self.grid.setMargin(8) + self.grid.setObjectName(u'grid') + self.slideLayout = QtGui.QVBoxLayout() + self.slideLayout.setSpacing(0) + self.slideLayout.setMargin(0) + self.slideLayout.setObjectName(u'SlideLayout') + if not self.isLive: + self.mediaObject = Phonon.MediaObject(self) + self.video = Phonon.VideoWidget() + self.video.setVisible(False) + self.audio = Phonon.AudioOutput(Phonon.VideoCategory, + self.mediaObject) + Phonon.createPath(self.mediaObject, self.video) + Phonon.createPath(self.mediaObject, self.audio) + self.video.setGeometry(QtCore.QRect(0, 0, 300, 225)) + self.slideLayout.insertWidget(0, self.video) + # Actual preview screen + self.slidePreview = QtGui.QLabel(self) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, + QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth( + self.slidePreview.sizePolicy().hasHeightForWidth()) + self.slidePreview.setSizePolicy(sizePolicy) + self.slidePreview.setFrameShape(QtGui.QFrame.Box) + self.slidePreview.setFrameShadow(QtGui.QFrame.Plain) + self.slidePreview.setLineWidth(1) + self.slidePreview.setScaledContents(True) + self.slidePreview.setObjectName(u'SlidePreview') + self.slideLayout.insertWidget(0, self.slidePreview) + self.grid.addLayout(self.slideLayout, 0, 0, 1, 1) + # Signals + QtCore.QObject.connect(self.previewListWidget, + QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSlideSelected) + if self.isLive: + QtCore.QObject.connect(self.volumeSlider, + QtCore.SIGNAL(u'sliderReleased()'), self.mediaVolume) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'maindisplay_active'), self.updatePreview) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_live_spin_delay'), + self.receiveSpinDelay) + self.toolbar.makeWidgetsInvisible(self.loopList) + self.toolbar.actions[u'Stop Loop'].setVisible(False) + else: + QtCore.QObject.connect(self.previewListWidget, + QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), + self.onGoLiveClick) + self.toolbar.makeWidgetsInvisible(self.songEditList) + self.mediabar.setVisible(False) + if self.isLive: + self.setLiveHotkeys(self) + self.__addActionsToWidget(self.previewListWidget) + else: + self.setPreviewHotkeys() + self.previewListWidget.addActions( + [self.nextItem, + self.previousItem]) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_%s_stop_loop' % self.typePrefix), + self.onStopLoop) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_%s_first' % self.typePrefix), + self.onSlideSelectedFirst) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_%s_next' % self.typePrefix), + self.onSlideSelectedNext) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_%s_previous' % self.typePrefix), + self.onSlideSelectedPrevious) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_%s_last' % self.typePrefix), + self.onSlideSelectedLast) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_%s_change' % self.typePrefix), + self.onSlideChange) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_%s_set' % self.typePrefix), + self.onSlideSelectedIndex) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_%s_blank' % self.typePrefix), + self.onSlideBlank) + 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_%s_text_request' % self.typePrefix), + self.onTextRequest) + + def setPreviewHotkeys(self, parent=None): + self.previousItem.setObjectName(u'previousItemPreview') + self.nextItem.setObjectName(u'nextItemPreview') + action_list = ActionList.get_instance() + action_list.add_action(self.previousItem) + action_list.add_action(self.nextItem) + + def setLiveHotkeys(self, parent=None): + self.previousItem.setObjectName(u'previousItemLive') + self.nextItem.setObjectName(u'nextItemLive') + action_list = ActionList.get_instance() + action_list.add_category( + UiStrings().LiveToolbar, CategoryOrder.standardToolbar) + action_list.add_action(self.previousItem) + action_list.add_action(self.nextItem) + self.previousService = shortcut_action(parent, u'previousService', + [QtCore.Qt.Key_Left], self.servicePrevious, + category=UiStrings().LiveToolbar, + context=QtCore.Qt.WidgetWithChildrenShortcut) + self.previousService.setText( + translate('OpenLP.SlideController', 'Previous Service')) + self.nextService = shortcut_action(parent, 'nextService', + [QtCore.Qt.Key_Right], self.serviceNext, + category=UiStrings().LiveToolbar, + context=QtCore.Qt.WidgetWithChildrenShortcut) + self.nextService.setText( + translate('OpenLP.SlideController', 'Next Service')) + self.escapeItem = shortcut_action(parent, 'escapeItem', + [QtCore.Qt.Key_Escape], self.liveEscape, + category=UiStrings().LiveToolbar, + context=QtCore.Qt.WidgetWithChildrenShortcut) + self.escapeItem.setText( + translate('OpenLP.SlideController', 'Escape Item')) + + def liveEscape(self): + self.display.setVisible(False) + self.display.videoStop() + + def servicePrevious(self): + Receiver.send_message('servicemanager_previous_item') + + def serviceNext(self): + Receiver.send_message('servicemanager_next_item') + + def screenSizeChanged(self): + """ + Settings dialog has changed the screen size of adjust output and + screen previews. + """ + # rebuild display as screen size changed + self.display = MainDisplay(self, self.image_manager, self.isLive) + self.display.alertTab = self.alertTab + self.display.setup() + 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()) + self.previewSizeChanged() + if self.serviceItem: + self.refreshServiceItem() + + def __addActionsToWidget(self, widget): + widget.addActions([ + self.previousItem, self.nextItem, + self.previousService, self.nextService, + self.escapeItem]) + + def previewSizeChanged(self): + """ + Takes care of the SlidePreview's size. Is called when one of the the + splitters is moved or when the screen size is changed. Note, that this + method is (also) called frequently from the mainwindow *paintEvent*. + """ + if self.ratio < float(self.previewFrame.width()) / float( + self.previewFrame.height()): + # We have to take the height as limit. + max_height = self.previewFrame.height() - self.grid.margin() * 2 + self.slidePreview.setFixedSize(QtCore.QSize(max_height * self.ratio, + max_height)) + else: + # We have to take the width as limit. + max_width = self.previewFrame.width() - self.grid.margin() * 2 + self.slidePreview.setFixedSize(QtCore.QSize(max_width, + max_width / self.ratio)) + # Make sure that the frames have the correct size. + self.previewListWidget.setColumnWidth(0, + self.previewListWidget.viewport().size().width()) + if self.serviceItem: + # Sort out songs, bibles, etc. + if self.serviceItem.is_text(): + self.previewListWidget.resizeRowsToContents() + else: + # Sort out image heights. + width = self.parent.controlSplitter.sizes()[self.split] + for framenumber in range(len(self.serviceItem.get_frames())): + self.previewListWidget.setRowHeight( + framenumber, width / self.ratio) + + def onSongBarHandler(self): + request = unicode(self.sender().text()) + slideno = self.slideList[request] + self.__updatePreviewSelection(slideno) + self.slideSelected() + + def receiveSpinDelay(self, value): + """ + Adjusts the value of the ``delaySpinBox`` to the given one. + """ + self.delaySpinBox.setValue(int(value)) + + def enableToolBar(self, item): + """ + Allows the toolbars to be reconfigured based on Controller Type + and ServiceItem Type + """ + if self.isLive: + self.enableLiveToolBar(item) + else: + self.enablePreviewToolBar(item) + + def enableLiveToolBar(self, item): + """ + Allows the live toolbar to be customised + """ + self.toolbar.setVisible(True) + self.mediabar.setVisible(False) + self.toolbar.makeWidgetsInvisible([u'Song Menu']) + self.toolbar.makeWidgetsInvisible(self.loopList) + self.toogleLoop.setEnabled(False) + self.toolbar.actions[u'Start Loop'].setEnabled(False) + self.toolbar.actions[u'Stop Loop'].setEnabled(False) + self.toolbar.actions[u'Stop Loop'].setVisible(False) + if item.is_text(): + if QtCore.QSettings().value( + self.parent.songsSettingsSection + u'/display songbar', + QtCore.QVariant(True)).toBool() and len(self.slideList) > 0: + self.toolbar.makeWidgetsVisible([u'Song Menu']) + if item.is_capable(ItemCapabilities.AllowsLoop) and \ + len(item.get_frames()) > 1: + self.toolbar.makeWidgetsVisible(self.loopList) + self.toogleLoop.setEnabled(True) + self.toolbar.actions[u'Start Loop'].setEnabled(True) + self.toolbar.actions[u'Stop Loop'].setEnabled(True) + if item.is_media(): + self.toolbar.setVisible(False) + self.mediabar.setVisible(True) + + def enablePreviewToolBar(self, item): + """ + Allows the Preview toolbar to be customised + """ + self.toolbar.setVisible(True) + self.mediabar.setVisible(False) + self.toolbar.makeWidgetsInvisible(self.songEditList) + if item.is_capable(ItemCapabilities.AllowsEdit) and item.from_plugin: + self.toolbar.makeWidgetsVisible(self.songEditList) + elif item.is_media(): + self.toolbar.setVisible(False) + self.mediabar.setVisible(True) + self.volumeSlider.setAudioOutput(self.audio) + + def refreshServiceItem(self): + """ + Method to update the service item if the screen has changed + """ + log.debug(u'refreshServiceItem live = %s' % self.isLive) + if self.serviceItem.is_text() or self.serviceItem.is_image(): + item = self.serviceItem + item.render() + self._processItem(item, self.selectedRow) + + def addServiceItem(self, item): + """ + Method to install the service item into the controller + Called by plugins + """ + log.debug(u'addServiceItem live = %s' % self.isLive) + item.render() + slideno = 0 + if self.songEdit: + slideno = self.selectedRow + self.songEdit = False + self._processItem(item, slideno) + + def replaceServiceManagerItem(self, item): + """ + Replacement item following a remote edit + """ + if item.__eq__(self.serviceItem): + self._processItem(item, self.previewListWidget.currentRow()) + + def addServiceManagerItem(self, item, slideno): + """ + Method to install the service item into the controller and + request the correct toolbar for the plugin. + Called by ServiceManager + """ + log.debug(u'addServiceManagerItem live = %s' % self.isLive) + # If no valid slide number is specified we take the first one. + if slideno == -1: + slideno = 0 + # If service item is the same as the current on only change slide + if item.__eq__(self.serviceItem): + self.__checkUpdateSelectedSlide(slideno) + self.slideSelected() + return + self._processItem(item, slideno) + + def _processItem(self, serviceItem, slideno): + """ + Loads a ServiceItem into the system from ServiceManager + Display the slide number passed + """ + log.debug(u'processManagerItem live = %s' % self.isLive) + self.onStopLoop() + old_item = self.serviceItem + self.serviceItem = serviceItem + if old_item and self.isLive and old_item.is_capable( + ItemCapabilities.ProvidesOwnDisplay): + self._resetBlank() + Receiver.send_message(u'%s_start' % serviceItem.name.lower(), + [serviceItem, self.isLive, self.hideMode(), slideno]) + self.slideList = {} + width = self.parent.controlSplitter.sizes()[self.split] + self.previewListWidget.clear() + self.previewListWidget.setRowCount(0) + self.previewListWidget.setColumnWidth(0, width) + if self.isLive: + self.songMenu.menu().clear() + row = 0 + text = [] + for framenumber, frame in enumerate(self.serviceItem.get_frames()): + self.previewListWidget.setRowCount( + self.previewListWidget.rowCount() + 1) + item = QtGui.QTableWidgetItem() + slideHeight = 0 + if self.serviceItem.is_text(): + if frame[u'verseTag']: + # These tags are already translated. + verse_def = frame[u'verseTag'] + verse_def = u'%s%s' % (verse_def[0], verse_def[1:]) + two_line_def = u'%s\n%s' % (verse_def[0], verse_def[1:]) + row = two_line_def + if self.isLive: + if verse_def not in self.slideList: + self.slideList[verse_def] = framenumber + self.songMenu.menu().addAction(verse_def, + self.onSongBarHandler) + else: + row += 1 + item.setText(frame[u'text']) + else: + label = QtGui.QLabel() + label.setMargin(4) + label.setScaledContents(True) + if self.serviceItem.is_command(): + image = resize_image(frame[u'image'], + self.parent.renderer.width, + self.parent.renderer.height) + else: + # If current slide set background to image + if framenumber == slideno: + self.serviceItem.bg_image_bytes = \ + self.image_manager.get_image_bytes(frame[u'title']) + image = self.image_manager.get_image(frame[u'title']) + label.setPixmap(QtGui.QPixmap.fromImage(image)) + self.previewListWidget.setCellWidget(framenumber, 0, label) + slideHeight = width * self.parent.renderer.screen_ratio + row += 1 + text.append(unicode(row)) + self.previewListWidget.setItem(framenumber, 0, item) + if slideHeight != 0: + self.previewListWidget.setRowHeight(framenumber, slideHeight) + self.previewListWidget.setVerticalHeaderLabels(text) + if self.serviceItem.is_text(): + self.previewListWidget.resizeRowsToContents() + self.previewListWidget.setColumnWidth(0, + self.previewListWidget.viewport().size().width()) + self.__updatePreviewSelection(slideno) + self.enableToolBar(serviceItem) + # Pass to display for viewing. + # Postpone image build, we need to do this later to avoid the theme + # flashing on the screen + if not self.serviceItem.is_image(): + self.display.buildHtml(self.serviceItem) + if serviceItem.is_media(): + self.onMediaStart(serviceItem) + self.slideSelected(True) + self.previewListWidget.setFocus() + if old_item: + # Close the old item after the new one is opened + # This avoids the service theme/desktop flashing on screen + # However opening a new item of the same type will automatically + # close the previous, so make sure we don't close the new one. + if old_item.is_command() and not serviceItem.is_command(): + Receiver.send_message(u'%s_stop' % + old_item.name.lower(), [old_item, self.isLive]) + if old_item.is_media() and not serviceItem.is_media(): + self.onMediaClose() + Receiver.send_message(u'slidecontroller_%s_started' % self.typePrefix, + [serviceItem]) + + def __updatePreviewSelection(self, slideno): + """ + Utility method to update the selected slide in the list. + """ + if slideno > self.previewListWidget.rowCount(): + self.previewListWidget.selectRow( + self.previewListWidget.rowCount() - 1) + else: + self.__checkUpdateSelectedSlide(slideno) + + def onTextRequest(self): + """ + Return the text for the current item in controller + """ + data = [] + if self.serviceItem: + for framenumber, frame in enumerate(self.serviceItem.get_frames()): + dataItem = {} + if self.serviceItem.is_text(): + dataItem[u'tag'] = unicode(frame[u'verseTag']) + dataItem[u'text'] = unicode(frame[u'html']) + else: + dataItem[u'tag'] = unicode(framenumber) + dataItem[u'text'] = u'' + dataItem[u'selected'] = \ + (self.previewListWidget.currentRow() == framenumber) + data.append(dataItem) + Receiver.send_message(u'slidecontroller_%s_text_response' + % self.typePrefix, data) + + # Screen event methods + def onSlideSelectedFirst(self): + """ + Go to the first slide. + """ + if not self.serviceItem: + return + if self.serviceItem.is_command(): + Receiver.send_message(u'%s_first' % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive]) + self.updatePreview() + else: + self.previewListWidget.selectRow(0) + self.slideSelected() + + def onSlideSelectedIndex(self, message): + """ + Go to the requested slide + """ + index = int(message[0]) + if not self.serviceItem: + return + if self.serviceItem.is_command(): + Receiver.send_message(u'%s_slide' % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive, index]) + self.updatePreview() + else: + self.__checkUpdateSelectedSlide(index) + self.slideSelected() + + def mainDisplaySetBackground(self): + """ + Allow the main display to blank the main display at startup time + """ + log.debug(u'mainDisplaySetBackground live = %s' % self.isLive) + display_type = QtCore.QSettings().value( + self.parent.generalSettingsSection + u'/screen blank', + QtCore.QVariant(u'')).toString() + if not self.display.primary: + # Order done to handle initial conversion + if display_type == u'themed': + self.onThemeDisplay(True) + elif display_type == u'hidden': + self.onHideDisplay(True) + else: + self.onBlankDisplay(True) + + def onSlideBlank(self): + """ + Handle the slidecontroller blank event + """ + self.onBlankDisplay(True) + + def onSlideUnblank(self): + """ + Handle the slidecontroller unblank event + """ + self.onBlankDisplay(False) + + def onBlankDisplay(self, checked=None): + """ + Handle the blank screen button actions + """ + if checked is None: + checked = self.blankScreen.isChecked() + log.debug(u'onBlankDisplay %s' % checked) + self.hideMenu.setDefaultAction(self.blankScreen) + self.blankScreen.setChecked(checked) + self.themeScreen.setChecked(False) + self.desktopScreen.setChecked(False) + if checked: + QtCore.QSettings().setValue( + self.parent.generalSettingsSection + u'/screen blank', + QtCore.QVariant(u'blanked')) + else: + QtCore.QSettings().remove( + self.parent.generalSettingsSection + u'/screen blank') + self.blankPlugin() + self.updatePreview() + + def onThemeDisplay(self, checked=None): + """ + Handle the Theme screen button + """ + if checked is None: + checked = self.themeScreen.isChecked() + log.debug(u'onThemeDisplay %s' % checked) + self.hideMenu.setDefaultAction(self.themeScreen) + self.blankScreen.setChecked(False) + self.themeScreen.setChecked(checked) + self.desktopScreen.setChecked(False) + if checked: + QtCore.QSettings().setValue( + self.parent.generalSettingsSection + u'/screen blank', + QtCore.QVariant(u'themed')) + else: + QtCore.QSettings().remove( + self.parent.generalSettingsSection + u'/screen blank') + self.blankPlugin() + self.updatePreview() + + def onHideDisplay(self, checked=None): + """ + Handle the Hide screen button + """ + if checked is None: + checked = self.desktopScreen.isChecked() + log.debug(u'onHideDisplay %s' % checked) + self.hideMenu.setDefaultAction(self.desktopScreen) + self.blankScreen.setChecked(False) + self.themeScreen.setChecked(False) + self.desktopScreen.setChecked(checked) + if checked: + QtCore.QSettings().setValue( + self.parent.generalSettingsSection + u'/screen blank', + QtCore.QVariant(u'hidden')) + else: + QtCore.QSettings().remove( + self.parent.generalSettingsSection + u'/screen blank') + self.hidePlugin(checked) + self.updatePreview() + + def blankPlugin(self): + """ + Blank/Hide the display screen within a plugin if required. + """ + hide_mode = self.hideMode() + log.debug(u'blankPlugin %s ', hide_mode) + if self.serviceItem is not None: + if hide_mode: + if not self.serviceItem.is_command(): + Receiver.send_message(u'maindisplay_hide', hide_mode) + Receiver.send_message(u'%s_blank' + % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive, hide_mode]) + else: + if not self.serviceItem.is_command(): + Receiver.send_message(u'maindisplay_show') + Receiver.send_message(u'%s_unblank' + % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive]) + + def hidePlugin(self, hide): + """ + Tell the plugin to hide the display screen. + """ + log.debug(u'hidePlugin %s ', hide) + if self.serviceItem is not None: + if hide: + Receiver.send_message(u'maindisplay_hide', HideMode.Screen) + Receiver.send_message(u'%s_hide' + % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive]) + else: + if not self.serviceItem.is_command(): + Receiver.send_message(u'maindisplay_show') + Receiver.send_message(u'%s_unblank' + % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive]) + + def onSlideSelected(self, start=False): + """ + Slide selected in controller + """ + self.slideSelected() + + def slideSelected(self, start=False): + """ + Generate the preview when you click on a slide. + if this is the Live Controller also display on the screen + """ + row = self.previewListWidget.currentRow() + self.selectedRow = 0 + if row > -1 and row < self.previewListWidget.rowCount(): + if self.serviceItem.is_command(): + if self.isLive and not start: + Receiver.send_message( + u'%s_slide' % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive, row]) + self.updatePreview() + else: + toDisplay = self.serviceItem.get_rendered_frame(row) + if self.serviceItem.is_text(): + frame = self.display.text(toDisplay) + else: + if start: + self.display.buildHtml(self.serviceItem, toDisplay) + frame = self.display.preview() + else: + frame = self.display.image(toDisplay) + # reset the store used to display first image + self.serviceItem.bg_image_bytes = None + self.slidePreview.setPixmap(QtGui.QPixmap.fromImage(frame)) + self.selectedRow = row + self.__checkUpdateSelectedSlide(row) + Receiver.send_message(u'slidecontroller_%s_changed' % self.typePrefix, + row) + + def onSlideChange(self, row): + """ + The slide has been changed. Update the slidecontroller accordingly + """ + self.__checkUpdateSelectedSlide(row) + self.updatePreview() + Receiver.send_message(u'slidecontroller_%s_changed' % self.typePrefix, + row) + + def updatePreview(self): + """ + This updates the preview frame, for example after changing a slide or + using *Blank to Theme*. + """ + log.debug(u'updatePreview %s ' % self.screens.current[u'primary']) + if not self.screens.current[u'primary'] and self.serviceItem and \ + self.serviceItem.is_capable(ItemCapabilities.ProvidesOwnDisplay): + # Grab now, but try again in a couple of seconds if slide change + # is slow + QtCore.QTimer.singleShot(0.5, self.grabMainDisplay) + QtCore.QTimer.singleShot(2.5, self.grabMainDisplay) + else: + self.slidePreview.setPixmap( + QtGui.QPixmap.fromImage(self.display.preview())) + + def grabMainDisplay(self): + """ + Creates an image of the current screen and updates the preview frame. + """ + winid = QtGui.QApplication.desktop().winId() + rect = self.screens.current[u'size'] + winimg = QtGui.QPixmap.grabWindow(winid, rect.x(), + rect.y(), rect.width(), rect.height()) + self.slidePreview.setPixmap(winimg) + def onSlideSelectedNext(self): + """ + Go to the next slide. + """ + if not self.serviceItem: + return + Receiver.send_message(u'%s_next' % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive]) + if self.serviceItem.is_command() and self.isLive: + self.updatePreview() + else: + row = self.previewListWidget.currentRow() + 1 + if row == self.previewListWidget.rowCount(): + if QtCore.QSettings().value(u'generalSettingsSection/enable slide loop', QtCore.QVariant(True)).toBool(): + row = 0 + else: + Receiver.send_message('servicemanager_next_item') + return + self.__checkUpdateSelectedSlide(row) + self.slideSelected() + def onSlideSelectedPrevious(self): + """ + Go to the previous slide. + """ + if not self.serviceItem: + return + Receiver.send_message(u'%s_previous' % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive]) + if self.serviceItem.is_command() and self.isLive: + self.updatePreview() + else: + row = self.previewListWidget.currentRow() - 1 + if row == -1: + if QtCore.QSettings().value(u'generalSettingsSection/enable slide loop', QtCore.QVariant(True)).toBool(): + row = self.previewListWidget.rowCount() - 1 + else: + row = 0 + self.__checkUpdateSelectedSlide(row) + self.slideSelected() + + def __checkUpdateSelectedSlide(self, row): + if row + 1 < self.previewListWidget.rowCount(): + self.previewListWidget.scrollToItem( + self.previewListWidget.item(row + 1, 0)) + self.previewListWidget.selectRow(row) + + def onSlideSelectedLast(self): + """ + Go to the last slide. + """ + if not self.serviceItem: + return + Receiver.send_message(u'%s_last' % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive]) + if self.serviceItem.is_command(): + self.updatePreview() + else: + self.previewListWidget.selectRow( + self.previewListWidget.rowCount() - 1) + self.slideSelected() + + def onToggleLoop(self, toggled): + """ + Toggles the loop state. + """ + if self.toolbar.actions[u'Start Loop'].isVisible(): + self.onStartLoop() + else: + self.onStopLoop() + + def onStartLoop(self): + """ + Start the timer loop running and store the timer id + """ + if self.previewListWidget.rowCount() > 1: + self.timer_id = self.startTimer( + int(self.delaySpinBox.value()) * 1000) + self.toolbar.actions[u'Stop Loop'].setVisible(True) + self.toolbar.actions[u'Start Loop'].setVisible(False) + + def onStopLoop(self): + """ + Stop the timer loop running + """ + if self.timer_id != 0: + self.killTimer(self.timer_id) + self.timer_id = 0 + self.toolbar.actions[u'Start Loop'].setVisible(True) + self.toolbar.actions[u'Stop Loop'].setVisible(False) + + def timerEvent(self, event): + """ + If the timer event is for this window select next slide + """ + if event.timerId() == self.timer_id: + self.onSlideSelectedNext() + + def onEditSong(self): + """ + From the preview display requires the service Item to be editied + """ + self.songEdit = True + Receiver.send_message(u'%s_edit' % self.serviceItem.name.lower(), + u'P:%s' % self.serviceItem.edit_id) + + def onGoLiveClick(self): + """ + triggered by clicking the Preview slide items + """ + if QtCore.QSettings().value(u'advanced/double click live', + QtCore.QVariant(False)).toBool(): + self.onGoLive() + + def onGoLive(self): + """ + If preview copy slide item to live + """ + row = self.previewListWidget.currentRow() + if row > -1 and row < self.previewListWidget.rowCount(): + if self.serviceItem.from_service: + Receiver.send_message('servicemanager_preview_live', + u'%s:%s' % (self.serviceItem._uuid, row)) + else: + self.parent.liveController.addServiceManagerItem( + self.serviceItem, row) + + def onMediaStart(self, item): + """ + Respond to the arrival of a media service item + """ + log.debug(u'SlideController onMediaStart') + file = os.path.join(item.get_frame_path(), item.get_frame_title()) + if self.isLive: + self.display.video(file, self.volume) + self.volumeSlider.setValue(self.volume) + else: + self.mediaObject.stop() + self.mediaObject.clearQueue() + self.mediaObject.setCurrentSource(Phonon.MediaSource(file)) + self.seekSlider.setMediaObject(self.mediaObject) + self.seekSlider.show() + self.onMediaPlay() + + def mediaVolume(self): + """ + Respond to the release of Volume Slider + """ + log.debug(u'SlideController mediaVolume') + self.volume = self.volumeSlider.value() + self.display.videoVolume(self.volume) + + def onMediaPause(self): + """ + Respond to the Pause from the media Toolbar + """ + log.debug(u'SlideController onMediaPause') + if self.isLive: + self.display.videoPause() + else: + self.mediaObject.pause() + + def onMediaPlay(self): + """ + Respond to the Play from the media Toolbar + """ + log.debug(u'SlideController onMediaPlay') + if self.isLive: + self.display.videoPlay() + else: + self.slidePreview.hide() + self.video.show() + self.mediaObject.play() + + def onMediaStop(self): + """ + Respond to the Stop from the media Toolbar + """ + log.debug(u'SlideController onMediaStop') + if self.isLive: + self.display.videoStop() + else: + self.mediaObject.stop() + self.video.hide() + self.slidePreview.clear() + self.slidePreview.show() + + def onMediaClose(self): + """ + Respond to a request to close the Video + """ + log.debug(u'SlideController onMediaStop') + if self.isLive: + self.display.resetVideo() + else: + self.mediaObject.stop() + self.mediaObject.clearQueue() + self.video.hide() + self.slidePreview.clear() + self.slidePreview.show() + + def _resetBlank(self): + """ + Used by command items which provide their own displays to reset the + screen hide attributes + """ + hide_mode = self.hideMode() + if hide_mode == HideMode.Blank: + self.onBlankDisplay(True) + elif hide_mode == HideMode.Theme: + self.onThemeDisplay(True) + elif hide_mode == HideMode.Screen: + self.onHideDisplay(True) + else: + self.hidePlugin(False) + + def hideMode(self): + """ + Determine what the hide mode should be according to the blank button + """ + if not self.isLive: + return None + elif self.blankScreen.isChecked(): + return HideMode.Blank + elif self.themeScreen.isChecked(): + return HideMode.Theme + elif self.desktopScreen.isChecked(): + return HideMode.Screen + else: + return None From 541feef8ea07185a9ffc0031dbe1b6cd41daf15d Mon Sep 17 00:00:00 2001 From: Josh Miller Date: Tue, 24 May 2011 07:23:55 -0400 Subject: [PATCH 049/190] Another try at the code for enabling loop through a checkbox, seems to work as far as i see --- openlp/core/ui/slidecontroller.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 4da75ebb6..722905c0b 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -928,6 +928,7 @@ class SlideController(QtGui.QWidget): """ Go to the next slide. """ + loopcheck = QtCore.QSettings().value( self.parent.generalSettingsSection + u'generalSettingsSection/enable slide loop', QtCore.QVariant(True).toBool) if not self.serviceItem: return Receiver.send_message(u'%s_next' % self.serviceItem.name.lower(), @@ -937,10 +938,9 @@ class SlideController(QtGui.QWidget): else: row = self.previewListWidget.currentRow() + 1 if row == self.previewListWidget.rowCount(): - if QtCore.QSettings().value(u'generalSettingsSection/enable slide loop', QtCore.QVariant(True)).toBool(): + if loopcheck == True: row = 0 else: - Receiver.send_message('servicemanager_next_item') return self.__checkUpdateSelectedSlide(row) self.slideSelected() @@ -948,6 +948,7 @@ class SlideController(QtGui.QWidget): """ Go to the previous slide. """ + loopcheck =QtCore.QSettings().value( self.parent.generalSettingsSection + u'enable slide loop', QtCore.QVariant(True).toBool) if not self.serviceItem: return Receiver.send_message(u'%s_previous' % self.serviceItem.name.lower(), @@ -957,10 +958,10 @@ class SlideController(QtGui.QWidget): else: row = self.previewListWidget.currentRow() - 1 if row == -1: - if QtCore.QSettings().value(u'generalSettingsSection/enable slide loop', QtCore.QVariant(True)).toBool(): + if loopcheck == True: row = self.previewListWidget.rowCount() - 1 else: - row = 0 + return self.__checkUpdateSelectedSlide(row) self.slideSelected() From ca6e172f5accf4113f2a2b4757797b4f07b23d4d Mon Sep 17 00:00:00 2001 From: Stevan Pettit Date: Tue, 24 May 2011 08:57:58 -0400 Subject: [PATCH 051/190] modified: scripts/windows-builder.py --- scripts/windows-builder.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/windows-builder.py b/scripts/windows-builder.py index 26394f189..750f14916 100644 --- a/scripts/windows-builder.py +++ b/scripts/windows-builder.py @@ -95,6 +95,12 @@ Visual C++ 2008 Express Edition windows-builder.py This script, of course. It should be in the "scripts" directory of OpenLP. +psvince.dll + This dll is used during the actual install of OpenLP to check if OpenLP is + running on the users machine prior to the setup. If OpenLP is running, + the install will fail. The dll can be obtained from here: + http://www.vincenzo.net/isxkb/index.php?title=PSVince) + """ import os From d068d11c76e8b34575a7fd10a2dc56db4863f270 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Tue, 24 May 2011 17:06:38 +0200 Subject: [PATCH 052/190] (started to) fix bug #86896 --- openlp/core/lib/__init__.py | 4 ++ openlp/core/lib/serviceitem.py | 5 +- openlp/plugins/songs/lib/songbeamerimport.py | 52 ++++++++++---------- 3 files changed, 34 insertions(+), 27 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 27a34d54d..af42e3957 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -83,6 +83,9 @@ base_html_expands.append({u'desc': u'Italics', u'start tag': u'{it}', base_html_expands.append({u'desc': u'Underline', u'start tag': u'{u}', u'start html': u'', u'end tag': u'{/u}', u'end html': u'', u'protected': True}) +base_html_expands.append({u'desc': u'Break', u'start tag': u'{br}', + u'start html': u'
', u'end tag': u'', u'end html': u'', + u'protected': True}) def translate(context, text, comment=None, encoding=QtCore.QCoreApplication.CodecForTr, n=-1, @@ -244,6 +247,7 @@ def clean_tags(text): Remove Tags from text for display """ text = text.replace(u'
', u'\n') + text = text.replace(u'{br}', u'\n') text = text.replace(u' ', u' ') for tag in DisplayTags.get_html_tags(): text = text.replace(tag[u'start tag'], u'') diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 95702f229..f7b1ff1c8 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -28,6 +28,7 @@ The :mod:`serviceitem` provides the service item functionality including the type and capability of an item. """ +import cgi import datetime import logging import os @@ -174,10 +175,12 @@ class ServiceItem(object): formatted = self.renderer \ .format_slide(slide[u'raw_slide'], line_break, self) for page in formatted: + page = page.replace(u'
', u'{br}') + html = cgi.escape(page.rstrip().replace(u'
', u'{br}')) self._display_frames.append({ u'title': clean_tags(page), u'text': clean_tags(page.rstrip()), - u'html': expand_tags(page.rstrip()), + u'html': expand_tags(cgi.escape(page.rstrip())), u'verseTag': slide[u'verseTag'] }) elif self.service_item_type == ServiceItemType.Image or \ diff --git a/openlp/plugins/songs/lib/songbeamerimport.py b/openlp/plugins/songs/lib/songbeamerimport.py index 861ec2e99..5a83f54cd 100644 --- a/openlp/plugins/songs/lib/songbeamerimport.py +++ b/openlp/plugins/songs/lib/songbeamerimport.py @@ -68,6 +68,30 @@ class SongBeamerImport(SongImport): Song Beamer file format is text based in the beginning are one or more control tags written """ + HTML_TAG_PAIRS = [ + (re.compile(u''), u'{st}'), + (re.compile(u''), u'{/st}'), + (re.compile(u''), u'{it}'), + (re.compile(u''), u'{/it}'), + (re.compile(u''), u'{u}'), + (re.compile(u''), u'{/u}'), + (re.compile(u'

'), u'{p}'), + (re.compile(u'

'), u'{/p}'), + (re.compile(u''), u'{su}'), + (re.compile(u''), u'{/su}'), + (re.compile(u''), u'{sb}'), + (re.compile(u''), u'{/sb}'), + (re.compile(u''), u'{br}'), + (re.compile(u'<[/]?wordwrap>'), u''), + (re.compile(u'<[/]?strike>'), u''), + (re.compile(u'<[/]?h.*?>'), u''), + (re.compile(u'<[/]?s.*?>'), u''), + (re.compile(u'<[/]?linespacing.*?>'), u''), + (re.compile(u'<[/]?c.*?>'), u''), + (re.compile(u''), u''), + (re.compile(u''), u'') + ] + def __init__(self, manager, **kwargs): """ Initialise the Song Beamer importer. @@ -133,32 +157,8 @@ class SongBeamerImport(SongImport): This can be called to replace SongBeamer's specific (html) tags with OpenLP's specific (html) tags. """ - tag_pairs = [ - (u'', u'{st}'), - (u'', u'{/st}'), - (u'', u'{it}'), - (u'', u'{/it}'), - (u'', u'{u}'), - (u'', u'{/u}'), - (u'

', u'{p}'), - (u'

', u'{/p}'), - (u'', u'{su}'), - (u'', u'{/su}'), - (u'', u'{sb}'), - (u'', u'{/sb}'), - (u'<[/]?br.*?>', u'{st}'), - (u'<[/]?wordwrap>', u''), - (u'<[/]?strike>', u''), - (u'<[/]?h.*?>', u''), - (u'<[/]?s.*?>', u''), - (u'<[/]?linespacing.*?>', u''), - (u'<[/]?c.*?>', u''), - (u'', u''), - (u'', u'') - ] - for pair in tag_pairs: - self.current_verse = re.compile(pair[0]).sub(pair[1], - self.current_verse) + for pair in SongBeamerImport.HTML_TAG_PAIRS: + self.current_verse = pair[0].sub(pair[1], self.current_verse) def parse_tags(self, line): """ From b9bcd98716eee9ff2c741bd1154d6c281ebffac8 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Tue, 24 May 2011 18:51:40 +0200 Subject: [PATCH 053/190] removed not need line --- openlp/core/lib/serviceitem.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index f7b1ff1c8..84379c076 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -176,7 +176,6 @@ class ServiceItem(object): .format_slide(slide[u'raw_slide'], line_break, self) for page in formatted: page = page.replace(u'
', u'{br}') - html = cgi.escape(page.rstrip().replace(u'
', u'{br}')) self._display_frames.append({ u'title': clean_tags(page), u'text': clean_tags(page.rstrip()), From da45bb0b0625ef84d181768c88e05caba9a249de Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 24 May 2011 19:32:36 +0200 Subject: [PATCH 054/190] Fixed various strings, as listed in bug #734445. --- openlp/core/ui/aboutdialog.py | 2 +- openlp/core/ui/firsttimewizard.py | 3 +-- openlp/core/ui/mainwindow.py | 5 ++--- openlp/plugins/bibles/bibleplugin.py | 2 +- openlp/plugins/bibles/forms/bibleimportform.py | 7 ++++--- openlp/plugins/songs/forms/songexportform.py | 2 +- 6 files changed, 10 insertions(+), 11 deletions(-) diff --git a/openlp/core/ui/aboutdialog.py b/openlp/core/ui/aboutdialog.py index d4ea463ea..4f0d5053b 100644 --- a/openlp/core/ui/aboutdialog.py +++ b/openlp/core/ui/aboutdialog.py @@ -615,4 +615,4 @@ class Ui_AboutDialog(object): self.aboutNotebook.indexOf(self.licenseTab), translate('OpenLP.AboutForm', 'License')) self.contributeButton.setText(translate('OpenLP.AboutForm', - 'Contribute')) \ No newline at end of file + 'Contribute')) diff --git a/openlp/core/ui/firsttimewizard.py b/openlp/core/ui/firsttimewizard.py index 4c7ae6880..8accb6254 100644 --- a/openlp/core/ui/firsttimewizard.py +++ b/openlp/core/ui/firsttimewizard.py @@ -201,8 +201,7 @@ class Ui_FirstTimeWizard(object): 'Welcome to the First Time Wizard')) self.informationLabel.setText(translate('OpenLP.FirstTimeWizard', 'This wizard will help you to configure OpenLP for initial use.' - ' Click the next button below to start the process of selection ' - 'your initial options. ')) + ' Click the next button below to start.')) self.pluginPage.setTitle(translate('OpenLP.FirstTimeWizard', 'Activate required Plugins')) self.pluginPage.setSubTitle(translate('OpenLP.FirstTimeWizard', diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index bf6b7fa98..b2c0466b6 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -415,9 +415,8 @@ class Ui_MainWindow(object): translate('OpenLP.MainWindow', 'More information about OpenLP')) self.HelpOnlineHelpItem.setText( translate('OpenLP.MainWindow', '&Online Help')) - # Uncomment after 1.9.5 beta string freeze - #self.HelpOnlineHelpItem.setShortcut( - # translate('OpenLP.MainWindow', 'F1')) + self.HelpOnlineHelpItem.setShortcut( + translate('OpenLP.MainWindow', 'F1')) self.helpWebSiteItem.setText( translate('OpenLP.MainWindow', '&Web Site')) for item in self.LanguageGroup.actions(): diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index de7ce144e..f64691ed4 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -93,7 +93,7 @@ class BiblePlugin(Plugin): def about(self): about_text = translate('BiblesPlugin', 'Bible Plugin' - '
The Bible plugin provides the ability to display bible ' + '
The Bible plugin provides the ability to display Bible ' 'verses from different sources during the service.') return about_text diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index 439724b66..75848fc10 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -694,7 +694,7 @@ class BibleImportForm(OpenLPWizard): if bible_type == BibleFormat.WebDownload: self.progressLabel.setText(translate( 'BiblesPlugin.ImportWizardForm', - 'Starting Registering bible...')) + 'Registering Bible...')) else: self.progressLabel.setText(WizardStrings.StartingImport) Receiver.send_message(u'openlp_process_events') @@ -757,7 +757,7 @@ class BibleImportForm(OpenLPWizard): if bible_type == BibleFormat.WebDownload: self.progressLabel.setText( translate('BiblesPlugin.ImportWizardForm', 'Registered ' - 'bible. Please note, that verses will be downloaded on\n' + 'Bible. Please note, that verses will be downloaded on\n' 'demand and thus an internet connection is required.')) else: self.progressLabel.setText(WizardStrings.FinishedImport) @@ -765,4 +765,5 @@ class BibleImportForm(OpenLPWizard): self.progressLabel.setText(translate( 'BiblesPlugin.ImportWizardForm', 'Your Bible import failed.')) del self.manager.db_cache[importer.name] - delete_database(self.plugin.settingsSection, importer.file) \ No newline at end of file + delete_database(self.plugin.settingsSection, importer.file) + diff --git a/openlp/plugins/songs/forms/songexportform.py b/openlp/plugins/songs/forms/songexportform.py index dbd0eb9af..8d3272e12 100644 --- a/openlp/plugins/songs/forms/songexportform.py +++ b/openlp/plugins/songs/forms/songexportform.py @@ -184,7 +184,7 @@ class SongExportForm(OpenLPWizard): translate('SongsPlugin.ExportWizardForm', 'Select Directory')) self.exportSongPage.setSubTitle( translate('SongsPlugin.ExportWizardForm', - 'Select the directory you want the songs to be saved.')) + 'Select the directory where you want the songs to be saved.')) self.directoryLabel.setText( translate('SongsPlugin.ExportWizardForm', 'Directory:')) self.progressPage.setTitle( From 55dfd67a5c1889757fe48c00a44849606afb3dec Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 24 May 2011 19:42:30 +0200 Subject: [PATCH 055/190] More translation updates. --- openlp/core/ui/aboutdialog.py | 12 +- resources/i18n/af.ts | 177 ++++++++-------- resources/i18n/cs.ts | 176 ++++++++-------- resources/i18n/de.ts | 182 ++++++++-------- resources/i18n/en.ts | 170 +++++++-------- resources/i18n/en_GB.ts | 177 ++++++++-------- resources/i18n/en_ZA.ts | 220 ++++++++++--------- resources/i18n/es.ts | 177 ++++++++-------- resources/i18n/et.ts | 177 ++++++++-------- resources/i18n/fr.ts | 171 +++++++-------- resources/i18n/hu.ts | 184 ++++++++-------- resources/i18n/id.ts | 177 ++++++++-------- resources/i18n/ja.ts | 176 ++++++++-------- resources/i18n/ko.ts | 170 +++++++-------- resources/i18n/nb.ts | 177 ++++++++-------- resources/i18n/nl.ts | 177 ++++++++-------- resources/i18n/pt_BR.ts | 383 +++++++++++++++++----------------- resources/i18n/ru.ts | 170 +++++++-------- resources/i18n/sv.ts | 177 ++++++++-------- resources/i18n/zh_CN.ts | 170 +++++++-------- scripts/translation_utils.py | 2 +- 21 files changed, 1786 insertions(+), 1816 deletions(-) diff --git a/openlp/core/ui/aboutdialog.py b/openlp/core/ui/aboutdialog.py index 4f0d5053b..ef3deb526 100644 --- a/openlp/core/ui/aboutdialog.py +++ b/openlp/core/ui/aboutdialog.py @@ -223,11 +223,13 @@ class Ui_AboutDialog(object): translate('OpenLP.AboutForm', 'Credits')) copyright = translate('OpenLP.AboutForm', 'Copyright \xa9 2004-2011 Raoul Snyman\n' - 'Portions copyright \xa9 2004-2011 ' - 'Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri,\n' - 'Meinert Jordan, Andreas Preikschat, Christian Richter, Philip\n' - 'Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten\n' - 'Tinggaard, Frode Woldsund') + 'Portions copyright \xa9 2004-2011') + copyright = copyright + ' ' + ', '.join(developers) + copyright = copyright + ', ' + ', '.join(contributors) + #'Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri,\n' + #'Meinert Jordan, Andreas Preikschat, Christian Richter, Philip\n' + #'Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten\n' + #'Tinggaard, Frode Woldsund') licence = translate('OpenLP.AboutForm', 'This program is free software; you can redistribute it and/or ' 'modify it under the terms of the GNU General Public License as ' diff --git a/resources/i18n/af.ts b/resources/i18n/af.ts index 1459194ce..e8875e3b1 100644 --- a/resources/i18n/af.ts +++ b/resources/i18n/af.ts @@ -224,11 +224,6 @@ Gaan steeds voort? &Bible &Bybel - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>Bybel Mini-program</strong><br/>Die Bybel mini-program verskaf die taak om Bybel verse vanaf verskillende bronne tydens die diens te vertoon. - Bible @@ -292,6 +287,11 @@ Gaan steeds voort? Add the selected Bible to the service. + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + +
BiblesPlugin.BibleManager @@ -519,18 +519,6 @@ Veranderinge affekteer nie verse wat reeds in die diens is nie. This Bible already exists. Please import a different Bible or first delete the existing one. Hierdie Bybel bestaan reeds. Voer asseblief 'n ander Bybel in of wis eers die bestaande een uit. - - - Starting Registering bible... - Begin Bybel registrasie... - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - Geregistreerde bybel. Neem kennis daarvan dat verse op aanvraag -afgelaai word en dus word 'n Internet konneksie benodig. - Permissions: @@ -576,6 +564,17 @@ afgelaai word en dus word 'n Internet konneksie benodig. openlp.org 1.x Bible Files openlp.org 1.x Bybel Lêers + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -1075,12 +1074,12 @@ OpenLP is geskryf en word onderhou deur vrywilligers. As u graag wil sien dat me Krediete - + License Lisensie - + Contribute Dra By @@ -1090,12 +1089,12 @@ OpenLP is geskryf en word onderhou deur vrywilligers. As u graag wil sien dat me 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. @@ -1228,15 +1227,8 @@ Finale Krediet Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund - Kopiereg © 2004-2011 Raoul Snyman -Gedeeltelike kopiereg © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 + @@ -1585,77 +1577,72 @@ Version: %s Welkom by die Eerste-keer Gids - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - 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. - - - + Activate required Plugins Aktiveer nodige Miniprogramme - + Select the Plugins you wish to use. Kies die Miniprogramme wat gebruik moet word. - + Songs Liedere - + Custom Text Verpersoonlike Teks - + Bible Bybel - + Images Beelde - + Presentations Aanbiedinge - + Media (Audio and Video) Media (Klank en Video) - + Allow remote access Laat afgeleë toegang toe - + Monitor Song Usage Monitor Lied-Gebruik - + Allow Alerts Laat Waarskuwings Toe - + No Internet Connection Geen Internet Verbinding - + Unable to detect an Internet connection. Nie in staat om 'n Internet verbinding op te spoor nie. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1667,70 +1654,75 @@ Om die Eerste-gebruik Gids later te gebruik om hierde data in te trek, druk die Om die Eerste-keer gids heeltemal te kanselleer, druk die vollledig-knoppie hieronder. - + Sample Songs Voorbeeld Liedere - + Select and download public domain songs. Kies en laai liedere vanaf die publieke domein. - + Sample Bibles Voorbeeld Bybels - + Select and download free Bibles. Kies en laai gratis Bybels af. - + Sample Themes Voorbeeld Temas - + Select and download sample themes. Kies en laai voorbeeld temas af. - + Default Settings Verstek Instellings - + Set up default settings to be used by OpenLP. Stel verstek instellings wat deur OpenLP gebruik moet word. - + Setting Up And Importing Opstel en Invoer - + Please wait while OpenLP is set up and your data is imported. Wag asseblief terwyl OpenLP opgestel word en die data ingevoer word. - + Default output display: Verstek uitgaande vertoning: - + Select default theme: Kies verstek tema: - + Starting configuration process... Konfigurasie proses begin... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + + OpenLP.GeneralTab @@ -2104,62 +2096,62 @@ Om die Eerste-keer gids heeltemal te kanselleer, druk die vollledig-knoppie hier &Aanlyn Hulp - + &Web Site &Web Tuiste - + Use the system language, if available. Gebruik die sisteem se taal as dit beskikbaar is. - + Set the interface language to %s Verstel die koppelvlak taal na %s - + Add &Tool... Voeg Gereedskaps&tuk by... - + Add an application to the list of tools. Voeg 'n applikasie by die lys van gereedskapstukke. - + &Default &Verstek - + Set the view mode back to the default. Verstel skou modus terug na verstek modus. - + &Setup Op&stel - + Set the view mode to Setup. Verstel die skou modus na Opstel modus. - + &Live &Regstreeks - + Set the view mode to Live. Verstel die skou modus na Regstreeks. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2168,22 +2160,22 @@ You can download the latest version from http://openlp.org/. Die nuutste weergawe kan afgelaai word vanaf http://openlp.org/. - + OpenLP Version Updated OpenLP Weergawe is Opdateer - + OpenLP Main Display Blanked OpenLP Hoof Vertoning Blanko - + The Main Display has been blanked out Die Hoof Skerm is afgeskakel - + Default Theme: %s Verstek Tema: %s @@ -2199,12 +2191,12 @@ Die nuutste weergawe kan afgelaai word vanaf http://openlp.org/. Konfigureer Kortpaaie - + Close OpenLP Mook OpenLP toe - + Are you sure you want to close OpenLP? Maak OpenLP sekerlik toe? @@ -2214,12 +2206,12 @@ Die nuutste weergawe kan afgelaai word vanaf http://openlp.org/. Druk die huidige Diens Bestelling. - + Open &Data Folder... Maak &Data Lêer oop... - + Open the folder where songs, bibles and other data resides. Maak die lêer waar liedere, bybels en ander data is, oop. @@ -2229,20 +2221,25 @@ Die nuutste weergawe kan afgelaai word vanaf http://openlp.org/. Konfigureer Vertoon Haakies - + &Autodetect Spoor outom&aties op - + Update Theme Images - + Update the preview images for all themes. + + + F1 + + OpenLP.MediaManagerItem @@ -4796,11 +4793,6 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling.Select Directory Kies Lêer-gids - - - Select the directory you want the songs to be saved. - Kies die gids waar die liedere gestoor moet word. - Directory: @@ -4846,6 +4838,11 @@ Die enkodering is verantwoordelik vir die korrekte karrakter voorstelling.Select Destination Folder Kies Bestemming Lêer gids + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/resources/i18n/cs.ts b/resources/i18n/cs.ts index ff4cd7262..7c066f32f 100644 --- a/resources/i18n/cs.ts +++ b/resources/i18n/cs.ts @@ -224,11 +224,6 @@ Chcete přesto pokračovat? &Bible &Bible - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>Modul Bible</strong><br />Modul Bible dovoluje během služby zobrazovat biblické verše z různých zdrojů. - Bible @@ -292,6 +287,11 @@ Chcete přesto pokračovat? Add the selected Bible to the service. + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + + BiblesPlugin.BibleManager @@ -524,17 +524,6 @@ Verše, které jsou už ve službě, nejsou změnami ovlivněny. CSV File Zahajuji registraci Bible... - - - Starting Registering bible... - Zahajuji registraci Bible... - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - Bible zaregistrována. Vezm?te prosím na v?domí, že verše budou stahovány jak bude pot?eba, což vyžaduje p?ipojení k Internetu. - Bibleserver @@ -575,6 +564,17 @@ demand and thus an internet connection is required. openlp.org 1.x Bible Files Soubory s Biblemi z openlp.org 1.x + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -1074,12 +1074,12 @@ Aplikace OpenLP napsána a udržována dobrovolníky. Pokud byste rádi viděli Zásluhy - + License Licence - + Contribute Přispět @@ -1089,12 +1089,12 @@ Aplikace OpenLP napsána a udržována dobrovolníky. Pokud byste rádi viděli sestavení %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. Tato aplikace je svobodný software. Lze ji libovolně šířit a upravovat v souladu s GNU General Public licencí, vydané Free Software Foundation; a to v souladu s verzí 2 této 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. Tato aplikace je ší?ena v nad?ji, že bude užite?ná, avšak BEZ JAKÉKOLI ZÁRUKY; neposkytují se ani odvozené záruky PRODEJNOSTI anebo VHODNOSTI PRO UR?ITÝ Ú?EL. Další podrobnosti viz níže. @@ -1226,15 +1226,8 @@ Finální zásluhy Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund - Copyright © 2004-2011 Raoul Snyman -Částečný copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 + @@ -1558,7 +1551,7 @@ Version: %s OpenLP.FirstTimeWizard - + Songs Písně @@ -1573,57 +1566,57 @@ Version: %s Vítejte v průvodci prvním spuštění - + Activate required Plugins Zapnout požadované moduly - + Select the Plugins you wish to use. Vyberte moduly, které chcete používat. - + Custom Text Vlastní text - + Bible Bible - + Images Obrázky - + Presentations Prezentace - + Media (Audio and Video) Média (audio a video) - + Allow remote access Povolit vzdálený přístup - + Monitor Song Usage Sledovat užívání písní - + Allow Alerts Povolit upozornění - + Default Settings Výchozí nastavení @@ -1643,22 +1636,17 @@ Version: %s Zapínám vybrané moduly... - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - Tento průvodce vám pomůže s počátečním nastavením aplikace OpenLP. Klepnutím níže na tlačítko další zahájíte výběr počátečních nastavení. - - - + No Internet Connection Žádné připojení k Internetu - + Unable to detect an Internet connection. Nezdařila se detekce internetového připojení. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1671,65 +1659,70 @@ Pro pozdější opětovné spuštění Průvodce prvním spuštění a importu u Pro úplné zrušení Průvodce prvním spuštění klepněte nyní na tlačítko Dokončit. - + Sample Songs Ukázky písní - + Select and download public domain songs. Vybrat a stáhnout písně s nechráněnými autorskými právy. - + Sample Bibles Ukázky Biblí - + Select and download free Bibles. Vybrat a stáhnout volně dostupné Bible. - + Sample Themes Ukázky motivů - + Select and download sample themes. Vybrat a stáhnout ukázky motivů. - + Set up default settings to be used by OpenLP. Nastavit výchozí nastavení pro aplikaci OpenLP. - + Setting Up And Importing Nastavuji a importuji - + Please wait while OpenLP is set up and your data is imported. Čekejte prosím, než aplikace OpenLP nastaví a importuje vaše data. - + Default output display: Výchozí výstup zobrazit na: - + Select default theme: Vybrat výchozí motiv: - + Starting configuration process... Spouštím průběh nastavení... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + + OpenLP.GeneralTab @@ -2103,62 +2096,62 @@ Pro úplné zrušení Průvodce prvním spuštění klepněte nyní na tlačítk &Online nápověda - + &Web Site &Webová stránka - + Use the system language, if available. Použít jazyk systému, pokud je dostupný. - + Set the interface language to %s Jazyk rozhraní nastaven na %s - + Add &Tool... Přidat &nástroj... - + Add an application to the list of tools. Přidat aplikaci do seznamu nástrojů. - + &Default &Výchozí - + Set the view mode back to the default. Nastavit režim zobrazení zpět na výchozí. - + &Setup &Nastavení - + Set the view mode to Setup. Nastavit režim zobrazení na Nastavení. - + &Live &Naživo - + Set the view mode to Live. Nastavit režim zobrazení na Naživo. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2167,22 +2160,22 @@ You can download the latest version from http://openlp.org/. Nejnovější verzi lze stáhnout z http://openlp.org/. - + OpenLP Version Updated Verze OpenLP aktualizována - + OpenLP Main Display Blanked Hlavní zobrazení OpenLP je prázdné - + The Main Display has been blanked out Hlavní zobrazení nastaveno na prázdný snímek - + Default Theme: %s Výchozí motiv: %s @@ -2198,12 +2191,12 @@ Nejnovější verzi lze stáhnout z http://openlp.org/. Nastavit &Zkratky - + Close OpenLP Zavřít OpenLP - + Are you sure you want to close OpenLP? Chcete opravdu zavřít aplikaci OpenLP? @@ -2218,30 +2211,35 @@ Nejnovější verzi lze stáhnout z http://openlp.org/. &Nastavit značky zobrazení - + Open &Data Folder... Otevřít složku s &daty... - + Open the folder where songs, bibles and other data resides. Otevřít složku, kde se nachází písně, Bible a ostatní data. - + &Autodetect &Automaticky detekovat - + Update Theme Images - + Update the preview images for all themes. + + + F1 + + OpenLP.MediaManagerItem @@ -4799,11 +4797,6 @@ Kódování zodpovídá za správnou reprezentaci znaků. Select Directory Vybrat adresář - - - Select the directory you want the songs to be saved. - Vyberte adresář, kam chcete uložit písně. - Directory: @@ -4844,6 +4837,11 @@ Kódování zodpovídá za správnou reprezentaci znaků. Select Destination Folder Vybrat cílovou složku + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/resources/i18n/de.ts b/resources/i18n/de.ts index 50ab55bcf..8262160e7 100644 --- a/resources/i18n/de.ts +++ b/resources/i18n/de.ts @@ -224,11 +224,6 @@ Möchten Sie trotzdem fortfahren? &Bible &Bibel - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>Bibel Erweiterung</strong><br />Die Bibel Erweiterung ermöglicht es Bibelverse aus verschiedenen Quellen anzuzeigen. - Bible @@ -292,6 +287,11 @@ Möchten Sie trotzdem fortfahren? Add the selected Bible to the service. Füge die ausgewählten Bibelverse zum Ablauf hinzu. + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + + BiblesPlugin.BibleManager @@ -519,19 +519,6 @@ Changes do not affect verses already in the service. This Bible already exists. Please import a different Bible or first delete the existing one. Diese Bibel existiert bereit. Bitte geben Sie einen anderen Übersetzungsnamen an oder löschen Sie zuerst die Existierende. - - - Starting Registering bible... - Starte Erfassung der Bibel... - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - Erfassung abgeschlossen. -Bitte beachten Sie, dass Bibeltexte bei Bedarf heruntergeladen werden. -Daher ist eine Verbindung zum Internet erforderlich. - Permissions: @@ -577,6 +564,17 @@ Daher ist eine Verbindung zum Internet erforderlich. openlp.org 1.x Bible Files openlp.org 1.x Bibel-Dateien + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -1076,12 +1074,12 @@ OpenLP wird von freiwilligen Helfern programmiert und gewartet. Wenn Sie sich me Danksagungen - + License Lizenz - + Contribute Mitmachen @@ -1091,12 +1089,12 @@ OpenLP wird von freiwilligen Helfern programmiert und gewartet. Wenn Sie sich me 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. @@ -1231,15 +1229,8 @@ Danke Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund - Copyright © 2004-2011 Raoul Snyman -Anteiliges Copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 + @@ -1590,77 +1581,72 @@ Version: %s Herzlich willkommen zum Einrichtungsassistent - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - Dieser Assistent wird Ihnen helfen OpenLP für die erste Benutzung zu konfigurieren. Klicken sie »Weiter« um den Assistenten zu starten. - - - + Activate required Plugins Erweiterungen aktivieren - + Select the Plugins you wish to use. Wählen Sie die Erweiterungen aus, die Sie nutzen wollen. - + Songs Lieder - + Custom Text Sonderfolien - + Bible Bibel - + Images Bilder - + Presentations Präsentationen - + Media (Audio and Video) Medien (Audio und Video) - + Allow remote access Erlaube Fernsteuerung - + Monitor Song Usage Lieder Benutzung Protokollierung - + Allow Alerts Erlaube Hinweise - + No Internet Connection Keine Internetverbindung - + Unable to detect an Internet connection. Es könnte keine Internetverbindung aufgebaut werden. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1673,70 +1659,75 @@ Um den Einrichtungsassistent später erneut zu starten und diese Beispieldaten z Um den Einrichtungsassistent nicht auszuführen, drücken Sie »Abschließen«. - + Sample Songs Beispiellieder - + Select and download public domain songs. Wählen und laden Sie Gemeinfreie (bzw. kostenlose) Lieder herunter. - + Sample Bibles Beispielbibeln - + Select and download free Bibles. Wählen und laden Sie freie Bibeln runter. - + Sample Themes Beispieldesigns - + Select and download sample themes. Wählen und laden Sie Beispieldesigns runter. - + Default Settings Standardeinstellungen - + Set up default settings to be used by OpenLP. Grundeinstellungen konfigurieren... - + Setting Up And Importing Konfiguriere und importiere - + Please wait while OpenLP is set up and your data is imported. Bitte warten Sie, während OpenLP eingerichtet wird. - + Default output display: Projektionsbildschirm: - + Select default theme: Standarddesign: - + Starting configuration process... Starte Konfiguration... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + + OpenLP.GeneralTab @@ -2110,82 +2101,82 @@ Um den Einrichtungsassistent nicht auszuführen, drücken Sie »Abschließen«.< &Online Hilfe - + &Web Site &Webseite - + Use the system language, if available. Die Systemsprache, sofern diese verfügbar ist, verwenden. - + Set the interface language to %s Die Sprache von OpenLP auf %s stellen - + Add &Tool... Hilfsprogramm hin&zufügen... - + Add an application to the list of tools. Eine Anwendung zur Liste der Hilfsprogramme hinzufügen. - + &Default &Standard - + Set the view mode back to the default. Den Ansichtsmodus auf Standardeinstellung setzen. - + &Setup &Einrichten - + Set the view mode to Setup. Die Ansicht für die Ablauferstellung optimieren. - + &Live &Live - + Set the view mode to Live. Die Ansicht für den Live-Betrieb optimieren. - + OpenLP Version Updated Neue OpenLP Version verfügbar - + OpenLP Main Display Blanked Hauptbildschirm abgedunkelt - + The Main Display has been blanked out Die Projektion ist momentan nicht aktiv. - + Default Theme: %s Standarddesign: %s - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2205,12 +2196,12 @@ Sie können die letzte Version auf http://openlp.org abrufen. &Tastenkürzel einrichten... - + Close OpenLP OpenLP beenden - + Are you sure you want to close OpenLP? Sind Sie sicher, dass OpenLP beendet werden soll? @@ -2220,12 +2211,12 @@ Sie können die letzte Version auf http://openlp.org abrufen. Drucke den aktuellen Ablauf. - + Open &Data Folder... Öffne &Datenverzeichnis... - + Open the folder where songs, bibles and other data resides. Öffne das Verzeichnis, wo Lieder, Bibeln und andere Daten gespeichert sind. @@ -2235,20 +2226,25 @@ Sie können die letzte Version auf http://openlp.org abrufen. &Formatvorlagen - + &Autodetect &Automatisch - + Update Theme Images Aktualisiere Design Bilder - + Update the preview images for all themes. Aktualisiert die Vorschaubilder aller Designs. + + + F1 + + OpenLP.MediaManagerItem @@ -2677,12 +2673,12 @@ Der Inhalt ist nicht in UTF-8 kodiert. Custom Service Notes: - Notizen zum Ablauf: + Notizen zum Ablauf: Notes: - Notizen: + Notizen: @@ -4803,11 +4799,6 @@ Einstellung korrekt. Select Directory Zielverzeichnis auswählen - - - Select the directory you want the songs to be saved. - Geben Sie das Zielverzeichnis an. - Directory: @@ -4853,6 +4844,11 @@ Einstellung korrekt. Select Destination Folder Zielverzeichnis wählen + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/resources/i18n/en.ts b/resources/i18n/en.ts index 51f68ece8..ebfb2002c 100644 --- a/resources/i18n/en.ts +++ b/resources/i18n/en.ts @@ -222,11 +222,6 @@ Do you want to continue anyway? &Bible - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - - Bible @@ -290,6 +285,11 @@ Do you want to continue anyway? Add the selected Bible to the service. + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + + BiblesPlugin.BibleManager @@ -513,17 +513,6 @@ Changes do not affect verses already in the service. CSV File - - - Starting Registering bible... - - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - - Bibleserver @@ -564,6 +553,17 @@ demand and thus an internet connection is required. openlp.org 1.x Bible Files + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -1056,12 +1056,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + License - + Contribute @@ -1071,12 +1071,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + 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. @@ -1148,10 +1148,7 @@ Final Credit Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 @@ -1448,7 +1445,7 @@ Version: %s OpenLP.FirstTimeWizard - + Songs @@ -1463,57 +1460,57 @@ Version: %s - + Activate required Plugins - + Select the Plugins you wish to use. - + Custom Text - + Bible - + Images - + Presentations - + Media (Audio and Video) - + Allow remote access - + Monitor Song Usage - + Allow Alerts - + Default Settings @@ -1533,22 +1530,17 @@ Version: %s - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - - - - + No Internet Connection - + Unable to detect an Internet connection. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1557,65 +1549,70 @@ To cancel the First Time Wizard completely, press the finish button now. - + Sample Songs - + Select and download public domain songs. - + Sample Bibles - + Select and download free Bibles. - + Sample Themes - + Select and download sample themes. - + Set up default settings to be used by OpenLP. - + Setting Up And Importing - + Please wait while OpenLP is set up and your data is imported. - + Default output display: - + Select default theme: - + Starting configuration process... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + + OpenLP.GeneralTab @@ -1989,84 +1986,84 @@ To cancel the First Time Wizard completely, press the finish button now. - + &Web Site - + Use the system language, if available. - + Set the interface language to %s - + Add &Tool... - + Add an application to the list of tools. - + &Default - + Set the view mode back to the default. - + &Setup - + Set the view mode to Setup. - + &Live - + Set the view mode to Live. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. - + OpenLP Version Updated - + OpenLP Main Display Blanked - + The Main Display has been blanked out - + Default Theme: %s @@ -2082,12 +2079,12 @@ You can download the latest version from http://openlp.org/. - + Close OpenLP - + Are you sure you want to close OpenLP? @@ -2102,30 +2099,35 @@ You can download the latest version from http://openlp.org/. - + Open &Data Folder... - + Open the folder where songs, bibles and other data resides. - + &Autodetect - + Update Theme Images - + Update the preview images for all themes. + + + F1 + + OpenLP.MediaManagerItem @@ -4676,11 +4678,6 @@ The encoding is responsible for the correct character representation. Select Directory - - - Select the directory you want the songs to be saved. - - Directory: @@ -4721,6 +4718,11 @@ The encoding is responsible for the correct character representation. Select Destination Folder + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/resources/i18n/en_GB.ts b/resources/i18n/en_GB.ts index 50f424f86..91b53abf5 100644 --- a/resources/i18n/en_GB.ts +++ b/resources/i18n/en_GB.ts @@ -224,11 +224,6 @@ Do you want to continue anyway? &Bible &Bible - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - Bible @@ -292,6 +287,11 @@ Do you want to continue anyway? Add the selected Bible to the service. + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + + BiblesPlugin.BibleManager @@ -519,18 +519,6 @@ Changes do not affect verses already in the service. This Bible already exists. Please import a different Bible or first delete the existing one. This Bible already exists. Please import a different Bible or first delete the existing one. - - - Starting Registering bible... - Starting Registering Bible... - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - Registered Bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - Permissions: @@ -576,6 +564,17 @@ demand and thus an internet connection is required. openlp.org 1.x Bible Files openlp.org 1.x Bible Files + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -1075,12 +1074,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Credits - + License Licence - + Contribute Contribute @@ -1090,12 +1089,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr 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. @@ -1227,15 +1226,8 @@ Final Credit Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund - Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 + @@ -1584,77 +1576,72 @@ Version: %s Welcome to the First Time Wizard - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selecting your initial options. - - - + Activate required Plugins Activate required Plugins - + Select the Plugins you wish to use. Select the Plugins you wish to use. - + Songs Songs - + Custom Text Custom Text - + Bible Bible - + Images Images - + Presentations Presentations - + Media (Audio and Video) Media (Audio and Video) - + Allow remote access Allow remote access - + Monitor Song Usage Monitor Song Usage - + Allow Alerts Allow Alerts - + No Internet Connection No Internet Connection - + Unable to detect an Internet connection. Unable to detect an Internet connection. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1667,70 +1654,75 @@ To re-run the First Time Wizard and import this sample data at a later stage, pr To cancel the First Time Wizard completely, press the finish button now. - + Sample Songs Sample Songs - + Select and download public domain songs. Select and download public domain songs. - + Sample Bibles Sample Bibles - + Select and download free Bibles. Select and download free Bibles. - + Sample Themes Sample Themes - + Select and download sample themes. Select and download sample themes. - + Default Settings Default Settings - + Set up default settings to be used by OpenLP. Set up default settings to be used by OpenLP. - + Setting Up And Importing Setting Up And Importing - + Please wait while OpenLP is set up and your data is imported. Please wait while OpenLP is set up and your data is imported. - + Default output display: Default output display: - + Select default theme: Select default theme: - + Starting configuration process... Starting configuration process... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + + OpenLP.GeneralTab @@ -2104,62 +2096,62 @@ To cancel the First Time Wizard completely, press the finish button now.&Online Help - + &Web Site &Web Site - + Use the system language, if available. Use the system language, if available. - + Set the interface language to %s Set the interface language to %s - + Add &Tool... Add &Tool... - + Add an application to the list of tools. Add an application to the list of tools. - + &Default &Default - + Set the view mode back to the default. Set the view mode back to the default. - + &Setup &Setup - + Set the view mode to Setup. Set the view mode to Setup. - + &Live &Live - + Set the view mode to Live. Set the view mode to Live. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2167,22 +2159,22 @@ You can download the latest version from http://openlp.org/. You can download the latest version from http://openlp.org/. - + OpenLP Version Updated OpenLP Version Updated - + OpenLP Main Display Blanked OpenLP Main Display Blanked - + The Main Display has been blanked out The Main Display has been blanked out - + Default Theme: %s Default Theme: %s @@ -2198,12 +2190,12 @@ You can download the latest version from http://openlp.org/. Configure &Shortcuts... - + Close OpenLP Close OpenLP - + Are you sure you want to close OpenLP? Are you sure you want to close OpenLP? @@ -2213,12 +2205,12 @@ You can download the latest version from http://openlp.org/. Print the current Service Order. - + Open &Data Folder... Open &Data Folder... - + Open the folder where songs, bibles and other data resides. Open the folder where songs, Bibles and other data resides. @@ -2228,20 +2220,25 @@ You can download the latest version from http://openlp.org/. &Configure Display Tags - + &Autodetect &Autodetect - + Update Theme Images - + Update the preview images for all themes. + + + F1 + + OpenLP.MediaManagerItem @@ -4794,11 +4791,6 @@ The encoding is responsible for the correct character representation.Select Directory Select Directory - - - Select the directory you want the songs to be saved. - Select the directory where you want the songs to be saved. - Directory: @@ -4844,6 +4836,11 @@ The encoding is responsible for the correct character representation.Select Destination Folder Select Destination Folder + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/resources/i18n/en_ZA.ts b/resources/i18n/en_ZA.ts index 40eeddebe..6b8e94dd5 100644 --- a/resources/i18n/en_ZA.ts +++ b/resources/i18n/en_ZA.ts @@ -224,11 +224,6 @@ Do you want to continue anyway? &Bible &Bible - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - Bible @@ -260,36 +255,41 @@ Do you want to continue anyway? Import a Bible. - + Import a Bible. Add a new Bible. - + Add a new Bible. Edit the selected Bible. - + Edit the selected Bible. Delete the selected Bible. - + Delete the selected Bible. Preview the selected Bible. - + Preview the selected Bible. Send the selected Bible live. - + Send the selected Bible live. Add the selected Bible to the service. + Add the selected Bible to the service. + + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. @@ -519,19 +519,6 @@ Changes do not affect verses already in the service. This Bible already exists. Please import a different Bible or first delete the existing one. This Bible already exists. Please import a different Bible or first delete the existing one. - - - Starting Registering bible... - Starting Registering bible... - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - Registered bible. Please note, that verses will be downloaded on - -demand and thus an internet connection is required. - Permissions: @@ -577,6 +564,17 @@ demand and thus an internet connection is required. openlp.org 1.x Bible Files openlp.org 1.x Bible Files + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -633,7 +631,7 @@ demand and thus an internet connection is required. Toggle to keep or clear the previous results. - + Toggle to keep or clear the previous results. @@ -745,12 +743,12 @@ demand and thus an internet connection is required. Split a slide into two only if it does not fit on the screen as one slide. - + Split a slide into two only if it does not fit on the screen as one slide. Insert Slide - + Insert Slide @@ -776,42 +774,42 @@ demand and thus an internet connection is required. Load a new Custom. - + Load a new Custom. Import a Custom. - + Import a Custom. Add a new Custom. - + Add a new Custom. Edit the selected Custom. - + Edit the selected Custom. Delete the selected Custom. - + Delete the selected Custom. Preview the selected Custom. - + Preview the selected Custom. Send the selected Custom live. - + Send the selected Custom live. Add the selected Custom to the service. - + Add the selected Custom to the service. @@ -850,17 +848,17 @@ demand and thus an internet connection is required. Load a new Image. - + Load a new Image. Add a new Image. - + Add a new Image. Edit the selected Image. - + Edit the selected Image. @@ -1076,12 +1074,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Credits - + License License - + Contribute Contribute @@ -1091,12 +1089,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr 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. @@ -1228,15 +1226,8 @@ Final Credit Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund - Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 + @@ -1585,77 +1576,72 @@ Version: %s Welcome to the First Time Wizard - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - - - + Activate required Plugins Activate required Plugins - + Select the Plugins you wish to use. Select the Plugins you wish to use. - + Songs Songs - + Custom Text Custom Text - + Bible Bible - + Images Images - + Presentations Presentations - + Media (Audio and Video) Media (Audio and Video) - + Allow remote access Allow remote access - + Monitor Song Usage Monitor Song Usage - + Allow Alerts Allow Alerts - + No Internet Connection No Internet Connection - + Unable to detect an Internet connection. Unable to detect an Internet connection. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1668,70 +1654,75 @@ To re-run the First Time Wizard and import this sample data at a later stage, pr To cancel the First Time Wizard completely, press the finish button now. - + Sample Songs Sample Songs - + Select and download public domain songs. Select and download public domain songs. - + Sample Bibles Sample Bibles - + Select and download free Bibles. Select and download free Bibles. - + Sample Themes Sample Themes - + Select and download sample themes. Select and download sample themes. - + Default Settings Default Settings - + Set up default settings to be used by OpenLP. Set up default settings to be used by OpenLP. - + Setting Up And Importing Setting Up And Importing - + Please wait while OpenLP is set up and your data is imported. Please wait while OpenLP is set up and your data is imported. - + Default output display: Default output display: - + Select default theme: Select default theme: - + Starting configuration process... Starting configuration process... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + + OpenLP.GeneralTab @@ -2105,82 +2096,82 @@ To cancel the First Time Wizard completely, press the finish button now.&Online Help - + &Web Site &Web Site - + Use the system language, if available. Use the system language, if available. - + Set the interface language to %s Set the interface language to %s - + Add &Tool... Add &Tool... - + Add an application to the list of tools. Add an application to the list of tools. - + &Default &Default - + Set the view mode back to the default. Set the view mode back to the default. - + &Setup &Setup - + Set the view mode to Setup. Set the view mode to Setup. - + &Live &Live - + Set the view mode to Live. Set the view mode to Live. - + OpenLP Version Updated OpenLP Version Updated - + OpenLP Main Display Blanked OpenLP Main Display Blanked - + The Main Display has been blanked out The Main Display has been blanked out - + Default Theme: %s Default Theme: %s - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2200,12 +2191,12 @@ You can download the latest version from http://openlp.org/. Configure &Shortcuts... - + Close OpenLP Close OpenLP - + Are you sure you want to close OpenLP? Are you sure you want to close OpenLP? @@ -2215,12 +2206,12 @@ You can download the latest version from http://openlp.org/. Print the current Service Order. - + Open &Data Folder... Open &Data Folder... - + Open the folder where songs, bibles and other data resides. Open the folder where songs, Bibles and other data resides. @@ -2230,20 +2221,25 @@ You can download the latest version from http://openlp.org/. &Configure Display Tags - + &Autodetect &Autodetect - + Update Theme Images - + Update the preview images for all themes. + + + F1 + + OpenLP.MediaManagerItem @@ -4756,7 +4752,7 @@ The encoding is responsible for the correct character representation. Split a slide into two only if it does not fit on the screen as one slide. - + Split a slide into two only if it does not fit on the screen as one slide. @@ -4796,11 +4792,6 @@ The encoding is responsible for the correct character representation.Select Directory Select Directory - - - Select the directory you want the songs to be saved. - Select the directory you want the songs to be saved. - Directory: @@ -4846,6 +4837,11 @@ The encoding is responsible for the correct character representation.Select Destination Folder Select Destination Folder + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/resources/i18n/es.ts b/resources/i18n/es.ts index c996124fc..2644b80f5 100644 --- a/resources/i18n/es.ts +++ b/resources/i18n/es.ts @@ -224,11 +224,6 @@ Do you want to continue anyway? &Bible &Biblia - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>Complemento de Biblias</strong><br />El complemento de Biblias proporciona la capacidad de mostrar versículos de la Biblia, de diversas fuentes, durante el servicio. - Bible @@ -292,6 +287,11 @@ Do you want to continue anyway? Add the selected Bible to the service. Agregar esta Biblia al servicio. + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + + BiblesPlugin.BibleManager @@ -519,18 +519,6 @@ Los cambios no se aplican a ítems en el servcio. This Bible already exists. Please import a different Bible or first delete the existing one. Ya existe esta Biblia. Por favor importe una diferente o borre la anterior antes de continuar. - - - Starting Registering bible... - Iniciando el Registro de la biblia... - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - Biblia registrada. Tome nota, los versículos se descargan según se necesiten -por lo tanto se requiere de una conexón activa a internet. - Permissions: @@ -576,6 +564,17 @@ por lo tanto se requiere de una conexón activa a internet. openlp.org 1.x Bible Files Archivos de Biblia openlp.org 1.x + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -1075,12 +1074,12 @@ OpenLP es desarrollado y mantenido por voluntarios. Si desea apoyar la creación Créditos - + License Licencia - + Contribute Contribuir @@ -1090,12 +1089,12 @@ OpenLP es desarrollado y mantenido por voluntarios. Si desea apoyar la creación compilación %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 es un programa gratuito; usted puede distribuirlo y/o modificarlo bajo los términos de GNU General Public License según la publicación de Free Software Foundation; versión 2 de la Licencia. - + 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. @@ -1227,15 +1226,8 @@ Crédito Final Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund - Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 + @@ -1585,77 +1577,72 @@ Version: %s Bienvenido al Asistente Inicial - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - Este asistente le ayudará a configurar OpenLP para su primer uso. Haga clic en el botón siguiente para empezar el proceso, seleccionando sus preferencias iniciales. - - - + Activate required Plugins Activar complementos necesarios - + Select the Plugins you wish to use. Seleccione los complementos que desea usar. - + Songs Canciones - + Custom Text Texto Personalizado - + Bible Biblia - + Images Imágenes - + Presentations Presentaciones - + Media (Audio and Video) Medios (Audio y Video) - + Allow remote access Permitir acceso remoto - + Monitor Song Usage Monitorear el uso de Canciones - + Allow Alerts Permitir Alertas - + No Internet Connection Sin Conexión a Internet - + Unable to detect an Internet connection. No se detectó una conexión a Internet. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1668,70 +1655,75 @@ Para volver a ejecutar el AsistenteInicial e importar estos datos de muestra pos Para cancelar el Asistente Inicial por completo, pulse el botón Finalizar ahora. - + Sample Songs Canciones de Muestra - + Select and download public domain songs. Seleccionar y descargar canciones de dominio público. - + Sample Bibles Biblias de Muestra - + Select and download free Bibles. Seleccionar y descargar Biblias gratuitas. - + Sample Themes Temas de Muestra - + Select and download sample themes. Seleccionar y descargar temas de muestra. - + Default Settings Configuración por defecto - + Set up default settings to be used by OpenLP. Utilizar la configuración por defecto. - + Setting Up And Importing Preferencias e Inportación - + Please wait while OpenLP is set up and your data is imported. Por favor espere mientras OpenLP se configura e importa los datos. - + Default output display: Pantalla predeterminada: - + Select default theme: Seleccione el tema por defecto: - + Starting configuration process... Iniciando proceso de configuración... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + + OpenLP.GeneralTab @@ -2105,62 +2097,62 @@ Para cancelar el Asistente Inicial por completo, pulse el botón Finalizar ahora &Ayuda En Línea - + &Web Site Sitio &Web - + Use the system language, if available. Usar el idioma del sistema, si esta disponible. - + Set the interface language to %s Fijar el idioma de la interface en %s - + Add &Tool... Agregar &Herramienta... - + Add an application to the list of tools. Agregar una aplicación a la lista de herramientas. - + &Default Por &defecto - + Set the view mode back to the default. Modo de vizualización por defecto. - + &Setup &Administración - + Set the view mode to Setup. Modo de Administración. - + &Live En &vivo - + Set the view mode to Live. Modo de visualización.en Vivo. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2169,22 +2161,22 @@ You can download the latest version from http://openlp.org/. Puede descargar la última versión desde http://openlp.org/. - + OpenLP Version Updated Versión de OpenLP Actualizada - + OpenLP Main Display Blanked Pantalla Principal de OpenLP en Blanco - + The Main Display has been blanked out La Pantalla Principal se ha puesto en blanco - + Default Theme: %s Tema por defecto: %s @@ -2200,12 +2192,12 @@ Puede descargar la última versión desde http://openlp.org/. Configurar &Atajos... - + Close OpenLP Cerrar OpenLP - + Are you sure you want to close OpenLP? ¿Desea realmente salir de OpenLP? @@ -2215,12 +2207,12 @@ Puede descargar la última versión desde http://openlp.org/. Imprimir Orden del Servicio actual. - + Open &Data Folder... Abrir Folder de &Datos... - + Open the folder where songs, bibles and other data resides. Abrir el folder donde se almacenan las canciones, biblias y otros datos. @@ -2230,20 +2222,25 @@ Puede descargar la última versión desde http://openlp.org/. &Configurar Etiquetas de Visualización - + &Autodetect &Autodetectar - + Update Theme Images - + Update the preview images for all themes. + + + F1 + + OpenLP.MediaManagerItem @@ -4797,11 +4794,6 @@ La codificación se encarga de la correcta representación de caracteres.Select Directory Seleccione un Directorio - - - Select the directory you want the songs to be saved. - Seleccione el directorio para guardar las canciones. - Directory: @@ -4847,6 +4839,11 @@ La codificación se encarga de la correcta representación de caracteres.Select Destination Folder Seleccione Carpeta de Destino + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/resources/i18n/et.ts b/resources/i18n/et.ts index 5b20c8196..d6001a0d6 100644 --- a/resources/i18n/et.ts +++ b/resources/i18n/et.ts @@ -224,11 +224,6 @@ Kas tahad sellest hoolimata jätkata? &Bible &Piibel - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>Piibli plugin</strong><br />Piibli plugina abil saab teenistuse ajal kuvada erinevate tõlgete piiblisalme. - Bible @@ -292,6 +287,11 @@ Kas tahad sellest hoolimata jätkata? Add the selected Bible to the service. Valitud Piibli lisamine teenistusele. + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + + BiblesPlugin.BibleManager @@ -519,18 +519,6 @@ Muudatused ei rakendu juba teenistusesse lisatud salmidele. Your Bible import failed. Piibli importimine nurjus. - - - Starting Registering bible... - Piibli registreerimise alustamine... - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - Piibel on registreeritud. Pane tähele, et salmid laaditakse alla -vajadusel, seetõttu on vajalik internetiühendus. - Permissions: @@ -576,6 +564,17 @@ vajadusel, seetõttu on vajalik internetiühendus. openlp.org 1.x Bible Files openlp.org 1.x piiblifailid + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -1057,12 +1056,12 @@ Do you want to add the other images anyway? Autorid - + License Litsents - + Contribute Aita kaasa @@ -1089,12 +1088,12 @@ OpenLP kohta võid lähemalt uurida aadressil: http://openlp.org/ OpenLP on kirjutatud vabatahtlike poolt. Kui sulle meeldiks näha rohkem kristlikku tarkvara, siis võid annetada, selleks klõpsa alumisele nupule. - + 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. @@ -1225,15 +1224,8 @@ tasuta, sest Tema on meid vabastanud. Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund - Autoriõigused © 2004-2011 Raoul Snyman -Osalised autoriõigused © 2004-2011 Tim Bentley, Jonathan Corwin, -Michael Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, -Christian Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, -Jon Tibble, Carsten Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 + @@ -1582,77 +1574,72 @@ Version: %s Tere tulemast esmakäivituse nõustajasse - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - Nõustaja aitab teha esmase seadistuse OpenLP kasutamiseks. Klõpsa all asuval edasi nupul, et alustada lähtevalikute tegemist. - - - + Activate required Plugins Vajalike pluginate sisselülitamine - + Select the Plugins you wish to use. Vali pluginad, mida tahad kasutada. - + Songs Laulud - + Custom Text Kohandatud tekst - + Bible Piibel - + Images Pildid - + Presentations Esitlused - + Media (Audio and Video) Meedia (audio ja video) - + Allow remote access Kaugligipääs - + Monitor Song Usage Laulukasutuse monitooring - + Allow Alerts Teadaanded - + No Internet Connection Internetiühendust pole - + Unable to detect an Internet connection. Internetiühendust ei leitud. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1665,70 +1652,75 @@ Esmakäivituse nõustaja taaskäivitamiseks hiljem, klõpsa praegu loobu nupule, Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule. - + Sample Songs Näidislaulud - + Select and download public domain songs. Vali ja laadi alla avalikku omandisse kuuluvaid laule. - + Sample Bibles Näidispiiblid - + Select and download free Bibles. Vabade Piiblite valimine ja allalaadimine. - + Sample Themes Näidiskujundused - + Select and download sample themes. Näidiskujunduste valimine ja allalaadimine. - + Default Settings Vaikimisi sätted - + Set up default settings to be used by OpenLP. OpenLP jaoks vaikimisi sätete määramine. - + Setting Up And Importing Seadistamine ja importimine - + Please wait while OpenLP is set up and your data is imported. Palun oota, kuni OpenLP on seadistatud ning sinu andmed on imporditud. - + Default output display: Vaikimisi ekraani kuva: - + Select default theme: Vali vaikimisi kujundus: - + Starting configuration process... Seadistamise alustamine... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + + OpenLP.GeneralTab @@ -2102,82 +2094,82 @@ Esmakäivituse nõustajast loobumiseks klõpsa lõpetamise nupule. &Abi veebis - + &Web Site &Veebileht - + Use the system language, if available. Kui saadaval, kasutatakse süsteemi keelt. - + Set the interface language to %s Kasutajaliidese keeleks %s määramine - + Add &Tool... Lisa &tööriist... - + Add an application to the list of tools. Rakenduse lisamine tööriistade loendisse. - + &Default &Vaikimisi - + Set the view mode back to the default. Vaikimisi kuvarežiimi taastamine. - + &Setup &Ettevalmistus - + Set the view mode to Setup. Ettevalmistuse kuvarežiimi valimine. - + &Live &Otse - + Set the view mode to Live. Vaate režiimiks ekraanivaate valimine. - + OpenLP Version Updated OpenLP uuendus - + OpenLP Main Display Blanked OpenLP peakuva on tühi - + The Main Display has been blanked out Peakuva on tühi - + Default Theme: %s Vaikimisi kujundus: %s - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2197,12 +2189,12 @@ Sa võid viimase versiooni alla laadida aadressilt http://openlp.org/.&Kiirklahvide seadistamine... - + Close OpenLP OpenLP sulgemine - + Are you sure you want to close OpenLP? Kas oled kindel, et tahad OpenLP sulgeda? @@ -2217,30 +2209,35 @@ Sa võid viimase versiooni alla laadida aadressilt http://openlp.org/.&Kuvasiltide seadistamine - + Open &Data Folder... Ava &andmete kataloog... - + Open the folder where songs, bibles and other data resides. Laulude, Piiblite ja muude andmete kataloogi avamine. - + &Autodetect &Isetuvastus - + Update Theme Images - + Update the preview images for all themes. + + + F1 + + OpenLP.MediaManagerItem @@ -4798,11 +4795,6 @@ Kodeering on vajalik märkide õige esitamise jaoks. Select Directory Kataloogi valimine - - - Select the directory you want the songs to be saved. - Vali kataloog, kuhu tahad laulud salvestada. - Directory: @@ -4843,6 +4835,11 @@ Kodeering on vajalik märkide õige esitamise jaoks. Select Destination Folder Sihtkausta valimine + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/resources/i18n/fr.ts b/resources/i18n/fr.ts index ed605435c..675bfa144 100644 --- a/resources/i18n/fr.ts +++ b/resources/i18n/fr.ts @@ -222,11 +222,6 @@ Do you want to continue anyway? &Bible &Bible - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>Module Bible</strong><br />Le module Bible fournis la possibilité d'afficher des versets bibliques de plusieurs sources pendant le service. - Bible @@ -290,6 +285,11 @@ Do you want to continue anyway? Add the selected Bible to the service. + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + + BiblesPlugin.BibleManager @@ -520,18 +520,6 @@ Les changement ne s'applique aux versets déjà un service. CSV File Fichier CSV - - - Starting Registering bible... - Commence l'enregistrement de la Bible... - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - Bible enregistrée. Veuillez noter que les verset vont être téléchargement -a la demande, une connexion Interner fiable est donc nécessaire. - Your Bible import failed. @@ -567,6 +555,17 @@ a la demande, une connexion Interner fiable est donc nécessaire. openlp.org 1.x Bible Files + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -1060,12 +1059,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Crédits - + License Licence - + Contribute Contribuer @@ -1075,12 +1074,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + 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. @@ -1152,10 +1151,7 @@ Final Credit Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 @@ -1478,77 +1474,72 @@ Version: %s - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - - - - + Activate required Plugins - + Select the Plugins you wish to use. - + Songs - + Custom Text - + Bible Bible - + Images Images - + Presentations Présentations - + Media (Audio and Video) - + Allow remote access - + Monitor Song Usage - + Allow Alerts - + No Internet Connection - + Unable to detect an Internet connection. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1557,70 +1548,75 @@ To cancel the First Time Wizard completely, press the finish button now. - + Sample Songs - + Select and download public domain songs. - + Sample Bibles - + Select and download free Bibles. - + Sample Themes - + Select and download sample themes. - + Default Settings - + Set up default settings to be used by OpenLP. - + Setting Up And Importing - + Please wait while OpenLP is set up and your data is imported. - + Default output display: - + Select default theme: - + Starting configuration process... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + +
OpenLP.GeneralTab @@ -1999,62 +1995,62 @@ To cancel the First Time Wizard completely, press the finish button now.&Aide en ligne - + &Web Site Site &Web - + Use the system language, if available. Utilise le langage système, si disponible. - + Set the interface language to %s Défini la langue de l'interface à %s - + Add &Tool... Ajoute un &outils.. - + Add an application to the list of tools. Ajoute une application a la liste des outils. - + &Default &Défaut - + Set the view mode back to the default. Redéfini le mode vue comme par défaut. - + &Setup - + Set the view mode to Setup. - + &Live &Direct - + Set the view mode to Live. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2063,32 +2059,32 @@ You can download the latest version from http://openlp.org/. Vous pouvez télécharger la dernière version depuis http://openlp.org/. - + OpenLP Version Updated Version d'OpenLP mis a jours - + OpenLP Main Display Blanked OpenLP affichage principale noirci - + The Main Display has been blanked out L'affichage principale a été noirci - + Close OpenLP Ferme OpenLP - + Are you sure you want to close OpenLP? Êtes vous sur de vouloir fermer OpenLP ? - + Default Theme: %s Thème par défaut : %s @@ -2104,12 +2100,12 @@ Vous pouvez télécharger la dernière version depuis http://openlp.org/. - + Open &Data Folder... - + Open the folder where songs, bibles and other data resides. @@ -2119,20 +2115,25 @@ Vous pouvez télécharger la dernière version depuis http://openlp.org/. - + &Autodetect - + Update Theme Images - + Update the preview images for all themes. + + + F1 + + OpenLP.MediaManagerItem @@ -4680,11 +4681,6 @@ The encoding is responsible for the correct character representation. Select Directory - - - Select the directory you want the songs to be saved. - - Directory: @@ -4730,6 +4726,11 @@ The encoding is responsible for the correct character representation. Select Destination Folder + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/resources/i18n/hu.ts b/resources/i18n/hu.ts index 09df69c6d..ff5807406 100644 --- a/resources/i18n/hu.ts +++ b/resources/i18n/hu.ts @@ -223,11 +223,6 @@ Folytatható? &Bible &Biblia - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>Biblia bővítmény</strong><br />A Biblia bővítmény különféle forrásokból származó igehelyek vetítését teszi lehetővé a szolgálat alatt. - Bible @@ -291,6 +286,11 @@ Folytatható? Add the selected Bible to the service. A kijelölt Biblia hozzáadása a szolgálati sorrendhez. + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + + BiblesPlugin.BibleManager @@ -518,17 +518,6 @@ A módosítások nem érintik a már a szolgálati sorrendben lévő verseket.This Bible already exists. Please import a different Bible or first delete the existing one. Ez a Biblia már létezik. Kérlek, importálj egy másik Bibliát vagy előbb töröld a meglévőt. - - - Starting Registering bible... - A Biblia regisztrálása elkezdődött… - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - Biblia regisztrálva. Megjegyzés: a versek csak kérésre lesznek letöltve és ekkor internet kapcsolat szükségeltetik. - Permissions: @@ -574,6 +563,17 @@ demand and thus an internet connection is required. openlp.org 1.x Bible Files openlp.org 1.x Biblia fájlok + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -1073,12 +1073,12 @@ Az OpenLP-t önkéntesek készítették és tartják karban. Ha szeretnél több Közreműködők - + License Licenc - + Contribute Részvétel @@ -1213,28 +1213,21 @@ Végső köszönet mert Ő tett minket szabaddá. - - Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund - Szerzői jog © 2004-2011 Raoul Snyman -Részleges szerzői jogok © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund - - - + 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. További részletekért lásd a alább. + + + Copyright © 2004-2011 Raoul Snyman +Portions copyright © 2004-2011 + + OpenLP.AdvancedTab @@ -1554,77 +1547,72 @@ Version: %s Üdvözlet az első indítás tündérben - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - A tündérrel előkészítheti az OpenLP első használatát. Az alább található Következő gombra való kattintással indítható a folyamat első lépése. - - - + Activate required Plugins Igényelt bővítmények aktiválása - + Select the Plugins you wish to use. Jelöld ki az alkalmazni kívánt bővítményeket. - + Songs Dalok - + Custom Text Speciális - + Bible Biblia - + Images Képek - + Presentations Bemutatók - + Media (Audio and Video) Média (hang és videó) - + Allow remote access Távvezérlő - + Monitor Song Usage Dalstatisztika - + Allow Alerts Értesítések - + No Internet Connection Nincs internet kapcsolat - + Unable to detect an Internet connection. Nem sikerült internet kapcsolatot észlelni. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1637,70 +1625,75 @@ Az Első indulás tündér újbóli indításához most a Mégse gobra kattints Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés gombot. - + Sample Songs Példa dalok - + Select and download public domain songs. Közkincs dalok kijelölése és letöltése. - + Sample Bibles Példa Bibliák - + Select and download free Bibles. Szabad Bibliák kijelölése és letöltése. - + Sample Themes Példa témák - + Select and download sample themes. Példa témák kijelölése és letöltése. - + Default Settings Alapértelmezett beállítások - + Set up default settings to be used by OpenLP. Az OpenLP alapértelmezett beállításai. - + Setting Up And Importing Beállítás és importálás - + Please wait while OpenLP is set up and your data is imported. Várj, amíg az OpenLP beállítások érvényre jutnak és míg az adatok importálódnak. - + Default output display: Alapértelmezett kimeneti képernyő: - + Select default theme: Alapértelmezett téma kijelölése: - + Starting configuration process... Beállítási folyamat kezdése… + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + + OpenLP.GeneralTab @@ -2074,62 +2067,62 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go &Online súgó - + &Web Site &Weboldal - + Use the system language, if available. Rendszernyelv használata, ha elérhető. - + Set the interface language to %s A felhasználói felület nyelvének átváltása erre: %s - + Add &Tool... &Eszköz hozzáadása… - + Add an application to the list of tools. Egy alkalmazás hozzáadása az eszközök listához. - + &Default &Alapértelmezett - + Set the view mode back to the default. Nézetmód visszaállítása az alapértelmezettre. - + &Setup &Szerkesztés - + Set the view mode to Setup. Nézetmód váltása a Beállítás módra. - + &Live &Élő adás - + Set the view mode to Live. Nézetmód váltása a Élő módra. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2138,22 +2131,22 @@ You can download the latest version from http://openlp.org/. A legfrissebb verzió a http://openlp.org/ oldalról szerezhető be. - + OpenLP Version Updated OpenLP verziófrissítés - + OpenLP Main Display Blanked Sötét OpenLP fő képernyő - + The Main Display has been blanked out A fő képernyő el lett sötétítve - + Default Theme: %s Alapértelmezett téma: %s @@ -2179,40 +2172,45 @@ A legfrissebb verzió a http://openlp.org/ oldalról szerezhető be.Megjelenítési &címkék beállítása - + &Autodetect &Automatikus felismerés - + Open &Data Folder... &Adatmappa megnyitása… - + Open the folder where songs, bibles and other data resides. A dalokat, Bibliákat és egyéb adatokat tartalmazó mappa megnyitása. - + Close OpenLP OpenLP bezárása - + Are you sure you want to close OpenLP? Biztosan bezárható az OpenLP? - + Update Theme Images - + Update the preview images for all themes. + + + F1 + + OpenLP.MediaManagerItem @@ -4769,11 +4767,6 @@ A kódlap felelős a karakterek helyes megjelenítéséért. Select Directory Mappa kijelölése - - - Select the directory you want the songs to be saved. - Jelöld ki a mappát, ahová a dalok mentésre kerülnek. - Directory: @@ -4814,6 +4807,11 @@ A kódlap felelős a karakterek helyes megjelenítéséért. Select Destination Folder Célmappa kijelölése + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/resources/i18n/id.ts b/resources/i18n/id.ts index 18aac5619..8d2bd6ee9 100644 --- a/resources/i18n/id.ts +++ b/resources/i18n/id.ts @@ -224,11 +224,6 @@ Tetap lanjutkan? &Bible &Alkitab - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>Plugin Alkitab</strong><br />Plugin Alkitab memungkinkan program untuk menampilkan ayat-ayat dari berbagai sumber selama kebaktian. - Bible @@ -292,6 +287,11 @@ Tetap lanjutkan? Add the selected Bible to the service. Tambahkan Alkitab terpilih ke dalam layanan. + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + + BiblesPlugin.BibleManager @@ -524,18 +524,6 @@ Perubahan tidak akan mempengaruhi ayat yang kini tampil. CSV File Berkas CSV - - - Starting Registering bible... - Mulai meregistrasi Alkitab... - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - Alkitab terdaftar. Mohon perhatikan bahwa ayat-ayat akan diunduh -sesuai permintaan dan membutuhkan sambungan internet. - Bibleserver @@ -576,6 +564,17 @@ sesuai permintaan dan membutuhkan sambungan internet. openlp.org 1.x Bible Files Ayat Alkitab openlp.org 1.x + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -1075,12 +1074,12 @@ OpenLP ditulis dan dirawat oleh para sukarelawan. Untuk melihat lebih banyak sof Kredit - + License Lisensi - + Contribute Berkontribusi @@ -1090,12 +1089,12 @@ OpenLP ditulis dan dirawat oleh para sukarelawan. Untuk melihat lebih banyak sof 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. Program ini adalah perangkat lunak gratis; Anda dapat meredistribusikannya dan/atau memodifikasinya di bawah syarat-syarat GNU General Public License yang dikeluarkan Free Software Foundation; Lisensi versi 2. - + 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. Program ini didistribusikan dengan harapan dapat berguna, namun TANPA GARANSI; bahkan tanpa garansi implisit dalam PEMBELIAN maupun KETEPATAN TUJUAN TERTENTU. Lihat di bawah untuk detail lengkap. @@ -1228,15 +1227,8 @@ Kredit Akhir Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund - Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 + @@ -1585,77 +1577,72 @@ Mohon gunakan bahasa Inggris untuk laporan kutu. Selamat datang di Wisaya Kali Pertama - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - Wisaya ini akan membantu mengonfigurasi OpenLP untuk penggunaan pertama. Klik lanjut untuk memulai proses menyetel pilihan awal. - - - + Activate required Plugins Mengaktivasi Plugin yang dibutuhkan - + Select the Plugins you wish to use. Pilih Plugin yang ingin digunakan. - + Songs Lagu - + Custom Text Teks - + Bible Alkitab - + Images Gambar - + Presentations Presentasi - + Media (Audio and Video) Media (Audio dan Video) - + Allow remote access Izinkan akses jauh - + Monitor Song Usage Catat Penggunaan Lagu - + Allow Alerts Izinkan Peringatan - + No Internet Connection Tidak Terhubung ke Internet - + Unable to detect an Internet connection. Tidak dapat mendeteksi koneksi Internet. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1668,70 +1655,75 @@ Untuk menjalankan lagi Wisaya Kali Pertama dan mengimpor contoh data, tekan bata Untuk membatalkan Wisaya Kali Pertama, tekan tombol selesai. - + Sample Songs Contoh Lagu - + Select and download public domain songs. Pilih dan unduh lagu domain bebas. - + Sample Bibles Contoh Alkitab - + Select and download free Bibles. Pilih dan unduh Alkitab gratis - + Sample Themes Contoh Tema - + Select and download sample themes. Pilih dan unduh contoh Tema - + Default Settings Pengaturan Bawaan - + Set up default settings to be used by OpenLP. Atur pengaturan bawaan pada OpenLP. - + Setting Up And Importing Pengaturan Awal dan Pengimporan - + Please wait while OpenLP is set up and your data is imported. Mohon tunggu selama OpenLP diatur dan data diimpor. - + Default output display: Tampilan keluaran bawaan: - + Select default theme: Pilih tema bawaan: - + Starting configuration process... Memulai proses konfigurasi... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + + OpenLP.GeneralTab @@ -2105,62 +2097,62 @@ Untuk membatalkan Wisaya Kali Pertama, tekan tombol selesai. Bantuan &Daring - + &Web Site Situs &Web - + Use the system language, if available. Gunakan bahasa sistem, jika ada. - + Set the interface language to %s Ubah bahasa antarmuka menjadi %s - + Add &Tool... Tambahkan Ala&t... - + Add an application to the list of tools. Tambahkan aplikasi ke daftar alat. - + &Default &Bawaan - + Set the view mode back to the default. Ubah mode tampilan ke bawaan. - + &Setup &Persiapan - + Set the view mode to Setup. Pasang mode tampilan ke Persiapan. - + &Live &Tayang - + Set the view mode to Live. Pasang mode tampilan ke Tayang. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2169,22 +2161,22 @@ You can download the latest version from http://openlp.org/. Versi terbaru dapat diunduh dari http://openlp.org/. - + OpenLP Version Updated Versi OpenLP Terbarui - + OpenLP Main Display Blanked Tampilan Utama OpenLP Kosong - + The Main Display has been blanked out Tampilan Utama telah dikosongkan - + Default Theme: %s Tema Bawaan: %s @@ -2200,12 +2192,12 @@ Versi terbaru dapat diunduh dari http://openlp.org/. Atur &Pintasan - + Close OpenLP Tutup OpenLP - + Are you sure you want to close OpenLP? Yakin ingin menutup OpenLP? @@ -2215,12 +2207,12 @@ Versi terbaru dapat diunduh dari http://openlp.org/. Cetak Daftar Layanan aktif - + Open &Data Folder... Buka Folder &Data - + Open the folder where songs, bibles and other data resides. Buka folder tempat lagu, Alkitab, dan data lain disimpan. @@ -2230,20 +2222,25 @@ Versi terbaru dapat diunduh dari http://openlp.org/. &Konfigurasi Label Tampilan - + &Autodetect &Autodeteksi - + Update Theme Images - + Update the preview images for all themes. + + + F1 + + OpenLP.MediaManagerItem @@ -4791,11 +4788,6 @@ The encoding is responsible for the correct character representation. Select Directory - - - Select the directory you want the songs to be saved. - - Directory: @@ -4841,6 +4833,11 @@ The encoding is responsible for the correct character representation. Select Destination Folder + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/resources/i18n/ja.ts b/resources/i18n/ja.ts index d0e7167f8..2e2a79f46 100644 --- a/resources/i18n/ja.ts +++ b/resources/i18n/ja.ts @@ -224,11 +224,6 @@ Do you want to continue anyway? &Bible 聖書(&B) - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>聖書プラグイン</strong><br />聖書プラグインは、礼拝プログラムで様々な訳の御言葉を表示する機能を提供します。 - Bible @@ -292,6 +287,11 @@ Do you want to continue anyway? Add the selected Bible to the service. 選択した聖書を礼拝プログラムに追加します。 + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + + BiblesPlugin.BibleManager @@ -518,17 +518,6 @@ Changes do not affect verses already in the service. Your Bible import failed. 聖書データの取り込みに失敗しました。 - - - Starting Registering bible... - 聖書を登録しています... - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - 聖書が登録されました。節ごとに必要に応じてダウンロードされますので、インターネットへの接続が要求される事を留意しておいてください。 - Permissions: @@ -574,6 +563,17 @@ demand and thus an internet connection is required. openlp.org 1.x Bible Files openlp.org 1x 聖書ファイル + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -1073,12 +1073,12 @@ OpenLPは、ボランティアの手により開発保守されています。 著作情報 - + License ライセンス - + Contribute 貢献する @@ -1088,12 +1088,12 @@ OpenLPは、ボランティアの手により開発保守されています。 ビルド %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. このプログラムは、フリーソフトです。あなたは、これを再配布したり、the Free Software Foundationが発行したGNU General Public Licenseバージョン2の元で改変する事が出来ます。 - + 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. このプログラムは、皆様のお役に立てると期待し、配布しています。しかし、完全に無保障である事を覚えて下さい。商品としての暗黙の保障としての商品適格性や特定の使用適合性もありません。詳しくは、以下の文をお読みください。 @@ -1227,15 +1227,8 @@ Final Credit Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund - Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 + @@ -1584,77 +1577,72 @@ Version: %s 初回起動ガイドへようこそ - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - このガイドは、初回起動時に、OpenLPを設定するお手伝いをします。次へボタンを押下し、OpenLPを設定していきましょう。 - - - + Activate required Plugins 必要なプラグインを有効化する - + Select the Plugins you wish to use. ご利用になるプラグインを選択してください。 - + Songs 賛美 - + Custom Text カスタムテキスト - + Bible 聖書 - + Images 画像 - + Presentations プレゼンテーション - + Media (Audio and Video) メディア(音声と動画) - + Allow remote access リモートアクセスを許可 - + Monitor Song Usage 賛美利用記録 - + Allow Alerts 警告を許可 - + No Internet Connection インターネット接続が見つかりません - + Unable to detect an Internet connection. インターネット接続が検知されませんでした。 - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1667,70 +1655,75 @@ To cancel the First Time Wizard completely, press the finish button now. - + Sample Songs サンプル賛美 - + Select and download public domain songs. 以下のキリスト教化において合法的に利用が可能な賛美を選択して下さい。 - + Sample Bibles サンプル聖書 - + Select and download free Bibles. 以下のフリー聖書を選択する事でダウンロードできます。 - + Sample Themes サンプル外観テーマ - + Select and download sample themes. サンプル外観テーマを選択して、ダウンロードして下さい。 - + Default Settings 既定設定 - + Set up default settings to be used by OpenLP. 既定設定がOpenLPに使われるようにセットアップします。 - + Setting Up And Importing セットアップとインポート中 - + Please wait while OpenLP is set up and your data is imported. OpenLPがセットアップされ、あなたのデータがインポートされるまでお待ち下さい。 - + Default output display: 既定出力先: - + Select default theme: 既定外観テーマを選択: - + Starting configuration process... 設定処理を開始しています... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + + OpenLP.GeneralTab @@ -2104,62 +2097,62 @@ To cancel the First Time Wizard completely, press the finish button now.オンラインヘルプ(&O) - + &Web Site ウェブサイト(&W) - + Use the system language, if available. システム言語を可能であれば使用します。 - + Set the interface language to %s インターフェイス言語を%sに設定 - + Add &Tool... ツールの追加(&T)... - + Add an application to the list of tools. ツールの一覧にアプリケーションを追加。 - + &Default デフォルト(&D) - + Set the view mode back to the default. 表示モードを既定に戻す。 - + &Setup 設定(&S) - + Set the view mode to Setup. ビューモードに設定します。 - + &Live ライブ(&L) - + Set the view mode to Live. 表示モードをライブにします。 - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2168,22 +2161,22 @@ You can download the latest version from http://openlp.org/. http://openlp.org/から最新版がダウンロード可能です。 - + OpenLP Version Updated OpenLPのバージョンアップ完了 - + OpenLP Main Display Blanked OpenLPのプライマリディスプレイがブランクです - + The Main Display has been blanked out OpenLPのプライマリディスプレイがブランクになりました - + Default Theme: %s 既定外観テーマ @@ -2199,12 +2192,12 @@ http://openlp.org/から最新版がダウンロード可能です。ショートカットの設定(&S)... - + Close OpenLP OpenLPの終了 - + Are you sure you want to close OpenLP? 本当にOpenLPを終了してもよろしいですか? @@ -2219,30 +2212,35 @@ http://openlp.org/から最新版がダウンロード可能です。表示タグを設定(&C) - + Open &Data Folder... データフォルダを開く(&D)... - + Open the folder where songs, bibles and other data resides. 賛美、聖書データなどのデータが含まれているフォルダを開く。 - + &Autodetect 自動検出(&A) - + Update Theme Images - + Update the preview images for all themes. + + + F1 + + OpenLP.MediaManagerItem @@ -4797,11 +4795,6 @@ The encoding is responsible for the correct character representation. Select Directory フォルダを選択して下さい - - - Select the directory you want the songs to be saved. - 賛美を保存するフォルダを選択して下さい。 - Directory: @@ -4842,6 +4835,11 @@ The encoding is responsible for the correct character representation. Select Destination Folder 出力先フォルダを選択して下さい + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/resources/i18n/ko.ts b/resources/i18n/ko.ts index 70c461774..becdd44e9 100644 --- a/resources/i18n/ko.ts +++ b/resources/i18n/ko.ts @@ -222,11 +222,6 @@ Do you want to continue anyway? &Bible 성경(&B) - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>성경 플러그인</strong><br />성경 플러그인은 서비스 중에 성경 구절을 출력할 수 있는 기능을 제공합니다. - Bible @@ -290,6 +285,11 @@ Do you want to continue anyway? Add the selected Bible to the service. + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + + BiblesPlugin.BibleManager @@ -509,17 +509,6 @@ Changes do not affect verses already in the service. This Bible already exists. Please import a different Bible or first delete the existing one. - - - Starting Registering bible... - - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - - Permissions: @@ -565,6 +554,17 @@ demand and thus an internet connection is required. openlp.org 1.x Bible Files + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -1057,12 +1057,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + License - + Contribute @@ -1072,12 +1072,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + 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. @@ -1149,10 +1149,7 @@ Final Credit Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 @@ -1474,77 +1471,72 @@ Version: %s - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - - - - + Activate required Plugins - + Select the Plugins you wish to use. - + Songs - + Custom Text - + Bible - + Images - + Presentations - + Media (Audio and Video) - + Allow remote access - + Monitor Song Usage - + Allow Alerts - + No Internet Connection - + Unable to detect an Internet connection. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1553,70 +1545,75 @@ To cancel the First Time Wizard completely, press the finish button now. - + Sample Songs - + Select and download public domain songs. - + Sample Bibles - + Select and download free Bibles. - + Sample Themes - + Select and download sample themes. - + Default Settings - + Set up default settings to be used by OpenLP. - + Setting Up And Importing - + Please wait while OpenLP is set up and your data is imported. - + Default output display: - + Select default theme: - + Starting configuration process... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + +
OpenLP.GeneralTab @@ -1990,84 +1987,84 @@ To cancel the First Time Wizard completely, press the finish button now. - + &Web Site - + Use the system language, if available. - + Set the interface language to %s - + Add &Tool... - + Add an application to the list of tools. - + &Default - + Set the view mode back to the default. - + &Setup - + Set the view mode to Setup. - + &Live - + Set the view mode to Live. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. - + OpenLP Version Updated - + OpenLP Main Display Blanked - + The Main Display has been blanked out - + Default Theme: %s @@ -2083,12 +2080,12 @@ You can download the latest version from http://openlp.org/. - + Close OpenLP - + Are you sure you want to close OpenLP? @@ -2098,12 +2095,12 @@ You can download the latest version from http://openlp.org/. - + Open &Data Folder... - + Open the folder where songs, bibles and other data resides. @@ -2113,20 +2110,25 @@ You can download the latest version from http://openlp.org/. - + &Autodetect - + Update Theme Images - + Update the preview images for all themes. + + + F1 + + OpenLP.MediaManagerItem @@ -4672,11 +4674,6 @@ The encoding is responsible for the correct character representation. Select Directory - - - Select the directory you want the songs to be saved. - - Directory: @@ -4722,6 +4719,11 @@ The encoding is responsible for the correct character representation. Select Destination Folder + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/resources/i18n/nb.ts b/resources/i18n/nb.ts index a4e1cbb59..87a0befeb 100644 --- a/resources/i18n/nb.ts +++ b/resources/i18n/nb.ts @@ -224,11 +224,6 @@ Vil du fortsette likevel? &Bible &Bibel - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>Bibeltillegg</strong><br />Bibeltillegget gir mulighet til å vise bibelvers fra ulike kilder under gudstjenesten. - Bible @@ -292,6 +287,11 @@ Vil du fortsette likevel? Add the selected Bible to the service. + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + + BiblesPlugin.BibleManager @@ -519,18 +519,6 @@ Endringer påvirker ikke vers som alt er lagt til møtet. This Bible already exists. Please import a different Bible or first delete the existing one. Denne bibelen finnes alt. Vennligst importer en annen bibel eller slett først den eksisterende. - - - Starting Registering bible... - Starter registrering av bibel... - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - Bibel registrert. Vennligst merk at versene vil bli nedlastet ved -behov og derfor er en internettilkobling påkrevd. - Permissions: @@ -576,6 +564,17 @@ behov og derfor er en internettilkobling påkrevd. openlp.org 1.x Bible Files OpenLP 1.x Bibelfiler + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -1069,12 +1068,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Credits - + License Lisens - + Contribute Bidra @@ -1084,12 +1083,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr 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. Dette programmet er fri programvare; du kan redistribuere det og/eller endre det under betingelsene i GNU General Public License versjon 2, som publisert av Free Software Foundation. - + 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. Dette programmet er distribuert i det håp at det vil være nyttig, men UTEN NOEN FORM FOR GARANTI; selv uten underforståtte garantier om SALGBARHET eller ANVENDELIGHET FOR ET SPESIELT FORMÅL. Se nedenfor for flere detaljer. @@ -1221,15 +1220,8 @@ fordi han har satt oss fri. Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund - Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 + @@ -1550,77 +1542,72 @@ Version: %s - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - - - - + Activate required Plugins - + Select the Plugins you wish to use. - + Songs - + Custom Text - + Bible - + Images Bilder - + Presentations - + Media (Audio and Video) - + Allow remote access - + Monitor Song Usage - + Allow Alerts - + No Internet Connection - + Unable to detect an Internet connection. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1629,70 +1616,75 @@ To cancel the First Time Wizard completely, press the finish button now. - + Sample Songs - + Select and download public domain songs. - + Sample Bibles - + Select and download free Bibles. - + Sample Themes - + Select and download sample themes. - + Default Settings - + Set up default settings to be used by OpenLP. - + Setting Up And Importing - + Please wait while OpenLP is set up and your data is imported. - + Default output display: - + Select default theme: - + Starting configuration process... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + + OpenLP.GeneralTab @@ -2066,84 +2058,84 @@ To cancel the First Time Wizard completely, press the finish button now. - + &Web Site &Internett side - + Use the system language, if available. - + Set the interface language to %s - + Add &Tool... Legg til & Verktøy... - + Add an application to the list of tools. - + &Default - + Set the view mode back to the default. - + &Setup - + Set the view mode to Setup. - + &Live &Direkte - + Set the view mode to Live. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. - + OpenLP Version Updated OpenLP versjonen har blitt oppdatert - + OpenLP Main Display Blanked - + The Main Display has been blanked out - + Default Theme: %s @@ -2159,12 +2151,12 @@ You can download the latest version from http://openlp.org/. - + Close OpenLP - + Are you sure you want to close OpenLP? @@ -2174,12 +2166,12 @@ You can download the latest version from http://openlp.org/. - + Open &Data Folder... - + Open the folder where songs, bibles and other data resides. @@ -2189,20 +2181,25 @@ You can download the latest version from http://openlp.org/. - + &Autodetect - + Update Theme Images - + Update the preview images for all themes. + + + F1 + + OpenLP.MediaManagerItem @@ -4748,11 +4745,6 @@ The encoding is responsible for the correct character representation. Select Directory - - - Select the directory you want the songs to be saved. - - Directory: @@ -4798,6 +4790,11 @@ The encoding is responsible for the correct character representation. Select Destination Folder + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/resources/i18n/nl.ts b/resources/i18n/nl.ts index 90a7aa98e..104427e0a 100644 --- a/resources/i18n/nl.ts +++ b/resources/i18n/nl.ts @@ -224,11 +224,6 @@ Toch doorgaan? &Bible &Bijbel - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>Bijbel plugin</strong><br />De Bijbel plugin maakt het mogelijk bijbelteksten uit verschillende vertalingen tijdens de dienst te gebruiken. - Bible @@ -292,6 +287,11 @@ Toch doorgaan? Add the selected Bible to the service. Geselecteerde bijbeltekst aan de liturgie toevoegen. + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + + BiblesPlugin.BibleManager @@ -519,18 +519,6 @@ Deze wijzigingen hebben geen betrekking op bijbelverzen die al in de liturgie zi This Bible already exists. Please import a different Bible or first delete the existing one. Deze bijbel bestaat reeds. Geef een andere naam of verwijder eerst het bestaande exemplaar. - - - Starting Registering bible... - Start registreren Bijbel... - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - Registratie afgerond. -N.B. bijbelteksten worden gedownload indien nodig internetverbinding is dus noodzakelijk. - Permissions: @@ -576,6 +564,17 @@ N.B. bijbelteksten worden gedownload indien nodig internetverbinding is dus nood openlp.org 1.x Bible Files openlp.org 1.x bijbel bestanden + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -1075,12 +1074,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Credits - + License Licentie - + Contribute Bijdragen @@ -1090,12 +1089,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr 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. @@ -1229,15 +1228,8 @@ Deze tekst is niet vertaald. Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund - Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 + @@ -1587,77 +1579,72 @@ Schrijf in het Engels, omdat de meeste programmeurs geen Nederlands spreken. Welkom bij de Eerste keer Assistent - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - Deze assistent helpt je om OpenLP voor de eerste keer in te stellen. Klik op volgende om dit proces te beginnen. - - - + Activate required Plugins Activeer noodzakelijke plugins - + Select the Plugins you wish to use. Selecteer de plugins die je gaat gebruiken. - + Songs Liederen - + Custom Text Aangepaste tekst - + Bible Bijbel - + Images Afbeeldingen - + Presentations Presentaties - + Media (Audio and Video) Media (Audio en Video) - + Allow remote access Toegang op afstand toestaan - + Monitor Song Usage Liedgebruik bijhouden - + Allow Alerts Toon berichten - + No Internet Connection Geen internetverbinding - + Unable to detect an Internet connection. OpenLP kan geen internetverbinding vinden. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1670,70 +1657,75 @@ Om deze assistent de volgende keer te starten, klikt u nu annuleren, controleer Om deze assistent over te slaan, klik op klaar. - + Sample Songs Voorbeeld liederen - + Select and download public domain songs. Selecteer en download liederen uit het publieke domein. - + Sample Bibles Voorbeeld bijbels - + Select and download free Bibles. Selecteer en download (gratis) bijbels uit het publieke domein. - + Sample Themes Voorbeeld thema's - + Select and download sample themes. Selecteer en download voorbeeld thema's. - + Default Settings Standaard instellingen - + Set up default settings to be used by OpenLP. Stel standaardinstellingen in voor OpenLP. - + Setting Up And Importing Instellen en importeren - + Please wait while OpenLP is set up and your data is imported. Even geduld terwijl OpenLP de gegevens importeert. - + Default output display: Standaard weergave scherm: - + Select default theme: Selecteer standaard thema: - + Starting configuration process... Begin het configuratie proces... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + + OpenLP.GeneralTab @@ -2107,82 +2099,82 @@ Om deze assistent over te slaan, klik op klaar. &Online help - + &Web Site &Website - + Use the system language, if available. Gebruik systeem standaardtaal, indien mogelijk. - + Set the interface language to %s %s als taal in OpenLP gebruiken - + Add &Tool... Hulpprogramma &toevoegen... - + Add an application to the list of tools. Voeg een hulpprogramma toe aan de lijst. - + &Default &Standaard - + Set the view mode back to the default. Terug naar de standaard weergave modus. - + &Setup &Setup - + Set the view mode to Setup. Weergave modus naar Setup. - + &Live &Live - + Set the view mode to Live. Weergave modus naar Live. - + OpenLP Version Updated Nieuwe OpenLP versie beschikbaar - + OpenLP Main Display Blanked OpenLP projectie op zwart - + The Main Display has been blanked out Projectie is uitgeschakeld: scherm staat op zwart - + Default Theme: %s Standaardthema: %s - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. @@ -2202,12 +2194,12 @@ U kunt de laatste versie op http://openlp.org/ downloaden. &Sneltoetsen instellen... - + Close OpenLP OpenLP afsluiten - + Are you sure you want to close OpenLP? OpenLP afsluiten? @@ -2217,12 +2209,12 @@ U kunt de laatste versie op http://openlp.org/ downloaden. Druk de huidige liturgie af. - + Open &Data Folder... Open &Data map... - + Open the folder where songs, bibles and other data resides. Open de map waar liederen, bijbels en andere data staat. @@ -2232,20 +2224,25 @@ U kunt de laatste versie op http://openlp.org/ downloaden. &Configureer Weergave Tags - + &Autodetect &Autodetecteer - + Update Theme Images - + Update the preview images for all themes. + + + F1 + + OpenLP.MediaManagerItem @@ -4799,11 +4796,6 @@ Meestal voldoet de suggestie van OpenLP. Select Directory Selecteer map - - - Select the directory you want the songs to be saved. - Selecteer de map waar de liederen moet worden bewaard. - Directory: @@ -4849,6 +4841,11 @@ Meestal voldoet de suggestie van OpenLP. Select Destination Folder Selecteer een doelmap + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/resources/i18n/pt_BR.ts b/resources/i18n/pt_BR.ts index da0d87415..dd5a2f374 100644 --- a/resources/i18n/pt_BR.ts +++ b/resources/i18n/pt_BR.ts @@ -214,7 +214,7 @@ Você gostaria de continuar de qualquer maneira? You cannot combine single and dual Bible verse search results. Do you want to delete your search results and start a new search? - Você não pode combinar um versículo simples e um duplo nos resultados das buscas. Você deseja deletar os resultados da sua pesquisa e comecar uma nova? + Você não pode combinar um versículo simples e um duplo nos resultados das buscas. Você deseja deletar os resultados da sua busca e comecar uma nova? @@ -224,11 +224,6 @@ Você gostaria de continuar de qualquer maneira? &Bible &Bíblia - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>Plugin da Bíblia</strong><br />Este plugin permite exibir versículos bíblicos de diferentes origens durante o culto. - Bible @@ -260,27 +255,27 @@ Você gostaria de continuar de qualquer maneira? Import a Bible. - Importar uma Bíblia + Importar uma Bíblia. Add a new Bible. - Adicionar uma Bíblia nova + Adicionar uma Bíblia nova. Edit the selected Bible. - Editar a Bíblia selecionada + Editar a Bíblia selecionada. Delete the selected Bible. - Apagar a Bíblia selecionada + Apagar a Bíblia selecionada. Preview the selected Bible. - Pré-visualizar a Bíblia selecionada + Pré-visualizar a Bíblia selecionada. @@ -290,7 +285,12 @@ Você gostaria de continuar de qualquer maneira? Add the selected Bible to the service. - Adicionar a Bíblia selecionada ao culto, + Adicionar a Bíblia selecionada à ordem de culto, + + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + @@ -389,7 +389,7 @@ Capítulo do Livro:Versículo-Capítulo:Versículo Note: Changes do not affect verses already in the service. Nota: -Mudanças não afetam os versículos que já estão na lista de exibição. +Mudanças não afetam os versículos que já estão na ordem de culto. @@ -407,7 +407,7 @@ Mudanças não afetam os versículos que já estão na lista de exibição. This wizard will help you to import Bibles from a variety of formats. Click the next button below to start the process by selecting a format to import from. - Este assistente irá ajudá-lo a importar Bíblias de uma variedade de formatos. Clique no botão próximo abaixo para começar o processo selecionando o formato a ser importado. + Este assistente irá ajudá-lo a importar Bíblias de uma variedade de formatos. Clique no botão avançar abaixo para começar o processo selecionando o formato a ser importado. @@ -519,18 +519,6 @@ Mudanças não afetam os versículos que já estão na lista de exibição.This Bible already exists. Please import a different Bible or first delete the existing one. Esta Bíblia já existe. Importe uma Bíblia diferente ou apague a existente primeiro. - - - Starting Registering bible... - Registrando Bíblia... - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - Bíblia registrada. Por favor, observe que os versos serão baixados de acordo -com o uso, portanto uma conexão com a internet é necessária. - Permissions: @@ -554,17 +542,17 @@ com o uso, portanto uma conexão com a internet é necessária. Testaments file: - Arquivo de Testamentos + Arquivo de Testamentos: Books file: - Arquivo de Livros + Arquivo de Livros: Verses file: - Arquivo de Versículos + Arquivo de Versículos: @@ -574,7 +562,18 @@ com o uso, portanto uma conexão com a internet é necessária. openlp.org 1.x Bible Files - Arquivos do openlp.org 1.x + Arquivos de Bíblia do openlp.org 1.x + + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + @@ -612,7 +611,7 @@ com o uso, portanto uma conexão com a internet é necessária. To: - Para: + Até: @@ -632,7 +631,7 @@ com o uso, portanto uma conexão com a internet é necessária. Toggle to keep or clear the previous results. - + Alternar entre manter ou limpar resultados anteriores. @@ -663,7 +662,7 @@ com o uso, portanto uma conexão com a internet é necessária. <strong>Custom Plugin</strong><br />The custom plugin provides the ability to set up custom text slides that can be displayed on the screen the same way songs are. This plugin provides greater freedom over the songs plugin. - <strong>Plugin Personalizado</strong><br />O plugin personalizado permite criar slides de texto que são apresentados da mesma maneira que as músicas. Este plugin permite mais liberdade do que o plugin de músicas. + <strong>Plugin de Personalizado</strong><br />O plugin de personalizado permite criar slides de texto que são apresentados da mesma maneira que as músicas. Este plugin permite mais liberdade do que o plugin de músicas. @@ -671,7 +670,7 @@ com o uso, portanto uma conexão com a internet é necessária. Custom Display - Exibição Personalizada + Exibir Personalizado @@ -744,12 +743,12 @@ com o uso, portanto uma conexão com a internet é necessária. Split a slide into two only if it does not fit on the screen as one slide. - + Dividir o slide em dois somente se não couber na tela como um único slide. Insert Slide - + Inserir Slide @@ -780,7 +779,7 @@ com o uso, portanto uma conexão com a internet é necessária. Import a Custom. - Importar um Personalizado + Importar um Personalizado. @@ -790,27 +789,27 @@ com o uso, portanto uma conexão com a internet é necessária. Edit the selected Custom. - Editar o Personalizado selecionado + Editar o Personalizado selecionado. Delete the selected Custom. - Apagar o Personalizado selecionado + Apagar o Personalizado selecionado. Preview the selected Custom. - Pré-visualizar o Personalizado selecionado. + Pré-visualizar o Personalizado selecionado. Send the selected Custom live. - Projetar o Personalizado selecionado. + Projetar o Personalizado selecionado. Add the selected Custom to the service. - Adicionar o Personalizado ao culto, + Adicionar o Personalizado à ordem de culto, @@ -818,7 +817,7 @@ com o uso, portanto uma conexão com a internet é necessária. General - Geral + Geral @@ -826,7 +825,7 @@ com o uso, portanto uma conexão com a internet é necessária. <strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme. - <strong>Plugin de Imagens</strong><br />O plugin de imagens fornece a exibição de imagens.<br />Uma das funcionalidades importantes deste plugin é a habilidade de agrupar várias imagens na Lista de Exibição, facilitando a exibição de várias imagens. Este plugin também pode usar a funcionalidade de "loop temporizado" do OpenLP para criar uma apresentação de slides que é executada automaticamente. Além disso, imagens do plugin podem ser usadas em sobreposição ao plano de fundo do tema atual, exibindo itens baseados em texto como músicas com a imagem selecionada ao fundo ao invés do plano de fundo fornecido pelo tema. + <strong>Plugin de Imagens</strong><br />O plugin de imagens fornece a exibição de imagens.<br />Uma das funcionalidades importantes deste plugin é a habilidade de agrupar várias imagens na Ordem de Culto, facilitando a exibição de várias imagens. Este plugin também pode usar a funcionalidade de "repetição temporizada" do OpenLP para criar uma apresentação de slides que é executada automaticamente. Além disso, imagens do plugin podem ser usadas em sobreposição ao plano de fundo do tema atual, exibindo itens baseados em texto como músicas com a imagem selecionada ao fundo ao invés do plano de fundo fornecido pelo tema. @@ -879,7 +878,7 @@ com o uso, portanto uma conexão com a internet é necessária. Add the selected Image to the service. - Adicionar a Imagem selecionada ao culto. + Adicionar a Imagem selecionada à ordem de culto. @@ -921,13 +920,13 @@ com o uso, portanto uma conexão com a internet é necessária. The following image(s) no longer exist: %s Do you want to add the other images anyway? - A(s) seguinte(s) imagem(s) não existe(m): %s -Deseja continuar adicionando as outras imagens? + A(s) seguinte(s) imagem(s) não existe(m) mais: %s +Mesmo assim, deseja continuar adicionando as outras imagens? There was a problem replacing your background, the image file "%s" no longer exists. - Ocorreu um erro ao substituir o plano de fundo. O arquivo de imagem "%s" não existe. + Ocorreu um erro ao substituir o plano de fundo, o arquivo de imagem "%s" não existe. @@ -988,7 +987,7 @@ Deseja continuar adicionando as outras imagens? Add the selected Media to the service. - Adicionar a Mídia selecionada ao culto. + Adicionar a Mídia selecionada à ordem de culto. @@ -1067,7 +1066,7 @@ O OpenLP é um software livre de apresentação em igrejas, ou de projeção de Conheça mais sobre o OpenLP: http://openlp.org/ -O OpenLP é escrito e mantido por voluntários. Se você gostaria de contribuir para mais softwares livres Cristãos serem produzidos, considere contribuir usando o botão abaixo. +O OpenLP é escrito e mantido por voluntários. Se você gostaria de contribuir para a produção de mais softwares livres Cristãos, considere contribuir usando o botão abaixo. @@ -1075,12 +1074,12 @@ O OpenLP é escrito e mantido por voluntários. Se você gostaria de contribuir Créditos - + License Licença - + Contribute Contribuir @@ -1090,12 +1089,12 @@ O OpenLP é escrito e mantido por voluntários. Se você gostaria de contribuir 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 (FSF); na versão 2 da Licença. + 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. @@ -1227,15 +1226,8 @@ Créditos Finais Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund - Direitos Autorais © 2004-2011 Raoul Snyman -Porções de Direitos Autorais © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 + @@ -1308,7 +1300,7 @@ Tinggaard, Frode Woldsund Advanced - Avançado + Avançado @@ -1376,7 +1368,7 @@ Tinggaard, Frode Woldsund Save - + Salvar @@ -1402,7 +1394,7 @@ Tinggaard, Frode Woldsund Oops! OpenLP hit a problem, and couldn't recover. The text in the box below contains information that might be helpful to the OpenLP developers, so please e-mail it to bugs@openlp.org, along with a detailed description of what you were doing when the problem occurred. - Ops! O OpenLP encontrou um problema e não pôde recuperar-se. O texto na caixa abaixo contém informações que podem ser úteis para os desenvolvedores do OpenLP. Por favor, envie um e-mail para bugs@openlp.org, junto com uma descrição detalhada daquilo que você estava fazendo quando o problema ocorreu. + Ops! O OpenLP encontrou um problema e não pôde recuperar-se. O texto na caixa abaixo contém informações que podem ser úteis para os desenvolvedores do OpenLP, então, por favor, envie um e-mail para bugs@openlp.org, junto com uma descrição detalhada daquilo que você estava fazendo quando o problema ocorreu. @@ -1544,17 +1536,17 @@ Agradecemos se for possível escrever seu relatório em inglês. Select Translation - Selecione Tradução + Selecione Idioma Choose the translation you'd like to use in OpenLP. - Escolha uma tradução que você gostaria de utilizar no OpenLP. + Escolha o idioma que você gostaria de utilizar no OpenLP. Translation: - Tradução: + Idioma: @@ -1585,153 +1577,153 @@ Agradecemos se for possível escrever seu relatório em inglês. Bem vindo ao Assistente de Primeira Utilização - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - O assistente irá ajudá-lo na configuração do OpenLP para o primeiro uso. Clique no botão "Próximo" abaixo para iniciar a seleção das opções iniciais. - - - + Activate required Plugins Ativar os Plugins necessários - + Select the Plugins you wish to use. - Selecione os Plugins aos quais você deseja utilizar. + Selecione os Plugins que você deseja utilizar. + + + + Songs + Músicas - Songs - Músicas - - - Custom Text Texto Personalizado - + Bible - Bíblia + Bíblia - + Images - Imagens + Imagens - + Presentations - Apresentações + Apresentações - + Media (Audio and Video) Mídia (Áudio e Vídeo) - + Allow remote access Permitir acesso remoto - + Monitor Song Usage Monitorar Utilização das Músicas - + Allow Alerts Permitir Alertas - + No Internet Connection Conexão com a Internet Indisponível - + Unable to detect an Internet connection. Não foi possível detectar uma conexão com a Internet. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. To cancel the First Time Wizard completely, press the finish button now. - Nenhuma conexão com a internet foi encontrada. O Assistente de Primeiro Uso necessita uma conexão para baixar músicas, Bíblias e temas de exemplo. + Nenhuma conexão com a internet foi encontrada. O Assistente de Primeiro Uso necessita de uma conexão com a internet para baixar exemplos de músicas, Bíblias e temas. -Para executar o assistente novamente mais tarde e importar os dados de exemplo, clique no botão cancelar, verifique a sua conexão e inicie o OpenLP novamente. +Para executar o assistente novamente mais tarde e importar os dados de exemplo, clique no botão cancelar, verifique a sua conexão com a internet e reinicie o OpenLP. Para cancelar o assistente completamente, clique no botão finalizar. - + Sample Songs Músicas de Exemplo - + Select and download public domain songs. Selecione e baixe músicas de domínio público. - + Sample Bibles Bíblias de Exemplo - + Select and download free Bibles. Selecione e baixe Bíblias gratuitas. - + Sample Themes Temas de Exemplo - + Select and download sample themes. Selecione e baixe temas de exemplo. - + Default Settings Configurações Padrões - + Set up default settings to be used by OpenLP. Ajuste as configurações padrões que serão utilizadas pelo OpenLP. - + Setting Up And Importing Configurando e Importando - + Please wait while OpenLP is set up and your data is imported. Por Favor aguarde enquanto o OpenLP é configurado e os seus dados importados. - + Default output display: - Saída de Projeção Padrão: + Saída de projeção Padrão: - + Select default theme: Selecione o tema padrão: - + Starting configuration process... Iniciando o processo de configuração... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + + OpenLP.GeneralTab @@ -1758,7 +1750,7 @@ Para cancelar o assistente completamente, clique no botão finalizar. Application Startup - Inicialização da Aplicação + Inicialização do Aplicativo @@ -1768,7 +1760,7 @@ Para cancelar o assistente completamente, clique no botão finalizar. Automatically open the last service - Abrir a última Ordem de Culto automaticamente + Abrir a última ordem de culto automaticamente @@ -1778,7 +1770,7 @@ Para cancelar o assistente completamente, clique no botão finalizar. Application Settings - Configurações da Aplicação + Configurações do Aplicativo @@ -1793,7 +1785,7 @@ Para cancelar o assistente completamente, clique no botão finalizar. Slide loop delay: - Espera na repetição de slides: + Espera de repetição de slides: @@ -1848,7 +1840,7 @@ Para cancelar o assistente completamente, clique no botão finalizar. Check for updates to OpenLP - Procurar atualizações do OpenLP + Procurar por atualizações do OpenLP @@ -2027,12 +2019,12 @@ Para cancelar o assistente completamente, clique no botão finalizar. Toggle the visibility of the theme manager. - Alternar a visibilidade do Gerenciador de Temas. + Alternar a visibilidade do gerenciador de temas. &Service Manager - Gerenciador de Ordem de Culto + Gerenciador de &Ordem de Culto @@ -2105,86 +2097,86 @@ Para cancelar o assistente completamente, clique no botão finalizar.&Ajuda Online - + &Web Site &Web Site - + Use the system language, if available. Usar o idioma do sistema, caso disponível. - + Set the interface language to %s Definir o idioma da interface como %s - + Add &Tool... Adicionar &Ferramenta... - + Add an application to the list of tools. Adicionar um aplicação à lista de ferramentas. - + &Default &Padrão - + Set the view mode back to the default. Reverter o modo de visualização ao padrão. - + &Setup &Configurar - + Set the view mode to Setup. Configurar o modo de visualização para Setup. - + &Live &Ao Vivo - + Set the view mode to Live. Configurar o modo de visualização como Projeção. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. A versão %s do OpenLP está disponível para download (você está atualmente usando a versão %s). -Voce pode baixar a versão mais nova em http://openlp.org/. +Voce pode baixar a última versão em http://openlp.org/. - + OpenLP Version Updated Versão do OpenLP Atualizada - + OpenLP Main Display Blanked - Tela Principal do OpenLP em Branco + Tela Principal do OpenLP desativada - + The Main Display has been blanked out - A Tela Principal foi apagada + A Tela Principal foi desativada - + Default Theme: %s Tema padrão: %s @@ -2200,14 +2192,14 @@ Voce pode baixar a versão mais nova em http://openlp.org/. Configurar &Atalhos... - + Close OpenLP Fechar o OpenLP - + Are you sure you want to close OpenLP? - Você tem certeza de que quer fechar o OpenLP? + Você tem certeza de que deseja fechar o OpenLP? @@ -2220,28 +2212,33 @@ Voce pode baixar a versão mais nova em http://openlp.org/. &Configurar Etiquetas de Exibição - + Open &Data Folder... Abrir Pasta de &Dados... - + Open the folder where songs, bibles and other data resides. - Abrir a pasta na qual músicas, Bíblias e outros arquivos são armazenados. + Abrir a pasta na qual músicas, bíblias e outros arquivos são armazenados. - + &Autodetect &Auto detectar - + Update Theme Images - + Atualizar Imagens de Tema - + Update the preview images for all themes. + Atualizar as imagens de pré-visualização de todos os temas. + + + + F1 @@ -2255,27 +2252,27 @@ Voce pode baixar a versão mais nova em http://openlp.org/. &Add to selected Service Item - &Adicionar à Lista de Exibição selecionada + &Adicionar ao Item de Ordem de Culto selecionado You must select one or more items to preview. - Você precisa selecionar um ou mais itens para pré-visualizar. + Você deve selecionar um ou mais itens para pré-visualizar. You must select one or more items to send live. - Você precisa selecionar um ou mais itens para projetar. + Você deve selecionar um ou mais itens para projetar. You must select one or more items. - Você precisa selecionar um ou mais itens. + Você deve selecionar um ou mais itens. You must select an existing service item to add to. - Você precisa selecionar um item de culto existente ao qual adicionar. + Você deve selecionar um item de ordem de culto existente ao qual adicionar. @@ -2285,7 +2282,7 @@ Voce pode baixar a versão mais nova em http://openlp.org/. You must select a %s service item. - Você precisa selecionar um item de culto %s. + Você deve selecionar um item de ordem de culto %s. @@ -2297,12 +2294,12 @@ O nome do arquivo já existe na lista 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
@@ -2592,7 +2589,7 @@ A codificação do conteúdo não é UTF-8. Moves the selection down the window. - Move a seleção para baixo dentro da janela. + Move a seleção para baixo dentro da janela. @@ -2602,7 +2599,7 @@ A codificação do conteúdo não é UTF-8. Moves the selection up the window. - Move a seleção para cima dentro da janela. + Move a seleção para cima dentro da janela. @@ -2746,7 +2743,7 @@ A codificação do conteúdo não é UTF-8. Alternate - Alternar + Alternativo @@ -2756,7 +2753,7 @@ A codificação do conteúdo não é UTF-8. Default - Padrão + Padrão @@ -2794,7 +2791,7 @@ A codificação do conteúdo não é UTF-8. Move to next - Mover para o próximo + Mover para o seguinte @@ -2884,7 +2881,7 @@ A codificação do conteúdo não é UTF-8. Add to Service - + Adicionar à Ordem de Culto @@ -2950,7 +2947,7 @@ A codificação do conteúdo não é UTF-8. End time is set after the end of the media item - O Tempo Final está ajustado para após o fim da Mídia + O tempo final está ajustado para após o fim da mídia @@ -3153,7 +3150,7 @@ A codificação do conteúdo não é UTF-8. You must select a theme to delete. - Você precisa selecionar um tema para apagar. + Você precisa selecionar um tema para excluir. @@ -3406,7 +3403,7 @@ A codificação do conteúdo não é 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. - Este assistente vai ajudá-lo a criar e editar seus temas. Clique abaixo no botão Próximo para começar,o processo, configurando o plano de fundo. + 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. @@ -3718,12 +3715,12 @@ A codificação do conteúdo não é UTF-8. Save Service - Salvar Lista de Exibição + Salvar Ordem de Culto Service - Lista de Exibição + Ordem de Culto @@ -3883,17 +3880,17 @@ A codificação do conteúdo não é UTF-8. Continuous - Contínuo + Contínuo Default - Padrão + Padrão Display style: - Estilo de Exibição: + Estilo de Exibição: @@ -3909,12 +3906,12 @@ A codificação do conteúdo não é UTF-8. h The abbreviated unit for hours - h + h Layout style: - Estilo do Layout: + Estilo do Layout: @@ -3925,7 +3922,7 @@ A codificação do conteúdo não é UTF-8. m The abbreviated unit for minutes - m + m @@ -3945,12 +3942,12 @@ A codificação do conteúdo não é UTF-8. Verse Per Slide - Versículos por Slide + Versículos por Slide Verse Per Line - Versículos por Linha + Versículos por Linha @@ -3965,7 +3962,7 @@ A codificação do conteúdo não é UTF-8. Unsupported File - Arquivo Não Suportado + Arquivo Não Suportado @@ -3980,7 +3977,7 @@ A codificação do conteúdo não é UTF-8. View Mode - + Modo de Visualização @@ -4118,7 +4115,7 @@ A codificação do conteúdo não é UTF-8. <strong>Remote Plugin</strong><br />The remote plugin provides the ability to send messages to a running version of OpenLP on a different computer via a web browser or through the remote API. - <strong>Plugin Remoto</strong><br />O plugin remoto provê a abilidade de enviar mensagens para uma versão do OpenLP em execução em um computador diferente através de um navegador de internet ou através da API remota. + <strong>Plugin Remoto</strong><br />O plugin remoto provê a habilidade de enviar mensagens para uma versão do OpenLP em execução em um computador diferente através de um navegador de internet ou através da API remota. @@ -4159,12 +4156,12 @@ A codificação do conteúdo não é UTF-8. Remote URL: - + URL Remoto: Stage view URL: - + URL de Visualização de Palco: @@ -4510,7 +4507,7 @@ A codificação é responsável pela correta representação dos caracteres. First name: - Primeiro Nome: + Primeiro nome: @@ -4546,7 +4543,7 @@ A codificação é responsável pela correta representação dos caracteres. Administered by %s - Administrado por %s + Administrado por %s @@ -4752,17 +4749,17 @@ A codificação é responsável pela correta representação dos caracteres. &Split - + &Dividir Split a slide into two only if it does not fit on the screen as one slide. - + Dividir um slide em dois somente se não couber na tela como um único slide. Split a slide into two by inserting a verse splitter. - + Dividir um slide em dois, inserindo um divisor de estrófes. @@ -4802,11 +4799,6 @@ A codificação é responsável pela correta representação dos caracteres.Select Directory Selecionar Diretório - - - Select the directory you want the songs to be saved. - Selecionar o diretório que você deseja salvar as músicas. - Directory: @@ -4847,6 +4839,11 @@ A codificação é responsável pela correta representação dos caracteres.Select Destination Folder Selecione a Pasta de Destino + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm @@ -4948,7 +4945,7 @@ A codificação é responsável pela correta representação dos caracteres. Copy - Copiar + Copiar @@ -5049,7 +5046,7 @@ A codificação é responsável pela correta representação dos caracteres. Finished export. - Exportação Finalizada. + Exportação finalizada. @@ -5275,7 +5272,7 @@ A codificação é responsável pela correta representação dos caracteres. Themes - Temas + Temas diff --git a/resources/i18n/ru.ts b/resources/i18n/ru.ts index a13ffc066..218a50dd1 100644 --- a/resources/i18n/ru.ts +++ b/resources/i18n/ru.ts @@ -224,11 +224,6 @@ Do you want to continue anyway? &Bible &Библия - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>Плагин Библия</strong><br />Плагин "Библия" обеспечивает возможность показаза мест писания во время служения. - Bible @@ -292,6 +287,11 @@ Do you want to continue anyway? Add the selected Bible to the service. + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + +
BiblesPlugin.BibleManager @@ -533,17 +533,6 @@ Changes do not affect verses already in the service. CSV File - - - Starting Registering bible... - - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - - Your Bible import failed. @@ -574,6 +563,17 @@ demand and thus an internet connection is required. openlp.org 1.x Bible Files + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -1067,12 +1067,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + License Лицензия - + Contribute @@ -1082,12 +1082,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Билд %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 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. @@ -1159,10 +1159,7 @@ Final Credit Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 @@ -1511,77 +1508,72 @@ Version: %s - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - - - - + Activate required Plugins - + Select the Plugins you wish to use. - + Songs Псалмы - + Custom Text - + Bible Библия - + Images Изображения - + Presentations - + Media (Audio and Video) - + Allow remote access - + Monitor Song Usage - + Allow Alerts - + No Internet Connection - + Unable to detect an Internet connection. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1590,70 +1582,75 @@ To cancel the First Time Wizard completely, press the finish button now. - + Sample Songs - + Select and download public domain songs. - + Sample Bibles - + Select and download free Bibles. - + Sample Themes - + Select and download sample themes. - + Default Settings - + Set up default settings to be used by OpenLP. - + Setting Up And Importing - + Please wait while OpenLP is set up and your data is imported. - + Default output display: - + Select default theme: - + Starting configuration process... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + +
OpenLP.GeneralTab @@ -2037,94 +2034,94 @@ To cancel the First Time Wizard completely, press the finish button now.&Помощь онлайн - + &Web Site &Веб-сайт - + Use the system language, if available. Использовать системный язык, если доступно. - + Set the interface language to %s Изменить язык интерфеса на %s - + Add &Tool... Добавить &Инструмент... - + Add an application to the list of tools. Добавить приложение к списку инструментов - + &Default &По умолчанию - + Set the view mode back to the default. Установить вид в режим по умолчанию. - + &Setup &Настройка - + Set the view mode to Setup. - + &Live - + Set the view mode to Live. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. - + OpenLP Version Updated - + OpenLP Main Display Blanked - + The Main Display has been blanked out - + Close OpenLP - + Are you sure you want to close OpenLP? - + Default Theme: %s @@ -2140,30 +2137,35 @@ You can download the latest version from http://openlp.org/. - + Open &Data Folder... - + Open the folder where songs, bibles and other data resides. - + &Autodetect - + Update Theme Images - + Update the preview images for all themes. + + + F1 + + OpenLP.MediaManagerItem @@ -4718,11 +4720,6 @@ The encoding is responsible for the correct character representation. Select Directory Выбрать словарь - - - Select the directory you want the songs to be saved. - Выберите папку, в которую вы хотите сохранить песни. - Directory: @@ -4763,6 +4760,11 @@ The encoding is responsible for the correct character representation. Select Destination Folder Выберите целевую папку + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/resources/i18n/sv.ts b/resources/i18n/sv.ts index 09af3b4db..944a7ac03 100644 --- a/resources/i18n/sv.ts +++ b/resources/i18n/sv.ts @@ -223,11 +223,6 @@ Do you want to continue anyway? &Bible &Bibel - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - <strong>Bibelplugin</strong><br />Bibelpluginen tillhandahåller möjligheten att visa bibelverser från olika källor under gudstjänsten. - Bible @@ -291,6 +286,11 @@ Do you want to continue anyway? Add the selected Bible to the service. + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + + BiblesPlugin.BibleManager @@ -511,18 +511,6 @@ Changes do not affect verses already in the service. This Bible already exists. Please import a different Bible or first delete the existing one. Denna Bibeln finns redan. Importera en annan Bibel eller radera den nuvarande. - - - Starting Registering bible... - Påbörjar registrering av Bibel. - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - Bibeln är registrerad. Notera att versarna kommer laddas ner -på begäran och kräver en internetuppkoppling. - Permissions: @@ -568,6 +556,17 @@ på begäran och kräver en internetuppkoppling. openlp.org 1.x Bible Files + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -1067,12 +1066,12 @@ OpenLP är skriven och underhålls av friviliga. Om du vill ha mer kristen mjukv Lista över medverkande - + License Licens - + Contribute Bidra @@ -1082,12 +1081,12 @@ OpenLP är skriven och underhålls av friviliga. Om du vill ha mer kristen mjukv - + 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. @@ -1159,15 +1158,8 @@ Final Credit Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund - Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 + @@ -1488,77 +1480,72 @@ Version: %s - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - - - - + Activate required Plugins - + Select the Plugins you wish to use. - + Songs - + Custom Text - + Bible Bibel - + Images Bilder - + Presentations - + Media (Audio and Video) - + Allow remote access - + Monitor Song Usage - + Allow Alerts - + No Internet Connection - + Unable to detect an Internet connection. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1567,70 +1554,75 @@ To cancel the First Time Wizard completely, press the finish button now. - + Sample Songs - + Select and download public domain songs. - + Sample Bibles - + Select and download free Bibles. - + Sample Themes - + Select and download sample themes. - + Default Settings - + Set up default settings to be used by OpenLP. - + Setting Up And Importing - + Please wait while OpenLP is set up and your data is imported. - + Default output display: - + Select default theme: - + Starting configuration process... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + + OpenLP.GeneralTab @@ -2004,84 +1996,84 @@ To cancel the First Time Wizard completely, press the finish button now.&Hjälp online - + &Web Site &Webbsida - + Use the system language, if available. Använd systemspråket om möjligt. - + Set the interface language to %s Sätt användargränssnittets språk till %s - + Add &Tool... Lägg till &verktyg... - + Add an application to the list of tools. Lägg till en applikation i verktygslistan. - + &Default &Standard - + Set the view mode back to the default. - + &Setup - + Set the view mode to Setup. - + &Live &Live - + Set the view mode to Live. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. - + OpenLP Version Updated OpenLP-versionen uppdaterad - + OpenLP Main Display Blanked OpenLPs huvuddisplay rensad - + The Main Display has been blanked out Huvuddisplayen har rensats - + Default Theme: %s Standardtema: %s @@ -2097,12 +2089,12 @@ You can download the latest version from http://openlp.org/. - + Close OpenLP - + Are you sure you want to close OpenLP? @@ -2112,12 +2104,12 @@ You can download the latest version from http://openlp.org/. - + Open &Data Folder... - + Open the folder where songs, bibles and other data resides. @@ -2127,20 +2119,25 @@ You can download the latest version from http://openlp.org/. - + &Autodetect - + Update Theme Images - + Update the preview images for all themes. + + + F1 + + OpenLP.MediaManagerItem @@ -4686,11 +4683,6 @@ The encoding is responsible for the correct character representation. Select Directory - - - Select the directory you want the songs to be saved. - - Directory: @@ -4736,6 +4728,11 @@ The encoding is responsible for the correct character representation. Select Destination Folder + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/resources/i18n/zh_CN.ts b/resources/i18n/zh_CN.ts index b33cdd6c0..2e2343311 100644 --- a/resources/i18n/zh_CN.ts +++ b/resources/i18n/zh_CN.ts @@ -222,11 +222,6 @@ Do you want to continue anyway? &Bible - - - <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display bible verses from different sources during the service. - - Bible @@ -290,6 +285,11 @@ Do you want to continue anyway? Add the selected Bible to the service. + + + <strong>Bible Plugin</strong><br />The Bible plugin provides the ability to display Bible verses from different sources during the service. + + BiblesPlugin.BibleManager @@ -513,17 +513,6 @@ Changes do not affect verses already in the service. CSV File - - - Starting Registering bible... - - - - - Registered bible. Please note, that verses will be downloaded on -demand and thus an internet connection is required. - - Bibleserver @@ -564,6 +553,17 @@ demand and thus an internet connection is required. openlp.org 1.x Bible Files + + + Registering Bible... + + + + + Registered Bible. Please note, that verses will be downloaded on +demand and thus an internet connection is required. + + BiblesPlugin.MediaItem @@ -1056,12 +1056,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + License - + Contribute @@ -1071,12 +1071,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + 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. @@ -1148,10 +1148,7 @@ Final Credit Copyright © 2004-2011 Raoul Snyman -Portions copyright © 2004-2011 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, -Meinert Jordan, Andreas Preikschat, Christian Richter, Philip -Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten -Tinggaard, Frode Woldsund +Portions copyright © 2004-2011 @@ -1473,77 +1470,72 @@ Version: %s - - This wizard will help you to configure OpenLP for initial use. Click the next button below to start the process of selection your initial options. - - - - + Activate required Plugins - + Select the Plugins you wish to use. - + Songs - + Custom Text - + Bible - + Images - + Presentations - + Media (Audio and Video) - + Allow remote access - + Monitor Song Usage - + Allow Alerts - + No Internet Connection - + Unable to detect an Internet connection. - + 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. To re-run the First Time Wizard and import this sample data at a later stage, press the cancel button now, check your Internet connection, and restart OpenLP. @@ -1552,70 +1544,75 @@ To cancel the First Time Wizard completely, press the finish button now. - + Sample Songs - + Select and download public domain songs. - + Sample Bibles - + Select and download free Bibles. - + Sample Themes - + Select and download sample themes. - + Default Settings - + Set up default settings to be used by OpenLP. - + Setting Up And Importing - + Please wait while OpenLP is set up and your data is imported. - + Default output display: - + Select default theme: - + Starting configuration process... + + + This wizard will help you to configure OpenLP for initial use. Click the next button below to start. + +
OpenLP.GeneralTab @@ -1989,84 +1986,84 @@ To cancel the First Time Wizard completely, press the finish button now. - + &Web Site - + Use the system language, if available. - + Set the interface language to %s - + Add &Tool... - + Add an application to the list of tools. - + &Default - + Set the view mode back to the default. - + &Setup - + Set the view mode to Setup. - + &Live - + Set the view mode to Live. - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org/. - + OpenLP Version Updated - + OpenLP Main Display Blanked - + The Main Display has been blanked out - + Default Theme: %s @@ -2082,12 +2079,12 @@ You can download the latest version from http://openlp.org/. - + Close OpenLP - + Are you sure you want to close OpenLP? @@ -2102,30 +2099,35 @@ You can download the latest version from http://openlp.org/. - + Open &Data Folder... - + Open the folder where songs, bibles and other data resides. - + &Autodetect - + Update Theme Images - + Update the preview images for all themes. + + + F1 + + OpenLP.MediaManagerItem @@ -4676,11 +4678,6 @@ The encoding is responsible for the correct character representation. Select Directory - - - Select the directory you want the songs to be saved. - - Directory: @@ -4721,6 +4718,11 @@ The encoding is responsible for the correct character representation. Select Destination Folder + + + Select the directory where you want the songs to be saved. + + SongsPlugin.ImportWizardForm diff --git a/scripts/translation_utils.py b/scripts/translation_utils.py index a12ee39d7..e10448c82 100755 --- a/scripts/translation_utils.py +++ b/scripts/translation_utils.py @@ -291,7 +291,7 @@ def generate_binaries(): run(u'lrelease openlp.pro') os.chdir(os.path.abspath(u'scripts')) src_path = os.path.join(os.path.abspath(u'..'), u'resources', u'i18n') - dest_path = os.path.join(os.path.abspath(u'..'), u'openlp', u'i18n') + dest_path = os.path.join(os.path.abspath(u'..'), u'resources', u'i18n') if not os.path.exists(dest_path): os.makedirs(dest_path) src_list = os.listdir(src_path) From 8d1d642c0638602f630755015ec5f01a29793c7c Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 24 May 2011 20:38:06 +0200 Subject: [PATCH 056/190] More translation updates. --- openlp/core/ui/aboutdialog.py | 18 +++++++--------- resources/i18n/af.ts | 40 +++++++++++++++-------------------- resources/i18n/cs.ts | 40 +++++++++++++++-------------------- resources/i18n/de.ts | 40 +++++++++++++++-------------------- resources/i18n/en.ts | 34 ++++++++++++++--------------- resources/i18n/en_GB.ts | 40 +++++++++++++++-------------------- resources/i18n/en_ZA.ts | 40 +++++++++++++++-------------------- resources/i18n/es.ts | 40 +++++++++++++++-------------------- resources/i18n/et.ts | 40 +++++++++++++++-------------------- resources/i18n/fr.ts | 34 ++++++++++++++--------------- resources/i18n/hu.ts | 40 +++++++++++++++-------------------- resources/i18n/id.ts | 40 +++++++++++++++-------------------- resources/i18n/ja.ts | 40 +++++++++++++++-------------------- resources/i18n/ko.ts | 34 ++++++++++++++--------------- resources/i18n/nb.ts | 34 ++++++++++++++--------------- resources/i18n/nl.ts | 40 +++++++++++++++-------------------- resources/i18n/pt_BR.ts | 40 +++++++++++++++-------------------- resources/i18n/ru.ts | 34 ++++++++++++++--------------- resources/i18n/sv.ts | 40 +++++++++++++++-------------------- resources/i18n/zh_CN.ts | 34 ++++++++++++++--------------- 20 files changed, 331 insertions(+), 411 deletions(-) diff --git a/openlp/core/ui/aboutdialog.py b/openlp/core/ui/aboutdialog.py index ef3deb526..28b4a4860 100644 --- a/openlp/core/ui/aboutdialog.py +++ b/openlp/core/ui/aboutdialog.py @@ -95,7 +95,7 @@ class Ui_AboutDialog(object): 'OpenLP is free church presentation software, or lyrics ' 'projection software, used to display slides of songs, Bible ' 'verses, videos, images, and even presentations (if ' - 'OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) ' + 'Impress, PowerPoint or PowerPoint Viewer is installed) ' 'for church worship using a computer and a data projector.\n' '\n' 'Find out more about OpenLP: http://openlp.org/\n' @@ -221,15 +221,13 @@ class Ui_AboutDialog(object): self.aboutNotebook.setTabText( self.aboutNotebook.indexOf(self.creditsTab), translate('OpenLP.AboutForm', 'Credits')) - copyright = translate('OpenLP.AboutForm', - 'Copyright \xa9 2004-2011 Raoul Snyman\n' - 'Portions copyright \xa9 2004-2011') - copyright = copyright + ' ' + ', '.join(developers) - copyright = copyright + ', ' + ', '.join(contributors) - #'Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri,\n' - #'Meinert Jordan, Andreas Preikschat, Christian Richter, Philip\n' - #'Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten\n' - #'Tinggaard, Frode Woldsund') + copyright = unicode(translate('OpenLP.AboutForm', + 'Copyright \xa9 2004-2011 %s\n' + 'Portions copyright \xa9 2004-2011 %s')) % (u'Raoul Snyman', + u'Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, ' + 'Meinert Jordan, Andreas Preikschat, Christian Richter, Philip ' + 'Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten ' + 'Tinggaard, Frode Woldsund') licence = translate('OpenLP.AboutForm', 'This program is free software; you can redistribute it and/or ' 'modify it under the terms of the GNU General Public License as ' diff --git a/resources/i18n/af.ts b/resources/i18n/af.ts index e8875e3b1..f7388671b 100644 --- a/resources/i18n/af.ts +++ b/resources/i18n/af.ts @@ -1051,35 +1051,18 @@ Voeg steeds die ander beelde by? OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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 OpenOffice.org, 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. - Credits Krediete - + License Lisensie - + Contribute Dra By @@ -1089,12 +1072,12 @@ OpenLP is geskryf en word onderhou deur vrywilligers. As u graag wil sien dat me 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. @@ -1224,10 +1207,21 @@ Finale Krediet bring hierdie sagteware gratis voort omdat Hy ons vry gemaak het. + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s diff --git a/resources/i18n/cs.ts b/resources/i18n/cs.ts index 7c066f32f..35d3c23f7 100644 --- a/resources/i18n/cs.ts +++ b/resources/i18n/cs.ts @@ -1051,35 +1051,18 @@ Chcete přidat ostatní obrázky?
OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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 prezentace textů písní - -OpenLP je zdarma dostupná prezentační aplikace pro prezentování textů písní. Aplikace se používá pro zobrazení snímků písní, veršů z Bible, videí, obrázků a dokonce i prezentací (Pokud jsou nainstalovány OpenOffice.org, PowerPoint nebo PowerPoint Viewer) přes počítač a data projektor při křesťanském uctívání. - -Více informací o OpenLP na: http://openlp.org/ - -Aplikace OpenLP napsána a udržována dobrovolníky. Pokud byste rádi viděli více křesťansky zaměřených aplikací, zvažte prosím, jestli nepřispět použitím tlačítka níže. - Credits Zásluhy - + License Licence - + Contribute Přispět @@ -1089,12 +1072,12 @@ Aplikace OpenLP napsána a udržována dobrovolníky. Pokud byste rádi viděli sestavení %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. Tato aplikace je svobodný software. Lze ji libovolně šířit a upravovat v souladu s GNU General Public licencí, vydané Free Software Foundation; a to v souladu s verzí 2 této 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. Tato aplikace je ší?ena v nad?ji, že bude užite?ná, avšak BEZ JAKÉKOLI ZÁRUKY; neposkytují se ani odvozené záruky PRODEJNOSTI anebo VHODNOSTI PRO UR?ITÝ Ú?EL. Další podrobnosti viz níže. @@ -1223,10 +1206,21 @@ Finální zásluhy Přinášíme tuto aplikaci zdarma, protože On nás učinil svobodnými. + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s diff --git a/resources/i18n/de.ts b/resources/i18n/de.ts index 8262160e7..98cb3066a 100644 --- a/resources/i18n/de.ts +++ b/resources/i18n/de.ts @@ -1051,35 +1051,18 @@ Wollen Sie die anderen Bilder trotzdem hinzufügen?
OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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 ist eine freie Kirchen- oder Liedtext-Präsentationssoftware, mit der Liedtexte, Bibeltexte, Videos, Bilder sowie auch PowerPoint bzw. Impress Präsentationen (falls diese Programme installiert sind) von einem Computer aus auf einem Beamer angezeigt werden können. - -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. - Credits Danksagungen - + License Lizenz - + Contribute Mitmachen @@ -1089,12 +1072,12 @@ OpenLP wird von freiwilligen Helfern programmiert und gewartet. Wenn Sie sich me 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. @@ -1226,10 +1209,21 @@ Danke Programm frei, weil er uns befreit hat. Halleluja! + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s diff --git a/resources/i18n/en.ts b/resources/i18n/en.ts index ebfb2002c..3c0df3cd3 100644 --- a/resources/i18n/en.ts +++ b/resources/i18n/en.ts @@ -1039,29 +1039,18 @@ Do you want to add the other images anyway?
OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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. - - Credits - + License - + Contribute @@ -1071,12 +1060,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + 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. @@ -1145,10 +1134,21 @@ Final Credit He has set us free. + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s diff --git a/resources/i18n/en_GB.ts b/resources/i18n/en_GB.ts index 91b53abf5..a08987e12 100644 --- a/resources/i18n/en_GB.ts +++ b/resources/i18n/en_GB.ts @@ -1051,35 +1051,18 @@ Do you want to add the other images anyway?
OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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 free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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. - Credits Credits - + License Licence - + Contribute Contribute @@ -1089,12 +1072,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr 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. @@ -1223,10 +1206,21 @@ Final Credit bring this software to you for free because He has set us free. + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s diff --git a/resources/i18n/en_ZA.ts b/resources/i18n/en_ZA.ts index 6b8e94dd5..9704b5d5b 100644 --- a/resources/i18n/en_ZA.ts +++ b/resources/i18n/en_ZA.ts @@ -1051,35 +1051,18 @@ Do you want to add the other images anyway?
OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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 free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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. - Credits Credits - + License License - + Contribute Contribute @@ -1089,12 +1072,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr 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. @@ -1223,10 +1206,21 @@ Final Credit bring this software to you for free because He has set us free. + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s diff --git a/resources/i18n/es.ts b/resources/i18n/es.ts index 2644b80f5..03d05b091 100644 --- a/resources/i18n/es.ts +++ b/resources/i18n/es.ts @@ -1051,35 +1051,18 @@ Do you want to add the other images anyway?
OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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 es un software gratuito de proyección para iglesias, o de proyección de cantos, utilizado para mostar diapositivas de canciones, versículos de la Biblia, videos, imágenes, e incluso presentaciones (si están instalados OpenOffice.org, PowerPoint o PowerPoint Viewer) para el servicio de alabanza, utilizando una computadora y un proyector de datos. - -Para más información de OpenLP visite: http://openlp.org/ - -OpenLP es desarrollado y mantenido por voluntarios. Si desea apoyar la creación de más software Cristiano gratuito, por favor considere contribuir mediante el botón de abajo. - Credits Créditos - + License Licencia - + Contribute Contribuir @@ -1089,12 +1072,12 @@ OpenLP es desarrollado y mantenido por voluntarios. Si desea apoyar la creación compilación %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 es un programa gratuito; usted puede distribuirlo y/o modificarlo bajo los términos de GNU General Public License según la publicación de Free Software Foundation; versión 2 de la Licencia. - + 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. @@ -1223,10 +1206,21 @@ Crédito Final liberándonos del pecado. Traemos este software de forma gratuita, porque Él nos ha liberado. + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s diff --git a/resources/i18n/et.ts b/resources/i18n/et.ts index d6001a0d6..2cdd03782 100644 --- a/resources/i18n/et.ts +++ b/resources/i18n/et.ts @@ -1056,12 +1056,12 @@ Do you want to add the other images anyway? Autorid - + License Litsents - + Contribute Aita kaasa @@ -1071,29 +1071,12 @@ Do you want to add the other images anyway? kompileering %s - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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> - avatud lähtekoodiga laulusõnade kuvaja - -OpenLP on vaba esitlustarkvara kirikusse, võib öelda ka laulusõnade projitseerimise tarkvara, mis sobib laulusõnade, piiblisalmide, videote, piltide ja isegi esitluste (kui OpenOffice.org, PowerPoint või PowerPoint Viewer on paigaldatud) kuvamiseks dataprojektori kaudu kirikus. - -OpenLP kohta võid lähemalt uurida aadressil: http://openlp.org/ - -OpenLP on kirjutatud vabatahtlike poolt. Kui sulle meeldiks näha rohkem kristlikku tarkvara, siis võid annetada, selleks klõpsa alumisele nupule. - - - + 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. @@ -1221,10 +1204,21 @@ kes saatis oma Poja ristile surema, et meid vabastada pattudest. Me jagame seda tarkvara tasuta, sest Tema on meid vabastanud. + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s
diff --git a/resources/i18n/fr.ts b/resources/i18n/fr.ts index 675bfa144..1da37ffb5 100644 --- a/resources/i18n/fr.ts +++ b/resources/i18n/fr.ts @@ -1042,29 +1042,18 @@ Voulez-vous ajouter de toute façon d'autres images ?
OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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. - - Credits Crédits - + License Licence - + Contribute Contribuer @@ -1074,12 +1063,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + 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. @@ -1148,10 +1137,21 @@ Final Credit He has set us free. + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s diff --git a/resources/i18n/hu.ts b/resources/i18n/hu.ts index ff5807406..4bb79b4c3 100644 --- a/resources/i18n/hu.ts +++ b/resources/i18n/hu.ts @@ -1050,35 +1050,18 @@ Szeretnél más képeket megadni?
OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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> – Nyílt forrású dalszöveg vetítő - -Az OpenLP egy templomi/gyülekezeti bemutató, ill. dalszöveg vetítő szabad szoftver, mely használható énekek, bibliai versek, videók, képek és bemutatók (ha az OpenOffice.org, PowerPoint vagy a PowerPoint Viewer telepítve van) vetítésére a gyülekezeti dicsőítés alatt egy számítógép és egy projektor segítségével. - -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. - Credits Közreműködők - + License Licenc - + Contribute Részvétel @@ -1213,19 +1196,30 @@ Végső köszönet mert Ő tett minket szabaddá. - + 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. További részletekért lásd a alább. + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s diff --git a/resources/i18n/id.ts b/resources/i18n/id.ts index 8d2bd6ee9..e92d493e1 100644 --- a/resources/i18n/id.ts +++ b/resources/i18n/id.ts @@ -1051,35 +1051,18 @@ Ingin tetap menambah gambar lain?
OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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 adalah perangkat lunak gratis untuk presentasi gereja, untuk menayangkan slide lagu, ayat Alkitab, video, gambar, dan bahkan presentasi (jika OpenOffice.org atau PowerPoint terpasang) untuk gereja menggunakan komputer dan proyektor. - -Pelajari tentang OpenLP: http://openlp.org/ - -OpenLP ditulis dan dirawat oleh para sukarelawan. Untuk melihat lebih banyak software Kristen ditulis, pertimbangkan untuk berkontribusi melalui tombol di bawah. - Credits Kredit - + License Lisensi - + Contribute Berkontribusi @@ -1089,12 +1072,12 @@ OpenLP ditulis dan dirawat oleh para sukarelawan. Untuk melihat lebih banyak sof 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. Program ini adalah perangkat lunak gratis; Anda dapat meredistribusikannya dan/atau memodifikasinya di bawah syarat-syarat GNU General Public License yang dikeluarkan Free Software Foundation; Lisensi versi 2. - + 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. Program ini didistribusikan dengan harapan dapat berguna, namun TANPA GARANSI; bahkan tanpa garansi implisit dalam PEMBELIAN maupun KETEPATAN TUJUAN TERTENTU. Lihat di bawah untuk detail lengkap. @@ -1224,10 +1207,21 @@ Kredit Akhir Kami memberikan perangkat lunak ini gratis karena Dia telah membebaskan kita. + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s diff --git a/resources/i18n/ja.ts b/resources/i18n/ja.ts index 2e2a79f46..d6951a16a 100644 --- a/resources/i18n/ja.ts +++ b/resources/i18n/ja.ts @@ -1050,35 +1050,18 @@ Do you want to add the other images anyway?
OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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は、教会専用のフリー(無償及び利用に関して)のプレゼンテーション及び賛美詞投射ソフトウェアです。 - -パソコンとプロジェクターを用いて、聖書箇所、画像また他プレゼンテーションデータ(OpenOffice.orgやPowerPoint/Viewerが必要)をスライド表示する事ができます。 - -http://openlp.org/にて詳しくご紹介しております。 - -OpenLPは、ボランティアの手により開発保守されています。もっと多くのクリスチャンの手によるフリーのソフトウェア開発に興味がある方は、以下のボタンからどうぞ。 - Credits 著作情報 - + License ライセンス - + Contribute 貢献する @@ -1088,12 +1071,12 @@ OpenLPは、ボランティアの手により開発保守されています。 ビルド %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. このプログラムは、フリーソフトです。あなたは、これを再配布したり、the Free Software Foundationが発行したGNU General Public Licenseバージョン2の元で改変する事が出来ます。 - + 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. このプログラムは、皆様のお役に立てると期待し、配布しています。しかし、完全に無保障である事を覚えて下さい。商品としての暗黙の保障としての商品適格性や特定の使用適合性もありません。詳しくは、以下の文をお読みください。 @@ -1224,10 +1207,21 @@ Final Credit 私たちは、このソフトウェアをあなたに無償フリー(無償)で提供 します。それは神が私たちをフリー(自由)にして下さった故です。 + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s diff --git a/resources/i18n/ko.ts b/resources/i18n/ko.ts index becdd44e9..549cf5e4c 100644 --- a/resources/i18n/ko.ts +++ b/resources/i18n/ko.ts @@ -1040,29 +1040,18 @@ Do you want to add the other images anyway?
OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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. - - Credits - + License - + Contribute @@ -1072,12 +1061,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + 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. @@ -1146,10 +1135,21 @@ Final Credit He has set us free. + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s diff --git a/resources/i18n/nb.ts b/resources/i18n/nb.ts index 87a0befeb..a5e327255 100644 --- a/resources/i18n/nb.ts +++ b/resources/i18n/nb.ts @@ -1051,29 +1051,18 @@ Vil du likevel legge til de andre bildene?
OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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. - - Credits Credits - + License Lisens - + Contribute Bidra @@ -1083,12 +1072,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr 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. Dette programmet er fri programvare; du kan redistribuere det og/eller endre det under betingelsene i GNU General Public License versjon 2, som publisert av Free Software Foundation. - + 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. Dette programmet er distribuert i det håp at det vil være nyttig, men UTEN NOEN FORM FOR GARANTI; selv uten underforståtte garantier om SALGBARHET eller ANVENDELIGHET FOR ET SPESIELT FORMÅL. Se nedenfor for flere detaljer. @@ -1217,10 +1206,21 @@ på korset, og satte oss fri fra synd. Vi gir deg dette programmet fritt for omkostninger, fordi han har satt oss fri. + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s diff --git a/resources/i18n/nl.ts b/resources/i18n/nl.ts index 104427e0a..45cb4efed 100644 --- a/resources/i18n/nl.ts +++ b/resources/i18n/nl.ts @@ -1051,35 +1051,18 @@ De andere afbeeldingen alsnog toevoegen?
OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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 free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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. - Credits Credits - + License Licentie - + Contribute Bijdragen @@ -1089,12 +1072,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr 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. @@ -1225,10 +1208,21 @@ Final Credit Deze tekst is niet vertaald. + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s diff --git a/resources/i18n/pt_BR.ts b/resources/i18n/pt_BR.ts index dd5a2f374..7105e6c6f 100644 --- a/resources/i18n/pt_BR.ts +++ b/resources/i18n/pt_BR.ts @@ -1051,35 +1051,18 @@ Mesmo assim, deseja continuar adicionando as outras imagens?
OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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> - Projeção de Letras Open Source - -O OpenLP é um software livre de apresentação em igrejas, ou de projeção de letras, usado para exibir slides de músicas, versículos da Bíblia, vídeos, imagens e até apresentações (se OpenOffice.org, PowerPoint ou Powerpoint Viewer estiver instalado) para louvor na igreja usando um computador e um projetor. - -Conheça mais sobre o OpenLP: http://openlp.org/ - -O OpenLP é escrito e mantido por voluntários. Se você gostaria de contribuir para a produção de mais softwares livres Cristãos, considere contribuir usando o botão abaixo. - Credits Créditos - + License Licença - + Contribute Contribuir @@ -1089,12 +1072,12 @@ O OpenLP é escrito e mantido por voluntários. Se você gostaria de contribuir 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. @@ -1223,10 +1206,21 @@ Créditos Finais trazemos este software de graça para você porque pela Graça ele nos libertou. + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s diff --git a/resources/i18n/ru.ts b/resources/i18n/ru.ts index 218a50dd1..4f1c07406 100644 --- a/resources/i18n/ru.ts +++ b/resources/i18n/ru.ts @@ -1050,29 +1050,18 @@ Do you want to add the other images anyway?
OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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. - - Credits - + License Лицензия - + Contribute @@ -1082,12 +1071,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Билд %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 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. @@ -1156,10 +1145,21 @@ Final Credit He has set us free. + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s diff --git a/resources/i18n/sv.ts b/resources/i18n/sv.ts index 944a7ac03..46ac62e99 100644 --- a/resources/i18n/sv.ts +++ b/resources/i18n/sv.ts @@ -1043,35 +1043,18 @@ Vill du lägga till dom andra bilderna ändå?
OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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> - Öppen Källkods Låttext-projektion - -OpenLP är en gratis kyrkpresentations-mjukvara, eller ett sångtextsprojektions-program, som är till för att visa slides med sånger, Bibelversar, videos, bilder och till och med presentationer (om OpenOffice.org, PowerPoint eller PowerPoint Viewer är installerat) för kyrkor som använder en dator och projektor. - -Lär dig mer om OpenLP: http://openlp.org - -OpenLP är skriven och underhålls av friviliga. Om du vill ha mer kristen mjukvara skriven, överväg att bidra genom knappen nedan. - Credits Lista över medverkande - + License Licens - + Contribute Bidra @@ -1081,12 +1064,12 @@ OpenLP är skriven och underhålls av friviliga. Om du vill ha mer kristen mjukv - + 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. @@ -1155,10 +1138,21 @@ Final Credit He has set us free. + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s diff --git a/resources/i18n/zh_CN.ts b/resources/i18n/zh_CN.ts index 2e2343311..3f16c006d 100644 --- a/resources/i18n/zh_CN.ts +++ b/resources/i18n/zh_CN.ts @@ -1039,29 +1039,18 @@ Do you want to add the other images anyway?
OpenLP.AboutForm - - - OpenLP <version><revision> - Open Source Lyrics Projection - -OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if OpenOffice.org, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. - -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. - - Credits - + License - + Contribute @@ -1071,12 +1060,12 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + 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. @@ -1145,10 +1134,21 @@ Final Credit He has set us free. + + + OpenLP <version><revision> - Open Source Lyrics Projection + +OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. + +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-2011 Raoul Snyman -Portions copyright © 2004-2011 + Copyright © 2004-2011 %s +Portions copyright © 2004-2011 %s From becbff524bef1fb0bac5c66ffbec63a9b3cfeed8 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 24 May 2011 21:29:02 +0200 Subject: [PATCH 057/190] More translation updates. --- openlp.pyw | 3 ++- openlp/core/ui/aboutdialog.py | 13 ++++++++----- resources/i18n/af.ts | 16 ++++++++-------- resources/i18n/cs.ts | 16 ++++++++-------- resources/i18n/de.ts | 16 ++++++++-------- resources/i18n/en.ts | 16 ++++++++-------- resources/i18n/en_GB.ts | 16 ++++++++-------- resources/i18n/en_ZA.ts | 16 ++++++++-------- resources/i18n/es.ts | 16 ++++++++-------- resources/i18n/et.ts | 16 ++++++++-------- resources/i18n/fr.ts | 16 ++++++++-------- resources/i18n/hu.ts | 16 ++++++++-------- resources/i18n/id.ts | 16 ++++++++-------- resources/i18n/ja.ts | 16 ++++++++-------- resources/i18n/ko.ts | 16 ++++++++-------- resources/i18n/nb.ts | 16 ++++++++-------- resources/i18n/nl.ts | 16 ++++++++-------- resources/i18n/pt_BR.ts | 16 ++++++++-------- resources/i18n/ru.ts | 16 ++++++++-------- resources/i18n/sv.ts | 16 ++++++++-------- resources/i18n/zh_CN.ts | 16 ++++++++-------- 21 files changed, 162 insertions(+), 158 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index 5ecfbe5f5..91659e46e 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -9,7 +9,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/aboutdialog.py b/openlp/core/ui/aboutdialog.py index 28b4a4860..47f14682e 100644 --- a/openlp/core/ui/aboutdialog.py +++ b/openlp/core/ui/aboutdialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # @@ -137,7 +138,8 @@ class Ui_AboutDialog(object): u'ja': [u'Kunio "Kunio" Nakamaru'], u'nb': [u'Atle "pendlaren" Weibell', u'Frode "frodus" Woldsund'], u'nl': [u'Arjen "typovar" van Voorst'], - u'pt_BR': [u'Rafael "rafaellerm" Lerm', u'Gustavo Bim'], + u'pt_BR': [u'Rafael "rafaellerm" Lerm', u'Gustavo Bim', + u'Simon "samscudder" Scudder'], u'ru': [u'Sergey "ratz" Ratz'] } documentors = [u'Wesley "wrst" Stout', @@ -225,9 +227,10 @@ class Ui_AboutDialog(object): 'Copyright \xa9 2004-2011 %s\n' 'Portions copyright \xa9 2004-2011 %s')) % (u'Raoul Snyman', u'Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, ' - 'Meinert Jordan, Andreas Preikschat, Christian Richter, Philip ' - 'Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten ' - 'Tinggaard, Frode Woldsund') + u'Matthias Hub, Meinert Jordan, Armin K\xf6hler, Andreas ' + u'Preikschat, Mattias P\xf5ldaru, Christian Richter, Philip ' + u'Ridout, Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon ' + u'Tibble, Frode Woldsund') licence = translate('OpenLP.AboutForm', 'This program is free software; you can redistribute it and/or ' 'modify it under the terms of the GNU General Public License as ' diff --git a/resources/i18n/af.ts b/resources/i18n/af.ts index f7388671b..104828f95 100644 --- a/resources/i18n/af.ts +++ b/resources/i18n/af.ts @@ -1052,17 +1052,17 @@ Voeg steeds die ander beelde by? OpenLP.AboutForm - + Credits Krediete - + License Lisensie - + Contribute Dra By @@ -1072,17 +1072,17 @@ Voeg steeds die ander beelde by? 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 @@ -1208,7 +1208,7 @@ Finale Krediet Hy ons vry gemaak het. - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1219,7 +1219,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/cs.ts b/resources/i18n/cs.ts index 35d3c23f7..72ea7a41b 100644 --- a/resources/i18n/cs.ts +++ b/resources/i18n/cs.ts @@ -1052,17 +1052,17 @@ Chcete přidat ostatní obrázky? OpenLP.AboutForm - + Credits Zásluhy - + License Licence - + Contribute Přispět @@ -1072,17 +1072,17 @@ Chcete přidat ostatní obrázky? sestavení %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. Tato aplikace je svobodný software. Lze ji libovolně šířit a upravovat v souladu s GNU General Public licencí, vydané Free Software Foundation; a to v souladu s verzí 2 této 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. Tato aplikace je ší?ena v nad?ji, že bude užite?ná, avšak BEZ JAKÉKOLI ZÁRUKY; neposkytují se ani odvozené záruky PRODEJNOSTI anebo VHODNOSTI PRO UR?ITÝ Ú?EL. Další podrobnosti viz níže. - + Project Lead %s @@ -1207,7 +1207,7 @@ Finální zásluhy On nás učinil svobodnými. - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1218,7 +1218,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/de.ts b/resources/i18n/de.ts index 98cb3066a..d09c464b4 100644 --- a/resources/i18n/de.ts +++ b/resources/i18n/de.ts @@ -1052,17 +1052,17 @@ Wollen Sie die anderen Bilder trotzdem hinzufügen? OpenLP.AboutForm - + Credits Danksagungen - + License Lizenz - + Contribute Mitmachen @@ -1072,17 +1072,17 @@ Wollen Sie die anderen Bilder trotzdem hinzufügen? 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 @@ -1210,7 +1210,7 @@ Danke Halleluja! - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1221,7 +1221,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/en.ts b/resources/i18n/en.ts index 3c0df3cd3..0f1acb294 100644 --- a/resources/i18n/en.ts +++ b/resources/i18n/en.ts @@ -1040,17 +1040,17 @@ Do you want to add the other images anyway? OpenLP.AboutForm - + Credits - + License - + Contribute @@ -1060,17 +1060,17 @@ Do you want to add the other images anyway? - + 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. - + Project Lead %s @@ -1135,7 +1135,7 @@ Final Credit - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1146,7 +1146,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/en_GB.ts b/resources/i18n/en_GB.ts index a08987e12..a343f7357 100644 --- a/resources/i18n/en_GB.ts +++ b/resources/i18n/en_GB.ts @@ -1052,17 +1052,17 @@ Do you want to add the other images anyway? OpenLP.AboutForm - + Credits Credits - + License Licence - + Contribute Contribute @@ -1072,17 +1072,17 @@ Do you want to add the other images anyway? 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 @@ -1207,7 +1207,7 @@ Final Credit He has set us free. - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1218,7 +1218,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/en_ZA.ts b/resources/i18n/en_ZA.ts index 9704b5d5b..4e33efcd9 100644 --- a/resources/i18n/en_ZA.ts +++ b/resources/i18n/en_ZA.ts @@ -1052,17 +1052,17 @@ Do you want to add the other images anyway? OpenLP.AboutForm - + Credits Credits - + License License - + Contribute Contribute @@ -1072,17 +1072,17 @@ Do you want to add the other images anyway? 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 @@ -1207,7 +1207,7 @@ Final Credit He has set us free. - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1218,7 +1218,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/es.ts b/resources/i18n/es.ts index 03d05b091..3487af80c 100644 --- a/resources/i18n/es.ts +++ b/resources/i18n/es.ts @@ -1052,17 +1052,17 @@ Do you want to add the other images anyway? OpenLP.AboutForm - + Credits Créditos - + License Licencia - + Contribute Contribuir @@ -1072,17 +1072,17 @@ Do you want to add the other images anyway? compilación %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 es un programa gratuito; usted puede distribuirlo y/o modificarlo bajo los términos de GNU General Public License según la publicación de Free Software Foundation; versión 2 de la Licencia. - + 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 @@ -1207,7 +1207,7 @@ Crédito Final de forma gratuita, porque Él nos ha liberado. - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1218,7 +1218,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/et.ts b/resources/i18n/et.ts index 2cdd03782..b9d21b950 100644 --- a/resources/i18n/et.ts +++ b/resources/i18n/et.ts @@ -1051,17 +1051,17 @@ Do you want to add the other images anyway? OpenLP.AboutForm - + Credits Autorid - + License Litsents - + Contribute Aita kaasa @@ -1071,17 +1071,17 @@ Do you want to add the other images anyway? 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 @@ -1205,7 +1205,7 @@ vabastada pattudest. Me jagame seda tarkvara tasuta, sest Tema on meid vabastanud. - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1216,7 +1216,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/fr.ts b/resources/i18n/fr.ts index 1da37ffb5..e607c9543 100644 --- a/resources/i18n/fr.ts +++ b/resources/i18n/fr.ts @@ -1043,17 +1043,17 @@ Voulez-vous ajouter de toute façon d'autres images ? OpenLP.AboutForm - + Credits Crédits - + License Licence - + Contribute Contribuer @@ -1063,17 +1063,17 @@ Voulez-vous ajouter de toute façon d'autres images ? - + 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. - + Project Lead %s @@ -1138,7 +1138,7 @@ Final Credit - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1149,7 +1149,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/hu.ts b/resources/i18n/hu.ts index 4bb79b4c3..5e1622758 100644 --- a/resources/i18n/hu.ts +++ b/resources/i18n/hu.ts @@ -1051,17 +1051,17 @@ Szeretnél más képeket megadni? OpenLP.AboutForm - + Credits Közreműködők - + License Licenc - + Contribute Részvétel @@ -1071,7 +1071,7 @@ Szeretnél más képeket megadni? - + Project Lead %s @@ -1196,17 +1196,17 @@ Végső köszönet mert Ő tett minket szabaddá. - + 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. További részletekért lásd a alább. - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1217,7 +1217,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/id.ts b/resources/i18n/id.ts index e92d493e1..c7f338304 100644 --- a/resources/i18n/id.ts +++ b/resources/i18n/id.ts @@ -1052,17 +1052,17 @@ Ingin tetap menambah gambar lain? OpenLP.AboutForm - + Credits Kredit - + License Lisensi - + Contribute Berkontribusi @@ -1072,17 +1072,17 @@ Ingin tetap menambah gambar lain? 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. Program ini adalah perangkat lunak gratis; Anda dapat meredistribusikannya dan/atau memodifikasinya di bawah syarat-syarat GNU General Public License yang dikeluarkan Free Software Foundation; Lisensi versi 2. - + 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. Program ini didistribusikan dengan harapan dapat berguna, namun TANPA GARANSI; bahkan tanpa garansi implisit dalam PEMBELIAN maupun KETEPATAN TUJUAN TERTENTU. Lihat di bawah untuk detail lengkap. - + Project Lead %s @@ -1208,7 +1208,7 @@ Kredit Akhir Dia telah membebaskan kita. - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1219,7 +1219,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/ja.ts b/resources/i18n/ja.ts index d6951a16a..898af216c 100644 --- a/resources/i18n/ja.ts +++ b/resources/i18n/ja.ts @@ -1051,17 +1051,17 @@ Do you want to add the other images anyway? OpenLP.AboutForm - + Credits 著作情報 - + License ライセンス - + Contribute 貢献する @@ -1071,17 +1071,17 @@ Do you want to add the other images anyway? ビルド %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. このプログラムは、フリーソフトです。あなたは、これを再配布したり、the Free Software Foundationが発行したGNU General Public Licenseバージョン2の元で改変する事が出来ます。 - + 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 @@ -1208,7 +1208,7 @@ Final Credit します。それは神が私たちをフリー(自由)にして下さった故です。 - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1219,7 +1219,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/ko.ts b/resources/i18n/ko.ts index 549cf5e4c..a13a45988 100644 --- a/resources/i18n/ko.ts +++ b/resources/i18n/ko.ts @@ -1041,17 +1041,17 @@ Do you want to add the other images anyway? OpenLP.AboutForm - + Credits - + License - + Contribute @@ -1061,17 +1061,17 @@ Do you want to add the other images anyway? - + 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. - + Project Lead %s @@ -1136,7 +1136,7 @@ Final Credit - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1147,7 +1147,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/nb.ts b/resources/i18n/nb.ts index a5e327255..e7304b0e4 100644 --- a/resources/i18n/nb.ts +++ b/resources/i18n/nb.ts @@ -1052,17 +1052,17 @@ Vil du likevel legge til de andre bildene? OpenLP.AboutForm - + Credits Credits - + License Lisens - + Contribute Bidra @@ -1072,17 +1072,17 @@ Vil du likevel legge til de andre bildene? 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. Dette programmet er fri programvare; du kan redistribuere det og/eller endre det under betingelsene i GNU General Public License versjon 2, som publisert av Free Software Foundation. - + 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. Dette programmet er distribuert i det håp at det vil være nyttig, men UTEN NOEN FORM FOR GARANTI; selv uten underforståtte garantier om SALGBARHET eller ANVENDELIGHET FOR ET SPESIELT FORMÅL. Se nedenfor for flere detaljer. - + Project Lead %s @@ -1207,7 +1207,7 @@ dette programmet fritt for omkostninger, fordi han har satt oss fri. - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1218,7 +1218,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/nl.ts b/resources/i18n/nl.ts index 45cb4efed..da4be0f7f 100644 --- a/resources/i18n/nl.ts +++ b/resources/i18n/nl.ts @@ -1052,17 +1052,17 @@ De andere afbeeldingen alsnog toevoegen? OpenLP.AboutForm - + Credits Credits - + License Licentie - + Contribute Bijdragen @@ -1072,17 +1072,17 @@ De andere afbeeldingen alsnog toevoegen? 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 @@ -1209,7 +1209,7 @@ Final Credit Deze tekst is niet vertaald. - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1220,7 +1220,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/pt_BR.ts b/resources/i18n/pt_BR.ts index 7105e6c6f..58bacbc8f 100644 --- a/resources/i18n/pt_BR.ts +++ b/resources/i18n/pt_BR.ts @@ -1052,17 +1052,17 @@ Mesmo assim, deseja continuar adicionando as outras imagens? OpenLP.AboutForm - + Credits Créditos - + License Licença - + Contribute Contribuir @@ -1072,17 +1072,17 @@ Mesmo assim, deseja continuar adicionando as outras imagens? 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 @@ -1207,7 +1207,7 @@ Créditos Finais pela Graça ele nos libertou. - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1218,7 +1218,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/ru.ts b/resources/i18n/ru.ts index 4f1c07406..ac6d6b541 100644 --- a/resources/i18n/ru.ts +++ b/resources/i18n/ru.ts @@ -1051,17 +1051,17 @@ Do you want to add the other images anyway? OpenLP.AboutForm - + Credits - + License Лицензия - + Contribute @@ -1071,17 +1071,17 @@ Do you want to add the other images anyway? Билд %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 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 @@ -1146,7 +1146,7 @@ Final Credit - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1157,7 +1157,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/sv.ts b/resources/i18n/sv.ts index 46ac62e99..defc37983 100644 --- a/resources/i18n/sv.ts +++ b/resources/i18n/sv.ts @@ -1044,17 +1044,17 @@ Vill du lägga till dom andra bilderna ändå? OpenLP.AboutForm - + Credits Lista över medverkande - + License Licens - + Contribute Bidra @@ -1064,17 +1064,17 @@ Vill du lägga till dom andra bilderna ändå? - + 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. - + Project Lead %s @@ -1139,7 +1139,7 @@ Final Credit - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1150,7 +1150,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s diff --git a/resources/i18n/zh_CN.ts b/resources/i18n/zh_CN.ts index 3f16c006d..33308e563 100644 --- a/resources/i18n/zh_CN.ts +++ b/resources/i18n/zh_CN.ts @@ -1040,17 +1040,17 @@ Do you want to add the other images anyway? OpenLP.AboutForm - + Credits - + License - + Contribute @@ -1060,17 +1060,17 @@ Do you want to add the other images anyway? - + 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. - + Project Lead %s @@ -1135,7 +1135,7 @@ Final Credit - + OpenLP <version><revision> - Open Source Lyrics Projection OpenLP is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if Impress, PowerPoint or PowerPoint Viewer is installed) for church worship using a computer and a data projector. @@ -1146,7 +1146,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Copyright © 2004-2011 %s Portions copyright © 2004-2011 %s From d05c349f41319dd483394297e0f04563e05bd63a Mon Sep 17 00:00:00 2001 From: Gerald Britton Date: Tue, 24 May 2011 16:41:14 -0400 Subject: [PATCH 058/190] Catch common errors during import and report to user --- openlp/plugins/songs/lib/oooimport.py | 23 ++++++++++++++++++----- openlp/plugins/songs/lib/sofimport.py | 26 ++++++++++++++++---------- 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/openlp/plugins/songs/lib/oooimport.py b/openlp/plugins/songs/lib/oooimport.py index d43541bc7..1c5c7e1ef 100644 --- a/openlp/plugins/songs/lib/oooimport.py +++ b/openlp/plugins/songs/lib/oooimport.py @@ -40,6 +40,7 @@ if os.name == u'nt': PAGE_BOTH = 6 else: import uno + from com.sun.star.connection import NoConnectException from com.sun.star.style.BreakType import PAGE_BEFORE, PAGE_AFTER, PAGE_BOTH class OooImport(SongImport): @@ -56,7 +57,16 @@ class OooImport(SongImport): self.process_started = False def do_import(self): - self.start_ooo() + if not isinstance(self.import_source, list): + return + try: + self.start_ooo() + except NoConnectException as exc: + self.log_error( + self.import_source[0], + u'Unable to connect to OpenOffice.org or LibreOffice') + log.error(exc) + return self.import_wizard.progressBar.setMaximum(len(self.import_source)) for filename in self.import_source: if self.stop_import_flag: @@ -98,13 +108,16 @@ class OooImport(SongImport): while uno_instance is None and loop < 5: try: uno_instance = get_uno_instance(resolver) - except: + except NoConnectException: log.exception("Failed to resolve uno connection") self.start_ooo_process() loop += 1 - manager = uno_instance.ServiceManager - self.desktop = manager.createInstanceWithContext( - "com.sun.star.frame.Desktop", uno_instance) + else: + manager = uno_instance.ServiceManager + self.desktop = manager.createInstanceWithContext( + "com.sun.star.frame.Desktop", uno_instance) + return + raise def start_ooo_process(self): try: diff --git a/openlp/plugins/songs/lib/sofimport.py b/openlp/plugins/songs/lib/sofimport.py index 7f9fa16bc..f35094a96 100644 --- a/openlp/plugins/songs/lib/sofimport.py +++ b/openlp/plugins/songs/lib/sofimport.py @@ -30,10 +30,14 @@ # http://www.oooforum.org/forum/viewtopic.phtml?t=14409 # http://wiki.services.openoffice.org/wiki/Python +import logging import os import re from oooimport import OooImport +from com.sun.star.uno import RuntimeException + +log = logging.getLogger(__name__) if os.name == u'nt': BOLD = 150.0 @@ -85,16 +89,18 @@ class SofImport(OooImport): """ self.blanklines = 0 self.new_song() - paragraphs = self.document.getText().createEnumeration() - while paragraphs.hasMoreElements(): - if self.stop_import_flag: - return - paragraph = paragraphs.nextElement() - if paragraph.supportsService("com.sun.star.text.Paragraph"): - self.process_paragraph(paragraph) - if self.song: - self.finish() - self.song = False + try: + paragraphs = self.document.getText().createEnumeration() + while paragraphs.hasMoreElements(): + if self.stop_import_flag: + return + paragraph = paragraphs.nextElement() + if paragraph.supportsService("com.sun.star.text.Paragraph"): + self.process_paragraph(paragraph) + except RuntimeException as exc: + log.exception(u'Error processing file: %s', exc) + if not self.finish(): + self.log_error(self.filepath) def process_paragraph(self, paragraph): """ From 766964377481064eac8ec441ba4d4b687928c460 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 24 May 2011 22:47:05 +0200 Subject: [PATCH 059/190] Updated the copyright notice, adding Jeffrey Smith back in after he accidentally got removed somewhere somehow. --- README.txt | 7 +---- copyright.txt | 3 +- openlp/__init__.py | 3 +- openlp/core/__init__.py | 3 +- openlp/core/lib/__init__.py | 3 +- openlp/core/lib/db.py | 3 +- openlp/core/lib/displaytags.py | 3 +- openlp/core/lib/dockwidget.py | 3 +- openlp/core/lib/eventreceiver.py | 3 +- openlp/core/lib/htmlbuilder.py | 3 +- openlp/core/lib/imagemanager.py | 3 +- openlp/core/lib/listwidgetwithdnd.py | 3 +- openlp/core/lib/mediamanageritem.py | 5 +-- openlp/core/lib/plugin.py | 3 +- openlp/core/lib/pluginmanager.py | 3 +- openlp/core/lib/renderer.py | 3 +- openlp/core/lib/searchedit.py | 5 +-- openlp/core/lib/serviceitem.py | 3 +- openlp/core/lib/settingsmanager.py | 3 +- openlp/core/lib/settingstab.py | 3 +- openlp/core/lib/spelltextedit.py | 3 +- openlp/core/lib/theme.py | 3 +- openlp/core/lib/toolbar.py | 3 +- openlp/core/lib/ui.py | 3 +- openlp/core/theme/__init__.py | 3 +- openlp/core/theme/theme.py | 3 +- openlp/core/ui/__init__.py | 3 +- openlp/core/ui/aboutform.py | 3 +- openlp/core/ui/advancedtab.py | 3 +- openlp/core/ui/displaytagdialog.py | 3 +- openlp/core/ui/displaytagform.py | 3 +- openlp/core/ui/exceptiondialog.py | 3 +- openlp/core/ui/exceptionform.py | 3 +- openlp/core/ui/filerenamedialog.py | 3 +- openlp/core/ui/filerenameform.py | 3 +- openlp/core/ui/firsttimeform.py | 3 +- openlp/core/ui/firsttimelanguagedialog.py | 3 +- openlp/core/ui/firsttimelanguageform.py | 3 +- openlp/core/ui/firsttimewizard.py | 3 +- openlp/core/ui/generaltab.py | 3 +- openlp/core/ui/maindisplay.py | 3 +- openlp/core/ui/mainwindow.py | 3 +- openlp/core/ui/mediadockmanager.py | 3 +- openlp/core/ui/plugindialog.py | 5 +-- openlp/core/ui/pluginform.py | 3 +- openlp/core/ui/printservicedialog.py | 3 +- openlp/core/ui/printserviceform.py | 3 +- openlp/core/ui/screen.py | 3 +- openlp/core/ui/serviceitemeditdialog.py | 3 +- openlp/core/ui/serviceitemeditform.py | 3 +- openlp/core/ui/servicemanager.py | 3 +- openlp/core/ui/servicenoteform.py | 3 +- openlp/core/ui/settingsdialog.py | 3 +- openlp/core/ui/settingsform.py | 3 +- openlp/core/ui/shortcutlistdialog.py | 5 +-- openlp/core/ui/shortcutlistform.py | 5 +-- openlp/core/ui/slidecontroller.py | 3 +- openlp/core/ui/splashscreen.py | 3 +- openlp/core/ui/starttimedialog.py | 5 +-- openlp/core/ui/starttimeform.py | 3 +- openlp/core/ui/themeform.py | 3 +- openlp/core/ui/thememanager.py | 3 +- openlp/core/ui/themestab.py | 3 +- openlp/core/ui/themewizard.py | 5 +-- openlp/core/ui/wizard.py | 3 +- openlp/core/utils/__init__.py | 3 +- openlp/core/utils/actions.py | 3 +- openlp/core/utils/languagemanager.py | 3 +- openlp/plugins/__init__.py | 3 +- openlp/plugins/alerts/__init__.py | 3 +- openlp/plugins/alerts/alertsplugin.py | 3 +- openlp/plugins/alerts/forms/__init__.py | 3 +- openlp/plugins/alerts/forms/alertdialog.py | 3 +- openlp/plugins/alerts/forms/alertform.py | 3 +- openlp/plugins/alerts/lib/__init__.py | 3 +- openlp/plugins/alerts/lib/alertsmanager.py | 3 +- openlp/plugins/alerts/lib/alertstab.py | 3 +- openlp/plugins/alerts/lib/db.py | 3 +- openlp/plugins/bibles/__init__.py | 3 +- openlp/plugins/bibles/bibleplugin.py | 3 +- openlp/plugins/bibles/forms/__init__.py | 3 +- .../plugins/bibles/forms/bibleimportform.py | 3 +- openlp/plugins/bibles/lib/__init__.py | 3 +- openlp/plugins/bibles/lib/biblestab.py | 5 +-- openlp/plugins/bibles/lib/csvbible.py | 3 +- openlp/plugins/bibles/lib/db.py | 3 +- openlp/plugins/bibles/lib/http.py | 3 +- openlp/plugins/bibles/lib/manager.py | 3 +- openlp/plugins/bibles/lib/mediaitem.py | 3 +- openlp/plugins/bibles/lib/openlp1.py | 3 +- openlp/plugins/bibles/lib/opensong.py | 3 +- openlp/plugins/bibles/lib/osis.py | 3 +- .../plugins/bibles/lib/versereferencelist.py | 3 +- openlp/plugins/custom/__init__.py | 3 +- openlp/plugins/custom/customplugin.py | 3 +- openlp/plugins/custom/forms/__init__.py | 3 +- .../plugins/custom/forms/editcustomdialog.py | 5 +-- openlp/plugins/custom/forms/editcustomform.py | 5 +-- .../custom/forms/editcustomslidedialog.py | 3 +- .../custom/forms/editcustomslideform.py | 3 +- openlp/plugins/custom/lib/__init__.py | 3 +- openlp/plugins/custom/lib/customtab.py | 3 +- openlp/plugins/custom/lib/customxmlhandler.py | 3 +- openlp/plugins/custom/lib/db.py | 3 +- openlp/plugins/custom/lib/mediaitem.py | 3 +- openlp/plugins/images/__init__.py | 3 +- openlp/plugins/images/imageplugin.py | 3 +- openlp/plugins/images/lib/__init__.py | 3 +- openlp/plugins/images/lib/mediaitem.py | 3 +- openlp/plugins/media/__init__.py | 3 +- openlp/plugins/media/lib/__init__.py | 3 +- openlp/plugins/media/lib/mediaitem.py | 3 +- openlp/plugins/media/lib/mediatab.py | 3 +- openlp/plugins/media/mediaplugin.py | 3 +- openlp/plugins/presentations/__init__.py | 3 +- openlp/plugins/presentations/lib/__init__.py | 3 +- .../presentations/lib/impresscontroller.py | 3 +- openlp/plugins/presentations/lib/mediaitem.py | 3 +- .../presentations/lib/messagelistener.py | 3 +- .../presentations/lib/powerpointcontroller.py | 3 +- .../presentations/lib/pptviewcontroller.py | 5 +-- .../presentations/lib/pptviewlib/ppttest.py | 3 +- .../lib/presentationcontroller.py | 3 +- .../presentations/lib/presentationtab.py | 5 +-- .../presentations/presentationplugin.py | 3 +- openlp/plugins/remotes/__init__.py | 3 +- openlp/plugins/remotes/html/index.html | 5 +-- openlp/plugins/remotes/html/openlp.css | 3 +- openlp/plugins/remotes/html/openlp.js | 5 +-- openlp/plugins/remotes/html/stage.css | 5 +-- openlp/plugins/remotes/html/stage.html | 3 +- openlp/plugins/remotes/html/stage.js | 19 ++++++------ openlp/plugins/remotes/lib/__init__.py | 3 +- openlp/plugins/remotes/lib/httpserver.py | 3 +- openlp/plugins/remotes/lib/remotetab.py | 3 +- openlp/plugins/remotes/remoteplugin.py | 3 +- openlp/plugins/songs/__init__.py | 3 +- openlp/plugins/songs/forms/__init__.py | 3 +- openlp/plugins/songs/forms/authorsdialog.py | 3 +- openlp/plugins/songs/forms/authorsform.py | 3 +- openlp/plugins/songs/forms/editsongdialog.py | 5 +-- openlp/plugins/songs/forms/editsongform.py | 3 +- openlp/plugins/songs/forms/editversedialog.py | 3 +- openlp/plugins/songs/forms/editverseform.py | 3 +- openlp/plugins/songs/forms/songbookdialog.py | 3 +- openlp/plugins/songs/forms/songbookform.py | 3 +- openlp/plugins/songs/forms/songexportform.py | 3 +- openlp/plugins/songs/forms/songimportform.py | 3 +- .../songs/forms/songmaintenancedialog.py | 5 +-- .../songs/forms/songmaintenanceform.py | 3 +- openlp/plugins/songs/forms/topicsdialog.py | 3 +- openlp/plugins/songs/forms/topicsform.py | 3 +- openlp/plugins/songs/lib/__init__.py | 3 +- openlp/plugins/songs/lib/cclifileimport.py | 3 +- openlp/plugins/songs/lib/db.py | 3 +- openlp/plugins/songs/lib/easislidesimport.py | 3 +- openlp/plugins/songs/lib/ewimport.py | 3 +- .../plugins/songs/lib/foilpresenterimport.py | 5 +-- openlp/plugins/songs/lib/importer.py | 3 +- openlp/plugins/songs/lib/mediaitem.py | 3 +- openlp/plugins/songs/lib/olp1import.py | 3 +- openlp/plugins/songs/lib/olpimport.py | 3 +- openlp/plugins/songs/lib/oooimport.py | 3 +- openlp/plugins/songs/lib/openlyricsexport.py | 3 +- openlp/plugins/songs/lib/openlyricsimport.py | 3 +- openlp/plugins/songs/lib/opensongimport.py | 3 +- openlp/plugins/songs/lib/sofimport.py | 3 +- openlp/plugins/songs/lib/songbeamerimport.py | 3 +- openlp/plugins/songs/lib/songimport.py | 3 +- .../plugins/songs/lib/songshowplusimport.py | 3 +- openlp/plugins/songs/lib/songstab.py | 3 +- .../songs/lib/test/test_import_file.py | 3 +- .../songs/lib/test/test_importing_lots.py | 3 +- .../songs/lib/test/test_opensongimport.py | 3 +- openlp/plugins/songs/lib/ui.py | 3 +- openlp/plugins/songs/lib/wowimport.py | 3 +- openlp/plugins/songs/lib/xml.py | 3 +- openlp/plugins/songs/songsplugin.py | 3 +- openlp/plugins/songusage/__init__.py | 3 +- openlp/plugins/songusage/forms/__init__.py | 3 +- .../songusage/forms/songusagedeletedialog.py | 3 +- .../songusage/forms/songusagedeleteform.py | 3 +- .../songusage/forms/songusagedetaildialog.py | 3 +- .../songusage/forms/songusagedetailform.py | 3 +- openlp/plugins/songusage/lib/__init__.py | 3 +- openlp/plugins/songusage/lib/db.py | 3 +- openlp/plugins/songusage/songusageplugin.py | 3 +- resources/osx/expander.py | 3 +- resources/osx/get_version.py | 31 +++++++++++++++++-- ...lugins.presentations.presentationplugin.py | 3 +- resources/pyinstaller/hook-openlp.py | 3 +- scripts/generate_resources.sh | 7 +++-- scripts/openlp-remoteclient.py | 3 +- scripts/resources.patch | 5 +-- scripts/translation_utils.py | 3 +- scripts/windows-builder.py | 3 +- setup.py | 3 +- 197 files changed, 448 insertions(+), 233 deletions(-) diff --git a/README.txt b/README.txt index 0b26d74fc..b937e1d5f 100644 --- a/README.txt +++ b/README.txt @@ -8,12 +8,7 @@ page on the web site:: http://openlp.org/en/download.html If you're looking for how to contribute to OpenLP, then please look at the -contribution page on the web site:: - - http://openlp.org/en/documentation/introduction/contributing.html - -If you've looked at that page, and are wanting to help develop, test or -translate OpenLP, have a look at the OpenLP wiki:: +OpenLP wiki:: http://wiki.openlp.org/ diff --git a/copyright.txt b/copyright.txt index 0ef481f2b..b91a65e5a 100644 --- a/copyright.txt +++ b/copyright.txt @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/__init__.py b/openlp/__init__.py index ac3dac24c..d3b22d90c 100644 --- a/openlp/__init__.py +++ b/openlp/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index 1cef928bc..8585888b7 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 27a34d54d..fa1025fdd 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index a160fec43..f698a3bd5 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/displaytags.py b/openlp/core/lib/displaytags.py index b584af023..38112f661 100644 --- a/openlp/core/lib/displaytags.py +++ b/openlp/core/lib/displaytags.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/dockwidget.py b/openlp/core/lib/dockwidget.py index ace364ed0..d285296d5 100644 --- a/openlp/core/lib/dockwidget.py +++ b/openlp/core/lib/dockwidget.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/eventreceiver.py b/openlp/core/lib/eventreceiver.py index f193ccd16..39a85db00 100644 --- a/openlp/core/lib/eventreceiver.py +++ b/openlp/core/lib/eventreceiver.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/htmlbuilder.py b/openlp/core/lib/htmlbuilder.py index e2d6b8520..2b25e1d2b 100644 --- a/openlp/core/lib/htmlbuilder.py +++ b/openlp/core/lib/htmlbuilder.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/imagemanager.py b/openlp/core/lib/imagemanager.py index f06dc2767..f72781e4b 100644 --- a/openlp/core/lib/imagemanager.py +++ b/openlp/core/lib/imagemanager.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/listwidgetwithdnd.py b/openlp/core/lib/listwidgetwithdnd.py index 2419d1a35..3e590fbdf 100644 --- a/openlp/core/lib/listwidgetwithdnd.py +++ b/openlp/core/lib/listwidgetwithdnd.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index b8cb23999..00ec3a88a 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # @@ -118,7 +119,7 @@ class MediaManagerItem(QtGui.QWidget): QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'%s_set_autoselect_item' % self.parent.name.lower()), self.setAutoSelectItem) - + def requiredIcons(self): """ This method is called to define the icons for the plugin. diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py index d0d83cd0c..ab3a38ea0 100644 --- a/openlp/core/lib/plugin.py +++ b/openlp/core/lib/plugin.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/pluginmanager.py b/openlp/core/lib/pluginmanager.py index 682352aa5..5714ce58f 100644 --- a/openlp/core/lib/pluginmanager.py +++ b/openlp/core/lib/pluginmanager.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 20d5c3d62..2f51a983c 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/searchedit.py b/openlp/core/lib/searchedit.py index fc007227e..6adf2d791 100644 --- a/openlp/core/lib/searchedit.py +++ b/openlp/core/lib/searchedit.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # @@ -116,7 +117,7 @@ class SearchEdit(QtGui.QLineEdit): Set a new current search type. ``identifier`` - The search type identifier (int). + The search type identifier (int). """ menu = self.menuButton.menu() for action in menu.actions(): diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 95702f229..030798c57 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/settingsmanager.py b/openlp/core/lib/settingsmanager.py index 472c66e23..4c2abbe34 100644 --- a/openlp/core/lib/settingsmanager.py +++ b/openlp/core/lib/settingsmanager.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/settingstab.py b/openlp/core/lib/settingstab.py index 53fd37ed9..433ec2b38 100644 --- a/openlp/core/lib/settingstab.py +++ b/openlp/core/lib/settingstab.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/spelltextedit.py b/openlp/core/lib/spelltextedit.py index a99539775..c6ec3ea1d 100644 --- a/openlp/core/lib/spelltextedit.py +++ b/openlp/core/lib/spelltextedit.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/theme.py b/openlp/core/lib/theme.py index 25f0094a3..6b92c95a7 100644 --- a/openlp/core/lib/theme.py +++ b/openlp/core/lib/theme.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/toolbar.py b/openlp/core/lib/toolbar.py index d2b37df51..bcc67edc4 100644 --- a/openlp/core/lib/toolbar.py +++ b/openlp/core/lib/toolbar.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/lib/ui.py b/openlp/core/lib/ui.py index 311c579ca..866472095 100644 --- a/openlp/core/lib/ui.py +++ b/openlp/core/lib/ui.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/theme/__init__.py b/openlp/core/theme/__init__.py index bd5ba899d..4189a5ef4 100644 --- a/openlp/core/theme/__init__.py +++ b/openlp/core/theme/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/theme/theme.py b/openlp/core/theme/theme.py index 78e9cb7e7..4bccadc59 100644 --- a/openlp/core/theme/theme.py +++ b/openlp/core/theme/theme.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/__init__.py b/openlp/core/ui/__init__.py index fced32a0d..28038a60b 100644 --- a/openlp/core/ui/__init__.py +++ b/openlp/core/ui/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/aboutform.py b/openlp/core/ui/aboutform.py index 4112cfd8f..60cec2a57 100644 --- a/openlp/core/ui/aboutform.py +++ b/openlp/core/ui/aboutform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index b6dd1cb27..b1e8444d4 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/displaytagdialog.py b/openlp/core/ui/displaytagdialog.py index 9bf6cb4d1..89094ee66 100644 --- a/openlp/core/ui/displaytagdialog.py +++ b/openlp/core/ui/displaytagdialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/displaytagform.py b/openlp/core/ui/displaytagform.py index c439fc116..213f6e2e5 100644 --- a/openlp/core/ui/displaytagform.py +++ b/openlp/core/ui/displaytagform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/exceptiondialog.py b/openlp/core/ui/exceptiondialog.py index 4aa01f776..05e78d5dc 100644 --- a/openlp/core/ui/exceptiondialog.py +++ b/openlp/core/ui/exceptiondialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/exceptionform.py b/openlp/core/ui/exceptionform.py index 279122937..ab61ef24d 100644 --- a/openlp/core/ui/exceptionform.py +++ b/openlp/core/ui/exceptionform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/filerenamedialog.py b/openlp/core/ui/filerenamedialog.py index ec0f0e2dd..2234938fb 100644 --- a/openlp/core/ui/filerenamedialog.py +++ b/openlp/core/ui/filerenamedialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/filerenameform.py b/openlp/core/ui/filerenameform.py index 049b68336..bfff2e985 100644 --- a/openlp/core/ui/filerenameform.py +++ b/openlp/core/ui/filerenameform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/firsttimeform.py b/openlp/core/ui/firsttimeform.py index dade26cf9..e378fb63a 100644 --- a/openlp/core/ui/firsttimeform.py +++ b/openlp/core/ui/firsttimeform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/firsttimelanguagedialog.py b/openlp/core/ui/firsttimelanguagedialog.py index bdc03048a..1807595c5 100644 --- a/openlp/core/ui/firsttimelanguagedialog.py +++ b/openlp/core/ui/firsttimelanguagedialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/firsttimelanguageform.py b/openlp/core/ui/firsttimelanguageform.py index f6ffafb8f..da4ee4019 100644 --- a/openlp/core/ui/firsttimelanguageform.py +++ b/openlp/core/ui/firsttimelanguageform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/firsttimewizard.py b/openlp/core/ui/firsttimewizard.py index 8accb6254..f23a8fdde 100644 --- a/openlp/core/ui/firsttimewizard.py +++ b/openlp/core/ui/firsttimewizard.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index 75cb8fa98..14ce7115f 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 8af061f2b..8695aa0e2 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index b2c0466b6..4e3b115ea 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/mediadockmanager.py b/openlp/core/ui/mediadockmanager.py index ca4f4d442..24bea4d63 100644 --- a/openlp/core/ui/mediadockmanager.py +++ b/openlp/core/ui/mediadockmanager.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/plugindialog.py b/openlp/core/ui/plugindialog.py index 84fb845c6..80ecc733e 100644 --- a/openlp/core/ui/plugindialog.py +++ b/openlp/core/ui/plugindialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # @@ -85,4 +86,4 @@ class Ui_PluginViewDialog(object): self.statusComboBox.setItemText(0, translate('OpenLP.PluginForm', 'Active')) self.statusComboBox.setItemText(1, - translate('OpenLP.PluginForm', 'Inactive')) \ No newline at end of file + translate('OpenLP.PluginForm', 'Inactive')) diff --git a/openlp/core/ui/pluginform.py b/openlp/core/ui/pluginform.py index bfac5f3e0..a23072901 100644 --- a/openlp/core/ui/pluginform.py +++ b/openlp/core/ui/pluginform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/printservicedialog.py b/openlp/core/ui/printservicedialog.py index f9d1163d0..b9f9a5022 100644 --- a/openlp/core/ui/printservicedialog.py +++ b/openlp/core/ui/printservicedialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/printserviceform.py b/openlp/core/ui/printserviceform.py index bb87cf32f..56d2f2c7e 100644 --- a/openlp/core/ui/printserviceform.py +++ b/openlp/core/ui/printserviceform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/screen.py b/openlp/core/ui/screen.py index 2186a221e..14dca8703 100644 --- a/openlp/core/ui/screen.py +++ b/openlp/core/ui/screen.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/serviceitemeditdialog.py b/openlp/core/ui/serviceitemeditdialog.py index 4e966a38b..a72396c6c 100644 --- a/openlp/core/ui/serviceitemeditdialog.py +++ b/openlp/core/ui/serviceitemeditdialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/serviceitemeditform.py b/openlp/core/ui/serviceitemeditform.py index 400566099..622e0ed57 100644 --- a/openlp/core/ui/serviceitemeditform.py +++ b/openlp/core/ui/serviceitemeditform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 94cf621ab..6834c8df8 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/servicenoteform.py b/openlp/core/ui/servicenoteform.py index ef1c627d4..a0e153bc5 100644 --- a/openlp/core/ui/servicenoteform.py +++ b/openlp/core/ui/servicenoteform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/settingsdialog.py b/openlp/core/ui/settingsdialog.py index 50bcca4e2..17bb4dea9 100644 --- a/openlp/core/ui/settingsdialog.py +++ b/openlp/core/ui/settingsdialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/settingsform.py b/openlp/core/ui/settingsform.py index 265a03f48..61ba46f7d 100644 --- a/openlp/core/ui/settingsform.py +++ b/openlp/core/ui/settingsform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/shortcutlistdialog.py b/openlp/core/ui/shortcutlistdialog.py index e22bf1241..1c0d72bf1 100644 --- a/openlp/core/ui/shortcutlistdialog.py +++ b/openlp/core/ui/shortcutlistdialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # @@ -54,7 +55,7 @@ class Ui_ShortcutListDialog(object): self.shortcutListLayout.setObjectName(u'shortcutListLayout') self.descriptionLabel = QtGui.QLabel(shortcutListDialog) self.descriptionLabel.setObjectName(u'descriptionLabel') - self.descriptionLabel.setWordWrap(True) + self.descriptionLabel.setWordWrap(True) self.shortcutListLayout.addWidget(self.descriptionLabel) self.treeWidget = QtGui.QTreeWidget(shortcutListDialog) self.treeWidget.setObjectName(u'treeWidget') diff --git a/openlp/core/ui/shortcutlistform.py b/openlp/core/ui/shortcutlistform.py index 8e38ebff5..49aa663a3 100644 --- a/openlp/core/ui/shortcutlistform.py +++ b/openlp/core/ui/shortcutlistform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # @@ -199,7 +200,7 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog): if not self.primaryPushButton.text(): # When we do not have a primary shortcut, the just entered alternate # shortcut will automatically become the primary shortcut. That is - # why we have to adjust the primary button's text. + # why we have to adjust the primary button's text. self.primaryPushButton.setText(self.alternatePushButton.text()) self.alternatePushButton.setText(u'') self.refreshShortcutList() diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index a88215428..52f4a9f56 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/splashscreen.py b/openlp/core/ui/splashscreen.py index 2bb516d00..4875ceb2f 100644 --- a/openlp/core/ui/splashscreen.py +++ b/openlp/core/ui/splashscreen.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/starttimedialog.py b/openlp/core/ui/starttimedialog.py index 2d1711231..315a79e1a 100644 --- a/openlp/core/ui/starttimedialog.py +++ b/openlp/core/ui/starttimedialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # @@ -118,4 +119,4 @@ class Ui_StartTimeDialog(object): self.secondLabel.setText(translate('OpenLP.StartTimeForm', 'Seconds:')) self.startLabel.setText(translate('OpenLP.StartTimeForm', 'Start')) self.finishLabel.setText(translate('OpenLP.StartTimeForm', 'Finish')) - self.lengthLabel.setText(translate('OpenLP.StartTimeForm', 'Length')) \ No newline at end of file + self.lengthLabel.setText(translate('OpenLP.StartTimeForm', 'Length')) diff --git a/openlp/core/ui/starttimeform.py b/openlp/core/ui/starttimeform.py index 956b01a9d..1deac3c60 100644 --- a/openlp/core/ui/starttimeform.py +++ b/openlp/core/ui/starttimeform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/themeform.py b/openlp/core/ui/themeform.py index 019ab5bfe..21afd6f96 100644 --- a/openlp/core/ui/themeform.py +++ b/openlp/core/ui/themeform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 190939ab9..854fc7af1 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/themestab.py b/openlp/core/ui/themestab.py index 20f24d9fe..5da2d4466 100644 --- a/openlp/core/ui/themestab.py +++ b/openlp/core/ui/themestab.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/ui/themewizard.py b/openlp/core/ui/themewizard.py index 759b36101..1de6a54f4 100644 --- a/openlp/core/ui/themewizard.py +++ b/openlp/core/ui/themewizard.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # @@ -537,4 +538,4 @@ class Ui_ThemeWizard(object): labelWidth = max(self.backgroundLabel.minimumSizeHint().width(), self.horizontalLabel.minimumSizeHint().width()) self.spacer.changeSize(labelWidth, 0, - QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) \ No newline at end of file + QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) diff --git a/openlp/core/ui/wizard.py b/openlp/core/ui/wizard.py index 9d1147638..b76a9ab50 100644 --- a/openlp/core/ui/wizard.py +++ b/openlp/core/ui/wizard.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index c5c08fad4..64fa6641b 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/utils/actions.py b/openlp/core/utils/actions.py index 0c4eee655..4fe53e6e0 100644 --- a/openlp/core/utils/actions.py +++ b/openlp/core/utils/actions.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/core/utils/languagemanager.py b/openlp/core/utils/languagemanager.py index e62e6279d..6f1cf64b6 100644 --- a/openlp/core/utils/languagemanager.py +++ b/openlp/core/utils/languagemanager.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/__init__.py b/openlp/plugins/__init__.py index 7a160a316..9600fd5eb 100644 --- a/openlp/plugins/__init__.py +++ b/openlp/plugins/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/alerts/__init__.py b/openlp/plugins/alerts/__init__.py index 3a0892d49..062ed82ab 100644 --- a/openlp/plugins/alerts/__init__.py +++ b/openlp/plugins/alerts/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index 979ebb01d..2877b421a 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/alerts/forms/__init__.py b/openlp/plugins/alerts/forms/__init__.py index bb4a9940f..38eadd753 100644 --- a/openlp/plugins/alerts/forms/__init__.py +++ b/openlp/plugins/alerts/forms/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/alerts/forms/alertdialog.py b/openlp/plugins/alerts/forms/alertdialog.py index da788f2bd..02db7b2d4 100644 --- a/openlp/plugins/alerts/forms/alertdialog.py +++ b/openlp/plugins/alerts/forms/alertdialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/alerts/forms/alertform.py b/openlp/plugins/alerts/forms/alertform.py index 6f6311392..58eb2dc52 100644 --- a/openlp/plugins/alerts/forms/alertform.py +++ b/openlp/plugins/alerts/forms/alertform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/alerts/lib/__init__.py b/openlp/plugins/alerts/lib/__init__.py index 39cbbfe59..34f806799 100644 --- a/openlp/plugins/alerts/lib/__init__.py +++ b/openlp/plugins/alerts/lib/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/alerts/lib/alertsmanager.py b/openlp/plugins/alerts/lib/alertsmanager.py index d12fb41ec..76582a722 100644 --- a/openlp/plugins/alerts/lib/alertsmanager.py +++ b/openlp/plugins/alerts/lib/alertsmanager.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/alerts/lib/alertstab.py b/openlp/plugins/alerts/lib/alertstab.py index 8c8778f9f..4616ccaa7 100644 --- a/openlp/plugins/alerts/lib/alertstab.py +++ b/openlp/plugins/alerts/lib/alertstab.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/alerts/lib/db.py b/openlp/plugins/alerts/lib/db.py index 72c671620..dea3f5521 100644 --- a/openlp/plugins/alerts/lib/db.py +++ b/openlp/plugins/alerts/lib/db.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/bibles/__init__.py b/openlp/plugins/bibles/__init__.py index 5a2035e13..2e567ddd1 100644 --- a/openlp/plugins/bibles/__init__.py +++ b/openlp/plugins/bibles/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index f64691ed4..ce73b834a 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/bibles/forms/__init__.py b/openlp/plugins/bibles/forms/__init__.py index e6897e53f..a09e59203 100644 --- a/openlp/plugins/bibles/forms/__init__.py +++ b/openlp/plugins/bibles/forms/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index 75848fc10..28e4fee0d 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/bibles/lib/__init__.py b/openlp/plugins/bibles/lib/__init__.py index e219fbc00..27a269748 100644 --- a/openlp/plugins/bibles/lib/__init__.py +++ b/openlp/plugins/bibles/lib/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/bibles/lib/biblestab.py b/openlp/plugins/bibles/lib/biblestab.py index 33c2c1f9f..2db53a096 100644 --- a/openlp/plugins/bibles/lib/biblestab.py +++ b/openlp/plugins/bibles/lib/biblestab.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # @@ -207,4 +208,4 @@ class BiblesTab(SettingsTab): self.bibleThemeComboBox.addItem(u'') for theme in theme_list: self.bibleThemeComboBox.addItem(theme) - find_and_set_in_combo_box(self.bibleThemeComboBox, self.bible_theme) \ No newline at end of file + find_and_set_in_combo_box(self.bibleThemeComboBox, self.bible_theme) diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index 9ff7394d1..4c1eef86e 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 55b00a56b..d15647d7c 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index d86b650d5..857f9dac8 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index df31b2d0e..d2f04622a 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 9a9e3f9ec..3d45a9c5f 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/bibles/lib/openlp1.py b/openlp/plugins/bibles/lib/openlp1.py index e43417c02..5f31a3e77 100644 --- a/openlp/plugins/bibles/lib/openlp1.py +++ b/openlp/plugins/bibles/lib/openlp1.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index 585ecf9c7..a6fd5bf34 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index a080524eb..542b39629 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/bibles/lib/versereferencelist.py b/openlp/plugins/bibles/lib/versereferencelist.py index bab6d7e11..791761293 100644 --- a/openlp/plugins/bibles/lib/versereferencelist.py +++ b/openlp/plugins/bibles/lib/versereferencelist.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/custom/__init__.py b/openlp/plugins/custom/__init__.py index 5171155d2..c9b908f3c 100644 --- a/openlp/plugins/custom/__init__.py +++ b/openlp/plugins/custom/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py index 8b8a7e6ae..b3d785d67 100644 --- a/openlp/plugins/custom/customplugin.py +++ b/openlp/plugins/custom/customplugin.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/custom/forms/__init__.py b/openlp/plugins/custom/forms/__init__.py index fb3cf975b..755cb7a8d 100644 --- a/openlp/plugins/custom/forms/__init__.py +++ b/openlp/plugins/custom/forms/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/custom/forms/editcustomdialog.py b/openlp/plugins/custom/forms/editcustomdialog.py index 7a6c1f07b..dc2fb2a67 100644 --- a/openlp/plugins/custom/forms/editcustomdialog.py +++ b/openlp/plugins/custom/forms/editcustomdialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # @@ -124,4 +125,4 @@ class Ui_CustomEditDialog(object): translate('CustomPlugin.EditCustomForm', 'The&me:')) self.creditLabel.setText( translate('CustomPlugin.EditCustomForm', '&Credits:')) - self.previewButton.setText(UiStrings().SaveAndPreview) \ No newline at end of file + self.previewButton.setText(UiStrings().SaveAndPreview) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index 1d0e0427d..64147e874 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # @@ -266,4 +267,4 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): message=translate('CustomPlugin.EditCustomForm', 'You need to add at least one slide')) return False - return True \ No newline at end of file + return True diff --git a/openlp/plugins/custom/forms/editcustomslidedialog.py b/openlp/plugins/custom/forms/editcustomslidedialog.py index 7874ed4e2..b3c7ca671 100644 --- a/openlp/plugins/custom/forms/editcustomslidedialog.py +++ b/openlp/plugins/custom/forms/editcustomslidedialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/custom/forms/editcustomslideform.py b/openlp/plugins/custom/forms/editcustomslideform.py index cabd33a4e..c681e9a2a 100644 --- a/openlp/plugins/custom/forms/editcustomslideform.py +++ b/openlp/plugins/custom/forms/editcustomslideform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/custom/lib/__init__.py b/openlp/plugins/custom/lib/__init__.py index 25abdd38b..5d2415f00 100644 --- a/openlp/plugins/custom/lib/__init__.py +++ b/openlp/plugins/custom/lib/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/custom/lib/customtab.py b/openlp/plugins/custom/lib/customtab.py index 9de294418..805b98392 100644 --- a/openlp/plugins/custom/lib/customtab.py +++ b/openlp/plugins/custom/lib/customtab.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/custom/lib/customxmlhandler.py b/openlp/plugins/custom/lib/customxmlhandler.py index 2babe3d12..ce8fc0459 100644 --- a/openlp/plugins/custom/lib/customxmlhandler.py +++ b/openlp/plugins/custom/lib/customxmlhandler.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/custom/lib/db.py b/openlp/plugins/custom/lib/db.py index 35c24413a..1d7af5907 100644 --- a/openlp/plugins/custom/lib/db.py +++ b/openlp/plugins/custom/lib/db.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 189164b59..ff6710554 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/images/__init__.py b/openlp/plugins/images/__init__.py index a375f863f..5280fc896 100644 --- a/openlp/plugins/images/__init__.py +++ b/openlp/plugins/images/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/images/imageplugin.py b/openlp/plugins/images/imageplugin.py index 8d98e809b..fb3c8ad83 100644 --- a/openlp/plugins/images/imageplugin.py +++ b/openlp/plugins/images/imageplugin.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/images/lib/__init__.py b/openlp/plugins/images/lib/__init__.py index 6a9e364f9..977177488 100644 --- a/openlp/plugins/images/lib/__init__.py +++ b/openlp/plugins/images/lib/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 1377feef8..d3982a222 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/media/__init__.py b/openlp/plugins/media/__init__.py index 9271a0936..e7849df3b 100644 --- a/openlp/plugins/media/__init__.py +++ b/openlp/plugins/media/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/media/lib/__init__.py b/openlp/plugins/media/lib/__init__.py index 7f63c8108..60f96216e 100644 --- a/openlp/plugins/media/lib/__init__.py +++ b/openlp/plugins/media/lib/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 9f1d72f73..6d1872630 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/media/lib/mediatab.py b/openlp/plugins/media/lib/mediatab.py index f54aa02fa..12035517c 100644 --- a/openlp/plugins/media/lib/mediatab.py +++ b/openlp/plugins/media/lib/mediatab.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index 82d87455a..dd18c5c09 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/presentations/__init__.py b/openlp/plugins/presentations/__init__.py index bf077953a..d7f2c17e6 100644 --- a/openlp/plugins/presentations/__init__.py +++ b/openlp/plugins/presentations/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/presentations/lib/__init__.py b/openlp/plugins/presentations/lib/__init__.py index b41c2f2f6..00be24a19 100644 --- a/openlp/plugins/presentations/lib/__init__.py +++ b/openlp/plugins/presentations/lib/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index d192f3438..ebcb26429 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index 7660c9099..d50f0dec3 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/presentations/lib/messagelistener.py b/openlp/plugins/presentations/lib/messagelistener.py index 94cd2bfa4..66fc318bc 100644 --- a/openlp/plugins/presentations/lib/messagelistener.py +++ b/openlp/plugins/presentations/lib/messagelistener.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/presentations/lib/powerpointcontroller.py b/openlp/plugins/presentations/lib/powerpointcontroller.py index 12e0d2746..2fc734a4f 100644 --- a/openlp/plugins/presentations/lib/powerpointcontroller.py +++ b/openlp/plugins/presentations/lib/powerpointcontroller.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/presentations/lib/pptviewcontroller.py b/openlp/plugins/presentations/lib/pptviewcontroller.py index 354c33361..91bc0df34 100644 --- a/openlp/plugins/presentations/lib/pptviewcontroller.py +++ b/openlp/plugins/presentations/lib/pptviewcontroller.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # @@ -244,4 +245,4 @@ class PptviewDocument(PresentationDocument): """ Triggers the previous slide on the running presentation """ - self.controller.process.PrevStep(self.pptid) \ No newline at end of file + self.controller.process.PrevStep(self.pptid) diff --git a/openlp/plugins/presentations/lib/pptviewlib/ppttest.py b/openlp/plugins/presentations/lib/pptviewlib/ppttest.py index 337bdb09f..abf5a7640 100644 --- a/openlp/plugins/presentations/lib/pptviewlib/ppttest.py +++ b/openlp/plugins/presentations/lib/pptviewlib/ppttest.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/presentations/lib/presentationcontroller.py b/openlp/plugins/presentations/lib/presentationcontroller.py index 8d48d98a3..dc70f8781 100644 --- a/openlp/plugins/presentations/lib/presentationcontroller.py +++ b/openlp/plugins/presentations/lib/presentationcontroller.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/presentations/lib/presentationtab.py b/openlp/plugins/presentations/lib/presentationtab.py index bba2b469e..b50804c85 100644 --- a/openlp/plugins/presentations/lib/presentationtab.py +++ b/openlp/plugins/presentations/lib/presentationtab.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # @@ -131,4 +132,4 @@ class PresentationTab(SettingsTab): QtCore.QVariant(self.OverrideAppCheckBox.checkState())) changed = True if changed: - Receiver.send_message(u'mediaitem_presentation_rebuild') \ No newline at end of file + Receiver.send_message(u'mediaitem_presentation_rebuild') diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index ec3aff440..e1a3dc3c1 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/remotes/__init__.py b/openlp/plugins/remotes/__init__.py index 6dc3d5cce..43d174a3a 100644 --- a/openlp/plugins/remotes/__init__.py +++ b/openlp/plugins/remotes/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/remotes/html/index.html b/openlp/plugins/remotes/html/index.html index fd7fb3715..6390b9446 100644 --- a/openlp/plugins/remotes/html/index.html +++ b/openlp/plugins/remotes/html/index.html @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # @@ -102,7 +103,7 @@
- +
diff --git a/openlp/plugins/remotes/html/openlp.css b/openlp/plugins/remotes/html/openlp.css index 225079510..af52d69c3 100644 --- a/openlp/plugins/remotes/html/openlp.css +++ b/openlp/plugins/remotes/html/openlp.css @@ -5,7 +5,8 @@ * Portions copyright (c) 2008-2010 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 * + * Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode * + * Woldsund * * ------------------------------------------------------------------------- * * 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 * diff --git a/openlp/plugins/remotes/html/openlp.js b/openlp/plugins/remotes/html/openlp.js index 09312876c..3f7c331b9 100644 --- a/openlp/plugins/remotes/html/openlp.js +++ b/openlp/plugins/remotes/html/openlp.js @@ -5,7 +5,8 @@ * Portions copyright (c) 2008-2010 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 * + * Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode * + * Woldsund * * ------------------------------------------------------------------------- * * 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 * @@ -216,7 +217,7 @@ window.OpenLP = { if (data.results.items.length == 0) { var li = $("
  • ").text('No results'); ul.append(li); - } + } else { $.each(data.results.items, function (idx, value) { var item = $("
  • ").text(value[1]); diff --git a/openlp/plugins/remotes/html/stage.css b/openlp/plugins/remotes/html/stage.css index 73551b92e..f5a8453f4 100644 --- a/openlp/plugins/remotes/html/stage.css +++ b/openlp/plugins/remotes/html/stage.css @@ -5,7 +5,8 @@ * Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael * * Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, Armin Khler, * * Andreas Preikschat, Mattias Pldaru, Christian Richter, Philip Ridout, * - * Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund * + * Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode * + * Woldsund * * ------------------------------------------------------------------------- * * 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 * @@ -20,7 +21,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *****************************************************************************/ - + body { background-color: black; font-family: sans-serif; diff --git a/openlp/plugins/remotes/html/stage.html b/openlp/plugins/remotes/html/stage.html index 9c74cc371..b67f0ccd6 100644 --- a/openlp/plugins/remotes/html/stage.html +++ b/openlp/plugins/remotes/html/stage.html @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael # # Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, Armin Khler, # # Andreas Preikschat, Mattias Pldaru, Christian Richter, Philip Ridout, # -# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/remotes/html/stage.js b/openlp/plugins/remotes/html/stage.js index 8ca041366..344957271 100644 --- a/openlp/plugins/remotes/html/stage.js +++ b/openlp/plugins/remotes/html/stage.js @@ -5,7 +5,8 @@ * Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael * * Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, Armin Khler, * * Andreas Preikschat, Mattias Pldaru, Christian Richter, Philip Ridout, * - * Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund * + * Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode * + * Woldsund * * ------------------------------------------------------------------------- * * 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 * @@ -29,7 +30,7 @@ window.OpenLP = { $("#notes").html(""); for (idx in data.results.items) { idx = parseInt(idx, 10); - if ((data.results.items[idx]["selected"]) && + if ((data.results.items[idx]["selected"]) && (data.results.items.length > idx + 1)) { $("#notes").html(data.results.items[idx]["notes"]); OpenLP.nextSong = data.results.items[idx + 1]["title"]; @@ -59,14 +60,14 @@ window.OpenLP = { // If the tag has changed, add new one to the list lastChange = idx; tags = tags + 1; - div.append(" "); + div.append(" "); $("#verseorder span").last().attr("id", "tag" + tags).text(tag); } else { if ((slide["text"] == data.results.slides[lastChange]["text"]) && (data.results.slides.length > idx + (idx - lastChange))) { // If the tag hasn't changed, check to see if the same verse - // has been repeated consecutively. Note the verse may have been + // has been repeated consecutively. Note the verse may have been // split over several slides, so search through. If so, repeat the tag. var match = true; for (var idx2 = 0; idx2 < idx - lastChange; idx2++) { @@ -78,13 +79,13 @@ window.OpenLP = { if (match) { lastChange = idx; tags = tags + 1; - div.append(" "); + div.append(" "); $("#verseorder span").last().attr("id", "tag" + tags).text(tag); } } } OpenLP.currentTags[idx] = tags; - if (slide["selected"]) + if (slide["selected"]) OpenLP.currentSlide = idx; }) OpenLP.loadService(); @@ -122,9 +123,9 @@ window.OpenLP = { }, updateClock: function() { var div = $("#clock"); - var t = new Date(); + var t = new Date(); var h = t.getHours(); - if (h > 12) + if (h > 12) h = h - 12; var m = t.getMinutes(); if (m < 10) @@ -139,7 +140,7 @@ window.OpenLP = { if (OpenLP.currentItem != data.results.item) { OpenLP.currentItem = data.results.item; OpenLP.loadSlides(); - } + } else if (OpenLP.currentSlide != data.results.slide) { OpenLP.currentSlide = parseInt(data.results.slide, 10); OpenLP.updateSlide(); diff --git a/openlp/plugins/remotes/lib/__init__.py b/openlp/plugins/remotes/lib/__init__.py index c1a170c1b..d1aa8c40f 100644 --- a/openlp/plugins/remotes/lib/__init__.py +++ b/openlp/plugins/remotes/lib/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/remotes/lib/httpserver.py b/openlp/plugins/remotes/lib/httpserver.py index 3436a153c..1ec957405 100644 --- a/openlp/plugins/remotes/lib/httpserver.py +++ b/openlp/plugins/remotes/lib/httpserver.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/remotes/lib/remotetab.py b/openlp/plugins/remotes/lib/remotetab.py index 07f24dbee..05b6a2743 100644 --- a/openlp/plugins/remotes/lib/remotetab.py +++ b/openlp/plugins/remotes/lib/remotetab.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/remotes/remoteplugin.py b/openlp/plugins/remotes/remoteplugin.py index d3b50e36b..3c1841e41 100644 --- a/openlp/plugins/remotes/remoteplugin.py +++ b/openlp/plugins/remotes/remoteplugin.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/__init__.py b/openlp/plugins/songs/__init__.py index 131d1d337..a770f2d22 100644 --- a/openlp/plugins/songs/__init__.py +++ b/openlp/plugins/songs/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/forms/__init__.py b/openlp/plugins/songs/forms/__init__.py index 599735247..b9d6180b5 100644 --- a/openlp/plugins/songs/forms/__init__.py +++ b/openlp/plugins/songs/forms/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/forms/authorsdialog.py b/openlp/plugins/songs/forms/authorsdialog.py index c558c1439..7c83a3f74 100644 --- a/openlp/plugins/songs/forms/authorsdialog.py +++ b/openlp/plugins/songs/forms/authorsdialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/forms/authorsform.py b/openlp/plugins/songs/forms/authorsform.py index ea92077ff..0df0b8fd4 100644 --- a/openlp/plugins/songs/forms/authorsform.py +++ b/openlp/plugins/songs/forms/authorsform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/forms/editsongdialog.py b/openlp/plugins/songs/forms/editsongdialog.py index 749d5184d..2f02a7333 100644 --- a/openlp/plugins/songs/forms/editsongdialog.py +++ b/openlp/plugins/songs/forms/editsongdialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # @@ -313,4 +314,4 @@ def editSongDialogComboBox(parent, name): comboBox.setEditable(True) comboBox.setInsertPolicy(QtGui.QComboBox.NoInsert) comboBox.setObjectName(name) - return comboBox \ No newline at end of file + return comboBox diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 6155145f8..8411aa488 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/forms/editversedialog.py b/openlp/plugins/songs/forms/editversedialog.py index f6b900d8c..be51b1f97 100644 --- a/openlp/plugins/songs/forms/editversedialog.py +++ b/openlp/plugins/songs/forms/editversedialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index a6e1b3534..300c87c32 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/forms/songbookdialog.py b/openlp/plugins/songs/forms/songbookdialog.py index 0bee88908..81d389545 100644 --- a/openlp/plugins/songs/forms/songbookdialog.py +++ b/openlp/plugins/songs/forms/songbookdialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/forms/songbookform.py b/openlp/plugins/songs/forms/songbookform.py index aac3f65ca..fdac26e9b 100644 --- a/openlp/plugins/songs/forms/songbookform.py +++ b/openlp/plugins/songs/forms/songbookform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/forms/songexportform.py b/openlp/plugins/songs/forms/songexportform.py index 8d3272e12..5446a314b 100644 --- a/openlp/plugins/songs/forms/songexportform.py +++ b/openlp/plugins/songs/forms/songexportform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/forms/songimportform.py b/openlp/plugins/songs/forms/songimportform.py index 8c5dbeb8a..61e9fc7c8 100644 --- a/openlp/plugins/songs/forms/songimportform.py +++ b/openlp/plugins/songs/forms/songimportform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/forms/songmaintenancedialog.py b/openlp/plugins/songs/forms/songmaintenancedialog.py index 3d65783ac..3c5bc4c43 100644 --- a/openlp/plugins/songs/forms/songmaintenancedialog.py +++ b/openlp/plugins/songs/forms/songmaintenancedialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # @@ -162,4 +163,4 @@ class Ui_SongMaintenanceDialog(object): self.fontMetrics().width(SongStrings.Topics), self.fontMetrics().width(SongStrings.SongBooks)) self.typeListWidget.setFixedWidth(typeListWidth + - self.typeListWidget.iconSize().width() + 32) \ No newline at end of file + self.typeListWidget.iconSize().width() + 32) diff --git a/openlp/plugins/songs/forms/songmaintenanceform.py b/openlp/plugins/songs/forms/songmaintenanceform.py index c1437ce0e..8ead775ed 100644 --- a/openlp/plugins/songs/forms/songmaintenanceform.py +++ b/openlp/plugins/songs/forms/songmaintenanceform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/forms/topicsdialog.py b/openlp/plugins/songs/forms/topicsdialog.py index 67ae06e9a..f40ddf972 100644 --- a/openlp/plugins/songs/forms/topicsdialog.py +++ b/openlp/plugins/songs/forms/topicsdialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/forms/topicsform.py b/openlp/plugins/songs/forms/topicsform.py index 3263be1d6..d6e17a32e 100644 --- a/openlp/plugins/songs/forms/topicsform.py +++ b/openlp/plugins/songs/forms/topicsform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index d3ad959bd..e81ca26df 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/cclifileimport.py b/openlp/plugins/songs/lib/cclifileimport.py index d304b0241..fe63b3cc6 100644 --- a/openlp/plugins/songs/lib/cclifileimport.py +++ b/openlp/plugins/songs/lib/cclifileimport.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/db.py b/openlp/plugins/songs/lib/db.py index fd6d94d14..404ad2c42 100644 --- a/openlp/plugins/songs/lib/db.py +++ b/openlp/plugins/songs/lib/db.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/easislidesimport.py b/openlp/plugins/songs/lib/easislidesimport.py index 0c710377a..7a370534d 100644 --- a/openlp/plugins/songs/lib/easislidesimport.py +++ b/openlp/plugins/songs/lib/easislidesimport.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/ewimport.py b/openlp/plugins/songs/lib/ewimport.py index 784558c5b..4a3eb9b9d 100644 --- a/openlp/plugins/songs/lib/ewimport.py +++ b/openlp/plugins/songs/lib/ewimport.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/foilpresenterimport.py b/openlp/plugins/songs/lib/foilpresenterimport.py index 8cd328808..017c0f6c5 100644 --- a/openlp/plugins/songs/lib/foilpresenterimport.py +++ b/openlp/plugins/songs/lib/foilpresenterimport.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # @@ -414,7 +415,7 @@ class FoilPresenter(object): temp_sortnr_liste = [] versenumber = { VerseType.Tags[VerseType.Verse]: 1, - VerseType.Tags[VerseType.Chorus]: 1, + VerseType.Tags[VerseType.Chorus]: 1, VerseType.Tags[VerseType.Bridge]: 1, VerseType.Tags[VerseType.Ending]: 1, VerseType.Tags[VerseType.Other]: 1, diff --git a/openlp/plugins/songs/lib/importer.py b/openlp/plugins/songs/lib/importer.py index bad31c0ea..8336d1c69 100644 --- a/openlp/plugins/songs/lib/importer.py +++ b/openlp/plugins/songs/lib/importer.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 78c7825be..aef8d72d2 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/olp1import.py b/openlp/plugins/songs/lib/olp1import.py index 7ba933a8f..bdd967fd9 100644 --- a/openlp/plugins/songs/lib/olp1import.py +++ b/openlp/plugins/songs/lib/olp1import.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/olpimport.py b/openlp/plugins/songs/lib/olpimport.py index a201c1783..4ef24bcff 100644 --- a/openlp/plugins/songs/lib/olpimport.py +++ b/openlp/plugins/songs/lib/olpimport.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/oooimport.py b/openlp/plugins/songs/lib/oooimport.py index d43541bc7..7ce1d3d76 100644 --- a/openlp/plugins/songs/lib/oooimport.py +++ b/openlp/plugins/songs/lib/oooimport.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/openlyricsexport.py b/openlp/plugins/songs/lib/openlyricsexport.py index 59b720d3e..bb22bc2f0 100644 --- a/openlp/plugins/songs/lib/openlyricsexport.py +++ b/openlp/plugins/songs/lib/openlyricsexport.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/openlyricsimport.py b/openlp/plugins/songs/lib/openlyricsimport.py index 4c0e5189a..ab477a19a 100644 --- a/openlp/plugins/songs/lib/openlyricsimport.py +++ b/openlp/plugins/songs/lib/openlyricsimport.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/opensongimport.py b/openlp/plugins/songs/lib/opensongimport.py index 365f20268..26596fc44 100644 --- a/openlp/plugins/songs/lib/opensongimport.py +++ b/openlp/plugins/songs/lib/opensongimport.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/sofimport.py b/openlp/plugins/songs/lib/sofimport.py index 7f9fa16bc..011a67a9b 100644 --- a/openlp/plugins/songs/lib/sofimport.py +++ b/openlp/plugins/songs/lib/sofimport.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/songbeamerimport.py b/openlp/plugins/songs/lib/songbeamerimport.py index 861ec2e99..ef2558b8a 100644 --- a/openlp/plugins/songs/lib/songbeamerimport.py +++ b/openlp/plugins/songs/lib/songbeamerimport.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index 78275d210..e6e916e4c 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/songshowplusimport.py b/openlp/plugins/songs/lib/songshowplusimport.py index ac06d7840..f5af753e8 100644 --- a/openlp/plugins/songs/lib/songshowplusimport.py +++ b/openlp/plugins/songs/lib/songshowplusimport.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/songstab.py b/openlp/plugins/songs/lib/songstab.py index e39c22be7..16c2510b4 100644 --- a/openlp/plugins/songs/lib/songstab.py +++ b/openlp/plugins/songs/lib/songstab.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/test/test_import_file.py b/openlp/plugins/songs/lib/test/test_import_file.py index 6be485210..6ff46e52e 100644 --- a/openlp/plugins/songs/lib/test/test_import_file.py +++ b/openlp/plugins/songs/lib/test/test_import_file.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/test/test_importing_lots.py b/openlp/plugins/songs/lib/test/test_importing_lots.py index 5cd8b3362..1f2b3d0d6 100644 --- a/openlp/plugins/songs/lib/test/test_importing_lots.py +++ b/openlp/plugins/songs/lib/test/test_importing_lots.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/test/test_opensongimport.py b/openlp/plugins/songs/lib/test/test_opensongimport.py index e29b9733c..bead3097b 100644 --- a/openlp/plugins/songs/lib/test/test_opensongimport.py +++ b/openlp/plugins/songs/lib/test/test_opensongimport.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/ui.py b/openlp/plugins/songs/lib/ui.py index 4ed81e5d8..581cbd4a9 100644 --- a/openlp/plugins/songs/lib/ui.py +++ b/openlp/plugins/songs/lib/ui.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/wowimport.py b/openlp/plugins/songs/lib/wowimport.py index 56f461f8b..a12725629 100644 --- a/openlp/plugins/songs/lib/wowimport.py +++ b/openlp/plugins/songs/lib/wowimport.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py index 46a3c9d78..fd7fd5000 100644 --- a/openlp/plugins/songs/lib/xml.py +++ b/openlp/plugins/songs/lib/xml.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 0091406d1..aaa710ae7 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songusage/__init__.py b/openlp/plugins/songusage/__init__.py index 15832d17c..1328e0309 100644 --- a/openlp/plugins/songusage/__init__.py +++ b/openlp/plugins/songusage/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songusage/forms/__init__.py b/openlp/plugins/songusage/forms/__init__.py index 103ce032f..28d9c2ed8 100644 --- a/openlp/plugins/songusage/forms/__init__.py +++ b/openlp/plugins/songusage/forms/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songusage/forms/songusagedeletedialog.py b/openlp/plugins/songusage/forms/songusagedeletedialog.py index 95e877ca3..154d18441 100644 --- a/openlp/plugins/songusage/forms/songusagedeletedialog.py +++ b/openlp/plugins/songusage/forms/songusagedeletedialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songusage/forms/songusagedeleteform.py b/openlp/plugins/songusage/forms/songusagedeleteform.py index 1c7294729..b34110a59 100644 --- a/openlp/plugins/songusage/forms/songusagedeleteform.py +++ b/openlp/plugins/songusage/forms/songusagedeleteform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songusage/forms/songusagedetaildialog.py b/openlp/plugins/songusage/forms/songusagedetaildialog.py index 371c3d6f4..a71bd5f0c 100644 --- a/openlp/plugins/songusage/forms/songusagedetaildialog.py +++ b/openlp/plugins/songusage/forms/songusagedetaildialog.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songusage/forms/songusagedetailform.py b/openlp/plugins/songusage/forms/songusagedetailform.py index 11816d85c..8930563fc 100644 --- a/openlp/plugins/songusage/forms/songusagedetailform.py +++ b/openlp/plugins/songusage/forms/songusagedetailform.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songusage/lib/__init__.py b/openlp/plugins/songusage/lib/__init__.py index 6cb536530..46dbefa8c 100644 --- a/openlp/plugins/songusage/lib/__init__.py +++ b/openlp/plugins/songusage/lib/__init__.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songusage/lib/db.py b/openlp/plugins/songusage/lib/db.py index a3a2c4fc4..6f13988e3 100644 --- a/openlp/plugins/songusage/lib/db.py +++ b/openlp/plugins/songusage/lib/db.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py index 5f21451b6..3671cfcff 100644 --- a/openlp/plugins/songusage/songusageplugin.py +++ b/openlp/plugins/songusage/songusageplugin.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/resources/osx/expander.py b/resources/osx/expander.py index 4319f9178..b4911ff75 100755 --- a/resources/osx/expander.py +++ b/resources/osx/expander.py @@ -9,7 +9,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/resources/osx/get_version.py b/resources/osx/get_version.py index 30ebd7886..7be4678b8 100644 --- a/resources/osx/get_version.py +++ b/resources/osx/get_version.py @@ -1,9 +1,34 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2011 Raoul Snyman # +# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, Armin Köhler, # +# Andreas Preikschat, Mattias Põldaru, Christian Richter, Philip Ridout, # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # +# --------------------------------------------------------------------------- # +# 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 the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### import sys import os from bzrlib.branch import Branch - + def get_version(path): b = Branch.open_containing(path)[0] b.lock_read() @@ -23,13 +48,13 @@ def get_version(path): finally: b.unlock() return result - + def get_path(): if len(sys.argv) > 1: return os.path.abspath(sys.argv[1]) else: return os.path.abspath('.') - + if __name__ == u'__main__': path = get_path() print get_version(path) diff --git a/resources/pyinstaller/hook-openlp.plugins.presentations.presentationplugin.py b/resources/pyinstaller/hook-openlp.plugins.presentations.presentationplugin.py index bf2f0ad07..2dfcb2fa9 100644 --- a/resources/pyinstaller/hook-openlp.plugins.presentations.presentationplugin.py +++ b/resources/pyinstaller/hook-openlp.plugins.presentations.presentationplugin.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/resources/pyinstaller/hook-openlp.py b/resources/pyinstaller/hook-openlp.py index e282f2cf0..f3414cd60 100644 --- a/resources/pyinstaller/hook-openlp.py +++ b/resources/pyinstaller/hook-openlp.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/scripts/generate_resources.sh b/scripts/generate_resources.sh index b363e58b6..cf6f8f2f8 100755 --- a/scripts/generate_resources.sh +++ b/scripts/generate_resources.sh @@ -6,9 +6,10 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 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 # +# Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, Armin Köhler, # +# Andreas Preikschat, Mattias Põldaru, Christian Richter, Philip Ridout, # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/scripts/openlp-remoteclient.py b/scripts/openlp-remoteclient.py index f50a34380..57928919b 100644 --- a/scripts/openlp-remoteclient.py +++ b/scripts/openlp-remoteclient.py @@ -9,7 +9,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/scripts/resources.patch b/scripts/resources.patch index 8a1b6fefd..3697a705a 100644 --- a/scripts/resources.patch +++ b/scripts/resources.patch @@ -1,6 +1,6 @@ --- openlp/core/resources.py.old Mon Jun 21 23:16:19 2010 +++ openlp/core/resources.py Mon Jun 21 23:27:48 2010 -@@ -1,10 +1,32 @@ +@@ -1,10 +1,33 @@ # -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 @@ -16,7 +16,8 @@ +# Portions copyright (c) 2008-2011 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 # ++# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # ++# Woldsund # +# --------------------------------------------------------------------------- # +# 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 # diff --git a/scripts/translation_utils.py b/scripts/translation_utils.py index e10448c82..8fa8aa5d5 100755 --- a/scripts/translation_utils.py +++ b/scripts/translation_utils.py @@ -9,7 +9,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/scripts/windows-builder.py b/scripts/windows-builder.py index 8f2dc0171..765d23c83 100644 --- a/scripts/windows-builder.py +++ b/scripts/windows-builder.py @@ -8,7 +8,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # diff --git a/setup.py b/setup.py index dfe907efd..6a64685be 100755 --- a/setup.py +++ b/setup.py @@ -9,7 +9,8 @@ # Portions copyright (c) 2008-2011 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 # +# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # +# Woldsund # # --------------------------------------------------------------------------- # # 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 # From b92b733828595284fc61529ff9d076d10381e50e Mon Sep 17 00:00:00 2001 From: Josh Miller Date: Tue, 24 May 2011 18:32:30 -0400 Subject: [PATCH 060/190] corrections and enable slide loop updates --- openlp.pyw | 1 - openlp/core/ui/generaltab.py | 780 +++++----- openlp/core/ui/slidecontroller.py | 2314 +++++++++++++++-------------- 3 files changed, 1548 insertions(+), 1547 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index f3b380c7a..76d334bae 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -257,4 +257,3 @@ if __name__ == u'__main__': Instantiate and run the application. """ main() - diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index 8c9336656..95e8dda4e 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -1,390 +1,390 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 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 # -# --------------------------------------------------------------------------- # -# 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 the GNU General Public License for # -# more details. # -# # -# You should have received a copy of the GNU General Public License along # -# with this program; if not, write to the Free Software Foundation, Inc., 59 # -# Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### -import logging - -from PyQt4 import QtCore, QtGui - -from openlp.core.lib import SettingsTab, Receiver, translate -from openlp.core.lib.ui import UiStrings -from openlp.core.ui import ScreenList - -log = logging.getLogger(__name__) - -class GeneralTab(SettingsTab): - """ - GeneralTab is the general settings tab in the settings dialog. - """ - def __init__(self, parent): - """ - Initialise the general settings tab - """ - self.screens = ScreenList.get_instance() - self.icon_path = u':/icon/openlp-logo-16x16.png' - generalTranslated = translate('GeneralTab', 'General') - SettingsTab.__init__(self, parent, u'General', generalTranslated) - - def setupUi(self): - """ - Create the user interface for the general settings tab - """ - self.setObjectName(u'GeneralTab') - SettingsTab.setupUi(self) - self.monitorGroupBox = QtGui.QGroupBox(self.leftColumn) - self.monitorGroupBox.setObjectName(u'monitorGroupBox') - self.monitorLayout = QtGui.QFormLayout(self.monitorGroupBox) - self.monitorLayout.setObjectName(u'monitorLayout') - self.monitorLabel = QtGui.QLabel(self.monitorGroupBox) - self.monitorLabel.setObjectName(u'monitorLabel') - self.monitorLayout.addRow(self.monitorLabel) - self.monitorComboBox = QtGui.QComboBox(self.monitorGroupBox) - self.monitorComboBox.setObjectName(u'monitorComboBox') - self.monitorLayout.addRow(self.monitorComboBox) - self.displayOnMonitorCheck = QtGui.QCheckBox(self.monitorGroupBox) - self.displayOnMonitorCheck.setObjectName(u'monitorComboBox') - self.monitorLayout.addRow(self.displayOnMonitorCheck) - self.leftLayout.addWidget(self.monitorGroupBox) - self.startupGroupBox = QtGui.QGroupBox(self.leftColumn) - self.startupGroupBox.setObjectName(u'startupGroupBox') - self.startupLayout = QtGui.QVBoxLayout(self.startupGroupBox) - self.startupLayout.setObjectName(u'startupLayout') - self.warningCheckBox = QtGui.QCheckBox(self.startupGroupBox) - self.warningCheckBox.setObjectName(u'warningCheckBox') - self.startupLayout.addWidget(self.warningCheckBox) - self.autoOpenCheckBox = QtGui.QCheckBox(self.startupGroupBox) - self.autoOpenCheckBox.setObjectName(u'autoOpenCheckBox') - self.startupLayout.addWidget(self.autoOpenCheckBox) - self.showSplashCheckBox = QtGui.QCheckBox(self.startupGroupBox) - self.showSplashCheckBox.setObjectName(u'showSplashCheckBox') - self.startupLayout.addWidget(self.showSplashCheckBox) - self.checkForUpdatesCheckBox = QtGui.QCheckBox(self.startupGroupBox) - self.checkForUpdatesCheckBox.setObjectName(u'checkForUpdatesCheckBox') - self.startupLayout.addWidget(self.checkForUpdatesCheckBox) - self.leftLayout.addWidget(self.startupGroupBox) - self.settingsGroupBox = QtGui.QGroupBox(self.leftColumn) - self.settingsGroupBox.setObjectName(u'settingsGroupBox') - self.settingsLayout = QtGui.QFormLayout(self.settingsGroupBox) - self.settingsLayout.setObjectName(u'settingsLayout') - self.saveCheckServiceCheckBox = QtGui.QCheckBox(self.settingsGroupBox) - self.saveCheckServiceCheckBox.setObjectName(u'saveCheckServiceCheckBox') - self.settingsLayout.addRow(self.saveCheckServiceCheckBox) - self.autoUnblankCheckBox = QtGui.QCheckBox(self.settingsGroupBox) - self.autoUnblankCheckBox.setObjectName(u'autoUnblankCheckBox') - self.settingsLayout.addRow(self.autoUnblankCheckBox) - self.autoPreviewCheckBox = QtGui.QCheckBox(self.settingsGroupBox) - self.autoPreviewCheckBox.setObjectName(u'autoPreviewCheckBox') - self.settingsLayout.addRow(self.autoPreviewCheckBox) - self.enableLoopCheckbox = QtGui.QCheckBox(self.settingsGroupBox) - self.enableLoopCheckbox.setObjectName(u'enableLoopCheckbox') - self.settingsLayout.addRow(self.enableLoopCheckbox) - # Moved here from image tab - self.timeoutLabel = QtGui.QLabel(self.settingsGroupBox) - self.timeoutLabel.setObjectName(u'timeoutLabel') - self.timeoutSpinBox = QtGui.QSpinBox(self.settingsGroupBox) - self.timeoutSpinBox.setObjectName(u'timeoutSpinBox') - self.timeoutSpinBox.setRange(1, 180) - self.settingsLayout.addRow(self.timeoutLabel, self.timeoutSpinBox) - self.leftLayout.addWidget(self.settingsGroupBox) - self.leftLayout.addStretch() - self.ccliGroupBox = QtGui.QGroupBox(self.rightColumn) - self.ccliGroupBox.setObjectName(u'ccliGroupBox') - self.ccliLayout = QtGui.QFormLayout(self.ccliGroupBox) - self.ccliLayout.setObjectName(u'ccliLayout') - self.numberLabel = QtGui.QLabel(self.ccliGroupBox) - self.numberLabel.setObjectName(u'numberLabel') - self.numberEdit = QtGui.QLineEdit(self.ccliGroupBox) - self.numberEdit.setValidator(QtGui.QIntValidator()) - self.numberEdit.setObjectName(u'numberEdit') - self.ccliLayout.addRow(self.numberLabel, self.numberEdit) - self.usernameLabel = QtGui.QLabel(self.ccliGroupBox) - self.usernameLabel.setObjectName(u'usernameLabel') - self.usernameEdit = QtGui.QLineEdit(self.ccliGroupBox) - self.usernameEdit.setObjectName(u'usernameEdit') - self.ccliLayout.addRow(self.usernameLabel, self.usernameEdit) - self.passwordLabel = QtGui.QLabel(self.ccliGroupBox) - self.passwordLabel.setObjectName(u'passwordLabel') - self.passwordEdit = QtGui.QLineEdit(self.ccliGroupBox) - self.passwordEdit.setEchoMode(QtGui.QLineEdit.Password) - self.passwordEdit.setObjectName(u'passwordEdit') - self.ccliLayout.addRow(self.passwordLabel, self.passwordEdit) - self.rightLayout.addWidget(self.ccliGroupBox) - # Moved here from display tab - self.displayGroupBox = QtGui.QGroupBox(self.rightColumn) - self.displayGroupBox.setObjectName(u'displayGroupBox') - self.displayLayout = QtGui.QGridLayout(self.displayGroupBox) - self.displayLayout.setObjectName(u'displayLayout') - self.overrideCheckBox = QtGui.QCheckBox(self.displayGroupBox) - self.overrideCheckBox.setObjectName(u'overrideCheckBox') - self.displayLayout.addWidget(self.overrideCheckBox, 2, 0, 1, 4) - self.rightLayout.addWidget(self.displayGroupBox) - # Custom position - self.customXLabel = QtGui.QLabel(self.displayGroupBox) - self.customXLabel.setObjectName(u'customXLabel') - self.displayLayout.addWidget(self.customXLabel, 3, 0) - self.customXValueEdit = QtGui.QSpinBox(self.displayGroupBox) - self.customXValueEdit.setObjectName(u'customXValueEdit') - self.customXValueEdit.setRange(-9999, 9999) - self.displayLayout.addWidget(self.customXValueEdit, 4, 0) - self.customYLabel = QtGui.QLabel(self.displayGroupBox) - self.customYLabel.setObjectName(u'customYLabel') - self.displayLayout.addWidget(self.customYLabel, 3, 1) - self.customYValueEdit = QtGui.QSpinBox(self.displayGroupBox) - self.customYValueEdit.setObjectName(u'customYValueEdit') - self.customYValueEdit.setRange(-9999, 9999) - self.displayLayout.addWidget(self.customYValueEdit, 4, 1) - self.customWidthLabel = QtGui.QLabel(self.displayGroupBox) - self.customWidthLabel.setObjectName(u'customWidthLabel') - self.displayLayout.addWidget(self.customWidthLabel, 3, 2) - self.customWidthValueEdit = QtGui.QSpinBox(self.displayGroupBox) - self.customWidthValueEdit.setObjectName(u'customWidthValueEdit') - self.customWidthValueEdit.setMaximum(9999) - self.displayLayout.addWidget(self.customWidthValueEdit, 4, 2) - self.customHeightLabel = QtGui.QLabel(self.displayGroupBox) - self.customHeightLabel.setObjectName(u'customHeightLabel') - self.displayLayout.addWidget(self.customHeightLabel, 3, 3) - self.customHeightValueEdit = QtGui.QSpinBox(self.displayGroupBox) - self.customHeightValueEdit.setObjectName(u'customHeightValueEdit') - self.customHeightValueEdit.setMaximum(9999) - self.displayLayout.addWidget(self.customHeightValueEdit, 4, 3) - self.rightLayout.addWidget(self.displayGroupBox) - self.rightLayout.addStretch() - # Signals and slots - QtCore.QObject.connect(self.overrideCheckBox, - QtCore.SIGNAL(u'toggled(bool)'), self.onOverrideCheckBoxToggled) - QtCore.QObject.connect(self.customHeightValueEdit, - QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged) - QtCore.QObject.connect(self.customWidthValueEdit, - QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged) - QtCore.QObject.connect(self.customYValueEdit, - QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged) - QtCore.QObject.connect(self.customXValueEdit, - QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged) - QtCore.QObject.connect(self.monitorComboBox, - QtCore.SIGNAL(u'currentIndexChanged(int)'), self.onDisplayChanged) - # 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) - # Remove for now - self.usernameLabel.setVisible(False) - self.usernameEdit.setVisible(False) - self.passwordLabel.setVisible(False) - self.passwordEdit.setVisible(False) - - def retranslateUi(self): - """ - Translate the general settings tab to the currently selected language - """ - self.tabTitleVisible = translate('OpenLP.GeneralTab', 'General') - self.monitorGroupBox.setTitle(translate('OpenLP.GeneralTab', - 'Monitors')) - self.monitorLabel.setText(translate('OpenLP.GeneralTab', - 'Select monitor for output display:')) - self.displayOnMonitorCheck.setText( - translate('OpenLP.GeneralTab', 'Display if a single screen')) - self.startupGroupBox.setTitle( - translate('OpenLP.GeneralTab', 'Application Startup')) - self.warningCheckBox.setText( - translate('OpenLP.GeneralTab', 'Show blank screen warning')) - self.autoOpenCheckBox.setText(translate('OpenLP.GeneralTab', - 'Automatically open the last service')) - self.showSplashCheckBox.setText( - translate('OpenLP.GeneralTab', 'Show the splash screen')) - self.checkForUpdatesCheckBox.setText( - translate('OpenLP.GeneralTab', 'Check for updates to OpenLP')) - self.settingsGroupBox.setTitle( - translate('OpenLP.GeneralTab', 'Application Settings')) - self.saveCheckServiceCheckBox.setText(translate('OpenLP.GeneralTab', - 'Prompt to save before starting a new service')) - self.autoUnblankCheckBox.setText(translate('OpenLP.GeneralTab', - 'Unblank display when adding new live item')) - self.autoPreviewCheckBox.setText(translate('OpenLP.GeneralTab', - 'Automatically preview next item in service')) - self.enableLoopCheckbox.setText(translate('OpenLP.GeneralTab', - 'enable slide loop')) - self.timeoutLabel.setText(translate('OpenLP.GeneralTab', - 'Slide loop delay:')) - self.timeoutSpinBox.setSuffix(translate('OpenLP.GeneralTab', ' sec')) - self.ccliGroupBox.setTitle( - translate('OpenLP.GeneralTab', 'CCLI Details')) - self.numberLabel.setText(UiStrings().CCLINumberLabel) - self.usernameLabel.setText( - translate('OpenLP.GeneralTab', 'SongSelect username:')) - self.passwordLabel.setText( - translate('OpenLP.GeneralTab', 'SongSelect password:')) - # Moved from display tab - self.displayGroupBox.setTitle( - translate('OpenLP.GeneralTab', 'Display Position')) - self.overrideCheckBox.setText(translate('OpenLP.GeneralTab', - 'Override display position')) - self.customXLabel.setText(translate('OpenLP.GeneralTab', 'X')) - self.customYLabel.setText(translate('OpenLP.GeneralTab', 'Y')) - self.customHeightLabel.setText(translate('OpenLP.GeneralTab', 'Height')) - self.customWidthLabel.setText(translate('OpenLP.GeneralTab', 'Width')) - - def load(self): - """ - Load the settings to populate the form - """ - settings = QtCore.QSettings() - settings.beginGroup(self.settingsSection) - self.monitorComboBox.clear() - self.monitorComboBox.addItems(self.screens.get_screen_list()) - monitorNumber = settings.value(u'monitor', - QtCore.QVariant(self.screens.display_count - 1)).toInt()[0] - self.monitorComboBox.setCurrentIndex(monitorNumber) - self.numberEdit.setText(unicode(settings.value( - u'ccli number', QtCore.QVariant(u'')).toString())) - self.usernameEdit.setText(unicode(settings.value( - u'songselect username', QtCore.QVariant(u'')).toString())) - self.passwordEdit.setText(unicode(settings.value( - u'songselect password', QtCore.QVariant(u'')).toString())) - self.saveCheckServiceCheckBox.setChecked(settings.value(u'save prompt', - QtCore.QVariant(False)).toBool()) - self.autoUnblankCheckBox.setChecked(settings.value(u'auto unblank', - QtCore.QVariant(False)).toBool()) - self.displayOnMonitorCheck.setChecked(self.screens.display) - self.warningCheckBox.setChecked(settings.value(u'blank warning', - QtCore.QVariant(False)).toBool()) - self.autoOpenCheckBox.setChecked(settings.value(u'auto open', - QtCore.QVariant(False)).toBool()) - self.showSplashCheckBox.setChecked(settings.value(u'show splash', - QtCore.QVariant(True)).toBool()) - self.checkForUpdatesCheckBox.setChecked(settings.value(u'update check', - QtCore.QVariant(False)).toBool()) - self.autoPreviewCheckBox.setChecked(settings.value(u'auto preview', - QtCore.QVariant(False)).toBool()) - self.enableLoopCheckbox.setChecked(settings.value(u'enable slide loop', - QtCore.QVariant(True)).toBool()) - self.timeoutSpinBox.setValue(settings.value(u'loop delay', - QtCore.QVariant(5)).toInt()[0]) - self.overrideCheckBox.setChecked(settings.value(u'override position', - QtCore.QVariant(False)).toBool()) - self.customXValueEdit.setValue(settings.value(u'x position', - QtCore.QVariant(self.screens.current[u'size'].x())).toInt()[0]) - self.customYValueEdit.setValue(settings.value(u'y position', - QtCore.QVariant(self.screens.current[u'size'].y())).toInt()[0]) - self.customHeightValueEdit.setValue(settings.value(u'height', - QtCore.QVariant(self.screens.current[u'size'].height())).toInt()[0]) - self.customWidthValueEdit.setValue(settings.value(u'width', - QtCore.QVariant(self.screens.current[u'size'].width())).toInt()[0]) - settings.endGroup() - self.customXValueEdit.setEnabled(self.overrideCheckBox.isChecked()) - self.customYValueEdit.setEnabled(self.overrideCheckBox.isChecked()) - self.customHeightValueEdit.setEnabled(self.overrideCheckBox.isChecked()) - self.customWidthValueEdit.setEnabled(self.overrideCheckBox.isChecked()) - self.display_changed = False - - def save(self): - """ - Save the settings from the form - """ - settings = QtCore.QSettings() - settings.beginGroup(self.settingsSection) - settings.setValue(u'monitor', - QtCore.QVariant(self.monitorComboBox.currentIndex())) - settings.setValue(u'display on monitor', - QtCore.QVariant(self.displayOnMonitorCheck.isChecked())) - settings.setValue(u'blank warning', - QtCore.QVariant(self.warningCheckBox.isChecked())) - settings.setValue(u'auto open', - QtCore.QVariant(self.autoOpenCheckBox.isChecked())) - settings.setValue(u'show splash', - QtCore.QVariant(self.showSplashCheckBox.isChecked())) - settings.setValue(u'update check', - QtCore.QVariant(self.checkForUpdatesCheckBox.isChecked())) - settings.setValue(u'save prompt', - QtCore.QVariant(self.saveCheckServiceCheckBox.isChecked())) - settings.setValue(u'auto unblank', - QtCore.QVariant(self.autoUnblankCheckBox.isChecked())) - settings.setValue(u'auto preview', - QtCore.QVariant(self.autoPreviewCheckBox.isChecked())) - settings.setValue(u'enable slide loop', - QtCore.QVariant(self.enableLoopCheckbox.isChecked())) - settings.setValue(u'loop delay', - QtCore.QVariant(self.timeoutSpinBox.value())) - settings.setValue(u'ccli number', - QtCore.QVariant(self.numberEdit.displayText())) - settings.setValue(u'songselect username', - QtCore.QVariant(self.usernameEdit.displayText())) - settings.setValue(u'songselect password', - QtCore.QVariant(self.passwordEdit.displayText())) - settings.setValue(u'x position', - QtCore.QVariant(self.customXValueEdit.value())) - settings.setValue(u'y position', - QtCore.QVariant(self.customYValueEdit.value())) - settings.setValue(u'height', - QtCore.QVariant(self.customHeightValueEdit.value())) - settings.setValue(u'width', - QtCore.QVariant(self.customWidthValueEdit.value())) - settings.setValue(u'override position', - QtCore.QVariant(self.overrideCheckBox.isChecked())) - settings.endGroup() - # On save update the screens as well - self.postSetUp(True) - - def postSetUp(self, postUpdate=False): - """ - Apply settings after settings tab has loaded and most of the - system so must be delayed - """ - Receiver.send_message(u'slidecontroller_live_spin_delay', - self.timeoutSpinBox.value()) - # Do not continue on start up. - if not postUpdate: - return - self.screens.set_current_display(self.monitorComboBox.currentIndex()) - self.screens.display = self.displayOnMonitorCheck.isChecked() - self.screens.override[u'size'] = QtCore.QRect( - self.customXValueEdit.value(), - self.customYValueEdit.value(), - self.customWidthValueEdit.value(), - self.customHeightValueEdit.value()) - if self.overrideCheckBox.isChecked(): - self.screens.set_override_display() - else: - self.screens.reset_current_display() - if self.display_changed: - Receiver.send_message(u'config_screen_changed') - self.display_changed = False - - def onOverrideCheckBoxToggled(self, checked): - """ - Toggle screen state depending on check box state. - - ``checked`` - The state of the check box (boolean). - """ - self.customXValueEdit.setEnabled(checked) - self.customYValueEdit.setEnabled(checked) - self.customHeightValueEdit.setEnabled(checked) - self.customWidthValueEdit.setEnabled(checked) - self.display_changed = True - - def onDisplayChanged(self): - """ - Called when the width, height, x position or y position has changed. - """ - self.display_changed = True - +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2011 Raoul Snyman # +# Portions copyright (c) 2008-2011 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 # +# --------------------------------------------------------------------------- # +# 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 the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### +import logging + +from PyQt4 import QtCore, QtGui + +from openlp.core.lib import SettingsTab, Receiver, translate +from openlp.core.lib.ui import UiStrings +from openlp.core.ui import ScreenList + +log = logging.getLogger(__name__) + +class GeneralTab(SettingsTab): + """ + GeneralTab is the general settings tab in the settings dialog. + """ + def __init__(self, parent): + """ + Initialise the general settings tab + """ + self.screens = ScreenList.get_instance() + self.icon_path = u':/icon/openlp-logo-16x16.png' + generalTranslated = translate('GeneralTab', 'General') + SettingsTab.__init__(self, parent, u'General', generalTranslated) + + def setupUi(self): + """ + Create the user interface for the general settings tab + """ + self.setObjectName(u'GeneralTab') + SettingsTab.setupUi(self) + self.monitorGroupBox = QtGui.QGroupBox(self.leftColumn) + self.monitorGroupBox.setObjectName(u'monitorGroupBox') + self.monitorLayout = QtGui.QFormLayout(self.monitorGroupBox) + self.monitorLayout.setObjectName(u'monitorLayout') + self.monitorLabel = QtGui.QLabel(self.monitorGroupBox) + self.monitorLabel.setObjectName(u'monitorLabel') + self.monitorLayout.addRow(self.monitorLabel) + self.monitorComboBox = QtGui.QComboBox(self.monitorGroupBox) + self.monitorComboBox.setObjectName(u'monitorComboBox') + self.monitorLayout.addRow(self.monitorComboBox) + self.displayOnMonitorCheck = QtGui.QCheckBox(self.monitorGroupBox) + self.displayOnMonitorCheck.setObjectName(u'monitorComboBox') + self.monitorLayout.addRow(self.displayOnMonitorCheck) + self.leftLayout.addWidget(self.monitorGroupBox) + self.startupGroupBox = QtGui.QGroupBox(self.leftColumn) + self.startupGroupBox.setObjectName(u'startupGroupBox') + self.startupLayout = QtGui.QVBoxLayout(self.startupGroupBox) + self.startupLayout.setObjectName(u'startupLayout') + self.warningCheckBox = QtGui.QCheckBox(self.startupGroupBox) + self.warningCheckBox.setObjectName(u'warningCheckBox') + self.startupLayout.addWidget(self.warningCheckBox) + self.autoOpenCheckBox = QtGui.QCheckBox(self.startupGroupBox) + self.autoOpenCheckBox.setObjectName(u'autoOpenCheckBox') + self.startupLayout.addWidget(self.autoOpenCheckBox) + self.showSplashCheckBox = QtGui.QCheckBox(self.startupGroupBox) + self.showSplashCheckBox.setObjectName(u'showSplashCheckBox') + self.startupLayout.addWidget(self.showSplashCheckBox) + self.checkForUpdatesCheckBox = QtGui.QCheckBox(self.startupGroupBox) + self.checkForUpdatesCheckBox.setObjectName(u'checkForUpdatesCheckBox') + self.startupLayout.addWidget(self.checkForUpdatesCheckBox) + self.leftLayout.addWidget(self.startupGroupBox) + self.settingsGroupBox = QtGui.QGroupBox(self.leftColumn) + self.settingsGroupBox.setObjectName(u'settingsGroupBox') + self.settingsLayout = QtGui.QFormLayout(self.settingsGroupBox) + self.settingsLayout.setObjectName(u'settingsLayout') + self.saveCheckServiceCheckBox = QtGui.QCheckBox(self.settingsGroupBox) + self.saveCheckServiceCheckBox.setObjectName(u'saveCheckServiceCheckBox') + self.settingsLayout.addRow(self.saveCheckServiceCheckBox) + self.autoUnblankCheckBox = QtGui.QCheckBox(self.settingsGroupBox) + self.autoUnblankCheckBox.setObjectName(u'autoUnblankCheckBox') + self.settingsLayout.addRow(self.autoUnblankCheckBox) + self.autoPreviewCheckBox = QtGui.QCheckBox(self.settingsGroupBox) + self.autoPreviewCheckBox.setObjectName(u'autoPreviewCheckBox') + self.settingsLayout.addRow(self.autoPreviewCheckBox) + self.enableLoopCheckBox = QtGui.QCheckBox(self.settingsGroupBox) + self.enableLoopCheckBox.setObjectName(u'enableLoopCheckBox') + self.settingsLayout.addRow(self.enableLoopCheckBox) + # Moved here from image tab + self.timeoutLabel = QtGui.QLabel(self.settingsGroupBox) + self.timeoutLabel.setObjectName(u'timeoutLabel') + self.timeoutSpinBox = QtGui.QSpinBox(self.settingsGroupBox) + self.timeoutSpinBox.setObjectName(u'timeoutSpinBox') + self.timeoutSpinBox.setRange(1, 180) + self.settingsLayout.addRow(self.timeoutLabel, self.timeoutSpinBox) + self.leftLayout.addWidget(self.settingsGroupBox) + self.leftLayout.addStretch() + self.ccliGroupBox = QtGui.QGroupBox(self.rightColumn) + self.ccliGroupBox.setObjectName(u'ccliGroupBox') + self.ccliLayout = QtGui.QFormLayout(self.ccliGroupBox) + self.ccliLayout.setObjectName(u'ccliLayout') + self.numberLabel = QtGui.QLabel(self.ccliGroupBox) + self.numberLabel.setObjectName(u'numberLabel') + self.numberEdit = QtGui.QLineEdit(self.ccliGroupBox) + self.numberEdit.setValidator(QtGui.QIntValidator()) + self.numberEdit.setObjectName(u'numberEdit') + self.ccliLayout.addRow(self.numberLabel, self.numberEdit) + self.usernameLabel = QtGui.QLabel(self.ccliGroupBox) + self.usernameLabel.setObjectName(u'usernameLabel') + self.usernameEdit = QtGui.QLineEdit(self.ccliGroupBox) + self.usernameEdit.setObjectName(u'usernameEdit') + self.ccliLayout.addRow(self.usernameLabel, self.usernameEdit) + self.passwordLabel = QtGui.QLabel(self.ccliGroupBox) + self.passwordLabel.setObjectName(u'passwordLabel') + self.passwordEdit = QtGui.QLineEdit(self.ccliGroupBox) + self.passwordEdit.setEchoMode(QtGui.QLineEdit.Password) + self.passwordEdit.setObjectName(u'passwordEdit') + self.ccliLayout.addRow(self.passwordLabel, self.passwordEdit) + self.rightLayout.addWidget(self.ccliGroupBox) + # Moved here from display tab + self.displayGroupBox = QtGui.QGroupBox(self.rightColumn) + self.displayGroupBox.setObjectName(u'displayGroupBox') + self.displayLayout = QtGui.QGridLayout(self.displayGroupBox) + self.displayLayout.setObjectName(u'displayLayout') + self.overrideCheckBox = QtGui.QCheckBox(self.displayGroupBox) + self.overrideCheckBox.setObjectName(u'overrideCheckBox') + self.displayLayout.addWidget(self.overrideCheckBox, 2, 0, 1, 4) + self.rightLayout.addWidget(self.displayGroupBox) + # Custom position + self.customXLabel = QtGui.QLabel(self.displayGroupBox) + self.customXLabel.setObjectName(u'customXLabel') + self.displayLayout.addWidget(self.customXLabel, 3, 0) + self.customXValueEdit = QtGui.QSpinBox(self.displayGroupBox) + self.customXValueEdit.setObjectName(u'customXValueEdit') + self.customXValueEdit.setRange(-9999, 9999) + self.displayLayout.addWidget(self.customXValueEdit, 4, 0) + self.customYLabel = QtGui.QLabel(self.displayGroupBox) + self.customYLabel.setObjectName(u'customYLabel') + self.displayLayout.addWidget(self.customYLabel, 3, 1) + self.customYValueEdit = QtGui.QSpinBox(self.displayGroupBox) + self.customYValueEdit.setObjectName(u'customYValueEdit') + self.customYValueEdit.setRange(-9999, 9999) + self.displayLayout.addWidget(self.customYValueEdit, 4, 1) + self.customWidthLabel = QtGui.QLabel(self.displayGroupBox) + self.customWidthLabel.setObjectName(u'customWidthLabel') + self.displayLayout.addWidget(self.customWidthLabel, 3, 2) + self.customWidthValueEdit = QtGui.QSpinBox(self.displayGroupBox) + self.customWidthValueEdit.setObjectName(u'customWidthValueEdit') + self.customWidthValueEdit.setMaximum(9999) + self.displayLayout.addWidget(self.customWidthValueEdit, 4, 2) + self.customHeightLabel = QtGui.QLabel(self.displayGroupBox) + self.customHeightLabel.setObjectName(u'customHeightLabel') + self.displayLayout.addWidget(self.customHeightLabel, 3, 3) + self.customHeightValueEdit = QtGui.QSpinBox(self.displayGroupBox) + self.customHeightValueEdit.setObjectName(u'customHeightValueEdit') + self.customHeightValueEdit.setMaximum(9999) + self.displayLayout.addWidget(self.customHeightValueEdit, 4, 3) + self.rightLayout.addWidget(self.displayGroupBox) + self.rightLayout.addStretch() + # Signals and slots + QtCore.QObject.connect(self.overrideCheckBox, + QtCore.SIGNAL(u'toggled(bool)'), self.onOverrideCheckBoxToggled) + QtCore.QObject.connect(self.customHeightValueEdit, + QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged) + QtCore.QObject.connect(self.customWidthValueEdit, + QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged) + QtCore.QObject.connect(self.customYValueEdit, + QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged) + QtCore.QObject.connect(self.customXValueEdit, + QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged) + QtCore.QObject.connect(self.monitorComboBox, + QtCore.SIGNAL(u'currentIndexChanged(int)'), self.onDisplayChanged) + # 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) + # Remove for now + self.usernameLabel.setVisible(False) + self.usernameEdit.setVisible(False) + self.passwordLabel.setVisible(False) + self.passwordEdit.setVisible(False) + + def retranslateUi(self): + """ + Translate the general settings tab to the currently selected language + """ + self.tabTitleVisible = translate('OpenLP.GeneralTab', 'General') + self.monitorGroupBox.setTitle(translate('OpenLP.GeneralTab', + 'Monitors')) + self.monitorLabel.setText(translate('OpenLP.GeneralTab', + 'Select monitor for output display:')) + self.displayOnMonitorCheck.setText( + translate('OpenLP.GeneralTab', 'Display if a single screen')) + self.startupGroupBox.setTitle( + translate('OpenLP.GeneralTab', 'Application Startup')) + self.warningCheckBox.setText( + translate('OpenLP.GeneralTab', 'Show blank screen warning')) + self.autoOpenCheckBox.setText(translate('OpenLP.GeneralTab', + 'Automatically open the last service')) + self.showSplashCheckBox.setText( + translate('OpenLP.GeneralTab', 'Show the splash screen')) + self.checkForUpdatesCheckBox.setText( + translate('OpenLP.GeneralTab', 'Check for updates to OpenLP')) + self.settingsGroupBox.setTitle( + translate('OpenLP.GeneralTab', 'Application Settings')) + self.saveCheckServiceCheckBox.setText(translate('OpenLP.GeneralTab', + 'Prompt to save before starting a new service')) + self.autoUnblankCheckBox.setText(translate('OpenLP.GeneralTab', + 'Unblank display when adding new live item')) + self.autoPreviewCheckBox.setText(translate('OpenLP.GeneralTab', + 'Automatically preview next item in service')) + self.enableLoopCheckBox.setText(translate('OpenLP.GeneralTab', + 'Enable slide loop')) + self.timeoutLabel.setText(translate('OpenLP.GeneralTab', + 'Slide loop delay:')) + self.timeoutSpinBox.setSuffix(translate('OpenLP.GeneralTab', ' sec')) + self.ccliGroupBox.setTitle( + translate('OpenLP.GeneralTab', 'CCLI Details')) + self.numberLabel.setText(UiStrings().CCLINumberLabel) + self.usernameLabel.setText( + translate('OpenLP.GeneralTab', 'SongSelect username:')) + self.passwordLabel.setText( + translate('OpenLP.GeneralTab', 'SongSelect password:')) + # Moved from display tab + self.displayGroupBox.setTitle( + translate('OpenLP.GeneralTab', 'Display Position')) + self.overrideCheckBox.setText(translate('OpenLP.GeneralTab', + 'Override display position')) + self.customXLabel.setText(translate('OpenLP.GeneralTab', 'X')) + self.customYLabel.setText(translate('OpenLP.GeneralTab', 'Y')) + self.customHeightLabel.setText(translate('OpenLP.GeneralTab', 'Height')) + self.customWidthLabel.setText(translate('OpenLP.GeneralTab', 'Width')) + + def load(self): + """ + Load the settings to populate the form + """ + settings = QtCore.QSettings() + settings.beginGroup(self.settingsSection) + self.monitorComboBox.clear() + self.monitorComboBox.addItems(self.screens.get_screen_list()) + monitorNumber = settings.value(u'monitor', + QtCore.QVariant(self.screens.display_count - 1)).toInt()[0] + self.monitorComboBox.setCurrentIndex(monitorNumber) + self.numberEdit.setText(unicode(settings.value( + u'ccli number', QtCore.QVariant(u'')).toString())) + self.usernameEdit.setText(unicode(settings.value( + u'songselect username', QtCore.QVariant(u'')).toString())) + self.passwordEdit.setText(unicode(settings.value( + u'songselect password', QtCore.QVariant(u'')).toString())) + self.saveCheckServiceCheckBox.setChecked(settings.value(u'save prompt', + QtCore.QVariant(False)).toBool()) + self.autoUnblankCheckBox.setChecked(settings.value(u'auto unblank', + QtCore.QVariant(False)).toBool()) + self.displayOnMonitorCheck.setChecked(self.screens.display) + self.warningCheckBox.setChecked(settings.value(u'blank warning', + QtCore.QVariant(False)).toBool()) + self.autoOpenCheckBox.setChecked(settings.value(u'auto open', + QtCore.QVariant(False)).toBool()) + self.showSplashCheckBox.setChecked(settings.value(u'show splash', + QtCore.QVariant(True)).toBool()) + self.checkForUpdatesCheckBox.setChecked(settings.value(u'update check', + QtCore.QVariant(True)).toBool()) + self.autoPreviewCheckBox.setChecked(settings.value(u'auto preview', + QtCore.QVariant(False)).toBool()) + self.enableLoopCheckBox.setChecked(settings.value(u'enable slide loop', + QtCore.QVariant(True)).toBool()) + self.timeoutSpinBox.setValue(settings.value(u'loop delay', + QtCore.QVariant(5)).toInt()[0]) + self.overrideCheckBox.setChecked(settings.value(u'override position', + QtCore.QVariant(False)).toBool()) + self.customXValueEdit.setValue(settings.value(u'x position', + QtCore.QVariant(self.screens.current[u'size'].x())).toInt()[0]) + self.customYValueEdit.setValue(settings.value(u'y position', + QtCore.QVariant(self.screens.current[u'size'].y())).toInt()[0]) + self.customHeightValueEdit.setValue(settings.value(u'height', + QtCore.QVariant(self.screens.current[u'size'].height())).toInt()[0]) + self.customWidthValueEdit.setValue(settings.value(u'width', + QtCore.QVariant(self.screens.current[u'size'].width())).toInt()[0]) + settings.endGroup() + self.customXValueEdit.setEnabled(self.overrideCheckBox.isChecked()) + self.customYValueEdit.setEnabled(self.overrideCheckBox.isChecked()) + self.customHeightValueEdit.setEnabled(self.overrideCheckBox.isChecked()) + self.customWidthValueEdit.setEnabled(self.overrideCheckBox.isChecked()) + self.display_changed = False + + def save(self): + """ + Save the settings from the form + """ + settings = QtCore.QSettings() + settings.beginGroup(self.settingsSection) + settings.setValue(u'monitor', + QtCore.QVariant(self.monitorComboBox.currentIndex())) + settings.setValue(u'display on monitor', + QtCore.QVariant(self.displayOnMonitorCheck.isChecked())) + settings.setValue(u'blank warning', + QtCore.QVariant(self.warningCheckBox.isChecked())) + settings.setValue(u'auto open', + QtCore.QVariant(self.autoOpenCheckBox.isChecked())) + settings.setValue(u'show splash', + QtCore.QVariant(self.showSplashCheckBox.isChecked())) + settings.setValue(u'update check', + QtCore.QVariant(self.checkForUpdatesCheckBox.isChecked())) + settings.setValue(u'save prompt', + QtCore.QVariant(self.saveCheckServiceCheckBox.isChecked())) + settings.setValue(u'auto unblank', + QtCore.QVariant(self.autoUnblankCheckBox.isChecked())) + settings.setValue(u'auto preview', + QtCore.QVariant(self.autoPreviewCheckBox.isChecked())) + settings.setValue(u'enable slide loop', + QtCore.QVariant(self.enableLoopCheckBox.isChecked())) + settings.setValue(u'loop delay', + QtCore.QVariant(self.timeoutSpinBox.value())) + settings.setValue(u'ccli number', + QtCore.QVariant(self.numberEdit.displayText())) + settings.setValue(u'songselect username', + QtCore.QVariant(self.usernameEdit.displayText())) + settings.setValue(u'songselect password', + QtCore.QVariant(self.passwordEdit.displayText())) + settings.setValue(u'x position', + QtCore.QVariant(self.customXValueEdit.value())) + settings.setValue(u'y position', + QtCore.QVariant(self.customYValueEdit.value())) + settings.setValue(u'height', + QtCore.QVariant(self.customHeightValueEdit.value())) + settings.setValue(u'width', + QtCore.QVariant(self.customWidthValueEdit.value())) + settings.setValue(u'override position', + QtCore.QVariant(self.overrideCheckBox.isChecked())) + settings.endGroup() + # On save update the screens as well + self.postSetUp(True) + + def postSetUp(self, postUpdate=False): + """ + Apply settings after settings tab has loaded and most of the + system so must be delayed + """ + Receiver.send_message(u'slidecontroller_live_spin_delay', + self.timeoutSpinBox.value()) + # Do not continue on start up. + if not postUpdate: + return + self.screens.set_current_display(self.monitorComboBox.currentIndex()) + self.screens.display = self.displayOnMonitorCheck.isChecked() + self.screens.override[u'size'] = QtCore.QRect( + self.customXValueEdit.value(), + self.customYValueEdit.value(), + self.customWidthValueEdit.value(), + self.customHeightValueEdit.value()) + if self.overrideCheckBox.isChecked(): + self.screens.set_override_display() + else: + self.screens.reset_current_display() + if self.display_changed: + Receiver.send_message(u'config_screen_changed') + self.display_changed = False + + def onOverrideCheckBoxToggled(self, checked): + """ + Toggle screen state depending on check box state. + + ``checked`` + The state of the check box (boolean). + """ + self.customXValueEdit.setEnabled(checked) + self.customYValueEdit.setEnabled(checked) + self.customHeightValueEdit.setEnabled(checked) + self.customWidthValueEdit.setEnabled(checked) + self.display_changed = True + + def onDisplayChanged(self): + """ + Called when the width, height, x position or y position has changed. + """ + self.display_changed = True + diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 722905c0b..4a0a3bf39 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -1,1156 +1,1158 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 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 # -# --------------------------------------------------------------------------- # -# 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 the GNU General Public License for # -# more details. # -# # -# You should have received a copy of the GNU General Public License along # -# with this program; if not, write to the Free Software Foundation, Inc., 59 # -# Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### - -import logging -import os - -from PyQt4 import QtCore, QtGui -from PyQt4.phonon import Phonon - -from openlp.core.lib import OpenLPToolbar, Receiver, resize_image, \ - ItemCapabilities, translate -from openlp.core.lib.ui import UiStrings, shortcut_action -from openlp.core.ui import HideMode, MainDisplay, ScreenList -from openlp.core.utils.actions import ActionList, CategoryOrder - -log = logging.getLogger(__name__) - -class SlideList(QtGui.QTableWidget): - """ - Customised version of QTableWidget which can respond to keyboard - events. - """ - def __init__(self, parent=None, name=None): - QtGui.QTableWidget.__init__(self, parent.controller) - self.parent = parent - - -class SlideController(QtGui.QWidget): - """ - SlideController is the slide controller widget. This widget is what the - user uses to control the displaying of verses/slides/etc on the screen. - """ - def __init__(self, parent, isLive=False): - """ - Set up the Slide Controller. - """ - QtGui.QWidget.__init__(self, parent) - self.isLive = isLive - self.parent = parent - self.screens = ScreenList.get_instance() - self.ratio = float(self.screens.current[u'size'].width()) / \ - float(self.screens.current[u'size'].height()) - self.image_manager = self.parent.image_manager - self.loopList = [ - u'Start Loop', - u'Loop Separator', - u'Image SpinBox' - ] - self.songEditList = [ - u'Edit Song', - ] - self.volume = 10 - self.timer_id = 0 - self.songEdit = False - self.selectedRow = 0 - self.serviceItem = None - self.alertTab = None - self.panel = QtGui.QWidget(parent.controlSplitter) - self.slideList = {} - # Layout for holding panel - self.panelLayout = QtGui.QVBoxLayout(self.panel) - self.panelLayout.setSpacing(0) - self.panelLayout.setMargin(0) - # Type label for the top of the slide controller - self.typeLabel = QtGui.QLabel(self.panel) - if self.isLive: - self.typeLabel.setText(UiStrings().Live) - self.split = 1 - self.typePrefix = u'live' - else: - self.typeLabel.setText(UiStrings().Preview) - self.split = 0 - self.typePrefix = u'preview' - self.typeLabel.setStyleSheet(u'font-weight: bold; font-size: 12pt;') - self.typeLabel.setAlignment(QtCore.Qt.AlignCenter) - self.panelLayout.addWidget(self.typeLabel) - # Splitter - self.splitter = QtGui.QSplitter(self.panel) - self.splitter.setOrientation(QtCore.Qt.Vertical) - self.panelLayout.addWidget(self.splitter) - # Actual controller section - self.controller = QtGui.QWidget(self.splitter) - self.controller.setGeometry(QtCore.QRect(0, 0, 100, 536)) - self.controller.setSizePolicy( - QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, - QtGui.QSizePolicy.Maximum)) - self.controllerLayout = QtGui.QVBoxLayout(self.controller) - self.controllerLayout.setSpacing(0) - self.controllerLayout.setMargin(0) - # Controller list view - self.previewListWidget = SlideList(self) - self.previewListWidget.setColumnCount(1) - self.previewListWidget.horizontalHeader().setVisible(False) - self.previewListWidget.setColumnWidth(0, self.controller.width()) - self.previewListWidget.isLive = self.isLive - self.previewListWidget.setObjectName(u'PreviewListWidget') - self.previewListWidget.setSelectionBehavior( - QtGui.QAbstractItemView.SelectRows) - self.previewListWidget.setSelectionMode( - QtGui.QAbstractItemView.SingleSelection) - self.previewListWidget.setEditTriggers( - QtGui.QAbstractItemView.NoEditTriggers) - self.previewListWidget.setHorizontalScrollBarPolicy( - QtCore.Qt.ScrollBarAlwaysOff) - self.previewListWidget.setAlternatingRowColors(True) - self.controllerLayout.addWidget(self.previewListWidget) - # Build the full toolbar - self.toolbar = OpenLPToolbar(self) - sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, - QtGui.QSizePolicy.Fixed) - sizeToolbarPolicy.setHorizontalStretch(0) - sizeToolbarPolicy.setVerticalStretch(0) - sizeToolbarPolicy.setHeightForWidth( - self.toolbar.sizePolicy().hasHeightForWidth()) - self.toolbar.setSizePolicy(sizeToolbarPolicy) - self.previousItem = self.toolbar.addToolbarButton( - translate('OpenLP.SlideController', 'Previous Slide'), - u':/slides/slide_previous.png', - translate('OpenLP.SlideController', 'Move to previous'), - self.onSlideSelectedPrevious, - shortcuts=[QtCore.Qt.Key_Up, QtCore.Qt.Key_PageUp], - context=QtCore.Qt.WidgetWithChildrenShortcut) - self.nextItem = self.toolbar.addToolbarButton( - translate('OpenLP.SlideController', 'Next Slide'), - u':/slides/slide_next.png', - translate('OpenLP.SlideController', 'Move to next'), - self.onSlideSelectedNext, - shortcuts=[QtCore.Qt.Key_Down, QtCore.Qt.Key_PageDown], - context=QtCore.Qt.WidgetWithChildrenShortcut) - self.toolbar.addToolbarSeparator(u'Close Separator') - if self.isLive: - self.hideMenu = QtGui.QToolButton(self.toolbar) - self.hideMenu.setText(translate('OpenLP.SlideController', 'Hide')) - self.hideMenu.setPopupMode(QtGui.QToolButton.MenuButtonPopup) - self.toolbar.addToolbarWidget(u'Hide Menu', self.hideMenu) - self.hideMenu.setMenu(QtGui.QMenu( - translate('OpenLP.SlideController', 'Hide'), self.toolbar)) - self.blankScreen = shortcut_action(self.hideMenu, u'blankScreen', - [QtCore.Qt.Key_Period], self.onBlankDisplay, - u':/slides/slide_blank.png', False, UiStrings().LiveToolbar) - self.blankScreen.setText( - translate('OpenLP.SlideController', 'Blank Screen')) - self.themeScreen = shortcut_action(self.hideMenu, u'themeScreen', - [QtGui.QKeySequence(u'T')], self.onThemeDisplay, - u':/slides/slide_theme.png', False, UiStrings().LiveToolbar) - self.themeScreen.setText( - translate('OpenLP.SlideController', 'Blank to Theme')) - self.desktopScreen = shortcut_action(self.hideMenu, - u'desktopScreen', [QtGui.QKeySequence(u'D')], - self.onHideDisplay, u':/slides/slide_desktop.png', False, - UiStrings().LiveToolbar) - self.desktopScreen.setText( - translate('OpenLP.SlideController', 'Show Desktop')) - self.hideMenu.setDefaultAction(self.blankScreen) - self.hideMenu.menu().addAction(self.blankScreen) - self.hideMenu.menu().addAction(self.themeScreen) - self.hideMenu.menu().addAction(self.desktopScreen) - self.toolbar.addToolbarSeparator(u'Loop Separator') - startLoop = self.toolbar.addToolbarButton( - # Does not need translating - control string. - u'Start Loop', u':/media/media_time.png', - translate('OpenLP.SlideController', 'Start continuous loop'), - self.onStartLoop) - action_list = ActionList.get_instance() - action_list.add_action(startLoop, UiStrings().LiveToolbar) - stopLoop = self.toolbar.addToolbarButton( - # Does not need translating - control string. - u'Stop Loop', u':/media/media_stop.png', - translate('OpenLP.SlideController', 'Stop continuous loop'), - self.onStopLoop) - action_list.add_action(stopLoop, UiStrings().LiveToolbar) - self.toogleLoop = shortcut_action(self, u'toogleLoop', - [QtGui.QKeySequence(u'L')], self.onToggleLoop, - category=UiStrings().LiveToolbar) - self.toogleLoop.setText(translate('OpenLP.SlideController', - 'Start/Stop continuous loop')) - self.addAction(self.toogleLoop) - self.delaySpinBox = QtGui.QSpinBox() - self.delaySpinBox.setRange(1, 180) - self.toolbar.addToolbarWidget(u'Image SpinBox', self.delaySpinBox) - self.delaySpinBox.setSuffix(UiStrings().Seconds) - self.delaySpinBox.setToolTip(translate('OpenLP.SlideController', - 'Delay between slides in seconds')) - else: - self.toolbar.addToolbarButton( - # Does not need translating - control string. - u'Go Live', u':/general/general_live.png', - translate('OpenLP.SlideController', 'Move to live'), - self.onGoLive) - self.toolbar.addToolbarSeparator(u'Close Separator') - self.toolbar.addToolbarButton( - # Does not need translating - control string. - u'Edit Song', u':/general/general_edit.png', - translate('OpenLP.SlideController', - 'Edit and reload song preview'), - self.onEditSong) - self.controllerLayout.addWidget(self.toolbar) - # Build a Media ToolBar - self.mediabar = OpenLPToolbar(self) - self.mediabar.addToolbarButton( - u'Media Start', u':/slides/media_playback_start.png', - translate('OpenLP.SlideController', 'Start playing media'), - self.onMediaPlay) - self.mediabar.addToolbarButton( - u'Media Pause', u':/slides/media_playback_pause.png', - translate('OpenLP.SlideController', 'Start playing media'), - self.onMediaPause) - self.mediabar.addToolbarButton( - u'Media Stop', u':/slides/media_playback_stop.png', - translate('OpenLP.SlideController', 'Start playing media'), - self.onMediaStop) - if self.isLive: - # Build the Song Toolbar - self.songMenu = QtGui.QToolButton(self.toolbar) - self.songMenu.setText(translate('OpenLP.SlideController', 'Go To')) - self.songMenu.setPopupMode(QtGui.QToolButton.InstantPopup) - self.toolbar.addToolbarWidget(u'Song Menu', self.songMenu) - self.songMenu.setMenu(QtGui.QMenu( - translate('OpenLP.SlideController', 'Go To'), self.toolbar)) - self.toolbar.makeWidgetsInvisible([u'Song Menu']) - # Build the volumeSlider. - self.volumeSlider = QtGui.QSlider(QtCore.Qt.Horizontal) - self.volumeSlider.setTickInterval(1) - self.volumeSlider.setTickPosition(QtGui.QSlider.TicksAbove) - self.volumeSlider.setMinimum(0) - self.volumeSlider.setMaximum(10) - else: - # Build the seekSlider. - self.seekSlider = Phonon.SeekSlider() - self.seekSlider.setGeometry(QtCore.QRect(90, 260, 221, 24)) - self.seekSlider.setObjectName(u'seekSlider') - self.mediabar.addToolbarWidget(u'Seek Slider', self.seekSlider) - self.volumeSlider = Phonon.VolumeSlider() - self.volumeSlider.setGeometry(QtCore.QRect(90, 260, 221, 24)) - self.volumeSlider.setObjectName(u'volumeSlider') - self.mediabar.addToolbarWidget(u'Audio Volume', self.volumeSlider) - self.controllerLayout.addWidget(self.mediabar) - # Screen preview area - self.previewFrame = QtGui.QFrame(self.splitter) - self.previewFrame.setGeometry(QtCore.QRect(0, 0, 300, 300 * self.ratio)) - self.previewFrame.setMinimumHeight(100) - self.previewFrame.setSizePolicy(QtGui.QSizePolicy( - QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Ignored, - QtGui.QSizePolicy.Label)) - self.previewFrame.setFrameShape(QtGui.QFrame.StyledPanel) - self.previewFrame.setFrameShadow(QtGui.QFrame.Sunken) - self.previewFrame.setObjectName(u'PreviewFrame') - self.grid = QtGui.QGridLayout(self.previewFrame) - self.grid.setMargin(8) - self.grid.setObjectName(u'grid') - self.slideLayout = QtGui.QVBoxLayout() - self.slideLayout.setSpacing(0) - self.slideLayout.setMargin(0) - self.slideLayout.setObjectName(u'SlideLayout') - if not self.isLive: - self.mediaObject = Phonon.MediaObject(self) - self.video = Phonon.VideoWidget() - self.video.setVisible(False) - self.audio = Phonon.AudioOutput(Phonon.VideoCategory, - self.mediaObject) - Phonon.createPath(self.mediaObject, self.video) - Phonon.createPath(self.mediaObject, self.audio) - self.video.setGeometry(QtCore.QRect(0, 0, 300, 225)) - self.slideLayout.insertWidget(0, self.video) - # Actual preview screen - self.slidePreview = QtGui.QLabel(self) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, - QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( - self.slidePreview.sizePolicy().hasHeightForWidth()) - self.slidePreview.setSizePolicy(sizePolicy) - self.slidePreview.setFrameShape(QtGui.QFrame.Box) - self.slidePreview.setFrameShadow(QtGui.QFrame.Plain) - self.slidePreview.setLineWidth(1) - self.slidePreview.setScaledContents(True) - self.slidePreview.setObjectName(u'SlidePreview') - self.slideLayout.insertWidget(0, self.slidePreview) - self.grid.addLayout(self.slideLayout, 0, 0, 1, 1) - # Signals - QtCore.QObject.connect(self.previewListWidget, - QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSlideSelected) - if self.isLive: - QtCore.QObject.connect(self.volumeSlider, - QtCore.SIGNAL(u'sliderReleased()'), self.mediaVolume) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'maindisplay_active'), self.updatePreview) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_live_spin_delay'), - self.receiveSpinDelay) - self.toolbar.makeWidgetsInvisible(self.loopList) - self.toolbar.actions[u'Stop Loop'].setVisible(False) - else: - QtCore.QObject.connect(self.previewListWidget, - QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), - self.onGoLiveClick) - self.toolbar.makeWidgetsInvisible(self.songEditList) - self.mediabar.setVisible(False) - if self.isLive: - self.setLiveHotkeys(self) - self.__addActionsToWidget(self.previewListWidget) - else: - self.setPreviewHotkeys() - self.previewListWidget.addActions( - [self.nextItem, - self.previousItem]) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_stop_loop' % self.typePrefix), - self.onStopLoop) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_first' % self.typePrefix), - self.onSlideSelectedFirst) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_next' % self.typePrefix), - self.onSlideSelectedNext) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_previous' % self.typePrefix), - self.onSlideSelectedPrevious) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_last' % self.typePrefix), - self.onSlideSelectedLast) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_change' % self.typePrefix), - self.onSlideChange) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_set' % self.typePrefix), - self.onSlideSelectedIndex) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_blank' % self.typePrefix), - self.onSlideBlank) - 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_%s_text_request' % self.typePrefix), - self.onTextRequest) - - def setPreviewHotkeys(self, parent=None): - self.previousItem.setObjectName(u'previousItemPreview') - self.nextItem.setObjectName(u'nextItemPreview') - action_list = ActionList.get_instance() - action_list.add_action(self.previousItem) - action_list.add_action(self.nextItem) - - def setLiveHotkeys(self, parent=None): - self.previousItem.setObjectName(u'previousItemLive') - self.nextItem.setObjectName(u'nextItemLive') - action_list = ActionList.get_instance() - action_list.add_category( - UiStrings().LiveToolbar, CategoryOrder.standardToolbar) - action_list.add_action(self.previousItem) - action_list.add_action(self.nextItem) - self.previousService = shortcut_action(parent, u'previousService', - [QtCore.Qt.Key_Left], self.servicePrevious, - category=UiStrings().LiveToolbar, - context=QtCore.Qt.WidgetWithChildrenShortcut) - self.previousService.setText( - translate('OpenLP.SlideController', 'Previous Service')) - self.nextService = shortcut_action(parent, 'nextService', - [QtCore.Qt.Key_Right], self.serviceNext, - category=UiStrings().LiveToolbar, - context=QtCore.Qt.WidgetWithChildrenShortcut) - self.nextService.setText( - translate('OpenLP.SlideController', 'Next Service')) - self.escapeItem = shortcut_action(parent, 'escapeItem', - [QtCore.Qt.Key_Escape], self.liveEscape, - category=UiStrings().LiveToolbar, - context=QtCore.Qt.WidgetWithChildrenShortcut) - self.escapeItem.setText( - translate('OpenLP.SlideController', 'Escape Item')) - - def liveEscape(self): - self.display.setVisible(False) - self.display.videoStop() - - def servicePrevious(self): - Receiver.send_message('servicemanager_previous_item') - - def serviceNext(self): - Receiver.send_message('servicemanager_next_item') - - def screenSizeChanged(self): - """ - Settings dialog has changed the screen size of adjust output and - screen previews. - """ - # rebuild display as screen size changed - self.display = MainDisplay(self, self.image_manager, self.isLive) - self.display.alertTab = self.alertTab - self.display.setup() - 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()) - self.previewSizeChanged() - if self.serviceItem: - self.refreshServiceItem() - - def __addActionsToWidget(self, widget): - widget.addActions([ - self.previousItem, self.nextItem, - self.previousService, self.nextService, - self.escapeItem]) - - def previewSizeChanged(self): - """ - Takes care of the SlidePreview's size. Is called when one of the the - splitters is moved or when the screen size is changed. Note, that this - method is (also) called frequently from the mainwindow *paintEvent*. - """ - if self.ratio < float(self.previewFrame.width()) / float( - self.previewFrame.height()): - # We have to take the height as limit. - max_height = self.previewFrame.height() - self.grid.margin() * 2 - self.slidePreview.setFixedSize(QtCore.QSize(max_height * self.ratio, - max_height)) - else: - # We have to take the width as limit. - max_width = self.previewFrame.width() - self.grid.margin() * 2 - self.slidePreview.setFixedSize(QtCore.QSize(max_width, - max_width / self.ratio)) - # Make sure that the frames have the correct size. - self.previewListWidget.setColumnWidth(0, - self.previewListWidget.viewport().size().width()) - if self.serviceItem: - # Sort out songs, bibles, etc. - if self.serviceItem.is_text(): - self.previewListWidget.resizeRowsToContents() - else: - # Sort out image heights. - width = self.parent.controlSplitter.sizes()[self.split] - for framenumber in range(len(self.serviceItem.get_frames())): - self.previewListWidget.setRowHeight( - framenumber, width / self.ratio) - - def onSongBarHandler(self): - request = unicode(self.sender().text()) - slideno = self.slideList[request] - self.__updatePreviewSelection(slideno) - self.slideSelected() - - def receiveSpinDelay(self, value): - """ - Adjusts the value of the ``delaySpinBox`` to the given one. - """ - self.delaySpinBox.setValue(int(value)) - - def enableToolBar(self, item): - """ - Allows the toolbars to be reconfigured based on Controller Type - and ServiceItem Type - """ - if self.isLive: - self.enableLiveToolBar(item) - else: - self.enablePreviewToolBar(item) - - def enableLiveToolBar(self, item): - """ - Allows the live toolbar to be customised - """ - self.toolbar.setVisible(True) - self.mediabar.setVisible(False) - self.toolbar.makeWidgetsInvisible([u'Song Menu']) - self.toolbar.makeWidgetsInvisible(self.loopList) - self.toogleLoop.setEnabled(False) - self.toolbar.actions[u'Start Loop'].setEnabled(False) - self.toolbar.actions[u'Stop Loop'].setEnabled(False) - self.toolbar.actions[u'Stop Loop'].setVisible(False) - if item.is_text(): - if QtCore.QSettings().value( - self.parent.songsSettingsSection + u'/display songbar', - QtCore.QVariant(True)).toBool() and len(self.slideList) > 0: - self.toolbar.makeWidgetsVisible([u'Song Menu']) - if item.is_capable(ItemCapabilities.AllowsLoop) and \ - len(item.get_frames()) > 1: - self.toolbar.makeWidgetsVisible(self.loopList) - self.toogleLoop.setEnabled(True) - self.toolbar.actions[u'Start Loop'].setEnabled(True) - self.toolbar.actions[u'Stop Loop'].setEnabled(True) - if item.is_media(): - self.toolbar.setVisible(False) - self.mediabar.setVisible(True) - - def enablePreviewToolBar(self, item): - """ - Allows the Preview toolbar to be customised - """ - self.toolbar.setVisible(True) - self.mediabar.setVisible(False) - self.toolbar.makeWidgetsInvisible(self.songEditList) - if item.is_capable(ItemCapabilities.AllowsEdit) and item.from_plugin: - self.toolbar.makeWidgetsVisible(self.songEditList) - elif item.is_media(): - self.toolbar.setVisible(False) - self.mediabar.setVisible(True) - self.volumeSlider.setAudioOutput(self.audio) - - def refreshServiceItem(self): - """ - Method to update the service item if the screen has changed - """ - log.debug(u'refreshServiceItem live = %s' % self.isLive) - if self.serviceItem.is_text() or self.serviceItem.is_image(): - item = self.serviceItem - item.render() - self._processItem(item, self.selectedRow) - - def addServiceItem(self, item): - """ - Method to install the service item into the controller - Called by plugins - """ - log.debug(u'addServiceItem live = %s' % self.isLive) - item.render() - slideno = 0 - if self.songEdit: - slideno = self.selectedRow - self.songEdit = False - self._processItem(item, slideno) - - def replaceServiceManagerItem(self, item): - """ - Replacement item following a remote edit - """ - if item.__eq__(self.serviceItem): - self._processItem(item, self.previewListWidget.currentRow()) - - def addServiceManagerItem(self, item, slideno): - """ - Method to install the service item into the controller and - request the correct toolbar for the plugin. - Called by ServiceManager - """ - log.debug(u'addServiceManagerItem live = %s' % self.isLive) - # If no valid slide number is specified we take the first one. - if slideno == -1: - slideno = 0 - # If service item is the same as the current on only change slide - if item.__eq__(self.serviceItem): - self.__checkUpdateSelectedSlide(slideno) - self.slideSelected() - return - self._processItem(item, slideno) - - def _processItem(self, serviceItem, slideno): - """ - Loads a ServiceItem into the system from ServiceManager - Display the slide number passed - """ - log.debug(u'processManagerItem live = %s' % self.isLive) - self.onStopLoop() - old_item = self.serviceItem - self.serviceItem = serviceItem - if old_item and self.isLive and old_item.is_capable( - ItemCapabilities.ProvidesOwnDisplay): - self._resetBlank() - Receiver.send_message(u'%s_start' % serviceItem.name.lower(), - [serviceItem, self.isLive, self.hideMode(), slideno]) - self.slideList = {} - width = self.parent.controlSplitter.sizes()[self.split] - self.previewListWidget.clear() - self.previewListWidget.setRowCount(0) - self.previewListWidget.setColumnWidth(0, width) - if self.isLive: - self.songMenu.menu().clear() - row = 0 - text = [] - for framenumber, frame in enumerate(self.serviceItem.get_frames()): - self.previewListWidget.setRowCount( - self.previewListWidget.rowCount() + 1) - item = QtGui.QTableWidgetItem() - slideHeight = 0 - if self.serviceItem.is_text(): - if frame[u'verseTag']: - # These tags are already translated. - verse_def = frame[u'verseTag'] - verse_def = u'%s%s' % (verse_def[0], verse_def[1:]) - two_line_def = u'%s\n%s' % (verse_def[0], verse_def[1:]) - row = two_line_def - if self.isLive: - if verse_def not in self.slideList: - self.slideList[verse_def] = framenumber - self.songMenu.menu().addAction(verse_def, - self.onSongBarHandler) - else: - row += 1 - item.setText(frame[u'text']) - else: - label = QtGui.QLabel() - label.setMargin(4) - label.setScaledContents(True) - if self.serviceItem.is_command(): - image = resize_image(frame[u'image'], - self.parent.renderer.width, - self.parent.renderer.height) - else: - # If current slide set background to image - if framenumber == slideno: - self.serviceItem.bg_image_bytes = \ - self.image_manager.get_image_bytes(frame[u'title']) - image = self.image_manager.get_image(frame[u'title']) - label.setPixmap(QtGui.QPixmap.fromImage(image)) - self.previewListWidget.setCellWidget(framenumber, 0, label) - slideHeight = width * self.parent.renderer.screen_ratio - row += 1 - text.append(unicode(row)) - self.previewListWidget.setItem(framenumber, 0, item) - if slideHeight != 0: - self.previewListWidget.setRowHeight(framenumber, slideHeight) - self.previewListWidget.setVerticalHeaderLabels(text) - if self.serviceItem.is_text(): - self.previewListWidget.resizeRowsToContents() - self.previewListWidget.setColumnWidth(0, - self.previewListWidget.viewport().size().width()) - self.__updatePreviewSelection(slideno) - self.enableToolBar(serviceItem) - # Pass to display for viewing. - # Postpone image build, we need to do this later to avoid the theme - # flashing on the screen - if not self.serviceItem.is_image(): - self.display.buildHtml(self.serviceItem) - if serviceItem.is_media(): - self.onMediaStart(serviceItem) - self.slideSelected(True) - self.previewListWidget.setFocus() - if old_item: - # Close the old item after the new one is opened - # This avoids the service theme/desktop flashing on screen - # However opening a new item of the same type will automatically - # close the previous, so make sure we don't close the new one. - if old_item.is_command() and not serviceItem.is_command(): - Receiver.send_message(u'%s_stop' % - old_item.name.lower(), [old_item, self.isLive]) - if old_item.is_media() and not serviceItem.is_media(): - self.onMediaClose() - Receiver.send_message(u'slidecontroller_%s_started' % self.typePrefix, - [serviceItem]) - - def __updatePreviewSelection(self, slideno): - """ - Utility method to update the selected slide in the list. - """ - if slideno > self.previewListWidget.rowCount(): - self.previewListWidget.selectRow( - self.previewListWidget.rowCount() - 1) - else: - self.__checkUpdateSelectedSlide(slideno) - - def onTextRequest(self): - """ - Return the text for the current item in controller - """ - data = [] - if self.serviceItem: - for framenumber, frame in enumerate(self.serviceItem.get_frames()): - dataItem = {} - if self.serviceItem.is_text(): - dataItem[u'tag'] = unicode(frame[u'verseTag']) - dataItem[u'text'] = unicode(frame[u'html']) - else: - dataItem[u'tag'] = unicode(framenumber) - dataItem[u'text'] = u'' - dataItem[u'selected'] = \ - (self.previewListWidget.currentRow() == framenumber) - data.append(dataItem) - Receiver.send_message(u'slidecontroller_%s_text_response' - % self.typePrefix, data) - - # Screen event methods - def onSlideSelectedFirst(self): - """ - Go to the first slide. - """ - if not self.serviceItem: - return - if self.serviceItem.is_command(): - Receiver.send_message(u'%s_first' % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive]) - self.updatePreview() - else: - self.previewListWidget.selectRow(0) - self.slideSelected() - - def onSlideSelectedIndex(self, message): - """ - Go to the requested slide - """ - index = int(message[0]) - if not self.serviceItem: - return - if self.serviceItem.is_command(): - Receiver.send_message(u'%s_slide' % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive, index]) - self.updatePreview() - else: - self.__checkUpdateSelectedSlide(index) - self.slideSelected() - - def mainDisplaySetBackground(self): - """ - Allow the main display to blank the main display at startup time - """ - log.debug(u'mainDisplaySetBackground live = %s' % self.isLive) - display_type = QtCore.QSettings().value( - self.parent.generalSettingsSection + u'/screen blank', - QtCore.QVariant(u'')).toString() - if not self.display.primary: - # Order done to handle initial conversion - if display_type == u'themed': - self.onThemeDisplay(True) - elif display_type == u'hidden': - self.onHideDisplay(True) - else: - self.onBlankDisplay(True) - - def onSlideBlank(self): - """ - Handle the slidecontroller blank event - """ - self.onBlankDisplay(True) - - def onSlideUnblank(self): - """ - Handle the slidecontroller unblank event - """ - self.onBlankDisplay(False) - - def onBlankDisplay(self, checked=None): - """ - Handle the blank screen button actions - """ - if checked is None: - checked = self.blankScreen.isChecked() - log.debug(u'onBlankDisplay %s' % checked) - self.hideMenu.setDefaultAction(self.blankScreen) - self.blankScreen.setChecked(checked) - self.themeScreen.setChecked(False) - self.desktopScreen.setChecked(False) - if checked: - QtCore.QSettings().setValue( - self.parent.generalSettingsSection + u'/screen blank', - QtCore.QVariant(u'blanked')) - else: - QtCore.QSettings().remove( - self.parent.generalSettingsSection + u'/screen blank') - self.blankPlugin() - self.updatePreview() - - def onThemeDisplay(self, checked=None): - """ - Handle the Theme screen button - """ - if checked is None: - checked = self.themeScreen.isChecked() - log.debug(u'onThemeDisplay %s' % checked) - self.hideMenu.setDefaultAction(self.themeScreen) - self.blankScreen.setChecked(False) - self.themeScreen.setChecked(checked) - self.desktopScreen.setChecked(False) - if checked: - QtCore.QSettings().setValue( - self.parent.generalSettingsSection + u'/screen blank', - QtCore.QVariant(u'themed')) - else: - QtCore.QSettings().remove( - self.parent.generalSettingsSection + u'/screen blank') - self.blankPlugin() - self.updatePreview() - - def onHideDisplay(self, checked=None): - """ - Handle the Hide screen button - """ - if checked is None: - checked = self.desktopScreen.isChecked() - log.debug(u'onHideDisplay %s' % checked) - self.hideMenu.setDefaultAction(self.desktopScreen) - self.blankScreen.setChecked(False) - self.themeScreen.setChecked(False) - self.desktopScreen.setChecked(checked) - if checked: - QtCore.QSettings().setValue( - self.parent.generalSettingsSection + u'/screen blank', - QtCore.QVariant(u'hidden')) - else: - QtCore.QSettings().remove( - self.parent.generalSettingsSection + u'/screen blank') - self.hidePlugin(checked) - self.updatePreview() - - def blankPlugin(self): - """ - Blank/Hide the display screen within a plugin if required. - """ - hide_mode = self.hideMode() - log.debug(u'blankPlugin %s ', hide_mode) - if self.serviceItem is not None: - if hide_mode: - if not self.serviceItem.is_command(): - Receiver.send_message(u'maindisplay_hide', hide_mode) - Receiver.send_message(u'%s_blank' - % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive, hide_mode]) - else: - if not self.serviceItem.is_command(): - Receiver.send_message(u'maindisplay_show') - Receiver.send_message(u'%s_unblank' - % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive]) - - def hidePlugin(self, hide): - """ - Tell the plugin to hide the display screen. - """ - log.debug(u'hidePlugin %s ', hide) - if self.serviceItem is not None: - if hide: - Receiver.send_message(u'maindisplay_hide', HideMode.Screen) - Receiver.send_message(u'%s_hide' - % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive]) - else: - if not self.serviceItem.is_command(): - Receiver.send_message(u'maindisplay_show') - Receiver.send_message(u'%s_unblank' - % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive]) - - def onSlideSelected(self, start=False): - """ - Slide selected in controller - """ - self.slideSelected() - - def slideSelected(self, start=False): - """ - Generate the preview when you click on a slide. - if this is the Live Controller also display on the screen - """ - row = self.previewListWidget.currentRow() - self.selectedRow = 0 - if row > -1 and row < self.previewListWidget.rowCount(): - if self.serviceItem.is_command(): - if self.isLive and not start: - Receiver.send_message( - u'%s_slide' % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive, row]) - self.updatePreview() - else: - toDisplay = self.serviceItem.get_rendered_frame(row) - if self.serviceItem.is_text(): - frame = self.display.text(toDisplay) - else: - if start: - self.display.buildHtml(self.serviceItem, toDisplay) - frame = self.display.preview() - else: - frame = self.display.image(toDisplay) - # reset the store used to display first image - self.serviceItem.bg_image_bytes = None - self.slidePreview.setPixmap(QtGui.QPixmap.fromImage(frame)) - self.selectedRow = row - self.__checkUpdateSelectedSlide(row) - Receiver.send_message(u'slidecontroller_%s_changed' % self.typePrefix, - row) - - def onSlideChange(self, row): - """ - The slide has been changed. Update the slidecontroller accordingly - """ - self.__checkUpdateSelectedSlide(row) - self.updatePreview() - Receiver.send_message(u'slidecontroller_%s_changed' % self.typePrefix, - row) - - def updatePreview(self): - """ - This updates the preview frame, for example after changing a slide or - using *Blank to Theme*. - """ - log.debug(u'updatePreview %s ' % self.screens.current[u'primary']) - if not self.screens.current[u'primary'] and self.serviceItem and \ - self.serviceItem.is_capable(ItemCapabilities.ProvidesOwnDisplay): - # Grab now, but try again in a couple of seconds if slide change - # is slow - QtCore.QTimer.singleShot(0.5, self.grabMainDisplay) - QtCore.QTimer.singleShot(2.5, self.grabMainDisplay) - else: - self.slidePreview.setPixmap( - QtGui.QPixmap.fromImage(self.display.preview())) - - def grabMainDisplay(self): - """ - Creates an image of the current screen and updates the preview frame. - """ - winid = QtGui.QApplication.desktop().winId() - rect = self.screens.current[u'size'] - winimg = QtGui.QPixmap.grabWindow(winid, rect.x(), - rect.y(), rect.width(), rect.height()) - self.slidePreview.setPixmap(winimg) - def onSlideSelectedNext(self): - """ - Go to the next slide. - """ - loopcheck = QtCore.QSettings().value( self.parent.generalSettingsSection + u'generalSettingsSection/enable slide loop', QtCore.QVariant(True).toBool) - if not self.serviceItem: - return - Receiver.send_message(u'%s_next' % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive]) - if self.serviceItem.is_command() and self.isLive: - self.updatePreview() - else: - row = self.previewListWidget.currentRow() + 1 - if row == self.previewListWidget.rowCount(): - if loopcheck == True: - row = 0 - else: - return - self.__checkUpdateSelectedSlide(row) - self.slideSelected() - def onSlideSelectedPrevious(self): - """ - Go to the previous slide. - """ - loopcheck =QtCore.QSettings().value( self.parent.generalSettingsSection + u'enable slide loop', QtCore.QVariant(True).toBool) - if not self.serviceItem: - return - Receiver.send_message(u'%s_previous' % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive]) - if self.serviceItem.is_command() and self.isLive: - self.updatePreview() - else: - row = self.previewListWidget.currentRow() - 1 - if row == -1: - if loopcheck == True: - row = self.previewListWidget.rowCount() - 1 - else: - return - self.__checkUpdateSelectedSlide(row) - self.slideSelected() - - def __checkUpdateSelectedSlide(self, row): - if row + 1 < self.previewListWidget.rowCount(): - self.previewListWidget.scrollToItem( - self.previewListWidget.item(row + 1, 0)) - self.previewListWidget.selectRow(row) - - def onSlideSelectedLast(self): - """ - Go to the last slide. - """ - if not self.serviceItem: - return - Receiver.send_message(u'%s_last' % self.serviceItem.name.lower(), - [self.serviceItem, self.isLive]) - if self.serviceItem.is_command(): - self.updatePreview() - else: - self.previewListWidget.selectRow( - self.previewListWidget.rowCount() - 1) - self.slideSelected() - - def onToggleLoop(self, toggled): - """ - Toggles the loop state. - """ - if self.toolbar.actions[u'Start Loop'].isVisible(): - self.onStartLoop() - else: - self.onStopLoop() - - def onStartLoop(self): - """ - Start the timer loop running and store the timer id - """ - if self.previewListWidget.rowCount() > 1: - self.timer_id = self.startTimer( - int(self.delaySpinBox.value()) * 1000) - self.toolbar.actions[u'Stop Loop'].setVisible(True) - self.toolbar.actions[u'Start Loop'].setVisible(False) - - def onStopLoop(self): - """ - Stop the timer loop running - """ - if self.timer_id != 0: - self.killTimer(self.timer_id) - self.timer_id = 0 - self.toolbar.actions[u'Start Loop'].setVisible(True) - self.toolbar.actions[u'Stop Loop'].setVisible(False) - - def timerEvent(self, event): - """ - If the timer event is for this window select next slide - """ - if event.timerId() == self.timer_id: - self.onSlideSelectedNext() - - def onEditSong(self): - """ - From the preview display requires the service Item to be editied - """ - self.songEdit = True - Receiver.send_message(u'%s_edit' % self.serviceItem.name.lower(), - u'P:%s' % self.serviceItem.edit_id) - - def onGoLiveClick(self): - """ - triggered by clicking the Preview slide items - """ - if QtCore.QSettings().value(u'advanced/double click live', - QtCore.QVariant(False)).toBool(): - self.onGoLive() - - def onGoLive(self): - """ - If preview copy slide item to live - """ - row = self.previewListWidget.currentRow() - if row > -1 and row < self.previewListWidget.rowCount(): - if self.serviceItem.from_service: - Receiver.send_message('servicemanager_preview_live', - u'%s:%s' % (self.serviceItem._uuid, row)) - else: - self.parent.liveController.addServiceManagerItem( - self.serviceItem, row) - - def onMediaStart(self, item): - """ - Respond to the arrival of a media service item - """ - log.debug(u'SlideController onMediaStart') - file = os.path.join(item.get_frame_path(), item.get_frame_title()) - if self.isLive: - self.display.video(file, self.volume) - self.volumeSlider.setValue(self.volume) - else: - self.mediaObject.stop() - self.mediaObject.clearQueue() - self.mediaObject.setCurrentSource(Phonon.MediaSource(file)) - self.seekSlider.setMediaObject(self.mediaObject) - self.seekSlider.show() - self.onMediaPlay() - - def mediaVolume(self): - """ - Respond to the release of Volume Slider - """ - log.debug(u'SlideController mediaVolume') - self.volume = self.volumeSlider.value() - self.display.videoVolume(self.volume) - - def onMediaPause(self): - """ - Respond to the Pause from the media Toolbar - """ - log.debug(u'SlideController onMediaPause') - if self.isLive: - self.display.videoPause() - else: - self.mediaObject.pause() - - def onMediaPlay(self): - """ - Respond to the Play from the media Toolbar - """ - log.debug(u'SlideController onMediaPlay') - if self.isLive: - self.display.videoPlay() - else: - self.slidePreview.hide() - self.video.show() - self.mediaObject.play() - - def onMediaStop(self): - """ - Respond to the Stop from the media Toolbar - """ - log.debug(u'SlideController onMediaStop') - if self.isLive: - self.display.videoStop() - else: - self.mediaObject.stop() - self.video.hide() - self.slidePreview.clear() - self.slidePreview.show() - - def onMediaClose(self): - """ - Respond to a request to close the Video - """ - log.debug(u'SlideController onMediaStop') - if self.isLive: - self.display.resetVideo() - else: - self.mediaObject.stop() - self.mediaObject.clearQueue() - self.video.hide() - self.slidePreview.clear() - self.slidePreview.show() - - def _resetBlank(self): - """ - Used by command items which provide their own displays to reset the - screen hide attributes - """ - hide_mode = self.hideMode() - if hide_mode == HideMode.Blank: - self.onBlankDisplay(True) - elif hide_mode == HideMode.Theme: - self.onThemeDisplay(True) - elif hide_mode == HideMode.Screen: - self.onHideDisplay(True) - else: - self.hidePlugin(False) - - def hideMode(self): - """ - Determine what the hide mode should be according to the blank button - """ - if not self.isLive: - return None - elif self.blankScreen.isChecked(): - return HideMode.Blank - elif self.themeScreen.isChecked(): - return HideMode.Theme - elif self.desktopScreen.isChecked(): - return HideMode.Screen - else: - return None +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2011 Raoul Snyman # +# Portions copyright (c) 2008-2011 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 # +# --------------------------------------------------------------------------- # +# 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 the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + +import logging +import os + +from PyQt4 import QtCore, QtGui +from PyQt4.phonon import Phonon + +from openlp.core.lib import OpenLPToolbar, Receiver, resize_image, \ + ItemCapabilities, translate +from openlp.core.lib.ui import UiStrings, shortcut_action +from openlp.core.ui import HideMode, MainDisplay, ScreenList +from openlp.core.utils.actions import ActionList, CategoryOrder + +log = logging.getLogger(__name__) + +class SlideList(QtGui.QTableWidget): + """ + Customised version of QTableWidget which can respond to keyboard + events. + """ + def __init__(self, parent=None, name=None): + QtGui.QTableWidget.__init__(self, parent.controller) + self.parent = parent + + +class SlideController(QtGui.QWidget): + """ + SlideController is the slide controller widget. This widget is what the + user uses to control the displaying of verses/slides/etc on the screen. + """ + def __init__(self, parent, isLive=False): + """ + Set up the Slide Controller. + """ + QtGui.QWidget.__init__(self, parent) + self.isLive = isLive + self.parent = parent + self.screens = ScreenList.get_instance() + self.ratio = float(self.screens.current[u'size'].width()) / \ + float(self.screens.current[u'size'].height()) + self.image_manager = self.parent.image_manager + self.loopList = [ + u'Start Loop', + u'Loop Separator', + u'Image SpinBox' + ] + self.songEditList = [ + u'Edit Song', + ] + self.volume = 10 + self.timer_id = 0 + self.songEdit = False + self.selectedRow = 0 + self.serviceItem = None + self.alertTab = None + self.panel = QtGui.QWidget(parent.controlSplitter) + self.slideList = {} + # Layout for holding panel + self.panelLayout = QtGui.QVBoxLayout(self.panel) + self.panelLayout.setSpacing(0) + self.panelLayout.setMargin(0) + # Type label for the top of the slide controller + self.typeLabel = QtGui.QLabel(self.panel) + if self.isLive: + self.typeLabel.setText(UiStrings().Live) + self.split = 1 + self.typePrefix = u'live' + else: + self.typeLabel.setText(UiStrings().Preview) + self.split = 0 + self.typePrefix = u'preview' + self.typeLabel.setStyleSheet(u'font-weight: bold; font-size: 12pt;') + self.typeLabel.setAlignment(QtCore.Qt.AlignCenter) + self.panelLayout.addWidget(self.typeLabel) + # Splitter + self.splitter = QtGui.QSplitter(self.panel) + self.splitter.setOrientation(QtCore.Qt.Vertical) + self.panelLayout.addWidget(self.splitter) + # Actual controller section + self.controller = QtGui.QWidget(self.splitter) + self.controller.setGeometry(QtCore.QRect(0, 0, 100, 536)) + self.controller.setSizePolicy( + QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, + QtGui.QSizePolicy.Maximum)) + self.controllerLayout = QtGui.QVBoxLayout(self.controller) + self.controllerLayout.setSpacing(0) + self.controllerLayout.setMargin(0) + # Controller list view + self.previewListWidget = SlideList(self) + self.previewListWidget.setColumnCount(1) + self.previewListWidget.horizontalHeader().setVisible(False) + self.previewListWidget.setColumnWidth(0, self.controller.width()) + self.previewListWidget.isLive = self.isLive + self.previewListWidget.setObjectName(u'PreviewListWidget') + self.previewListWidget.setSelectionBehavior( + QtGui.QAbstractItemView.SelectRows) + self.previewListWidget.setSelectionMode( + QtGui.QAbstractItemView.SingleSelection) + self.previewListWidget.setEditTriggers( + QtGui.QAbstractItemView.NoEditTriggers) + self.previewListWidget.setHorizontalScrollBarPolicy( + QtCore.Qt.ScrollBarAlwaysOff) + self.previewListWidget.setAlternatingRowColors(True) + self.controllerLayout.addWidget(self.previewListWidget) + # Build the full toolbar + self.toolbar = OpenLPToolbar(self) + sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, + QtGui.QSizePolicy.Fixed) + sizeToolbarPolicy.setHorizontalStretch(0) + sizeToolbarPolicy.setVerticalStretch(0) + sizeToolbarPolicy.setHeightForWidth( + self.toolbar.sizePolicy().hasHeightForWidth()) + self.toolbar.setSizePolicy(sizeToolbarPolicy) + self.previousItem = self.toolbar.addToolbarButton( + translate('OpenLP.SlideController', 'Previous Slide'), + u':/slides/slide_previous.png', + translate('OpenLP.SlideController', 'Move to previous'), + self.onSlideSelectedPrevious, + shortcuts=[QtCore.Qt.Key_Up, QtCore.Qt.Key_PageUp], + context=QtCore.Qt.WidgetWithChildrenShortcut) + self.nextItem = self.toolbar.addToolbarButton( + translate('OpenLP.SlideController', 'Next Slide'), + u':/slides/slide_next.png', + translate('OpenLP.SlideController', 'Move to next'), + self.onSlideSelectedNext, + shortcuts=[QtCore.Qt.Key_Down, QtCore.Qt.Key_PageDown], + context=QtCore.Qt.WidgetWithChildrenShortcut) + self.toolbar.addToolbarSeparator(u'Close Separator') + if self.isLive: + self.hideMenu = QtGui.QToolButton(self.toolbar) + self.hideMenu.setText(translate('OpenLP.SlideController', 'Hide')) + self.hideMenu.setPopupMode(QtGui.QToolButton.MenuButtonPopup) + self.toolbar.addToolbarWidget(u'Hide Menu', self.hideMenu) + self.hideMenu.setMenu(QtGui.QMenu( + translate('OpenLP.SlideController', 'Hide'), self.toolbar)) + self.blankScreen = shortcut_action(self.hideMenu, u'blankScreen', + [QtCore.Qt.Key_Period], self.onBlankDisplay, + u':/slides/slide_blank.png', False, UiStrings().LiveToolbar) + self.blankScreen.setText( + translate('OpenLP.SlideController', 'Blank Screen')) + self.themeScreen = shortcut_action(self.hideMenu, u'themeScreen', + [QtGui.QKeySequence(u'T')], self.onThemeDisplay, + u':/slides/slide_theme.png', False, UiStrings().LiveToolbar) + self.themeScreen.setText( + translate('OpenLP.SlideController', 'Blank to Theme')) + self.desktopScreen = shortcut_action(self.hideMenu, + u'desktopScreen', [QtGui.QKeySequence(u'D')], + self.onHideDisplay, u':/slides/slide_desktop.png', False, + UiStrings().LiveToolbar) + self.desktopScreen.setText( + translate('OpenLP.SlideController', 'Show Desktop')) + self.hideMenu.setDefaultAction(self.blankScreen) + self.hideMenu.menu().addAction(self.blankScreen) + self.hideMenu.menu().addAction(self.themeScreen) + self.hideMenu.menu().addAction(self.desktopScreen) + self.toolbar.addToolbarSeparator(u'Loop Separator') + startLoop = self.toolbar.addToolbarButton( + # Does not need translating - control string. + u'Start Loop', u':/media/media_time.png', + translate('OpenLP.SlideController', 'Start continuous loop'), + self.onStartLoop) + action_list = ActionList.get_instance() + action_list.add_action(startLoop, UiStrings().LiveToolbar) + stopLoop = self.toolbar.addToolbarButton( + # Does not need translating - control string. + u'Stop Loop', u':/media/media_stop.png', + translate('OpenLP.SlideController', 'Stop continuous loop'), + self.onStopLoop) + action_list.add_action(stopLoop, UiStrings().LiveToolbar) + self.toogleLoop = shortcut_action(self, u'toogleLoop', + [QtGui.QKeySequence(u'L')], self.onToggleLoop, + category=UiStrings().LiveToolbar) + self.toogleLoop.setText(translate('OpenLP.SlideController', + 'Start/Stop continuous loop')) + self.addAction(self.toogleLoop) + self.delaySpinBox = QtGui.QSpinBox() + self.delaySpinBox.setRange(1, 180) + self.toolbar.addToolbarWidget(u'Image SpinBox', self.delaySpinBox) + self.delaySpinBox.setSuffix(UiStrings().Seconds) + self.delaySpinBox.setToolTip(translate('OpenLP.SlideController', + 'Delay between slides in seconds')) + else: + self.toolbar.addToolbarButton( + # Does not need translating - control string. + u'Go Live', u':/general/general_live.png', + translate('OpenLP.SlideController', 'Move to live'), + self.onGoLive) + self.toolbar.addToolbarSeparator(u'Close Separator') + self.toolbar.addToolbarButton( + # Does not need translating - control string. + u'Edit Song', u':/general/general_edit.png', + translate('OpenLP.SlideController', + 'Edit and reload song preview'), + self.onEditSong) + self.controllerLayout.addWidget(self.toolbar) + # Build a Media ToolBar + self.mediabar = OpenLPToolbar(self) + self.mediabar.addToolbarButton( + u'Media Start', u':/slides/media_playback_start.png', + translate('OpenLP.SlideController', 'Start playing media'), + self.onMediaPlay) + self.mediabar.addToolbarButton( + u'Media Pause', u':/slides/media_playback_pause.png', + translate('OpenLP.SlideController', 'Start playing media'), + self.onMediaPause) + self.mediabar.addToolbarButton( + u'Media Stop', u':/slides/media_playback_stop.png', + translate('OpenLP.SlideController', 'Start playing media'), + self.onMediaStop) + if self.isLive: + # Build the Song Toolbar + self.songMenu = QtGui.QToolButton(self.toolbar) + self.songMenu.setText(translate('OpenLP.SlideController', 'Go To')) + self.songMenu.setPopupMode(QtGui.QToolButton.InstantPopup) + self.toolbar.addToolbarWidget(u'Song Menu', self.songMenu) + self.songMenu.setMenu(QtGui.QMenu( + translate('OpenLP.SlideController', 'Go To'), self.toolbar)) + self.toolbar.makeWidgetsInvisible([u'Song Menu']) + # Build the volumeSlider. + self.volumeSlider = QtGui.QSlider(QtCore.Qt.Horizontal) + self.volumeSlider.setTickInterval(1) + self.volumeSlider.setTickPosition(QtGui.QSlider.TicksAbove) + self.volumeSlider.setMinimum(0) + self.volumeSlider.setMaximum(10) + else: + # Build the seekSlider. + self.seekSlider = Phonon.SeekSlider() + self.seekSlider.setGeometry(QtCore.QRect(90, 260, 221, 24)) + self.seekSlider.setObjectName(u'seekSlider') + self.mediabar.addToolbarWidget(u'Seek Slider', self.seekSlider) + self.volumeSlider = Phonon.VolumeSlider() + self.volumeSlider.setGeometry(QtCore.QRect(90, 260, 221, 24)) + self.volumeSlider.setObjectName(u'volumeSlider') + self.mediabar.addToolbarWidget(u'Audio Volume', self.volumeSlider) + self.controllerLayout.addWidget(self.mediabar) + # Screen preview area + self.previewFrame = QtGui.QFrame(self.splitter) + self.previewFrame.setGeometry(QtCore.QRect(0, 0, 300, 300 * self.ratio)) + self.previewFrame.setMinimumHeight(100) + self.previewFrame.setSizePolicy(QtGui.QSizePolicy( + QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Ignored, + QtGui.QSizePolicy.Label)) + self.previewFrame.setFrameShape(QtGui.QFrame.StyledPanel) + self.previewFrame.setFrameShadow(QtGui.QFrame.Sunken) + self.previewFrame.setObjectName(u'PreviewFrame') + self.grid = QtGui.QGridLayout(self.previewFrame) + self.grid.setMargin(8) + self.grid.setObjectName(u'grid') + self.slideLayout = QtGui.QVBoxLayout() + self.slideLayout.setSpacing(0) + self.slideLayout.setMargin(0) + self.slideLayout.setObjectName(u'SlideLayout') + if not self.isLive: + self.mediaObject = Phonon.MediaObject(self) + self.video = Phonon.VideoWidget() + self.video.setVisible(False) + self.audio = Phonon.AudioOutput(Phonon.VideoCategory, + self.mediaObject) + Phonon.createPath(self.mediaObject, self.video) + Phonon.createPath(self.mediaObject, self.audio) + self.video.setGeometry(QtCore.QRect(0, 0, 300, 225)) + self.slideLayout.insertWidget(0, self.video) + # Actual preview screen + self.slidePreview = QtGui.QLabel(self) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, + QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth( + self.slidePreview.sizePolicy().hasHeightForWidth()) + self.slidePreview.setSizePolicy(sizePolicy) + self.slidePreview.setFrameShape(QtGui.QFrame.Box) + self.slidePreview.setFrameShadow(QtGui.QFrame.Plain) + self.slidePreview.setLineWidth(1) + self.slidePreview.setScaledContents(True) + self.slidePreview.setObjectName(u'SlidePreview') + self.slideLayout.insertWidget(0, self.slidePreview) + self.grid.addLayout(self.slideLayout, 0, 0, 1, 1) + # Signals + QtCore.QObject.connect(self.previewListWidget, + QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSlideSelected) + if self.isLive: + QtCore.QObject.connect(self.volumeSlider, + QtCore.SIGNAL(u'sliderReleased()'), self.mediaVolume) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'maindisplay_active'), self.updatePreview) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_live_spin_delay'), + self.receiveSpinDelay) + self.toolbar.makeWidgetsInvisible(self.loopList) + self.toolbar.actions[u'Stop Loop'].setVisible(False) + else: + QtCore.QObject.connect(self.previewListWidget, + QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), + self.onGoLiveClick) + self.toolbar.makeWidgetsInvisible(self.songEditList) + self.mediabar.setVisible(False) + if self.isLive: + self.setLiveHotkeys(self) + self.__addActionsToWidget(self.previewListWidget) + else: + self.setPreviewHotkeys() + self.previewListWidget.addActions( + [self.nextItem, + self.previousItem]) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_%s_stop_loop' % self.typePrefix), + self.onStopLoop) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_%s_first' % self.typePrefix), + self.onSlideSelectedFirst) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_%s_next' % self.typePrefix), + self.onSlideSelectedNext) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_%s_previous' % self.typePrefix), + self.onSlideSelectedPrevious) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_%s_last' % self.typePrefix), + self.onSlideSelectedLast) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_%s_change' % self.typePrefix), + self.onSlideChange) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_%s_set' % self.typePrefix), + self.onSlideSelectedIndex) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'slidecontroller_%s_blank' % self.typePrefix), + self.onSlideBlank) + 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_%s_text_request' % self.typePrefix), + self.onTextRequest) + + def setPreviewHotkeys(self, parent=None): + self.previousItem.setObjectName(u'previousItemPreview') + self.nextItem.setObjectName(u'nextItemPreview') + action_list = ActionList.get_instance() + action_list.add_action(self.previousItem) + action_list.add_action(self.nextItem) + + def setLiveHotkeys(self, parent=None): + self.previousItem.setObjectName(u'previousItemLive') + self.nextItem.setObjectName(u'nextItemLive') + action_list = ActionList.get_instance() + action_list.add_category( + UiStrings().LiveToolbar, CategoryOrder.standardToolbar) + action_list.add_action(self.previousItem) + action_list.add_action(self.nextItem) + self.previousService = shortcut_action(parent, u'previousService', + [QtCore.Qt.Key_Left], self.servicePrevious, + category=UiStrings().LiveToolbar, + context=QtCore.Qt.WidgetWithChildrenShortcut) + self.previousService.setText( + translate('OpenLP.SlideController', 'Previous Service')) + self.nextService = shortcut_action(parent, 'nextService', + [QtCore.Qt.Key_Right], self.serviceNext, + category=UiStrings().LiveToolbar, + context=QtCore.Qt.WidgetWithChildrenShortcut) + self.nextService.setText( + translate('OpenLP.SlideController', 'Next Service')) + self.escapeItem = shortcut_action(parent, 'escapeItem', + [QtCore.Qt.Key_Escape], self.liveEscape, + category=UiStrings().LiveToolbar, + context=QtCore.Qt.WidgetWithChildrenShortcut) + self.escapeItem.setText( + translate('OpenLP.SlideController', 'Escape Item')) + + def liveEscape(self): + self.display.setVisible(False) + self.display.videoStop() + + def servicePrevious(self): + Receiver.send_message('servicemanager_previous_item') + + def serviceNext(self): + Receiver.send_message('servicemanager_next_item') + + def screenSizeChanged(self): + """ + Settings dialog has changed the screen size of adjust output and + screen previews. + """ + # rebuild display as screen size changed + self.display = MainDisplay(self, self.image_manager, self.isLive) + self.display.alertTab = self.alertTab + self.display.setup() + 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()) + self.previewSizeChanged() + if self.serviceItem: + self.refreshServiceItem() + + def __addActionsToWidget(self, widget): + widget.addActions([ + self.previousItem, self.nextItem, + self.previousService, self.nextService, + self.escapeItem]) + + def previewSizeChanged(self): + """ + Takes care of the SlidePreview's size. Is called when one of the the + splitters is moved or when the screen size is changed. Note, that this + method is (also) called frequently from the mainwindow *paintEvent*. + """ + if self.ratio < float(self.previewFrame.width()) / float( + self.previewFrame.height()): + # We have to take the height as limit. + max_height = self.previewFrame.height() - self.grid.margin() * 2 + self.slidePreview.setFixedSize(QtCore.QSize(max_height * self.ratio, + max_height)) + else: + # We have to take the width as limit. + max_width = self.previewFrame.width() - self.grid.margin() * 2 + self.slidePreview.setFixedSize(QtCore.QSize(max_width, + max_width / self.ratio)) + # Make sure that the frames have the correct size. + self.previewListWidget.setColumnWidth(0, + self.previewListWidget.viewport().size().width()) + if self.serviceItem: + # Sort out songs, bibles, etc. + if self.serviceItem.is_text(): + self.previewListWidget.resizeRowsToContents() + else: + # Sort out image heights. + width = self.parent.controlSplitter.sizes()[self.split] + for framenumber in range(len(self.serviceItem.get_frames())): + self.previewListWidget.setRowHeight( + framenumber, width / self.ratio) + + def onSongBarHandler(self): + request = unicode(self.sender().text()) + slideno = self.slideList[request] + self.__updatePreviewSelection(slideno) + self.slideSelected() + + def receiveSpinDelay(self, value): + """ + Adjusts the value of the ``delaySpinBox`` to the given one. + """ + self.delaySpinBox.setValue(int(value)) + + def enableToolBar(self, item): + """ + Allows the toolbars to be reconfigured based on Controller Type + and ServiceItem Type + """ + if self.isLive: + self.enableLiveToolBar(item) + else: + self.enablePreviewToolBar(item) + + def enableLiveToolBar(self, item): + """ + Allows the live toolbar to be customised + """ + self.toolbar.setVisible(True) + self.mediabar.setVisible(False) + self.toolbar.makeWidgetsInvisible([u'Song Menu']) + self.toolbar.makeWidgetsInvisible(self.loopList) + self.toogleLoop.setEnabled(False) + self.toolbar.actions[u'Start Loop'].setEnabled(False) + self.toolbar.actions[u'Stop Loop'].setEnabled(False) + self.toolbar.actions[u'Stop Loop'].setVisible(False) + if item.is_text(): + if QtCore.QSettings().value( + self.parent.songsSettingsSection + u'/display songbar', + QtCore.QVariant(True)).toBool() and len(self.slideList) > 0: + self.toolbar.makeWidgetsVisible([u'Song Menu']) + if item.is_capable(ItemCapabilities.AllowsLoop) and \ + len(item.get_frames()) > 1: + self.toolbar.makeWidgetsVisible(self.loopList) + self.toogleLoop.setEnabled(True) + self.toolbar.actions[u'Start Loop'].setEnabled(True) + self.toolbar.actions[u'Stop Loop'].setEnabled(True) + if item.is_media(): + self.toolbar.setVisible(False) + self.mediabar.setVisible(True) + + def enablePreviewToolBar(self, item): + """ + Allows the Preview toolbar to be customised + """ + self.toolbar.setVisible(True) + self.mediabar.setVisible(False) + self.toolbar.makeWidgetsInvisible(self.songEditList) + if item.is_capable(ItemCapabilities.AllowsEdit) and item.from_plugin: + self.toolbar.makeWidgetsVisible(self.songEditList) + elif item.is_media(): + self.toolbar.setVisible(False) + self.mediabar.setVisible(True) + self.volumeSlider.setAudioOutput(self.audio) + + def refreshServiceItem(self): + """ + Method to update the service item if the screen has changed + """ + log.debug(u'refreshServiceItem live = %s' % self.isLive) + if self.serviceItem.is_text() or self.serviceItem.is_image(): + item = self.serviceItem + item.render() + self._processItem(item, self.selectedRow) + + def addServiceItem(self, item): + """ + Method to install the service item into the controller + Called by plugins + """ + log.debug(u'addServiceItem live = %s' % self.isLive) + item.render() + slideno = 0 + if self.songEdit: + slideno = self.selectedRow + self.songEdit = False + self._processItem(item, slideno) + + def replaceServiceManagerItem(self, item): + """ + Replacement item following a remote edit + """ + if item.__eq__(self.serviceItem): + self._processItem(item, self.previewListWidget.currentRow()) + + def addServiceManagerItem(self, item, slideno): + """ + Method to install the service item into the controller and + request the correct toolbar for the plugin. + Called by ServiceManager + """ + log.debug(u'addServiceManagerItem live = %s' % self.isLive) + # If no valid slide number is specified we take the first one. + if slideno == -1: + slideno = 0 + # If service item is the same as the current on only change slide + if item.__eq__(self.serviceItem): + self.__checkUpdateSelectedSlide(slideno) + self.slideSelected() + return + self._processItem(item, slideno) + + def _processItem(self, serviceItem, slideno): + """ + Loads a ServiceItem into the system from ServiceManager + Display the slide number passed + """ + log.debug(u'processManagerItem live = %s' % self.isLive) + self.onStopLoop() + old_item = self.serviceItem + self.serviceItem = serviceItem + if old_item and self.isLive and old_item.is_capable( + ItemCapabilities.ProvidesOwnDisplay): + self._resetBlank() + Receiver.send_message(u'%s_start' % serviceItem.name.lower(), + [serviceItem, self.isLive, self.hideMode(), slideno]) + self.slideList = {} + width = self.parent.controlSplitter.sizes()[self.split] + self.previewListWidget.clear() + self.previewListWidget.setRowCount(0) + self.previewListWidget.setColumnWidth(0, width) + if self.isLive: + self.songMenu.menu().clear() + row = 0 + text = [] + for framenumber, frame in enumerate(self.serviceItem.get_frames()): + self.previewListWidget.setRowCount( + self.previewListWidget.rowCount() + 1) + item = QtGui.QTableWidgetItem() + slideHeight = 0 + if self.serviceItem.is_text(): + if frame[u'verseTag']: + # These tags are already translated. + verse_def = frame[u'verseTag'] + verse_def = u'%s%s' % (verse_def[0], verse_def[1:]) + two_line_def = u'%s\n%s' % (verse_def[0], verse_def[1:]) + row = two_line_def + if self.isLive: + if verse_def not in self.slideList: + self.slideList[verse_def] = framenumber + self.songMenu.menu().addAction(verse_def, + self.onSongBarHandler) + else: + row += 1 + item.setText(frame[u'text']) + else: + label = QtGui.QLabel() + label.setMargin(4) + label.setScaledContents(True) + if self.serviceItem.is_command(): + image = resize_image(frame[u'image'], + self.parent.renderer.width, + self.parent.renderer.height) + else: + # If current slide set background to image + if framenumber == slideno: + self.serviceItem.bg_image_bytes = \ + self.image_manager.get_image_bytes(frame[u'title']) + image = self.image_manager.get_image(frame[u'title']) + label.setPixmap(QtGui.QPixmap.fromImage(image)) + self.previewListWidget.setCellWidget(framenumber, 0, label) + slideHeight = width * self.parent.renderer.screen_ratio + row += 1 + text.append(unicode(row)) + self.previewListWidget.setItem(framenumber, 0, item) + if slideHeight != 0: + self.previewListWidget.setRowHeight(framenumber, slideHeight) + self.previewListWidget.setVerticalHeaderLabels(text) + if self.serviceItem.is_text(): + self.previewListWidget.resizeRowsToContents() + self.previewListWidget.setColumnWidth(0, + self.previewListWidget.viewport().size().width()) + self.__updatePreviewSelection(slideno) + self.enableToolBar(serviceItem) + # Pass to display for viewing. + # Postpone image build, we need to do this later to avoid the theme + # flashing on the screen + if not self.serviceItem.is_image(): + self.display.buildHtml(self.serviceItem) + if serviceItem.is_media(): + self.onMediaStart(serviceItem) + self.slideSelected(True) + self.previewListWidget.setFocus() + if old_item: + # Close the old item after the new one is opened + # This avoids the service theme/desktop flashing on screen + # However opening a new item of the same type will automatically + # close the previous, so make sure we don't close the new one. + if old_item.is_command() and not serviceItem.is_command(): + Receiver.send_message(u'%s_stop' % + old_item.name.lower(), [old_item, self.isLive]) + if old_item.is_media() and not serviceItem.is_media(): + self.onMediaClose() + Receiver.send_message(u'slidecontroller_%s_started' % self.typePrefix, + [serviceItem]) + + def __updatePreviewSelection(self, slideno): + """ + Utility method to update the selected slide in the list. + """ + if slideno > self.previewListWidget.rowCount(): + self.previewListWidget.selectRow( + self.previewListWidget.rowCount() - 1) + else: + self.__checkUpdateSelectedSlide(slideno) + + def onTextRequest(self): + """ + Return the text for the current item in controller + """ + data = [] + if self.serviceItem: + for framenumber, frame in enumerate(self.serviceItem.get_frames()): + dataItem = {} + if self.serviceItem.is_text(): + dataItem[u'tag'] = unicode(frame[u'verseTag']) + dataItem[u'text'] = unicode(frame[u'html']) + else: + dataItem[u'tag'] = unicode(framenumber) + dataItem[u'text'] = u'' + dataItem[u'selected'] = \ + (self.previewListWidget.currentRow() == framenumber) + data.append(dataItem) + Receiver.send_message(u'slidecontroller_%s_text_response' + % self.typePrefix, data) + + # Screen event methods + def onSlideSelectedFirst(self): + """ + Go to the first slide. + """ + if not self.serviceItem: + return + if self.serviceItem.is_command(): + Receiver.send_message(u'%s_first' % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive]) + self.updatePreview() + else: + self.previewListWidget.selectRow(0) + self.slideSelected() + + def onSlideSelectedIndex(self, message): + """ + Go to the requested slide + """ + index = int(message[0]) + if not self.serviceItem: + return + if self.serviceItem.is_command(): + Receiver.send_message(u'%s_slide' % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive, index]) + self.updatePreview() + else: + self.__checkUpdateSelectedSlide(index) + self.slideSelected() + + def mainDisplaySetBackground(self): + """ + Allow the main display to blank the main display at startup time + """ + log.debug(u'mainDisplaySetBackground live = %s' % self.isLive) + display_type = QtCore.QSettings().value( + self.parent.generalSettingsSection + u'/screen blank', + QtCore.QVariant(u'')).toString() + if not self.display.primary: + # Order done to handle initial conversion + if display_type == u'themed': + self.onThemeDisplay(True) + elif display_type == u'hidden': + self.onHideDisplay(True) + else: + self.onBlankDisplay(True) + + def onSlideBlank(self): + """ + Handle the slidecontroller blank event + """ + self.onBlankDisplay(True) + + def onSlideUnblank(self): + """ + Handle the slidecontroller unblank event + """ + self.onBlankDisplay(False) + + def onBlankDisplay(self, checked=None): + """ + Handle the blank screen button actions + """ + if checked is None: + checked = self.blankScreen.isChecked() + log.debug(u'onBlankDisplay %s' % checked) + self.hideMenu.setDefaultAction(self.blankScreen) + self.blankScreen.setChecked(checked) + self.themeScreen.setChecked(False) + self.desktopScreen.setChecked(False) + if checked: + QtCore.QSettings().setValue( + self.parent.generalSettingsSection + u'/screen blank', + QtCore.QVariant(u'blanked')) + else: + QtCore.QSettings().remove( + self.parent.generalSettingsSection + u'/screen blank') + self.blankPlugin() + self.updatePreview() + + def onThemeDisplay(self, checked=None): + """ + Handle the Theme screen button + """ + if checked is None: + checked = self.themeScreen.isChecked() + log.debug(u'onThemeDisplay %s' % checked) + self.hideMenu.setDefaultAction(self.themeScreen) + self.blankScreen.setChecked(False) + self.themeScreen.setChecked(checked) + self.desktopScreen.setChecked(False) + if checked: + QtCore.QSettings().setValue( + self.parent.generalSettingsSection + u'/screen blank', + QtCore.QVariant(u'themed')) + else: + QtCore.QSettings().remove( + self.parent.generalSettingsSection + u'/screen blank') + self.blankPlugin() + self.updatePreview() + + def onHideDisplay(self, checked=None): + """ + Handle the Hide screen button + """ + if checked is None: + checked = self.desktopScreen.isChecked() + log.debug(u'onHideDisplay %s' % checked) + self.hideMenu.setDefaultAction(self.desktopScreen) + self.blankScreen.setChecked(False) + self.themeScreen.setChecked(False) + self.desktopScreen.setChecked(checked) + if checked: + QtCore.QSettings().setValue( + self.parent.generalSettingsSection + u'/screen blank', + QtCore.QVariant(u'hidden')) + else: + QtCore.QSettings().remove( + self.parent.generalSettingsSection + u'/screen blank') + self.hidePlugin(checked) + self.updatePreview() + + def blankPlugin(self): + """ + Blank/Hide the display screen within a plugin if required. + """ + hide_mode = self.hideMode() + log.debug(u'blankPlugin %s ', hide_mode) + if self.serviceItem is not None: + if hide_mode: + if not self.serviceItem.is_command(): + Receiver.send_message(u'maindisplay_hide', hide_mode) + Receiver.send_message(u'%s_blank' + % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive, hide_mode]) + else: + if not self.serviceItem.is_command(): + Receiver.send_message(u'maindisplay_show') + Receiver.send_message(u'%s_unblank' + % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive]) + + def hidePlugin(self, hide): + """ + Tell the plugin to hide the display screen. + """ + log.debug(u'hidePlugin %s ', hide) + if self.serviceItem is not None: + if hide: + Receiver.send_message(u'maindisplay_hide', HideMode.Screen) + Receiver.send_message(u'%s_hide' + % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive]) + else: + if not self.serviceItem.is_command(): + Receiver.send_message(u'maindisplay_show') + Receiver.send_message(u'%s_unblank' + % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive]) + + def onSlideSelected(self, start=False): + """ + Slide selected in controller + """ + self.slideSelected() + + def slideSelected(self, start=False): + """ + Generate the preview when you click on a slide. + if this is the Live Controller also display on the screen + """ + row = self.previewListWidget.currentRow() + self.selectedRow = 0 + if row > -1 and row < self.previewListWidget.rowCount(): + if self.serviceItem.is_command(): + if self.isLive and not start: + Receiver.send_message( + u'%s_slide' % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive, row]) + self.updatePreview() + else: + toDisplay = self.serviceItem.get_rendered_frame(row) + if self.serviceItem.is_text(): + frame = self.display.text(toDisplay) + else: + if start: + self.display.buildHtml(self.serviceItem, toDisplay) + frame = self.display.preview() + else: + frame = self.display.image(toDisplay) + # reset the store used to display first image + self.serviceItem.bg_image_bytes = None + self.slidePreview.setPixmap(QtGui.QPixmap.fromImage(frame)) + self.selectedRow = row + self.__checkUpdateSelectedSlide(row) + Receiver.send_message(u'slidecontroller_%s_changed' % self.typePrefix, + row) + + def onSlideChange(self, row): + """ + The slide has been changed. Update the slidecontroller accordingly + """ + self.__checkUpdateSelectedSlide(row) + self.updatePreview() + Receiver.send_message(u'slidecontroller_%s_changed' % self.typePrefix, + row) + + def updatePreview(self): + """ + This updates the preview frame, for example after changing a slide or + using *Blank to Theme*. + """ + log.debug(u'updatePreview %s ' % self.screens.current[u'primary']) + if not self.screens.current[u'primary'] and self.serviceItem and \ + self.serviceItem.is_capable(ItemCapabilities.ProvidesOwnDisplay): + # Grab now, but try again in a couple of seconds if slide change + # is slow + QtCore.QTimer.singleShot(0.5, self.grabMainDisplay) + QtCore.QTimer.singleShot(2.5, self.grabMainDisplay) + else: + self.slidePreview.setPixmap( + QtGui.QPixmap.fromImage(self.display.preview())) + + def grabMainDisplay(self): + """ + Creates an image of the current screen and updates the preview frame. + """ + winid = QtGui.QApplication.desktop().winId() + rect = self.screens.current[u'size'] + winimg = QtGui.QPixmap.grabWindow(winid, rect.x(), + rect.y(), rect.width(), rect.height()) + self.slidePreview.setPixmap(winimg) + + def onSlideSelectedNext(self): + """ + Go to the next slide. + """ + if not self.serviceItem: + return + Receiver.send_message(u'%s_next' % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive]) + if self.serviceItem.is_command() and self.isLive: + self.updatePreview() + else: + row = self.previewListWidget.currentRow() + 1 + if row == self.previewListWidget.rowCount(): + if QtCore.QSettings().value(self.parent.generalSettingsSection + + u'generalSettingsSection/enable slide loop', QtCore.QVariant(True).toBool): + row = 0 + else: + return + self.__checkUpdateSelectedSlide(row) + self.slideSelected() + + def onSlideSelectedPrevious(self): + """ + Go to the previous slide. + """ + if not self.serviceItem: + return + Receiver.send_message(u'%s_previous' % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive]) + if self.serviceItem.is_command() and self.isLive: + self.updatePreview() + else: + row = self.previewListWidget.currentRow() - 1 + if row == -1: + if QtCore.QSettings().value(self.parent.generalSettingsSection + + u'generalSettingsSection/enable slide loop', QtCore.QVariant(True).toBool): + row = self.previewListWidget.rowCount() - 1 + else: + return + self.__checkUpdateSelectedSlide(row) + self.slideSelected() + + def __checkUpdateSelectedSlide(self, row): + if row + 1 < self.previewListWidget.rowCount(): + self.previewListWidget.scrollToItem( + self.previewListWidget.item(row + 1, 0)) + self.previewListWidget.selectRow(row) + + def onSlideSelectedLast(self): + """ + Go to the last slide. + """ + if not self.serviceItem: + return + Receiver.send_message(u'%s_last' % self.serviceItem.name.lower(), + [self.serviceItem, self.isLive]) + if self.serviceItem.is_command(): + self.updatePreview() + else: + self.previewListWidget.selectRow( + self.previewListWidget.rowCount() - 1) + self.slideSelected() + + def onToggleLoop(self, toggled): + """ + Toggles the loop state. + """ + if self.toolbar.actions[u'Start Loop'].isVisible(): + self.onStartLoop() + else: + self.onStopLoop() + + def onStartLoop(self): + """ + Start the timer loop running and store the timer id + """ + if self.previewListWidget.rowCount() > 1: + self.timer_id = self.startTimer( + int(self.delaySpinBox.value()) * 1000) + self.toolbar.actions[u'Stop Loop'].setVisible(True) + self.toolbar.actions[u'Start Loop'].setVisible(False) + + def onStopLoop(self): + """ + Stop the timer loop running + """ + if self.timer_id != 0: + self.killTimer(self.timer_id) + self.timer_id = 0 + self.toolbar.actions[u'Start Loop'].setVisible(True) + self.toolbar.actions[u'Stop Loop'].setVisible(False) + + def timerEvent(self, event): + """ + If the timer event is for this window select next slide + """ + if event.timerId() == self.timer_id: + self.onSlideSelectedNext() + + def onEditSong(self): + """ + From the preview display requires the service Item to be editied + """ + self.songEdit = True + Receiver.send_message(u'%s_edit' % self.serviceItem.name.lower(), + u'P:%s' % self.serviceItem.edit_id) + + def onGoLiveClick(self): + """ + triggered by clicking the Preview slide items + """ + if QtCore.QSettings().value(u'advanced/double click live', + QtCore.QVariant(False)).toBool(): + self.onGoLive() + + def onGoLive(self): + """ + If preview copy slide item to live + """ + row = self.previewListWidget.currentRow() + if row > -1 and row < self.previewListWidget.rowCount(): + if self.serviceItem.from_service: + Receiver.send_message('servicemanager_preview_live', + u'%s:%s' % (self.serviceItem._uuid, row)) + else: + self.parent.liveController.addServiceManagerItem( + self.serviceItem, row) + + def onMediaStart(self, item): + """ + Respond to the arrival of a media service item + """ + log.debug(u'SlideController onMediaStart') + file = os.path.join(item.get_frame_path(), item.get_frame_title()) + if self.isLive: + self.display.video(file, self.volume) + self.volumeSlider.setValue(self.volume) + else: + self.mediaObject.stop() + self.mediaObject.clearQueue() + self.mediaObject.setCurrentSource(Phonon.MediaSource(file)) + self.seekSlider.setMediaObject(self.mediaObject) + self.seekSlider.show() + self.onMediaPlay() + + def mediaVolume(self): + """ + Respond to the release of Volume Slider + """ + log.debug(u'SlideController mediaVolume') + self.volume = self.volumeSlider.value() + self.display.videoVolume(self.volume) + + def onMediaPause(self): + """ + Respond to the Pause from the media Toolbar + """ + log.debug(u'SlideController onMediaPause') + if self.isLive: + self.display.videoPause() + else: + self.mediaObject.pause() + + def onMediaPlay(self): + """ + Respond to the Play from the media Toolbar + """ + log.debug(u'SlideController onMediaPlay') + if self.isLive: + self.display.videoPlay() + else: + self.slidePreview.hide() + self.video.show() + self.mediaObject.play() + + def onMediaStop(self): + """ + Respond to the Stop from the media Toolbar + """ + log.debug(u'SlideController onMediaStop') + if self.isLive: + self.display.videoStop() + else: + self.mediaObject.stop() + self.video.hide() + self.slidePreview.clear() + self.slidePreview.show() + + def onMediaClose(self): + """ + Respond to a request to close the Video + """ + log.debug(u'SlideController onMediaStop') + if self.isLive: + self.display.resetVideo() + else: + self.mediaObject.stop() + self.mediaObject.clearQueue() + self.video.hide() + self.slidePreview.clear() + self.slidePreview.show() + + def _resetBlank(self): + """ + Used by command items which provide their own displays to reset the + screen hide attributes + """ + hide_mode = self.hideMode() + if hide_mode == HideMode.Blank: + self.onBlankDisplay(True) + elif hide_mode == HideMode.Theme: + self.onThemeDisplay(True) + elif hide_mode == HideMode.Screen: + self.onHideDisplay(True) + else: + self.hidePlugin(False) + + def hideMode(self): + """ + Determine what the hide mode should be according to the blank button + """ + if not self.isLive: + return None + elif self.blankScreen.isChecked(): + return HideMode.Blank + elif self.themeScreen.isChecked(): + return HideMode.Theme + elif self.desktopScreen.isChecked(): + return HideMode.Screen + else: + return None From 9adc2348459284d52343efb471d558a2c67d589c Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Wed, 25 May 2011 07:51:08 +0200 Subject: [PATCH 061/190] Removed code which copied qm files since it was no longer necessary. --- scripts/translation_utils.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/scripts/translation_utils.py b/scripts/translation_utils.py index 8fa8aa5d5..db1788aba 100755 --- a/scripts/translation_utils.py +++ b/scripts/translation_utils.py @@ -290,16 +290,6 @@ def generate_binaries(): else: os.chdir(os.path.abspath(u'..')) run(u'lrelease openlp.pro') - os.chdir(os.path.abspath(u'scripts')) - src_path = os.path.join(os.path.abspath(u'..'), u'resources', u'i18n') - dest_path = os.path.join(os.path.abspath(u'..'), u'resources', u'i18n') - if not os.path.exists(dest_path): - os.makedirs(dest_path) - src_list = os.listdir(src_path) - for file in src_list: - if re.search('.qm$', file): - copy(os.path.join(src_path, u'%s' % file), - os.path.join(dest_path, u'%s' % file)) print_quiet(u' Done.') From 1797848d6ea42e85160cdcc182adf6e7f82d46da Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Wed, 25 May 2011 08:56:33 +0200 Subject: [PATCH 062/190] Updated online help action to use utility functions, and added an icon needed by the utility functions. --- openlp/core/ui/mainwindow.py | 12 +++++------- resources/images/openlp-2.qrc | 1 + resources/images/system_online_help.png | Bin 0 -> 953 bytes 3 files changed, 6 insertions(+), 7 deletions(-) create mode 100644 resources/images/system_online_help.png diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 4e3b115ea..2c90e6d76 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -268,8 +268,10 @@ class Ui_MainWindow(object): self.HelpAboutItem = shortcut_action(mainWindow, u'HelpAboutItem', [QtGui.QKeySequence(u'Ctrl+F1')], self.onHelpAboutItemClicked, u':/system/system_about.png', category=UiStrings().Help) - self.HelpOnlineHelpItem = base_action( - mainWindow, u'HelpOnlineHelpItem', category=UiStrings().Help) + self.HelpOnlineHelpItem = shortcut_action( + mainWindow, u'HelpOnlineHelpItem', [QtGui.QKeySequence(u'F1')], + self.onHelpOnlineHelpClicked, u':/system/system_online_help.png', + category=UiStrings().Help) self.helpWebSiteItem = base_action( mainWindow, u'helpWebSiteItem', category=UiStrings().Help) add_actions(self.FileImportMenu, @@ -416,8 +418,6 @@ class Ui_MainWindow(object): translate('OpenLP.MainWindow', 'More information about OpenLP')) self.HelpOnlineHelpItem.setText( translate('OpenLP.MainWindow', '&Online Help')) - self.HelpOnlineHelpItem.setShortcut( - translate('OpenLP.MainWindow', 'F1')) self.helpWebSiteItem.setText( translate('OpenLP.MainWindow', '&Web Site')) for item in self.LanguageGroup.actions(): @@ -509,8 +509,6 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.ViewThemeManagerItem.setChecked) QtCore.QObject.connect(self.helpWebSiteItem, QtCore.SIGNAL(u'triggered()'), self.onHelpWebSiteClicked) - QtCore.QObject.connect(self.HelpOnlineHelpItem, - QtCore.SIGNAL(u'triggered()'), self.onHelpOnLineHelpClicked) QtCore.QObject.connect(self.ToolsOpenDataFolder, QtCore.SIGNAL(u'triggered()'), self.onToolsOpenDataFolderClicked) QtCore.QObject.connect(self.updateThemeImages, @@ -696,7 +694,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): import webbrowser webbrowser.open_new(u'http://openlp.org/') - def onHelpOnLineHelpClicked(self): + def onHelpOnlineHelpClicked(self): """ Load the online OpenLP manual """ diff --git a/resources/images/openlp-2.qrc b/resources/images/openlp-2.qrc index a32d15940..ba865c8f2 100644 --- a/resources/images/openlp-2.qrc +++ b/resources/images/openlp-2.qrc @@ -113,6 +113,7 @@ clear_shortcut.png system_about.png system_help_contents.png + system_online_help.png system_mediamanager.png system_contribute.png system_servicemanager.png diff --git a/resources/images/system_online_help.png b/resources/images/system_online_help.png new file mode 100644 index 0000000000000000000000000000000000000000..670c0716f6b7ad8188916f43c4ce6607eb76dcbd GIT binary patch literal 953 zcmV;q14jIbP)@AEu!U{b6o>#4 z1W{1Yzz+x%G$0{Cnp9w02ni{Y1uYVPfr1u>B{`q0CI3_WlmbwM+?u5is{)=3PX9q z)X?ar%*;>Hies9wA`p^CZN=7sN06jA+1&esqsvuU=(9hZt_(XG$ul!!#2QirFJG_t(cLKJ`T=8Mn?*7TTU8VnT7FZw!L99r1LShU8fi0xi zNt79iQbX-5;JaUUs617sk%BKRRK_AZATd&)O-i35S=*=+)lSfD>3uyCmemPM(Mqg=>xspwLB)TY@8NE$xgh8Kqod0ocw(z;USmR}2W*0yMOx@^`v z?6*RO^EP9HS*jNY@DpeU5w_8^wpu1=#a}74v?c*sp7&*=*16l>IMq4VAy6sxcFcHx zhLN5mPEt~nAf&~~y}D^_H-C@(&SwBNfHA9)5I0`ao7`+4-Me}D+SB=?;Xbx{&8Kn7 zgZp*XZ$IRp@7JR6)L)G{?G~2?SfW3;00000NkvXXu0mjf7 Date: Wed, 25 May 2011 09:59:51 +0200 Subject: [PATCH 063/190] started to fix camelCase names --- openlp/core/ui/mainwindow.py | 122 +++++++++++++------------- openlp/plugins/alerts/alertsplugin.py | 2 +- 2 files changed, 62 insertions(+), 62 deletions(-) diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 2c90e6d76..bee23e432 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -73,14 +73,14 @@ class Ui_MainWindow(object): mainWindow.setWindowIcon(build_icon(u':/icon/openlp-logo-64x64.png')) mainWindow.setDockNestingEnabled(True) # Set up the main container, which contains all the other form widgets. - self.MainContent = QtGui.QWidget(mainWindow) - self.MainContent.setObjectName(u'MainContent') - self.mainContentLayout = QtGui.QHBoxLayout(self.MainContent) + self.mainContent = QtGui.QWidget(mainWindow) + self.mainContent.setObjectName(u'mainContent') + self.mainContentLayout = QtGui.QHBoxLayout(self.mainContent) self.mainContentLayout.setSpacing(0) self.mainContentLayout.setMargin(0) self.mainContentLayout.setObjectName(u'mainContentLayout') - mainWindow.setCentralWidget(self.MainContent) - self.controlSplitter = QtGui.QSplitter(self.MainContent) + mainWindow.setCentralWidget(self.mainContent) + self.controlSplitter = QtGui.QSplitter(self.mainContent) self.controlSplitter.setOrientation(QtCore.Qt.Horizontal) self.controlSplitter.setObjectName(u'controlSplitter') self.mainContentLayout.addWidget(self.controlSplitter) @@ -94,31 +94,31 @@ class Ui_MainWindow(object): QtCore.QVariant(True)).toBool() self.liveController.panel.setVisible(liveVisible) # Create menu - self.MenuBar = QtGui.QMenuBar(mainWindow) - self.MenuBar.setObjectName(u'MenuBar') - self.FileMenu = QtGui.QMenu(self.MenuBar) - self.FileMenu.setObjectName(u'FileMenu') - self.FileImportMenu = QtGui.QMenu(self.FileMenu) - self.FileImportMenu.setObjectName(u'FileImportMenu') - self.FileExportMenu = QtGui.QMenu(self.FileMenu) - self.FileExportMenu.setObjectName(u'FileExportMenu') + self.menuBar = QtGui.QMenuBar(mainWindow) + self.menuBar.setObjectName(u'menuBar') + self.fileMenu = QtGui.QMenu(self.menuBar) + self.fileMenu.setObjectName(u'fileMenu') + self.fileImportMenu = QtGui.QMenu(self.fileMenu) + self.fileImportMenu.setObjectName(u'fileImportMenu') + self.fileExportMenu = QtGui.QMenu(self.fileMenu) + self.fileExportMenu.setObjectName(u'fileExportMenu') # View Menu - self.viewMenu = QtGui.QMenu(self.MenuBar) + self.viewMenu = QtGui.QMenu(self.menuBar) self.viewMenu.setObjectName(u'viewMenu') - self.ViewModeMenu = QtGui.QMenu(self.viewMenu) - self.ViewModeMenu.setObjectName(u'ViewModeMenu') + self.viewModeMenu = QtGui.QMenu(self.viewMenu) + self.viewModeMenu.setObjectName(u'viewModeMenu') # Tools Menu - self.ToolsMenu = QtGui.QMenu(self.MenuBar) - self.ToolsMenu.setObjectName(u'ToolsMenu') + self.toolsMenu = QtGui.QMenu(self.menuBar) + self.toolsMenu.setObjectName(u'toolsMenu') # Settings Menu - self.SettingsMenu = QtGui.QMenu(self.MenuBar) - self.SettingsMenu.setObjectName(u'SettingsMenu') - self.SettingsLanguageMenu = QtGui.QMenu(self.SettingsMenu) - self.SettingsLanguageMenu.setObjectName(u'SettingsLanguageMenu') + self.settingsMenu = QtGui.QMenu(self.menuBar) + self.settingsMenu.setObjectName(u'settingsMenu') + self.settingsLanguageMenu = QtGui.QMenu(self.settingsMenu) + self.settingsLanguageMenu.setObjectName(u'settingsLanguageMenu') # Help Menu - self.HelpMenu = QtGui.QMenu(self.MenuBar) - self.HelpMenu.setObjectName(u'HelpMenu') - mainWindow.setMenuBar(self.MenuBar) + self.helpMenu = QtGui.QMenu(self.menuBar) + self.helpMenu.setObjectName(u'helpMenu') + mainWindow.setMenuBar(self.menuBar) self.statusBar = QtGui.QStatusBar(mainWindow) self.statusBar.setObjectName(u'statusBar') mainWindow.setStatusBar(self.statusBar) @@ -274,41 +274,41 @@ class Ui_MainWindow(object): category=UiStrings().Help) self.helpWebSiteItem = base_action( mainWindow, u'helpWebSiteItem', category=UiStrings().Help) - add_actions(self.FileImportMenu, + add_actions(self.fileImportMenu, (self.ImportThemeItem, self.ImportLanguageItem)) - add_actions(self.FileExportMenu, + add_actions(self.fileExportMenu, (self.ExportThemeItem, self.ExportLanguageItem)) - self.FileMenuActions = (self.FileNewItem, self.FileOpenItem, + self.fileMenuActions = (self.FileNewItem, self.FileOpenItem, self.FileSaveItem, self.FileSaveAsItem, None, - self.printServiceOrderItem, None, self.FileImportMenu.menuAction(), - self.FileExportMenu.menuAction(), self.FileExitItem) - add_actions(self.ViewModeMenu, (self.ModeDefaultItem, + self.printServiceOrderItem, None, self.fileImportMenu.menuAction(), + self.fileExportMenu.menuAction(), self.FileExitItem) + add_actions(self.viewModeMenu, (self.ModeDefaultItem, self.ModeSetupItem, self.ModeLiveItem)) - add_actions(self.viewMenu, (self.ViewModeMenu.menuAction(), + add_actions(self.viewMenu, (self.viewModeMenu.menuAction(), None, self.ViewMediaManagerItem, self.ViewServiceManagerItem, self.ViewThemeManagerItem, None, self.ViewPreviewPanel, self.ViewLivePanel)) # i18n add Language Actions - add_actions(self.SettingsLanguageMenu, (self.AutoLanguageItem, None)) - add_actions(self.SettingsLanguageMenu, self.LanguageGroup.actions()) - add_actions(self.SettingsMenu, (self.settingsPluginListItem, - self.SettingsLanguageMenu.menuAction(), None, + add_actions(self.settingsLanguageMenu, (self.AutoLanguageItem, None)) + add_actions(self.settingsLanguageMenu, self.LanguageGroup.actions()) + add_actions(self.settingsMenu, (self.settingsPluginListItem, + self.settingsLanguageMenu.menuAction(), None, self.DisplayTagItem, self.SettingsShortcutsItem, self.SettingsConfigureItem)) - add_actions(self.ToolsMenu, (self.ToolsAddToolItem, None)) - add_actions(self.ToolsMenu, (self.ToolsOpenDataFolder, None)) - add_actions(self.ToolsMenu, [self.updateThemeImages]) - add_actions(self.HelpMenu, (self.HelpDocumentationItem, + add_actions(self.toolsMenu, (self.ToolsAddToolItem, None)) + add_actions(self.toolsMenu, (self.ToolsOpenDataFolder, None)) + add_actions(self.toolsMenu, [self.updateThemeImages]) + add_actions(self.helpMenu, (self.HelpDocumentationItem, self.HelpOnlineHelpItem, None, self.helpWebSiteItem, self.HelpAboutItem)) - add_actions(self.MenuBar, (self.FileMenu.menuAction(), - self.viewMenu.menuAction(), self.ToolsMenu.menuAction(), - self.SettingsMenu.menuAction(), self.HelpMenu.menuAction())) + add_actions(self.menuBar, (self.fileMenu.menuAction(), + self.viewMenu.menuAction(), self.toolsMenu.menuAction(), + self.settingsMenu.menuAction(), self.helpMenu.menuAction())) # Initialise the translation self.retranslateUi(mainWindow) self.MediaToolBox.setCurrentIndex(0) # Connect up some signals and slots - QtCore.QObject.connect(self.FileMenu, + QtCore.QObject.connect(self.fileMenu, QtCore.SIGNAL(u'aboutToShow()'), self.updateFileMenu) QtCore.QMetaObject.connectSlotsByName(mainWindow) # Hide the entry, as it does not have any functionality yet. @@ -323,16 +323,16 @@ class Ui_MainWindow(object): """ mainWindow.mainTitle = UiStrings().OLPV2 mainWindow.setWindowTitle(mainWindow.mainTitle) - self.FileMenu.setTitle(translate('OpenLP.MainWindow', '&File')) - self.FileImportMenu.setTitle(translate('OpenLP.MainWindow', '&Import')) - self.FileExportMenu.setTitle(translate('OpenLP.MainWindow', '&Export')) + self.fileMenu.setTitle(translate('OpenLP.MainWindow', '&File')) + self.fileImportMenu.setTitle(translate('OpenLP.MainWindow', '&Import')) + self.fileExportMenu.setTitle(translate('OpenLP.MainWindow', '&Export')) self.viewMenu.setTitle(translate('OpenLP.MainWindow', '&View')) - self.ViewModeMenu.setTitle(translate('OpenLP.MainWindow', 'M&ode')) - self.ToolsMenu.setTitle(translate('OpenLP.MainWindow', '&Tools')) - self.SettingsMenu.setTitle(translate('OpenLP.MainWindow', '&Settings')) - self.SettingsLanguageMenu.setTitle(translate('OpenLP.MainWindow', + self.viewModeMenu.setTitle(translate('OpenLP.MainWindow', 'M&ode')) + self.toolsMenu.setTitle(translate('OpenLP.MainWindow', '&Tools')) + self.settingsMenu.setTitle(translate('OpenLP.MainWindow', '&Settings')) + self.settingsLanguageMenu.setTitle(translate('OpenLP.MainWindow', '&Language')) - self.HelpMenu.setTitle(translate('OpenLP.MainWindow', '&Help')) + self.helpMenu.setTitle(translate('OpenLP.MainWindow', '&Help')) self.mediaManagerDock.setWindowTitle( translate('OpenLP.MainWindow', 'Media Manager')) self.serviceManagerDock.setWindowTitle( @@ -573,11 +573,11 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.pluginManager.hook_media_manager(self.mediaDockManager) # Call the hook method to pull in import menus. log.info(u'hook menus') - self.pluginManager.hook_import_menu(self.FileImportMenu) + self.pluginManager.hook_import_menu(self.fileImportMenu) # Call the hook method to pull in export menus. - self.pluginManager.hook_export_menu(self.FileExportMenu) + self.pluginManager.hook_export_menu(self.fileExportMenu) # Call the hook method to pull in tools menus. - self.pluginManager.hook_tools_menu(self.ToolsMenu) + self.pluginManager.hook_tools_menu(self.toolsMenu) # Call the initialise method to setup plugins. log.info(u'initialise plugins') self.pluginManager.initialise_plugins() @@ -985,13 +985,13 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): """ recentFileCount = QtCore.QSettings().value( u'advanced/recent file count', QtCore.QVariant(4)).toInt()[0] - self.FileMenu.clear() - add_actions(self.FileMenu, self.FileMenuActions[:-1]) + self.fileMenu.clear() + add_actions(self.fileMenu, self.fileMenuActions[:-1]) existingRecentFiles = [recentFile for recentFile in self.recentFiles if QtCore.QFile.exists(recentFile)] recentFilesToDisplay = existingRecentFiles[0:recentFileCount] if recentFilesToDisplay: - self.FileMenu.addSeparator() + self.fileMenu.addSeparator() for fileId, filename in enumerate(recentFilesToDisplay): log.debug('Recent file name: %s', filename) action = base_action(self, u'') @@ -1000,9 +1000,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): action.setData(QtCore.QVariant(filename)) self.connect(action, QtCore.SIGNAL(u'triggered()'), self.ServiceManagerContents.onRecentServiceClicked) - self.FileMenu.addAction(action) - self.FileMenu.addSeparator() - self.FileMenu.addAction(self.FileMenuActions[-1]) + self.fileMenu.addAction(action) + self.fileMenu.addSeparator() + self.fileMenu.addAction(self.fileMenuActions[-1]) def addRecentFile(self, filename): """ diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index 2877b421a..8032ee1e0 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -68,7 +68,7 @@ class AlertsPlugin(Plugin): self.toolsAlertItem.setStatusTip( translate('AlertsPlugin', 'Show an alert message.')) self.toolsAlertItem.setShortcut(u'F7') - self.serviceManager.mainwindow.ToolsMenu.addAction(self.toolsAlertItem) + self.serviceManager.mainwindow.toolsMenu.addAction(self.toolsAlertItem) QtCore.QObject.connect(self.toolsAlertItem, QtCore.SIGNAL(u'triggered()'), self.onAlertsTrigger) self.toolsAlertItem.setVisible(False) From 981c2f8c5b3903ec79d9b5b0f97f110a65ca334a Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Wed, 25 May 2011 10:32:37 +0200 Subject: [PATCH 064/190] more name fixes --- openlp/core/ui/mainwindow.py | 346 +++++++++++++-------------- openlp/core/ui/slidecontroller.py | 2 +- openlp/core/ui/thememanager.py | 2 +- openlp/core/utils/languagemanager.py | 2 +- 4 files changed, 176 insertions(+), 176 deletions(-) diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index bee23e432..b54f7b206 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -135,17 +135,17 @@ class Ui_MainWindow(object): u'mediaManagerDock', u':/system/system_mediamanager.png') self.mediaManagerDock.setStyleSheet(MEDIA_MANAGER_STYLE) # Create the media toolbox - self.MediaToolBox = QtGui.QToolBox(self.mediaManagerDock) - self.MediaToolBox.setObjectName(u'MediaToolBox') - self.mediaManagerDock.setWidget(self.MediaToolBox) + self.mediaToolBox = QtGui.QToolBox(self.mediaManagerDock) + self.mediaToolBox.setObjectName(u'mediaToolBox') + self.mediaManagerDock.setWidget(self.mediaToolBox) mainWindow.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.mediaManagerDock) # Create the service manager self.serviceManagerDock = OpenLPDockWidget(mainWindow, u'serviceManagerDock', u':/system/system_servicemanager.png') - self.ServiceManagerContents = ServiceManager(mainWindow, + self.serviceManagerContents = ServiceManager(mainWindow, self.serviceManagerDock) - self.serviceManagerDock.setWidget(self.ServiceManagerContents) + self.serviceManagerDock.setWidget(self.serviceManagerContents) mainWindow.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.serviceManagerDock) # Create the theme manager @@ -160,75 +160,75 @@ class Ui_MainWindow(object): # Create the menu items action_list = ActionList.get_instance() action_list.add_category(UiStrings().File, CategoryOrder.standardMenu) - self.FileNewItem = shortcut_action(mainWindow, u'FileNewItem', + self.fileNewItem = shortcut_action(mainWindow, u'fileNewItem', [QtGui.QKeySequence(u'Ctrl+N')], - self.ServiceManagerContents.onNewServiceClicked, + self.serviceManagerContents.onNewServiceClicked, u':/general/general_new.png', category=UiStrings().File) - self.FileOpenItem = shortcut_action(mainWindow, u'FileOpenItem', + self.fileOpenItem = shortcut_action(mainWindow, u'fileOpenItem', [QtGui.QKeySequence(u'Ctrl+O')], - self.ServiceManagerContents.onLoadServiceClicked, + self.serviceManagerContents.onLoadServiceClicked, u':/general/general_open.png', category=UiStrings().File) - self.FileSaveItem = shortcut_action(mainWindow, u'FileSaveItem', + self.fileSaveItem = shortcut_action(mainWindow, u'fileSaveItem', [QtGui.QKeySequence(u'Ctrl+S')], - self.ServiceManagerContents.saveFile, + self.serviceManagerContents.saveFile, u':/general/general_save.png', category=UiStrings().File) - self.FileSaveAsItem = shortcut_action(mainWindow, u'FileSaveAsItem', + self.fileSaveAsItem = shortcut_action(mainWindow, u'fileSaveAsItem', [QtGui.QKeySequence(u'Ctrl+Shift+S')], - self.ServiceManagerContents.saveFileAs, category=UiStrings().File) + self.serviceManagerContents.saveFileAs, category=UiStrings().File) self.printServiceOrderItem = shortcut_action(mainWindow, u'printServiceItem', [QtGui.QKeySequence(u'Ctrl+P')], - self.ServiceManagerContents.printServiceOrder, + self.serviceManagerContents.printServiceOrder, category=UiStrings().File) - self.FileExitItem = shortcut_action(mainWindow, u'FileExitItem', + self.fileExitItem = shortcut_action(mainWindow, u'FileExitItem', [QtGui.QKeySequence(u'Alt+F4')], mainWindow.close, u':/system/system_exit.png', category=UiStrings().File) action_list.add_category(UiStrings().Import, CategoryOrder.standardMenu) - self.ImportThemeItem = base_action( - mainWindow, u'ImportThemeItem', UiStrings().Import) - self.ImportLanguageItem = base_action( - mainWindow, u'ImportLanguageItem')#, UiStrings().Import) + self.importThemeItem = base_action( + mainWindow, u'importThemeItem', UiStrings().Import) + self.importLanguageItem = base_action( + mainWindow, u'importLanguageItem')#, UiStrings().Import) action_list.add_category(UiStrings().Export, CategoryOrder.standardMenu) - self.ExportThemeItem = base_action( - mainWindow, u'ExportThemeItem', UiStrings().Export) - self.ExportLanguageItem = base_action( - mainWindow, u'ExportLanguageItem')#, UiStrings().Export) + self.exportThemeItem = base_action( + mainWindow, u'exportThemeItem', UiStrings().Export) + self.exportLanguageItem = base_action( + mainWindow, u'exportLanguageItem')#, UiStrings().Export) action_list.add_category(UiStrings().View, CategoryOrder.standardMenu) - self.ViewMediaManagerItem = shortcut_action(mainWindow, - u'ViewMediaManagerItem', [QtGui.QKeySequence(u'F8')], + self.viewMediaManagerItem = shortcut_action(mainWindow, + u'viewMediaManagerItem', [QtGui.QKeySequence(u'F8')], self.toggleMediaManager, u':/system/system_mediamanager.png', self.mediaManagerDock.isVisible(), UiStrings().View) - self.ViewThemeManagerItem = shortcut_action(mainWindow, - u'ViewThemeManagerItem', [QtGui.QKeySequence(u'F10')], + self.viewThemeManagerItem = shortcut_action(mainWindow, + u'viewThemeManagerItem', [QtGui.QKeySequence(u'F10')], self.toggleThemeManager, u':/system/system_thememanager.png', self.themeManagerDock.isVisible(), UiStrings().View) - self.ViewServiceManagerItem = shortcut_action(mainWindow, - u'ViewServiceManagerItem', [QtGui.QKeySequence(u'F9')], + self.viewServiceManagerItem = shortcut_action(mainWindow, + u'viewServiceManagerItem', [QtGui.QKeySequence(u'F9')], self.toggleServiceManager, u':/system/system_servicemanager.png', self.serviceManagerDock.isVisible(), UiStrings().View) - self.ViewPreviewPanel = shortcut_action(mainWindow, - u'ViewPreviewPanel', [QtGui.QKeySequence(u'F11')], + self.viewPreviewPanel = shortcut_action(mainWindow, + u'viewPreviewPanel', [QtGui.QKeySequence(u'F11')], self.setPreviewPanelVisibility, checked=previewVisible, category=UiStrings().View) - self.ViewLivePanel = shortcut_action(mainWindow, u'ViewLivePanel', + self.viewLivePanel = shortcut_action(mainWindow, u'viewLivePanel', [QtGui.QKeySequence(u'F12')], self.setLivePanelVisibility, checked=liveVisible, category=UiStrings().View) action_list.add_category(UiStrings().ViewMode, CategoryOrder.standardMenu) - self.ModeDefaultItem = checkable_action( - mainWindow, u'ModeDefaultItem', category=UiStrings().ViewMode) - self.ModeSetupItem = checkable_action( - mainWindow, u'ModeLiveItem', category=UiStrings().ViewMode) - self.ModeLiveItem = checkable_action( - mainWindow, u'ModeLiveItem', True, UiStrings().ViewMode) - self.ModeGroup = QtGui.QActionGroup(mainWindow) - self.ModeGroup.addAction(self.ModeDefaultItem) - self.ModeGroup.addAction(self.ModeSetupItem) - self.ModeGroup.addAction(self.ModeLiveItem) - self.ModeDefaultItem.setChecked(True) + self.modeDefaultItem = checkable_action( + mainWindow, u'modeDefaultItem', category=UiStrings().ViewMode) + self.modeSetupItem = checkable_action( + mainWindow, u'modeLiveItem', category=UiStrings().ViewMode) + self.modeLiveItem = checkable_action( + mainWindow, u'modeLiveItem', True, UiStrings().ViewMode) + self.modeGroup = QtGui.QActionGroup(mainWindow) + self.modeGroup.addAction(self.modeDefaultItem) + self.modeGroup.addAction(self.modeSetupItem) + self.modeGroup.addAction(self.modeLiveItem) + self.modeDefaultItem.setChecked(True) action_list.add_category(UiStrings().Tools, CategoryOrder.standardMenu) - self.ToolsAddToolItem = icon_action(mainWindow, u'ToolsAddToolItem', + self.toolsAddToolItem = icon_action(mainWindow, u'toolsAddToolItem', u':/tools/tools_add.png', category=UiStrings().Tools) - self.ToolsOpenDataFolder = icon_action(mainWindow, - u'ToolsOpenDataFolder', u':/general/general_open.png', + self.toolsOpenDataFolder = icon_action(mainWindow, + u'toolsOpenDataFolder', u':/general/general_open.png', category=UiStrings().Tools) self.updateThemeImages = base_action(mainWindow, u'updateThemeImages', category=UiStrings().Tools) @@ -238,84 +238,84 @@ class Ui_MainWindow(object): self.onPluginItemClicked, u':/system/settings_plugin_list.png', category=UiStrings().Settings) # i18n Language Items - self.AutoLanguageItem = checkable_action(mainWindow, - u'AutoLanguageItem', LanguageManager.auto_language) - self.LanguageGroup = QtGui.QActionGroup(mainWindow) - self.LanguageGroup.setExclusive(True) - self.LanguageGroup.setObjectName(u'LanguageGroup') - add_actions(self.LanguageGroup, [self.AutoLanguageItem]) + self.autoLanguageItem = checkable_action(mainWindow, + u'autoLanguageItem', LanguageManager.auto_language) + self.languageGroup = QtGui.QActionGroup(mainWindow) + self.languageGroup.setExclusive(True) + self.languageGroup.setObjectName(u'languageGroup') + add_actions(self.languageGroup, [self.autoLanguageItem]) qmList = LanguageManager.get_qm_list() savedLanguage = LanguageManager.get_language() for key in sorted(qmList.keys()): languageItem = checkable_action( mainWindow, key, qmList[key] == savedLanguage) - add_actions(self.LanguageGroup, [languageItem]) - self.SettingsShortcutsItem = icon_action(mainWindow, - u'SettingsShortcutsItem', + add_actions(self.languageGroup, [languageItem]) + self.settingsShortcutsItem = icon_action(mainWindow, + u'settingsShortcutsItem', u':/system/system_configure_shortcuts.png', category=UiStrings().Settings) - self.DisplayTagItem = icon_action(mainWindow, - u'DisplayTagItem', u':/system/tag_editor.png', + self.displayTagItem = icon_action(mainWindow, + u'displayTagItem', u':/system/tag_editor.png', category=UiStrings().Settings) - self.SettingsConfigureItem = icon_action(mainWindow, - u'SettingsConfigureItem', u':/system/system_settings.png', + self.settingsConfigureItem = icon_action(mainWindow, + u'settingsConfigureItem', u':/system/system_settings.png', category=UiStrings().Settings) action_list.add_category(UiStrings().Help, CategoryOrder.standardMenu) - self.HelpDocumentationItem = icon_action(mainWindow, - u'HelpDocumentationItem', u':/system/system_help_contents.png', + self.helpDocumentationItem = icon_action(mainWindow, + u'helpDocumentationItem', u':/system/system_help_contents.png', category=None)#UiStrings().Help) - self.HelpDocumentationItem.setEnabled(False) - self.HelpAboutItem = shortcut_action(mainWindow, u'HelpAboutItem', + self.helpDocumentationItem.setEnabled(False) + self.helpAboutItem = shortcut_action(mainWindow, u'helpAboutItem', [QtGui.QKeySequence(u'Ctrl+F1')], self.onHelpAboutItemClicked, u':/system/system_about.png', category=UiStrings().Help) - self.HelpOnlineHelpItem = shortcut_action( - mainWindow, u'HelpOnlineHelpItem', [QtGui.QKeySequence(u'F1')], + self.helpOnlineHelpItem = shortcut_action( + mainWindow, u'helpOnlineHelpItem', [QtGui.QKeySequence(u'F1')], self.onHelpOnlineHelpClicked, u':/system/system_online_help.png', category=UiStrings().Help) self.helpWebSiteItem = base_action( mainWindow, u'helpWebSiteItem', category=UiStrings().Help) add_actions(self.fileImportMenu, - (self.ImportThemeItem, self.ImportLanguageItem)) + (self.importThemeItem, self.importLanguageItem)) add_actions(self.fileExportMenu, - (self.ExportThemeItem, self.ExportLanguageItem)) - self.fileMenuActions = (self.FileNewItem, self.FileOpenItem, - self.FileSaveItem, self.FileSaveAsItem, None, + (self.exportThemeItem, self.exportLanguageItem)) + self.fileMenuActions = (self.fileNewItem, self.fileOpenItem, + self.fileSaveItem, self.fileSaveAsItem, None, self.printServiceOrderItem, None, self.fileImportMenu.menuAction(), - self.fileExportMenu.menuAction(), self.FileExitItem) - add_actions(self.viewModeMenu, (self.ModeDefaultItem, - self.ModeSetupItem, self.ModeLiveItem)) + self.fileExportMenu.menuAction(), self.fileExitItem) + add_actions(self.viewModeMenu, (self.modeDefaultItem, + self.modeSetupItem, self.modeLiveItem)) add_actions(self.viewMenu, (self.viewModeMenu.menuAction(), - None, self.ViewMediaManagerItem, self.ViewServiceManagerItem, - self.ViewThemeManagerItem, None, self.ViewPreviewPanel, - self.ViewLivePanel)) + None, self.viewMediaManagerItem, self.viewServiceManagerItem, + self.viewThemeManagerItem, None, self.viewPreviewPanel, + self.viewLivePanel)) # i18n add Language Actions - add_actions(self.settingsLanguageMenu, (self.AutoLanguageItem, None)) - add_actions(self.settingsLanguageMenu, self.LanguageGroup.actions()) + add_actions(self.settingsLanguageMenu, (self.autoLanguageItem, None)) + add_actions(self.settingsLanguageMenu, self.languageGroup.actions()) add_actions(self.settingsMenu, (self.settingsPluginListItem, self.settingsLanguageMenu.menuAction(), None, - self.DisplayTagItem, self.SettingsShortcutsItem, - self.SettingsConfigureItem)) - add_actions(self.toolsMenu, (self.ToolsAddToolItem, None)) - add_actions(self.toolsMenu, (self.ToolsOpenDataFolder, None)) + self.displayTagItem, self.settingsShortcutsItem, + self.settingsConfigureItem)) + add_actions(self.toolsMenu, (self.toolsAddToolItem, None)) + add_actions(self.toolsMenu, (self.toolsOpenDataFolder, None)) add_actions(self.toolsMenu, [self.updateThemeImages]) - add_actions(self.helpMenu, (self.HelpDocumentationItem, - self.HelpOnlineHelpItem, None, self.helpWebSiteItem, - self.HelpAboutItem)) + add_actions(self.helpMenu, (self.helpDocumentationItem, + self.helpOnlineHelpItem, None, self.helpWebSiteItem, + self.helpAboutItem)) add_actions(self.menuBar, (self.fileMenu.menuAction(), self.viewMenu.menuAction(), self.toolsMenu.menuAction(), self.settingsMenu.menuAction(), self.helpMenu.menuAction())) # Initialise the translation self.retranslateUi(mainWindow) - self.MediaToolBox.setCurrentIndex(0) + self.mediaToolBox.setCurrentIndex(0) # Connect up some signals and slots QtCore.QObject.connect(self.fileMenu, QtCore.SIGNAL(u'aboutToShow()'), self.updateFileMenu) QtCore.QMetaObject.connectSlotsByName(mainWindow) # Hide the entry, as it does not have any functionality yet. - self.ToolsAddToolItem.setVisible(False) - self.ImportLanguageItem.setVisible(False) - self.ExportLanguageItem.setVisible(False) - self.HelpDocumentationItem.setVisible(False) + self.toolsAddToolItem.setVisible(False) + self.importLanguageItem.setVisible(False) + self.exportLanguageItem.setVisible(False) + self.helpDocumentationItem.setVisible(False) def retranslateUi(self, mainWindow): """ @@ -339,117 +339,117 @@ class Ui_MainWindow(object): translate('OpenLP.MainWindow', 'Service Manager')) self.themeManagerDock.setWindowTitle( translate('OpenLP.MainWindow', 'Theme Manager')) - self.FileNewItem.setText(translate('OpenLP.MainWindow', '&New')) - self.FileNewItem.setToolTip(UiStrings().NewService) - self.FileNewItem.setStatusTip(UiStrings().CreateService) - self.FileOpenItem.setText(translate('OpenLP.MainWindow', '&Open')) - self.FileOpenItem.setToolTip(UiStrings().OpenService) - self.FileOpenItem.setStatusTip( + self.fileNewItem.setText(translate('OpenLP.MainWindow', '&New')) + self.fileNewItem.setToolTip(UiStrings().NewService) + self.fileNewItem.setStatusTip(UiStrings().CreateService) + self.fileOpenItem.setText(translate('OpenLP.MainWindow', '&Open')) + self.fileOpenItem.setToolTip(UiStrings().OpenService) + self.fileOpenItem.setStatusTip( translate('OpenLP.MainWindow', 'Open an existing service.')) - self.FileSaveItem.setText(translate('OpenLP.MainWindow', '&Save')) - self.FileSaveItem.setToolTip(UiStrings().SaveService) - self.FileSaveItem.setStatusTip( + self.fileSaveItem.setText(translate('OpenLP.MainWindow', '&Save')) + self.fileSaveItem.setToolTip(UiStrings().SaveService) + self.fileSaveItem.setStatusTip( translate('OpenLP.MainWindow', 'Save the current service to disk.')) - self.FileSaveAsItem.setText( + self.fileSaveAsItem.setText( translate('OpenLP.MainWindow', 'Save &As...')) - self.FileSaveAsItem.setToolTip( + self.fileSaveAsItem.setToolTip( translate('OpenLP.MainWindow', 'Save Service As')) - self.FileSaveAsItem.setStatusTip(translate('OpenLP.MainWindow', + self.fileSaveAsItem.setStatusTip(translate('OpenLP.MainWindow', 'Save the current service under a new name.')) self.printServiceOrderItem.setText(UiStrings().PrintServiceOrder) self.printServiceOrderItem.setStatusTip(translate('OpenLP.MainWindow', 'Print the current Service Order.')) - self.FileExitItem.setText( + self.fileExitItem.setText( translate('OpenLP.MainWindow', 'E&xit')) - self.FileExitItem.setStatusTip( + self.fileExitItem.setStatusTip( translate('OpenLP.MainWindow', 'Quit OpenLP')) - self.ImportThemeItem.setText( + self.importThemeItem.setText( translate('OpenLP.MainWindow', '&Theme')) - self.ImportLanguageItem.setText( + self.importLanguageItem.setText( translate('OpenLP.MainWindow', '&Language')) - self.ExportThemeItem.setText( + self.exportThemeItem.setText( translate('OpenLP.MainWindow', '&Theme')) - self.ExportLanguageItem.setText( + self.exportLanguageItem.setText( translate('OpenLP.MainWindow', '&Language')) - self.SettingsShortcutsItem.setText( + self.settingsShortcutsItem.setText( translate('OpenLP.MainWindow', 'Configure &Shortcuts...')) - self.DisplayTagItem.setText( + self.displayTagItem.setText( translate('OpenLP.MainWindow', '&Configure Display Tags')) - self.SettingsConfigureItem.setText( + self.settingsConfigureItem.setText( translate('OpenLP.MainWindow', '&Configure OpenLP...')) - self.ViewMediaManagerItem.setText( + self.viewMediaManagerItem.setText( translate('OpenLP.MainWindow', '&Media Manager')) - self.ViewMediaManagerItem.setToolTip( + self.viewMediaManagerItem.setToolTip( translate('OpenLP.MainWindow', 'Toggle Media Manager')) - self.ViewMediaManagerItem.setStatusTip(translate('OpenLP.MainWindow', + self.viewMediaManagerItem.setStatusTip(translate('OpenLP.MainWindow', 'Toggle the visibility of the media manager.')) - self.ViewThemeManagerItem.setText( + self.viewThemeManagerItem.setText( translate('OpenLP.MainWindow', '&Theme Manager')) - self.ViewThemeManagerItem.setToolTip( + self.viewThemeManagerItem.setToolTip( translate('OpenLP.MainWindow', 'Toggle Theme Manager')) - self.ViewThemeManagerItem.setStatusTip(translate('OpenLP.MainWindow', + self.viewThemeManagerItem.setStatusTip(translate('OpenLP.MainWindow', 'Toggle the visibility of the theme manager.')) - self.ViewServiceManagerItem.setText( + self.viewServiceManagerItem.setText( translate('OpenLP.MainWindow', '&Service Manager')) - self.ViewServiceManagerItem.setToolTip( + self.viewServiceManagerItem.setToolTip( translate('OpenLP.MainWindow', 'Toggle Service Manager')) - self.ViewServiceManagerItem.setStatusTip(translate('OpenLP.MainWindow', + self.viewServiceManagerItem.setStatusTip(translate('OpenLP.MainWindow', 'Toggle the visibility of the service manager.')) - self.ViewPreviewPanel.setText( + self.viewPreviewPanel.setText( translate('OpenLP.MainWindow', '&Preview Panel')) - self.ViewPreviewPanel.setToolTip( + self.viewPreviewPanel.setToolTip( translate('OpenLP.MainWindow', 'Toggle Preview Panel')) - self.ViewPreviewPanel.setStatusTip(translate('OpenLP.MainWindow', + self.viewPreviewPanel.setStatusTip(translate('OpenLP.MainWindow', 'Toggle the visibility of the preview panel.')) - self.ViewLivePanel.setText( + self.viewLivePanel.setText( translate('OpenLP.MainWindow', '&Live Panel')) - self.ViewLivePanel.setToolTip( + self.viewLivePanel.setToolTip( translate('OpenLP.MainWindow', 'Toggle Live Panel')) - self.ViewLivePanel.setStatusTip(translate('OpenLP.MainWindow', + self.viewLivePanel.setStatusTip(translate('OpenLP.MainWindow', 'Toggle the visibility of the live panel.')) self.settingsPluginListItem.setText(translate('OpenLP.MainWindow', '&Plugin List')) self.settingsPluginListItem.setStatusTip( translate('OpenLP.MainWindow', 'List the Plugins')) - self.HelpDocumentationItem.setText( + self.helpDocumentationItem.setText( translate('OpenLP.MainWindow', '&User Guide')) - self.HelpAboutItem.setText(translate('OpenLP.MainWindow', '&About')) - self.HelpAboutItem.setStatusTip( + self.helpAboutItem.setText(translate('OpenLP.MainWindow', '&About')) + self.helpAboutItem.setStatusTip( translate('OpenLP.MainWindow', 'More information about OpenLP')) - self.HelpOnlineHelpItem.setText( + self.helpOnlineHelpItem.setText( translate('OpenLP.MainWindow', '&Online Help')) self.helpWebSiteItem.setText( translate('OpenLP.MainWindow', '&Web Site')) - for item in self.LanguageGroup.actions(): + for item in self.languageGroup.actions(): item.setText(item.objectName()) item.setStatusTip(unicode(translate('OpenLP.MainWindow', 'Set the interface language to %s')) % item.objectName()) - self.AutoLanguageItem.setText( + self.autoLanguageItem.setText( translate('OpenLP.MainWindow', '&Autodetect')) - self.AutoLanguageItem.setStatusTip(translate('OpenLP.MainWindow', + self.autoLanguageItem.setStatusTip(translate('OpenLP.MainWindow', 'Use the system language, if available.')) - self.ToolsAddToolItem.setText( + self.toolsAddToolItem.setText( translate('OpenLP.MainWindow', 'Add &Tool...')) - self.ToolsAddToolItem.setStatusTip(translate('OpenLP.MainWindow', + self.toolsAddToolItem.setStatusTip(translate('OpenLP.MainWindow', 'Add an application to the list of tools.')) - self.ToolsOpenDataFolder.setText( + self.toolsOpenDataFolder.setText( translate('OpenLP.MainWindow', 'Open &Data Folder...')) - self.ToolsOpenDataFolder.setStatusTip(translate('OpenLP.MainWindow', + self.toolsOpenDataFolder.setStatusTip(translate('OpenLP.MainWindow', 'Open the folder where songs, bibles and other data resides.')) self.updateThemeImages.setText( translate('OpenLP.MainWindow', 'Update Theme Images')) self.updateThemeImages.setStatusTip( translate('OpenLP.MainWindow', 'Update the preview images for all ' 'themes.')) - self.ModeDefaultItem.setText( + self.modeDefaultItem.setText( translate('OpenLP.MainWindow', '&Default')) - self.ModeDefaultItem.setStatusTip(translate('OpenLP.MainWindow', + self.modeDefaultItem.setStatusTip(translate('OpenLP.MainWindow', 'Set the view mode back to the default.')) - self.ModeSetupItem.setText(translate('OpenLP.MainWindow', '&Setup')) - self.ModeSetupItem.setStatusTip( + self.modeSetupItem.setText(translate('OpenLP.MainWindow', '&Setup')) + self.modeSetupItem.setStatusTip( translate('OpenLP.MainWindow', 'Set the view mode to Setup.')) - self.ModeLiveItem.setText(translate('OpenLP.MainWindow', '&Live')) - self.ModeLiveItem.setStatusTip( + self.modeLiveItem.setText(translate('OpenLP.MainWindow', '&Live')) + self.modeLiveItem.setStatusTip( translate('OpenLP.MainWindow', 'Set the view mode to Live.')) @@ -492,40 +492,40 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.updateFileMenu() self.pluginForm = PluginForm(self) # Set up signals and slots - QtCore.QObject.connect(self.ImportThemeItem, + QtCore.QObject.connect(self.importThemeItem, QtCore.SIGNAL(u'triggered()'), self.themeManagerContents.onImportTheme) - QtCore.QObject.connect(self.ExportThemeItem, + QtCore.QObject.connect(self.exportThemeItem, QtCore.SIGNAL(u'triggered()'), self.themeManagerContents.onExportTheme) QtCore.QObject.connect(self.mediaManagerDock, QtCore.SIGNAL(u'visibilityChanged(bool)'), - self.ViewMediaManagerItem.setChecked) + self.viewMediaManagerItem.setChecked) QtCore.QObject.connect(self.serviceManagerDock, QtCore.SIGNAL(u'visibilityChanged(bool)'), - self.ViewServiceManagerItem.setChecked) + self.viewServiceManagerItem.setChecked) QtCore.QObject.connect(self.themeManagerDock, QtCore.SIGNAL(u'visibilityChanged(bool)'), - self.ViewThemeManagerItem.setChecked) + self.viewThemeManagerItem.setChecked) QtCore.QObject.connect(self.helpWebSiteItem, QtCore.SIGNAL(u'triggered()'), self.onHelpWebSiteClicked) - QtCore.QObject.connect(self.ToolsOpenDataFolder, + QtCore.QObject.connect(self.toolsOpenDataFolder, QtCore.SIGNAL(u'triggered()'), self.onToolsOpenDataFolderClicked) QtCore.QObject.connect(self.updateThemeImages, QtCore.SIGNAL(u'triggered()'), self.onUpdateThemeImages) - QtCore.QObject.connect(self.DisplayTagItem, + QtCore.QObject.connect(self.displayTagItem, QtCore.SIGNAL(u'triggered()'), self.onDisplayTagItemClicked) - QtCore.QObject.connect(self.SettingsConfigureItem, + QtCore.QObject.connect(self.settingsConfigureItem, QtCore.SIGNAL(u'triggered()'), self.onSettingsConfigureItemClicked) - QtCore.QObject.connect(self.SettingsShortcutsItem, + QtCore.QObject.connect(self.settingsShortcutsItem, QtCore.SIGNAL(u'triggered()'), self.onSettingsShortcutsItemClicked) # i18n set signals for languages - self.LanguageGroup.triggered.connect(LanguageManager.set_language) - QtCore.QObject.connect(self.ModeDefaultItem, + self.languageGroup.triggered.connect(LanguageManager.set_language) + QtCore.QObject.connect(self.modeDefaultItem, QtCore.SIGNAL(u'triggered()'), self.onModeDefaultItemClicked) - QtCore.QObject.connect(self.ModeSetupItem, + QtCore.QObject.connect(self.modeSetupItem, QtCore.SIGNAL(u'triggered()'), self.onModeSetupItemClicked) - QtCore.QObject.connect(self.ModeLiveItem, + QtCore.QObject.connect(self.modeLiveItem, QtCore.SIGNAL(u'triggered()'), self.onModeLiveItemClicked) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'theme_update_global'), self.defaultThemeChanged) @@ -551,13 +551,13 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): # ThemeManager needs to call Renderer self.renderer = Renderer(self.image_manager, self.themeManagerContents) # Define the media Dock Manager - self.mediaDockManager = MediaDockManager(self.MediaToolBox) + self.mediaDockManager = MediaDockManager(self.mediaToolBox) log.info(u'Load Plugins') # make the controllers available to the plugins self.pluginHelpers[u'preview'] = self.previewController self.pluginHelpers[u'live'] = self.liveController self.pluginHelpers[u'renderer'] = self.renderer - self.pluginHelpers[u'service'] = self.ServiceManagerContents + self.pluginHelpers[u'service'] = self.serviceManagerContents self.pluginHelpers[u'settings form'] = self.settingsForm self.pluginHelpers[u'toolbox'] = self.mediaDockManager self.pluginHelpers[u'pluginmanager'] = self.pluginManager @@ -590,7 +590,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): savedPlugin = QtCore.QSettings().value( u'advanced/current media plugin', QtCore.QVariant()).toInt()[0] if savedPlugin != -1: - self.MediaToolBox.setCurrentIndex(savedPlugin) + self.mediaToolBox.setCurrentIndex(savedPlugin) self.settingsForm.postSetUp() # Once all components are initialised load the Themes log.info(u'Load Themes') @@ -598,9 +598,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): Receiver.send_message(u'cursor_normal') def setAutoLanguage(self, value): - self.LanguageGroup.setDisabled(value) + self.languageGroup.setDisabled(value) LanguageManager.auto_language = value - LanguageManager.set_language(self.LanguageGroup.checkedAction()) + LanguageManager.set_language(self.languageGroup.checkedAction()) def versionNotice(self, version): """ @@ -627,21 +627,21 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): args = [] for a in self.arguments: args.extend([a]) - self.ServiceManagerContents.loadFile(unicode(args[0])) + self.serviceManagerContents.loadFile(unicode(args[0])) elif QtCore.QSettings().value( self.generalSettingsSection + u'/auto open', QtCore.QVariant(False)).toBool(): - self.ServiceManagerContents.loadLastFile() + self.serviceManagerContents.loadLastFile() view_mode = QtCore.QSettings().value(u'%s/view mode' % \ self.generalSettingsSection, u'default') if view_mode == u'default': - self.ModeDefaultItem.setChecked(True) + self.modeDefaultItem.setChecked(True) elif view_mode == u'setup': self.setViewMode(True, True, False, True, False) - self.ModeSetupItem.setChecked(True) + self.modeSetupItem.setChecked(True) elif view_mode == u'live': self.setViewMode(False, True, False, False, True) - self.ModeLiveItem.setChecked(True) + self.modeLiveItem.setChecked(True) def firstTime(self): # Import themes if first time @@ -805,10 +805,10 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): """ Hook to close the main window and display windows on exit """ - if self.ServiceManagerContents.isModified(): - ret = self.ServiceManagerContents.saveModifiedService() + if self.serviceManagerContents.isModified(): + ret = self.serviceManagerContents.saveModifiedService() if ret == QtGui.QMessageBox.Save: - if self.ServiceManagerContents.saveFile(): + if self.serviceManagerContents.saveFile(): self.cleanUp() event.accept() else: @@ -843,11 +843,11 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): Runs all the cleanup code before OpenLP shuts down """ # Clean temporary files used by services - self.ServiceManagerContents.cleanUp() + self.serviceManagerContents.cleanUp() if QtCore.QSettings().value(u'advanced/save current plugin', QtCore.QVariant(False)).toBool(): QtCore.QSettings().setValue(u'advanced/current media plugin', - QtCore.QVariant(self.MediaToolBox.currentIndex())) + QtCore.QVariant(self.mediaToolBox.currentIndex())) # Call the cleanup method to shutdown plugins. log.info(u'cleanup plugins') self.pluginManager.finalise_plugins() @@ -925,7 +925,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.previewController.panel.setVisible(visible) QtCore.QSettings().setValue(u'user interface/preview panel', QtCore.QVariant(visible)) - self.ViewPreviewPanel.setChecked(visible) + self.viewPreviewPanel.setChecked(visible) def setLivePanelVisibility(self, visible): """ @@ -940,7 +940,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.liveController.panel.setVisible(visible) QtCore.QSettings().setValue(u'user interface/live panel', QtCore.QVariant(visible)) - self.ViewLivePanel.setChecked(visible) + self.viewLivePanel.setChecked(visible) def loadSettings(self): """ @@ -999,7 +999,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): (fileId + 1, QtCore.QFileInfo(filename).fileName())) action.setData(QtCore.QVariant(filename)) self.connect(action, QtCore.SIGNAL(u'triggered()'), - self.ServiceManagerContents.onRecentServiceClicked) + self.serviceManagerContents.onRecentServiceClicked) self.fileMenu.addAction(action) self.fileMenu.addSeparator() self.fileMenu.addAction(self.fileMenuActions[-1]) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 52f4a9f56..cb93d5851 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -1054,7 +1054,7 @@ class SlideController(QtGui.QWidget): """ From the preview display request the Item to be added to service """ - self.parent.ServiceManagerContents.addServiceItem(self.serviceItem) + self.parent.serviceManagerContents.addServiceItem(self.serviceItem) def onGoLiveClick(self): """ diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 854fc7af1..c98383c9e 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -57,7 +57,7 @@ class ThemeManager(QtGui.QWidget): self.themeForm = ThemeForm(self) self.fileRenameForm = FileRenameForm(self) self.serviceComboBox = \ - self.mainwindow.ServiceManagerContents.themeComboBox + self.mainwindow.serviceManagerContents.themeComboBox # start with the layout self.layout = QtGui.QVBoxLayout(self) self.layout.setSpacing(0) diff --git a/openlp/core/utils/languagemanager.py b/openlp/core/utils/languagemanager.py index 6f1cf64b6..740e11896 100644 --- a/openlp/core/utils/languagemanager.py +++ b/openlp/core/utils/languagemanager.py @@ -123,7 +123,7 @@ class LanguageManager(object): language = u'en' if action: action_name = unicode(action.objectName()) - if action_name == u'AutoLanguageItem': + if action_name == u'autoLanguageItem': LanguageManager.auto_language = True else: LanguageManager.auto_language = False From 98d7cb5fe54359624e4db5e2128256d696d73124 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Wed, 25 May 2011 11:10:57 +0200 Subject: [PATCH 065/190] fixed object name --- openlp/core/ui/slidecontroller.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index cb93d5851..50b24113f 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -185,6 +185,7 @@ class SlideController(QtGui.QWidget): u'Start Loop', u':/media/media_time.png', translate('OpenLP.SlideController', 'Start continuous loop'), self.onStartLoop) + startLoop.setObjectName(u'startLoop') action_list = ActionList.get_instance() action_list.add_action(startLoop, UiStrings().LiveToolbar) stopLoop = self.toolbar.addToolbarButton( @@ -192,6 +193,7 @@ class SlideController(QtGui.QWidget): u'Stop Loop', u':/media/media_stop.png', translate('OpenLP.SlideController', 'Stop continuous loop'), self.onStopLoop) + stopLoop.setObjectName(u'stopLoop') action_list.add_action(stopLoop, UiStrings().LiveToolbar) self.toogleLoop = shortcut_action(self, u'toogleLoop', [QtGui.QKeySequence(u'L')], self.onToggleLoop, From 638a72301ce41232b4d9dcfbfbb4788f32005927 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Wed, 25 May 2011 13:26:18 +0200 Subject: [PATCH 066/190] mention the need of an object name in the doc string --- openlp/core/utils/actions.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/core/utils/actions.py b/openlp/core/utils/actions.py index 4fe53e6e0..0a04889d6 100644 --- a/openlp/core/utils/actions.py +++ b/openlp/core/utils/actions.py @@ -203,7 +203,8 @@ class ActionList(object): Add an action to the list of actions. ``action`` - The action to add (QAction). + The action to add (QAction). **Note**, the action must not have an + empty ``objectName``. ``category`` The category this action belongs to. The category can be a QString From 3a91365e5a18ad819487d7458d02ee28d7598b6d Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Wed, 25 May 2011 15:14:59 +0200 Subject: [PATCH 067/190] fixed space Fixes: https://launchpad.net/bugs/786896 --- openlp/core/lib/serviceitem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 3ffe74ae7..6e3d0aa97 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -187,7 +187,7 @@ class ServiceItem(object): self.service_item_type == ServiceItemType.Command: pass else: - log.error(u'Invalid value renderer :%s' % self.service_item_type) + log.error(u'Invalid value renderer: %s' % self.service_item_type) self.title = clean_tags(self.title) # The footer should never be None, but to be compatible with a few # nightly builds between 1.9.4 and 1.9.5, we have to correct this to From 0c83471ee46af92b8ca1bea64d158b92e333fb11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Wed, 25 May 2011 16:18:03 +0200 Subject: [PATCH 068/190] move some code stop moving bibles to subfolders some fixes --- openlp.pyw | 16 +-- openlp/core/ui/mainwindow.py | 9 ++ openlp/plugins/bibles/bibleplugin.py | 16 ++- .../plugins/bibles/forms/bibleimportform.py | 4 +- .../plugins/bibles/forms/bibleupgradeform.py | 105 +++++++++--------- openlp/plugins/bibles/lib/db.py | 29 +++-- openlp/plugins/bibles/lib/manager.py | 11 +- 7 files changed, 110 insertions(+), 80 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index 34980b1c6..6cf3dd2da 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -37,8 +37,7 @@ from traceback import format_exception from PyQt4 import QtCore, QtGui -from openlp.core.lib import Receiver, check_directory_exists, SettingsManager, \ - translate +from openlp.core.lib import Receiver, check_directory_exists from openlp.core.lib.ui import UiStrings from openlp.core.resources import qInitResources from openlp.core.ui.mainwindow import MainWindow @@ -130,18 +129,7 @@ class OpenLP(QtGui.QApplication): u'general/update check', QtCore.QVariant(True)).toBool() if update_check: VersionThread(self.mainWindow).start() - for plugin in self.mainWindow.pluginManager.plugins: - if plugin.name == u'Bibles' and plugin.isActive() and not \ - len(SettingsManager.get_files( u'bibles/bibles', u'.sqlite')) \ - and SettingsManager.get_files(u'bibles', u'.sqlite'): - if QtGui.QMessageBox.information(self.mainWindow, - translate('OpenLP', 'Information'), translate('OpenLP', - 'Bible format has changed.\nYou have to upgrade your ' - 'existing bibles.\nShould OpenLP upgrade now?'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes | - QtGui.QMessageBox.No)) == QtGui.QMessageBox.Yes: - plugin.onToolsUpgradeItemTriggered() - break + self.mainWindow.appStartup() DelayStartThread(self.mainWindow).start() return self.exec_() diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 09e2ec9e7..8535670fa 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -639,6 +639,15 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.setViewMode(False, True, False, False, True) self.ModeLiveItem.setChecked(True) + def appStartup(self): + # Give all the plugins a chance to perform some tasks at startup + Receiver.send_message(u'openlp_process_events') + for plugin in self.pluginManager.plugins: + if hasattr(plugin, u'appStartup'): + Receiver.send_message(u'openlp_process_events') + plugin.appStartup() + Receiver.send_message(u'openlp_process_events') + def firstTime(self): # Import themes if first time Receiver.send_message(u'openlp_process_events') diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index fd56d9d32..c326d6c00 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -60,7 +60,7 @@ class BiblePlugin(Plugin): #action_list.add_action(self.exportBibleItem, UiStrings().Export) # Set to invisible until we can export bibles self.exportBibleItem.setVisible(False) - if SettingsManager.get_files(u'bibles', u'.sqlite'): + if len(self.manager.old_bible_databases): self.toolsUpgradeItem.setVisible(True) def finalise(self): @@ -76,6 +76,20 @@ class BiblePlugin(Plugin): #action_list.remove_action(self.exportBibleItem, UiStrings().Export) self.exportBibleItem.setVisible(False) + def appStartup(self): + """ + Perform tasks on application starup + """ + if not len(self.manager.db_cache) and \ + len(self.manager.old_bible_databases): + if QtGui.QMessageBox.information(self.formparent, + translate('OpenLP', 'Information'), translate('OpenLP', + 'Bible format has changed.\nYou have to upgrade your ' + 'existing bibles.\nShould OpenLP upgrade now?'), + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes | + QtGui.QMessageBox.No)) == QtGui.QMessageBox.Yes: + self.onToolsUpgradeItemTriggered() + def addImportMenuItem(self, import_menu): self.importBibleItem = base_action(import_menu, u'importBibleItem') self.importBibleItem.setText(translate('BiblesPlugin', '&Bible')) diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index 8e9073775..1df6946dd 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -472,7 +472,7 @@ class BibleImportForm(OpenLPWizard): license_version = unicode(self.field(u'license_version').toString()) license_copyright = \ unicode(self.field(u'license_copyright').toString()) - path = AppLocation.get_section_data_path(u'bibles/bibles') + path = AppLocation.get_section_data_path(u'bibles') if not license_version: critical_error_message_box(UiStrings().EmptyField, translate('BiblesPlugin.ImportWizardForm', @@ -720,5 +720,5 @@ class BibleImportForm(OpenLPWizard): self.progressLabel.setText(translate( 'BiblesPlugin.ImportWizardForm', 'Your Bible import failed.')) del self.manager.db_cache[importer.name] - delete_database(AppLocation.get_section_data_path(u'bibles/bibles'), + delete_database(AppLocation.get_section_data_path(u'bibles'), importer.file) diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index da75d9553..4a8ad488d 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -67,18 +67,12 @@ class BibleUpgradeForm(OpenLPWizard): self.manager = manager self.mediaItem = bibleplugin.mediaItem self.suffix = u'.sqlite' - self.settingsSection = u'bibles/bibles' - self.oldsettingsSection = u'bibles' - self.oldpath = AppLocation.get_section_data_path( - self.oldsettingsSection) - self.newpath = AppLocation.get_section_data_path( + self.settingsSection = u'bibles' + self.path = AppLocation.get_section_data_path( self.settingsSection) - self.files = SettingsManager.get_files(self.oldsettingsSection, - self.suffix) + self.files = self.manager.old_bible_databases self.success = {} self.newbibles = {} - self.maxBibles = len(self.files) - self.stop_import_flag = False OpenLPWizard.__init__(self, parent, bibleplugin, u'bibleUpgradeWizard', u':/wizards/wizard_importbible.bmp') @@ -106,7 +100,8 @@ class BibleUpgradeForm(OpenLPWizard): self.verticalWidget[number].hide() self.formWidget[number].hide() else: - if os.path.exists(os.path.join(self.newpath, filename)): + version_name = unicode(self.versionNameEdit[number].text()) + if self.manager.exists(version_name): self.verticalWidget[number].show() self.formWidget[number].show() @@ -118,7 +113,7 @@ class BibleUpgradeForm(OpenLPWizard): if self.currentPage() == self.progressPage: Receiver.send_message(u'openlp_stop_wizard') for bible in self.newbibles.itervalues(): - delete_database(self.newpath, clean_filename( + delete_database(self.path, clean_filename( bible.get_name())) self.done(QtGui.QDialog.Rejected) @@ -139,7 +134,7 @@ class BibleUpgradeForm(OpenLPWizard): """ for number, filename in enumerate(self.files): if self.success[number]: - delete_file(os.path.join(self.oldpath, filename)) + delete_file(os.path.join(self.path, filename)) def customInit(self): """ @@ -152,10 +147,6 @@ class BibleUpgradeForm(OpenLPWizard): """ Set up the signals used in the bible importer. """ - for number, filename in enumerate(self.files): - QtCore.QObject.connect(self.checkBox[number], - QtCore.SIGNAL(u'stateChanged(int)'), - self.onCheckBoxIndexChanged) QtCore.QObject.connect(self.finishButton, QtCore.SIGNAL(u'clicked()'), self.onFinishButton) @@ -195,24 +186,24 @@ class BibleUpgradeForm(OpenLPWizard): self.formWidget = {} self.formLayoutAttention = {} for number, filename in enumerate(self.files): - bible = OldBibleDB(self.mediaItem, path=self.oldpath, file=filename) + bible = OldBibleDB(self.mediaItem, path=self.path, file=filename) self.checkBox[number] = QtGui.QCheckBox(self.scrollAreaContents) - checkBoxName = u'checkBox['+unicode(number)+u']' + checkBoxName = u'checkBox[%d]' % number self.checkBox[number].setObjectName(checkBoxName) self.checkBox[number].setText(bible.get_name()) self.checkBox[number].setCheckState(QtCore.Qt.Checked) self.formLayout.addWidget(self.checkBox[number]) self.verticalWidget[number] = QtGui.QWidget(self.scrollAreaContents) - verticalWidgetName = u'verticalWidget['+unicode(number)+u']' + verticalWidgetName = u'verticalWidget[%d]' % number self.verticalWidget[number].setObjectName(verticalWidgetName) self.horizontalLayout[number] = QtGui.QHBoxLayout( self.verticalWidget[number]) self.horizontalLayout[number].setContentsMargins(25, 0, 0, 0) - horizontalLayoutName = u'horizontalLayout['+unicode(number)+u']' + horizontalLayoutName = u'horizontalLayout[%d]' % number self.horizontalLayout[number].setObjectName(horizontalLayoutName) self.versionInfoPixmap[number] = QtGui.QLabel( self.verticalWidget[number]) - versionInfoPixmapName = u'versionInfoPixmap['+unicode(number)+u']' + versionInfoPixmapName = u'versionInfoPixmap[%d]' % number self.versionInfoPixmap[number].setObjectName(versionInfoPixmapName) self.versionInfoPixmap[number].setPixmap(QtGui.QPixmap( u':/bibles/bibles_upgrade_alert.png')) @@ -221,7 +212,7 @@ class BibleUpgradeForm(OpenLPWizard): self.versionInfoPixmap[number]) self.versionInfoLabel[number] = QtGui.QLabel( self.verticalWidget[number]) - versionInfoLabelName = u'versionInfoLabel['+unicode(number)+u']' + versionInfoLabelName = u'versionInfoLabel[%d]' % number self.versionInfoLabel[number].setObjectName(versionInfoLabelName) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred) @@ -234,13 +225,12 @@ class BibleUpgradeForm(OpenLPWizard): self.versionInfoLabel[number]) self.formLayout.addWidget(self.verticalWidget[number]) self.formWidget[number] = QtGui.QWidget(self.scrollAreaContents) - formWidgetName = u'formWidget['+unicode(number)+u']' + formWidgetName = u'formWidget[%d]' % number self.formWidget[number].setObjectName(formWidgetName) self.formLayoutAttention[number] = QtGui.QFormLayout( self.formWidget[number]) self.formLayoutAttention[number].setContentsMargins(25, 0, 0, 5) - formLayoutAttentionName = u'formLayoutAttention['+unicode(number)+\ - u']' + formLayoutAttentionName = u'formLayoutAttention[%d]' % number self.formLayoutAttention[number].setObjectName( formLayoutAttentionName) self.versionNameLabel[number] = QtGui.QLabel( @@ -255,6 +245,10 @@ class BibleUpgradeForm(OpenLPWizard): QtGui.QFormLayout.FieldRole, self.versionNameEdit[number]) self.versionNameEdit[number].setText(bible.get_name()) self.formLayout.addWidget(self.formWidget[number]) + #Set up the Signal for the checkbox + QtCore.QObject.connect(self.checkBox[number], + QtCore.SIGNAL(u'stateChanged(int)'), + self.onCheckBoxIndexChanged) self.spacerItem = QtGui.QSpacerItem(20, 5, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.formLayout.addItem(self.spacerItem) @@ -329,7 +323,7 @@ class BibleUpgradeForm(OpenLPWizard): if not self.checkBox[number].checkState() == QtCore.Qt.Checked: continue version_name = unicode(self.versionNameEdit[number].text()) - oldbible = OldBibleDB(self.mediaItem, path=self.oldpath, + oldbible = OldBibleDB(self.mediaItem, path=self.path, file=filename) oldname = oldbible.get_name() if not version_name: @@ -348,18 +342,28 @@ class BibleUpgradeForm(OpenLPWizard): 'uncheck.')) self.versionNameEdit[number].setFocus() return False - elif os.path.exists(os.path.join(self.newpath, filename)) and \ - version_name == oldname: - critical_error_message_box( - translate('BiblesPlugin.UpgradeWizardForm', + elif os.path.exists(os.path.join(self.path, clean_filename( + version_name))) and version_name == oldname: + newfilename = u'old_database_%s' % filename + if not os.path.exists(os.path.join(self.path, + newfilename)): + os.rename(os.path.join(self.path, filename), + os.path.join(self.path, newfilename)) + self.files[number] = newfilename + continue + else: + critical_error_message_box( + translate('BiblesPlugin.UpgradeWizardForm', 'Bible Exists'), - translate('BiblesPlugin.UpgradeWizardForm', - 'This Bible already exists. Please upgrade ' - 'a different Bible, delete the existing one or ' - 'uncheck.')) - self.versionNameEdit[number].setFocus() - return False - elif os.path.exists(os.path.join(self.newpath, + translate('BiblesPlugin.UpgradeWizardForm', + 'This Bible already exists. Please upgrade ' + 'a different Bible, delete the existing one or ' + 'uncheck.')) + self.verticalWidget[number].show() + self.formWidget[number].show() + self.versionNameEdit[number].setFocus() + return False + elif os.path.exists(os.path.join(self.path, clean_filename(version_name))): critical_error_message_box( translate('BiblesPlugin.UpgradeWizardForm', @@ -385,15 +389,16 @@ class BibleUpgradeForm(OpenLPWizard): self.success.clear() self.newbibles.clear() self.clearScrollArea() - self.files = SettingsManager.get_files(self.oldsettingsSection, - self.suffix) + self.files = self.manager.old_bible_databases self.addScrollArea() - self.customSignals() self.retranslateUi() self.maxBibles = len(self.files) for number, filename in enumerate(self.files): self.checkBox[number].setCheckState(QtCore.Qt.Checked) - if os.path.exists(os.path.join(self.newpath, filename)): + oldbible = OldBibleDB(self.mediaItem, path=self.path, + file=filename) + oldname = oldbible.get_name() + if self.manager.exists(oldname): self.verticalWidget[number].show() self.formWidget[number].show() else: @@ -440,11 +445,11 @@ class BibleUpgradeForm(OpenLPWizard): if not self.checkBox[biblenumber].checkState() == QtCore.Qt.Checked: continue self.progressBar.reset() - oldbible = OldBibleDB(self.mediaItem, path=self.oldpath, + oldbible = OldBibleDB(self.mediaItem, path=self.path, file=filename) name = oldbible.get_name() if name is None: - delete_file(os.path.join(self.oldpath, filename)) + delete_file(os.path.join(self.path, filename)) self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\nFailed')) % @@ -456,9 +461,9 @@ class BibleUpgradeForm(OpenLPWizard): 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\nImporting ...')) % (number + 1, self.maxBibles, name)) - if os.path.exists(os.path.join(self.newpath, filename)): + if os.path.exists(os.path.join(self.path, filename)): name = unicode(self.versionNameEdit[biblenumber].text()) - self.newbibles[number] = BibleDB(self.mediaItem, path=self.oldpath, + self.newbibles[number] = BibleDB(self.mediaItem, path=self.path, name=name) metadata = oldbible.get_metadata() webbible = False @@ -488,7 +493,7 @@ class BibleUpgradeForm(OpenLPWizard): u'name: "%s" failed' % ( meta_data[u'download source'], meta_data[u'download name'])) - delete_database(self.newpath, + delete_database(self.path, clean_filename(self.newbibles[number].get_name())) del self.newbibles[number] critical_error_message_box( @@ -517,7 +522,7 @@ class BibleUpgradeForm(OpenLPWizard): if not language_id: log.exception(u'Upgrading from "%s" '\ 'failed' % filename) - delete_database(self.newpath, + delete_database(self.path, clean_filename(self.newbibles[number].get_name())) del self.newbibles[number] self.incrementProgressBar(unicode(translate( @@ -543,7 +548,7 @@ class BibleUpgradeForm(OpenLPWizard): u'name: "%s" aborted by user' % ( meta_data[u'download source'], meta_data[u'download name'])) - delete_database(self.newpath, + delete_database(self.path, clean_filename(self.newbibles[number].get_name())) del self.newbibles[number] bible_failed = True @@ -559,7 +564,7 @@ class BibleUpgradeForm(OpenLPWizard): if not language_id: log.exception(u'Importing books from "%s" '\ 'failed' % name) - delete_database(self.newpath, + delete_database(self.path, clean_filename(self.newbibles[number].get_name())) del self.newbibles[number] self.incrementProgressBar(unicode(translate( @@ -585,7 +590,7 @@ class BibleUpgradeForm(OpenLPWizard): if not book_ref_id: log.exception(u'Importing books from %s " '\ 'failed - aborted by user' % name) - delete_database(self.newpath, + delete_database(self.path, clean_filename(self.newbibles[number].get_name())) del self.newbibles[number] bible_failed = True diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 0bbaaaf1b..9ece16500 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -62,18 +62,18 @@ class Verse(BaseModel): """ pass -def clean_filename(old_filename): +def clean_filename(filename): """ Clean up the version name of the Bible and convert it into a valid file name. - ``old_filename`` + ``filename`` The "dirty" file name or version name. """ - 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'_') - return old_filename + u'.sqlite' + if not isinstance(filename, unicode): + filename = unicode(filename, u'utf-8') + filename = re.sub(r'[^\w]+', u'_', filename).strip(u'_') + return filename + u'.sqlite' def init_schema(url): """ @@ -160,7 +160,7 @@ class BibleDB(QtCore.QObject, Manager): self.file = clean_filename(self.name) if u'file' in kwargs: self.file = kwargs[u'file'] - Manager.__init__(self, u'bibles/bibles', init_schema, self.file) + Manager.__init__(self, u'bibles', init_schema, self.file) if u'file' in kwargs: self.get_name() if u'path' in kwargs: @@ -487,6 +487,16 @@ class BibleDB(QtCore.QObject, Manager): self.create_meta(u'language_id', language_id) return language_id + def find_old_database(self): + """ + Returns true if it is an old bible database. + """ + try: + columns = self.session.query(Book).all() + except: + return True + return False + def dump_bible(self): """ Utility debugging method to dump the contents of a bible. @@ -863,12 +873,9 @@ class AlternativeBookNamesDB(QtCore.QObject, Manager): database doesn't exist. """ if AlternativeBookNamesDB.cursor is None: - check_directory_exists(os.path.join(AppLocation.get_directory( - AppLocation.DataDir), u'bibles', u'resources')) filepath = os.path.join( AppLocation.get_directory(AppLocation.DataDir), u'bibles', - u'resources', u'alternative_book_names.sqlite') - log.debug(u'Filepath: %s' % filepath) + u'alternative_book_names.sqlite') if not os.path.exists(filepath): #create new DB, create table alternative_book_names AlternativeBookNamesDB.conn = sqlite3.connect(filepath) diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index ee5491878..12490ba24 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -33,7 +33,7 @@ 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.db import BibleDB, BibleMeta +from openlp.plugins.bibles.lib.db import BibleDB, BibleMeta, OldBibleDB from csvbible import CSVBible from http import HTTPBible from opensong import OpenSongBible @@ -120,7 +120,7 @@ class BibleManager(object): """ log.debug(u'Bible Initialising') self.parent = parent - self.settingsSection = u'bibles/bibles' + self.settingsSection = u'bibles' self.web = u'Web' self.db_cache = None self.path = AppLocation.get_section_data_path(self.settingsSection) @@ -140,8 +140,11 @@ class BibleManager(object): """ log.debug(u'Reload bibles') files = SettingsManager.get_files(self.settingsSection, self.suffix) + if u'alternative_book_names.sqlite' in files: + files.remove(u'alternative_book_names.sqlite') log.debug(u'Bible Files %s', files) self.db_cache = {} + self.old_bible_databases = [] for filename in files: bible = BibleDB(self.parent, path=self.path, file=filename) name = bible.get_name() @@ -149,6 +152,10 @@ class BibleManager(object): if name is None: delete_file(os.path.join(self.path, filename)) continue + # Find old database versions + if bible.find_old_database(): + self.old_bible_databases.append(filename) + continue log.debug(u'Bible Name: "%s"', name) self.db_cache[name] = bible # Look to see if lazy load bible exists and get create getter. From e8cdba44bece32d6dcbc42f1c8cad548af9e636b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Wed, 25 May 2011 16:52:46 +0200 Subject: [PATCH 069/190] small clean up --- openlp/plugins/bibles/bibleplugin.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index 75432a0e9..16607d569 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -29,8 +29,7 @@ import logging from PyQt4 import QtCore, QtGui -from openlp.core.lib import Plugin, StringContent, build_icon, translate, \ - SettingsManager +from openlp.core.lib import Plugin, StringContent, build_icon, translate from openlp.core.lib.ui import base_action, UiStrings from openlp.core.utils.actions import ActionList from openlp.plugins.bibles.lib import BibleManager, BiblesTab, BibleMediaItem From 6f0bdad784c4c50a05dd25586671ec89eef41ba4 Mon Sep 17 00:00:00 2001 From: M2j Date: Wed, 25 May 2011 20:47:13 +0200 Subject: [PATCH 070/190] all lower() for theme sorting to consider Windows --- openlp/core/ui/thememanager.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index c432b0706..38a00f1a1 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -463,7 +463,10 @@ class ThemeManager(QtGui.QWidget): QtCore.QVariant(theme.theme_name)) self.configUpdated() files = SettingsManager.get_files(self.settingsSection, u'.png') - files.sort(key=lambda filename: unicode(filename), cmp=locale.strcoll) + # 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) # now process the file list of png files for name in files: # check to see file is in theme root directory From 175d6cebb24d168931c1161b9e06d7462aa21fcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Wed, 25 May 2011 21:13:37 +0200 Subject: [PATCH 071/190] add Bible Name to LanguageDialog renamed "Importing" to "Upgrading" and "Choose" to "Select" fixed traceback while textsearch removed unnecessary code --- openlp/plugins/bibles/bibleplugin.py | 5 ++--- .../plugins/bibles/forms/bibleimportform.py | 1 - .../plugins/bibles/forms/bibleupgradeform.py | 21 ++++++++++--------- openlp/plugins/bibles/forms/booknamedialog.py | 6 +++--- openlp/plugins/bibles/forms/booknameform.py | 2 +- openlp/plugins/bibles/forms/languagedialog.py | 6 +++--- openlp/plugins/bibles/forms/languageform.py | 9 ++++++-- openlp/plugins/bibles/lib/db.py | 13 ++++++------ openlp/plugins/bibles/lib/manager.py | 2 +- 9 files changed, 35 insertions(+), 30 deletions(-) diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index 16607d569..4d43ab76d 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -80,8 +80,7 @@ class BiblePlugin(Plugin): """ Perform tasks on application starup """ - if not len(self.manager.db_cache) and \ - len(self.manager.old_bible_databases): + if len(self.manager.old_bible_databases): if QtGui.QMessageBox.information(self.formparent, translate('OpenLP', 'Information'), translate('OpenLP', 'Bible format has changed.\nYou have to upgrade your ' @@ -114,7 +113,7 @@ class BiblePlugin(Plugin): The actual **Tools** menu item, so that your actions can use it as their parent. """ - log.info(u'add tools menu') + log.debug(u'add tools menu') self.toolsUpgradeItem = QtGui.QAction(tools_menu) self.toolsUpgradeItem.setObjectName(u'toolsUpgradeItem') self.toolsUpgradeItem.setText( diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index 81db1597d..cd793f7e7 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -31,7 +31,6 @@ import csv import logging import os import os.path -import re from PyQt4 import QtCore, QtGui diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index 4a8ad488d..3ddf66f10 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -305,7 +305,8 @@ class BibleUpgradeForm(OpenLPWizard): self.versionInfoLabel[number].setText( translate('BiblesPlugin.UpgradeWizardForm', 'This ' 'Bible still exists. Please change the name or uncheck it.')) - self.progressPage.setTitle(WizardStrings.Importing) + self.progressPage.setTitle(translate('BiblesPlugin.UpgradeWizardForm', + 'Upgrading')) self.progressPage.setSubTitle( translate('BiblesPlugin.UpgradeWizardForm', 'Please wait while your Bibles are upgraded.')) @@ -459,7 +460,7 @@ class BibleUpgradeForm(OpenLPWizard): continue self.progressLabel.setText(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', - 'Upgrading Bible %s of %s: "%s"\nImporting ...')) % + 'Upgrading Bible %s of %s: "%s"\nUpgrading ...')) % (number + 1, self.maxBibles, name)) if os.path.exists(os.path.join(self.path, filename)): name = unicode(self.versionNameEdit[biblenumber].text()) @@ -489,7 +490,7 @@ class BibleUpgradeForm(OpenLPWizard): handler = BSExtract(proxy_server) books = handler.get_books_from_http(meta_data[u'download name']) if not books: - log.exception(u'Importing books from %s - download '\ + log.exception(u'Upgrading books from %s - download '\ u'name: "%s" failed' % ( meta_data[u'download source'], meta_data[u'download name'])) @@ -518,7 +519,7 @@ class BibleUpgradeForm(OpenLPWizard): self.newbibles[number].create_meta(u'language_id', language_id) else: - language_id = self.newbibles[number].get_language() + language_id = self.newbibles[number].get_language(name) if not language_id: log.exception(u'Upgrading from "%s" '\ 'failed' % filename) @@ -539,12 +540,12 @@ class BibleUpgradeForm(OpenLPWizard): self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\n' - 'Importing %s ...')) % + 'Upgrading %s ...')) % (number+1, self.maxBibles, name, book)) book_ref_id = self.newbibles[number].\ get_book_ref_id_by_name(book, len(books), language_id) if not book_ref_id: - log.exception(u'Importing books from %s - download '\ + log.exception(u'Upgrading books from %s - download '\ u'name: "%s" aborted by user' % ( meta_data[u'download source'], meta_data[u'download name'])) @@ -560,9 +561,9 @@ class BibleUpgradeForm(OpenLPWizard): language_id = self.newbibles[number].get_object(BibleMeta, u'language_id') if not language_id: - language_id = self.newbibles[number].get_language() + language_id = self.newbibles[number].get_language(name) if not language_id: - log.exception(u'Importing books from "%s" '\ + log.exception(u'Upgrading books from "%s" '\ 'failed' % name) delete_database(self.path, clean_filename(self.newbibles[number].get_name())) @@ -582,13 +583,13 @@ class BibleUpgradeForm(OpenLPWizard): self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\n' - 'Importing %s ...')) % + 'Upgrading %s ...')) % (number+1, self.maxBibles, name, book[u'name'])) book_ref_id = self.newbibles[number].\ get_book_ref_id_by_name(book[u'name'], len(books), language_id) if not book_ref_id: - log.exception(u'Importing books from %s " '\ + log.exception(u'Upgrading books from %s " '\ 'failed - aborted by user' % name) delete_database(self.path, clean_filename(self.newbibles[number].get_name())) diff --git a/openlp/plugins/bibles/forms/booknamedialog.py b/openlp/plugins/bibles/forms/booknamedialog.py index 20e96b922..632007013 100644 --- a/openlp/plugins/bibles/forms/booknamedialog.py +++ b/openlp/plugins/bibles/forms/booknamedialog.py @@ -100,12 +100,12 @@ class Ui_BookNameDialog(object): def retranslateUi(self, bookNameDialog): bookNameDialog.setWindowTitle( - translate('BiblesPlugin.BookNameDialog', 'Choose Book')) + translate('BiblesPlugin.BookNameDialog', 'Select Book')) self.headlineLabel.setText( - translate('BiblesPlugin.BookNameDialog', 'Choose Book:')) + translate('BiblesPlugin.BookNameDialog', 'Select Book:')) self.infoLabel.setText(translate('BiblesPlugin.BookNameDialog', 'The following books cannot be clearly attributed. \n' - 'Please choose which book it is.')) + 'Please select which book it is.')) self.requestLabel.setText(translate('BiblesPlugin.BookNameDialog', 'Book:')) self.infoLabelTestaments.setText(translate( diff --git a/openlp/plugins/bibles/forms/booknameform.py b/openlp/plugins/bibles/forms/booknameform.py index 425e20e41..fdb383a8c 100644 --- a/openlp/plugins/bibles/forms/booknameform.py +++ b/openlp/plugins/bibles/forms/booknameform.py @@ -116,7 +116,7 @@ class BookNameForm(QDialog, Ui_BookNameDialog): if self.requestComboBox.currentText() == u'': critical_error_message_box( message=translate('BiblesPlugin.BookNameForm', - 'You need to choose a book.')) + 'You need to select a book.')) self.requestComboBox.setFocus() return False else: diff --git a/openlp/plugins/bibles/forms/languagedialog.py b/openlp/plugins/bibles/forms/languagedialog.py index 7f3580279..0edcb74d8 100644 --- a/openlp/plugins/bibles/forms/languagedialog.py +++ b/openlp/plugins/bibles/forms/languagedialog.py @@ -85,10 +85,10 @@ class Ui_LanguageDialog(object): def retranslateUi(self, languageDialog): languageDialog.setWindowTitle( - translate('BiblesPlugin.LanguageDialog', 'Choose Language')) + translate('BiblesPlugin.LanguageDialog', 'Select Language')) self.headlineLabel.setText( - translate('BiblesPlugin.LanguageDialog', 'Choose Language:')) + translate('BiblesPlugin.LanguageDialog', 'Select Language:')) self.infoLabel.setText(translate('BiblesPlugin.LanguageDialog', - 'Please choose the Bible\'s language')) + 'Please select the Bible\'s language')) self.requestLabel.setText(translate('BiblesPlugin.languageDialog', 'Language:')) diff --git a/openlp/plugins/bibles/forms/languageform.py b/openlp/plugins/bibles/forms/languageform.py index 6235c6385..0e2c3f003 100644 --- a/openlp/plugins/bibles/forms/languageform.py +++ b/openlp/plugins/bibles/forms/languageform.py @@ -52,8 +52,13 @@ class LanguageForm(QDialog, Ui_LanguageDialog): QDialog.__init__(self, parent) self.setupUi(self) - def exec_(self): + def exec_(self, bible_name): self.requestComboBox.addItem(u'') + if bible_name: + self.infoLabel.setText(unicode(translate( + 'BiblesPlugin.LanguageDialog', + 'Please select the language for Bible:\n"%s"')) % + bible_name) items = BiblesResourcesDB.get_languages() for item in items: self.requestComboBox.addItem(item[u'name']) @@ -63,7 +68,7 @@ class LanguageForm(QDialog, Ui_LanguageDialog): if self.requestComboBox.currentText() == u'': critical_error_message_box( message=translate('BiblesPlugin.LanguageForm', - 'You need to choose a language.')) + 'You need to select a language.')) self.requestComboBox.setFocus() return False else: diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 8902593ca..7278da42f 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -396,7 +396,7 @@ class BibleDB(QtCore.QObject, Manager): .all() verse_list.extend(verses) else: - log.debug(u'OpenLP failed to find book %s', book) + log.debug(u'OpenLP failed to find book with id "%s"', book_id) if show_error: critical_error_message_box( translate('BiblesPlugin', 'No Book Found'), @@ -466,10 +466,10 @@ class BibleDB(QtCore.QObject, Manager): else: return count - def get_language(self): + def get_language(self, bible_name=None): """ If no language is given it calls a dialog window where the user could - choose the bible language. + select the bible language. Return the language id of a bible. ``book`` @@ -479,7 +479,7 @@ class BibleDB(QtCore.QObject, Manager): from openlp.plugins.bibles.forms import LanguageForm language = None language_form = LanguageForm(self.wizard) - if language_form.exec_(): + if language_form.exec_(bible_name): language = unicode(language_form.requestComboBox.currentText()) if not language: return False @@ -488,9 +488,10 @@ class BibleDB(QtCore.QObject, Manager): self.create_meta(u'language_id', language_id) return language_id - def find_old_database(self): + def is_old_database(self): """ - Returns true if it is an old bible database. + Returns ``True`` if it is a bible database, which has been created + prior to 1.9.6. """ try: columns = self.session.query(Book).all() diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 6b854eb44..7086c02c5 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -154,7 +154,7 @@ class BibleManager(object): delete_file(os.path.join(self.path, filename)) continue # Find old database versions - if bible.find_old_database(): + if bible.is_old_database(): self.old_bible_databases.append(filename) continue log.debug(u'Bible Name: "%s"', name) From 0f98c4fd8fe74481a2b2694262d73811769408e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Wed, 25 May 2011 22:20:17 +0200 Subject: [PATCH 072/190] change behaviour if "Cancel" button is pushed. --- .../plugins/bibles/forms/bibleupgradeform.py | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index 3ddf66f10..b210b7c95 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -110,12 +110,7 @@ class BibleUpgradeForm(OpenLPWizard): Stop the wizard on cancel button, close button or ESC key. """ log.debug(u'Wizard cancelled by user') - if self.currentPage() == self.progressPage: - Receiver.send_message(u'openlp_stop_wizard') - for bible in self.newbibles.itervalues(): - delete_database(self.path, clean_filename( - bible.get_name())) - self.done(QtGui.QDialog.Rejected) + self.stop_import_flag = True def onCurrentIdChanged(self, pageId): """ @@ -133,7 +128,7 @@ class BibleUpgradeForm(OpenLPWizard): Some cleanup while finishing """ for number, filename in enumerate(self.files): - if self.success[number]: + if number in self.success and self.success[number] == True: delete_file(os.path.join(self.path, filename)) def customInit(self): @@ -440,6 +435,7 @@ class BibleUpgradeForm(OpenLPWizard): number = 0 for biblenumber, filename in enumerate(self.files): if self.stop_import_flag: + bible_failed = True break bible_failed = False self.success[biblenumber] = False @@ -536,6 +532,7 @@ class BibleUpgradeForm(OpenLPWizard): self.progressBar.setMaximum(len(books)) for book in books: if self.stop_import_flag: + bible_failed = True break self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', @@ -579,6 +576,7 @@ class BibleUpgradeForm(OpenLPWizard): self.progressBar.setMaximum(len(books)) for book in books: if self.stop_import_flag: + bible_failed = True break self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', @@ -624,15 +622,17 @@ class BibleUpgradeForm(OpenLPWizard): 'Upgrading Bible %s of %s: "%s"\nFailed')) % (number+1, self.maxBibles, name), self.progressBar.maximum()-self.progressBar.value()) + delete_database(self.path, + clean_filename(self.newbibles[number].get_name())) number += 1 self.mediaItem.reloadBibles() successful_import = 0 failed_import = 0 - for number, success in self.success.iteritems(): - if success == True: + for number, filename in enumerate(self.files): + #for number, success in self.success.iteritems(): + if number in self.success and self.success[number] == True: successful_import += 1 - elif success == False and self.checkBox[number].checkState() == \ - QtCore.Qt.Checked: + elif self.checkBox[number].checkState() == QtCore.Qt.Checked: failed_import += 1 if failed_import > 0: failed_import_text = unicode(translate( From 4399fc108f18000715ec6ee8caa7b50f601ad21f Mon Sep 17 00:00:00 2001 From: Gerald Britton Date: Wed, 25 May 2011 17:38:32 -0400 Subject: [PATCH 073/190] Fixed a silent error when OpenOffice fails to open a file.\ Also, added the file name to the exception log and made the exception explicit --- openlp/plugins/songs/lib/oooimport.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/songs/lib/oooimport.py b/openlp/plugins/songs/lib/oooimport.py index f570f33d3..a03a36121 100644 --- a/openlp/plugins/songs/lib/oooimport.py +++ b/openlp/plugins/songs/lib/oooimport.py @@ -80,6 +80,10 @@ class OooImport(SongImport): if self.document: self.process_ooo_document() self.close_ooo_file() + else: + self.log_error(self.filepath) + else: + self.log_error(self.filepath) self.close_ooo() def process_ooo_document(self): @@ -160,8 +164,8 @@ class OooImport(SongImport): else: self.import_wizard.incrementProgressBar( u'Processing file ' + filepath, 0) - except: - log.exception("open_ooo_file failed") + except AttributeError: + log.exception("open_ooo_file failed: %s", url) return def close_ooo_file(self): From 0a5155b822891e3e7cecceb434b68e4c2c91e1a4 Mon Sep 17 00:00:00 2001 From: Josh Miller Date: Wed, 25 May 2011 20:11:56 -0400 Subject: [PATCH 074/190] Final changes to enabling looping of slides now it works --- openlp/core/ui/slidecontroller.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 4a0a3bf39..90c7abf85 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -937,12 +937,12 @@ class SlideController(QtGui.QWidget): self.updatePreview() else: row = self.previewListWidget.currentRow() + 1 + enable_loop = QtCore.QSettings().value(self.parent.generalSettingsSection + u'/enable slide loop', QtCore.QVariant(True)).toBool() if row == self.previewListWidget.rowCount(): - if QtCore.QSettings().value(self.parent.generalSettingsSection - + u'generalSettingsSection/enable slide loop', QtCore.QVariant(True).toBool): + if enable_loop: row = 0 else: - return + pass self.__checkUpdateSelectedSlide(row) self.slideSelected() @@ -959,11 +959,11 @@ class SlideController(QtGui.QWidget): else: row = self.previewListWidget.currentRow() - 1 if row == -1: - if QtCore.QSettings().value(self.parent.generalSettingsSection - + u'generalSettingsSection/enable slide loop', QtCore.QVariant(True).toBool): + enable_loop = QtCore.QSettings().value(self.parent.generalSettingsSection + u'/enable slide loop', QtCore.QVariant(True)).toBool() + if enable_loop: row = self.previewListWidget.rowCount() - 1 else: - return + row = 0 self.__checkUpdateSelectedSlide(row) self.slideSelected() From 4f857f89216733c15bb74a0a127f145fe04975e7 Mon Sep 17 00:00:00 2001 From: Stevan Pettit Date: Wed, 25 May 2011 23:34:42 -0400 Subject: [PATCH 075/190] modified: openlp/plugins/custom/forms/editcustomform.py openlp/plugins/custom/lib/mediaitem.py openlp/plugins/songs/forms/editsongform.py openlp/plugins/songs/lib/mediaitem.py --- openlp/plugins/custom/forms/editcustomform.py | 2 +- openlp/plugins/custom/lib/mediaitem.py | 2 +- openlp/plugins/songs/forms/editsongform.py | 6 ++---- openlp/plugins/songs/lib/mediaitem.py | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index 64147e874..e8b43d3ab 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -116,7 +116,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): log.debug(u'accept') if self.saveCustom(): Receiver.send_message(u'custom_set_autoselect_item', - self.customSlide.title) + self.customSlide.id) Receiver.send_message(u'custom_load_list') QtGui.QDialog.accept(self) diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 64ddf2374..e3741ae84 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -147,7 +147,7 @@ class CustomMediaItem(MediaManagerItem): QtCore.Qt.UserRole, QtCore.QVariant(custom_slide.id)) self.listView.addItem(custom_name) # Auto-select the item if name has been set - if custom_slide.title == self.autoSelectItem: + if custom_slide.id == self.autoSelectItem: self.listView.setCurrentItem(custom_name) def onNewClick(self): diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 8411aa488..f66bc15ad 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -696,9 +696,9 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.clearCaches() if self._validate_song(): self.saveSong() - Receiver.send_message(u'songs_set_autoselect_item', - unicode(self.titleEdit.text())) + Receiver.send_message(u'songs_set_autoselect_item',self.song.id) Receiver.send_message(u'songs_load_list') + self.song = None QtGui.QDialog.accept(self) def saveSong(self, preview=False): @@ -756,8 +756,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.song.topics.append(self.manager.get_object(Topic, topicId)) clean_song(self.manager, self.song) self.manager.save_object(self.song) - if not preview: - self.song = None def _processLyrics(self): """ diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 7ea1658fc..4b88d81c3 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -242,7 +242,7 @@ class SongMediaItem(MediaManagerItem): song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id)) self.listView.addItem(song_name) # Auto-select the item if name has been set - if song.title == self.autoSelectItem : + if song.id == self.autoSelectItem : self.listView.setCurrentItem(song_name) def displayResultsAuthor(self, searchresults): From 38000b5e5615bf8475cbee8978c7b56b71567dcf Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Thu, 26 May 2011 08:23:22 +0200 Subject: [PATCH 076/190] Give the media items the ability to do something when they are "focused". Make the search edits on the Songs, Bibles and Custom media items focus when the item is selected. --- openlp/core/lib/mediamanageritem.py | 7 +++++++ openlp/core/ui/mainwindow.py | 8 ++++++++ openlp/plugins/bibles/lib/mediaitem.py | 7 +++++++ openlp/plugins/custom/lib/mediaitem.py | 3 +++ openlp/plugins/songs/lib/mediaitem.py | 3 +++ 5 files changed, 28 insertions(+) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 00ec3a88a..01d9eb961 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -431,6 +431,13 @@ class MediaManagerItem(QtGui.QWidget): raise NotImplementedError(u'MediaManagerItem.onDeleteClick needs to ' u'be defined by the plugin') + def onFocus(self): + """ + Run when a tab in the media manager gains focus. This gives the media + item a chance to focus any elements it wants to. + """ + pass + def generateSlideData(self, serviceItem, item=None, xmlVersion=False): raise NotImplementedError(u'MediaManagerItem.generateSlideData needs ' u'to be defined by the plugin') diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index b54f7b206..249867f4a 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -537,6 +537,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): QtCore.SIGNAL(u'config_screen_changed'), self.screenChanged) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'maindisplay_status_text'), self.showStatusMessage) + # Media Manager + QtCore.QObject.connect(self.mediaToolBox, + QtCore.SIGNAL(u'currentChanged(int)'), self.onMediaToolBoxChanged) Receiver.send_message(u'cursor_busy') # Simple message boxes QtCore.QObject.connect(Receiver.get_receiver(), @@ -602,6 +605,11 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): LanguageManager.auto_language = value LanguageManager.set_language(self.languageGroup.checkedAction()) + def onMediaToolBoxChanged(self, index): + widget = self.mediaToolBox.widget(index) + if widget: + widget.onFocus() + def versionNotice(self, version): """ Notifies the user that a newer version of OpenLP is available. diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index e2aa86d8c..99437d7f2 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -273,6 +273,12 @@ class BibleMediaItem(MediaManagerItem): QtCore.SIGNAL(u'currentChanged(int)'), self.onSearchTabBarCurrentChanged) + def onFocus(self): + if self.quickTab.isVisible(): + self.quickSearchEdit.setFocus() + else: + self.advancedBookComboBox.setFocus() + def configUpdated(self): log.debug(u'configUpdated') if QtCore.QSettings().value(self.settingsSection + u'/second bibles', @@ -463,6 +469,7 @@ class BibleMediaItem(MediaManagerItem): else: self.quickTab.setVisible(False) self.advancedTab.setVisible(True) + self.advancedBookComboBox.setFocus() def onLockButtonToggled(self, checked): if checked: diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 64ddf2374..499961152 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -199,6 +199,9 @@ class CustomMediaItem(MediaManagerItem): for row in row_list: self.listView.takeItem(row) + def onFocus(self): + self.searchTextEdit.setFocus() + def generateSlideData(self, service_item, item=None, xmlVersion=False): raw_slides = [] raw_footer = [] diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 7ea1658fc..acce12d54 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -125,6 +125,9 @@ class SongMediaItem(MediaManagerItem): QtCore.SIGNAL(u'searchTypeChanged(int)'), self.onSearchTextButtonClick) + def onFocus(self): + self.searchTextEdit.setFocus() + def configUpdated(self): self.searchAsYouType = QtCore.QSettings().value( self.settingsSection + u'/search as type', From aae9724f349bdd6ab21b1888f25e2007c493ffc5 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Thu, 26 May 2011 08:45:22 +0200 Subject: [PATCH 078/190] allow html tags to be translated Fixes: https://launchpad.net/bugs/787552 --- openlp/core/lib/__init__.py | 52 ---------------------- openlp/core/lib/displaytags.py | 74 +++++++++++++++++++++++++++++--- openlp/core/ui/displaytagform.py | 16 ++++--- 3 files changed, 78 insertions(+), 64 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index e65271e03..d040244f7 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -36,58 +36,6 @@ from PyQt4 import QtCore, QtGui log = logging.getLogger(__name__) -base_html_expands = [] - -# Hex Color tags from http://www.w3schools.com/html/html_colornames.asp -base_html_expands.append({u'desc': u'Red', u'start tag': u'{r}', - u'start html': u'', - u'end tag': u'{/r}', u'end html': u'', u'protected': True}) -base_html_expands.append({u'desc': u'Black', u'start tag': u'{b}', - u'start html': u'', - u'end tag': u'{/b}', u'end html': u'', u'protected': True}) -base_html_expands.append({u'desc': u'Blue', u'start tag': u'{bl}', - u'start html': u'', - u'end tag': u'{/bl}', u'end html': u'', u'protected': True}) -base_html_expands.append({u'desc': u'Yellow', u'start tag': u'{y}', - u'start html': u'', - u'end tag': u'{/y}', u'end html': u'', u'protected': True}) -base_html_expands.append({u'desc': u'Green', u'start tag': u'{g}', - u'start html': u'', - u'end tag': u'{/g}', u'end html': u'', u'protected': True}) -base_html_expands.append({u'desc': u'Pink', u'start tag': u'{pk}', - u'start html': u'', - u'end tag': u'{/pk}', u'end html': u'', u'protected': True}) -base_html_expands.append({u'desc': u'Orange', u'start tag': u'{o}', - u'start html': u'', - u'end tag': u'{/o}', u'end html': u'', u'protected': True}) -base_html_expands.append({u'desc': u'Purple', u'start tag': u'{pp}', - u'start html': u'', - u'end tag': u'{/pp}', u'end html': u'', u'protected': True}) -base_html_expands.append({u'desc': u'White', u'start tag': u'{w}', - u'start html': u'', - u'end tag': u'{/w}', u'end html': u'', u'protected': True}) -base_html_expands.append({u'desc': u'Superscript', u'start tag': u'{su}', - u'start html': u'', u'end tag': u'{/su}', u'end html': u'', - u'protected': True}) -base_html_expands.append({u'desc': u'Subscript', u'start tag': u'{sb}', - u'start html': u'', u'end tag': u'{/sb}', u'end html': u'', - u'protected': True}) -base_html_expands.append({u'desc': u'Paragraph', u'start tag': u'{p}', - u'start html': u'

    ', u'end tag': u'{/p}', u'end html': u'

    ', - u'protected': True}) -base_html_expands.append({u'desc': u'Bold', u'start tag': u'{st}', - u'start html': u'', u'end tag': u'{/st}', u'end html': u'', - u'protected': True}) -base_html_expands.append({u'desc': u'Italics', u'start tag': u'{it}', - u'start html': u'', u'end tag': u'{/it}', u'end html': u'', - u'protected': True}) -base_html_expands.append({u'desc': u'Underline', u'start tag': u'{u}', - u'start html': u'', - u'end tag': u'{/u}', u'end html': u'', u'protected': True}) -base_html_expands.append({u'desc': u'Break', u'start tag': u'{br}', - u'start html': u'
    ', u'end tag': u'', u'end html': u'', - u'protected': True}) - def translate(context, text, comment=None, encoding=QtCore.QCoreApplication.CodecForTr, n=-1, translate=QtCore.QCoreApplication.translate): diff --git a/openlp/core/lib/displaytags.py b/openlp/core/lib/displaytags.py index 38112f661..3404455f7 100644 --- a/openlp/core/lib/displaytags.py +++ b/openlp/core/lib/displaytags.py @@ -28,7 +28,7 @@ Provide Html Tag management and Display Tag access class """ -from openlp.core.lib import base_html_expands +from openlp.core.lib import translate class DisplayTags(object): """ @@ -50,15 +50,77 @@ class DisplayTags(object): Resets the html_expands list. """ DisplayTags.html_expands = [] - for html in base_html_expands: - DisplayTags.html_expands.append(html) + base_tags = [] + # Append the base tags. + # Hex Color tags from http://www.w3schools.com/html/html_colornames.asp + base_tags.append({u'desc': translate('OpenLP.DisplayTags', 'Red'), + u'start tag': u'{r}', + u'start html': u'', + u'end tag': u'{/r}', u'end html': u'', u'protected': True}) + base_tags.append({u'desc': translate('OpenLP.DisplayTags', 'Black'), + u'start tag': u'{b}', + u'start html': u'', + u'end tag': u'{/b}', u'end html': u'', u'protected': True}) + base_tags.append({u'desc': translate('OpenLP.DisplayTags', 'Blue'), + u'start tag': u'{bl}', + u'start html': u'', + u'end tag': u'{/bl}', u'end html': u'', u'protected': True}) + base_tags.append({u'desc': translate('OpenLP.DisplayTags', 'Yellow'), + u'start tag': u'{y}', + u'start html': u'', + u'end tag': u'{/y}', u'end html': u'', u'protected': True}) + base_tags.append({u'desc': translate('OpenLP.DisplayTags', 'Green'), + u'start tag': u'{g}', + u'start html': u'', + u'end tag': u'{/g}', u'end html': u'', u'protected': True}) + base_tags.append({u'desc': translate('OpenLP.DisplayTags', 'Pink'), + u'start tag': u'{pk}', + u'start html': u'', + u'end tag': u'{/pk}', u'end html': u'', u'protected': True}) + base_tags.append({u'desc': translate('OpenLP.DisplayTags', 'Orange'), + u'start tag': u'{o}', + u'start html': u'', + u'end tag': u'{/o}', u'end html': u'', u'protected': True}) + base_tags.append({u'desc': translate('OpenLP.DisplayTags', 'Purple'), + u'start tag': u'{pp}', + u'start html': u'', + u'end tag': u'{/pp}', u'end html': u'', u'protected': True}) + base_tags.append({u'desc': translate('OpenLP.DisplayTags', 'White'), + u'start tag': u'{w}', + u'start html': u'', + u'end tag': u'{/w}', u'end html': u'', u'protected': True}) + base_tags.append({ + u'desc': translate('OpenLP.DisplayTags', 'Superscript'), + u'start tag': u'{su}', u'start html': u'', + u'end tag': u'{/su}', u'end html': u'', u'protected': True}) + base_tags.append({u'desc': translate('OpenLP.DisplayTags', 'Subscript'), + u'start tag': u'{sb}', u'start html': u'', + u'end tag': u'{/sb}', u'end html': u'', u'protected': True}) + base_tags.append({u'desc': translate('OpenLP.DisplayTags', 'Paragraph'), + u'start tag': u'{p}', u'start html': u'

    ', u'end tag': u'{/p}', + u'end html': u'

    ', u'protected': True}) + base_tags.append({u'desc': translate('OpenLP.DisplayTags', 'Bold'), + u'start tag': u'{st}', u'start html': u'', + u'end tag': u'{/st}', u'end html': u'', + u'protected': True}) + base_tags.append({u'desc': translate('OpenLP.DisplayTags', 'Italics'), + u'start tag': u'{it}', u'start html': u'', u'end tag': u'{/it}', + u'end html': u'', u'protected': True}) + base_tags.append({u'desc': translate('OpenLP.DisplayTags', 'Underline'), + u'start tag': u'{u}', + u'start html': u'', + u'end tag': u'{/u}', u'end html': u'', u'protected': True}) + base_tags.append({u'desc': translate('OpenLP.DisplayTags', 'Break'), + u'start tag': u'{br}', u'start html': u'
    ', u'end tag': u'', + u'end html': u'', u'protected': True}) + DisplayTags.add_html_tags(base_tags) @staticmethod - def add_html_tag(tag): + def add_html_tags(tags): """ - Add a new tag to the list + Add a list of tags to the list """ - DisplayTags.html_expands.append(tag) + DisplayTags.html_expands.extend(tags) @staticmethod def remove_html_tag(tag_id): diff --git a/openlp/core/ui/displaytagform.py b/openlp/core/ui/displaytagform.py index 213f6e2e5..fc872c86e 100644 --- a/openlp/core/ui/displaytagform.py +++ b/openlp/core/ui/displaytagform.py @@ -87,8 +87,7 @@ class DisplayTagForm(QtGui.QDialog, Ui_DisplayTagDialog): if user_expands_string: user_tags = cPickle.loads(user_expands_string) # If we have some user ones added them as well - for t in user_tags: - DisplayTags.add_html_tag(t) + DisplayTags.add_html_tags(user_tags) def onRowSelected(self): """ @@ -128,10 +127,15 @@ class DisplayTagForm(QtGui.QDialog, Ui_DisplayTagDialog): 'Tag "n" already defined.')) return # Add new tag to list - tag = {u'desc': u'New Item', u'start tag': u'{n}', - u'start html': u'', u'end tag': u'{/n}', - u'end html': u'', u'protected': False} - DisplayTags.add_html_tag(tag) + tag = { + u'desc': translate('OpenLP.DisplayTagTab', 'New Tag'), + u'start tag': u'{n}', + u'start html': translate('OpenLP.DisplayTagTab', ''), + u'end tag': u'{/n}', + u'end html': translate('OpenLP.DisplayTagTab', ''), + u'protected': False + } + DisplayTags.add_html_tags([tag]) self._resetTable() # Highlight new row self.tagTableWidget.selectRow(self.tagTableWidget.rowCount() - 1) From 29305104617dee05043d96b7a16b344d7ba644a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Thu, 26 May 2011 09:00:40 +0200 Subject: [PATCH 079/190] change languageform like Raoul suggest --- openlp/plugins/bibles/forms/languagedialog.py | 94 +++++++++---------- openlp/plugins/bibles/forms/languageform.py | 15 +-- openlp/plugins/bibles/lib/db.py | 2 +- 3 files changed, 51 insertions(+), 60 deletions(-) diff --git a/openlp/plugins/bibles/forms/languagedialog.py b/openlp/plugins/bibles/forms/languagedialog.py index 0edcb74d8..5c1325a54 100644 --- a/openlp/plugins/bibles/forms/languagedialog.py +++ b/openlp/plugins/bibles/forms/languagedialog.py @@ -27,68 +27,58 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import translate -from openlp.core.lib.ui import create_accept_reject_button_box class Ui_LanguageDialog(object): def setupUi(self, languageDialog): - languageDialog.setObjectName(u'LanugageDialog') - languageDialog.resize(400, 175) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, - QtGui.QSizePolicy.MinimumExpanding) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(languageDialog.sizePolicy() - .hasHeightForWidth()) - languageDialog.setSizePolicy(sizePolicy) - self.widget = QtGui.QWidget(languageDialog) - self.widget.setGeometry(QtCore.QRect(10, 15, 381, 151)) - self.widget.setObjectName(u'widget') - self.verticalLayout = QtGui.QVBoxLayout(self.widget) - self.verticalLayout.setObjectName(u'verticalLayout') - self.headlineLabel = QtGui.QLabel(self.widget) - font = QtGui.QFont() - font.setFamily(u'Arial') - font.setPointSize(11) - font.setWeight(75) - font.setBold(True) - self.headlineLabel.setFont(font) - self.headlineLabel.setObjectName(u'HeadlineLabel') - self.verticalLayout.addWidget(self.headlineLabel) - self.infoLabel = QtGui.QLabel(self.widget) - self.infoLabel.setObjectName(u'InfoLabel') - self.verticalLayout.addWidget(self.infoLabel) - self.formLayout = QtGui.QFormLayout() - self.formLayout.setObjectName(u'formLayout') - self.requestLabel = QtGui.QLabel(self.widget) - self.requestLabel.setObjectName(u'RequestLabel') - self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, - self.requestLabel) - self.requestComboBox = QtGui.QComboBox(self.widget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, + languageDialog.setObjectName(u'languageDialog') + languageDialog.resize(400, 165) + self.languageLayout = QtGui.QVBoxLayout(languageDialog) + self.languageLayout.setSpacing(8) + self.languageLayout.setMargin(8) + self.languageLayout.setObjectName(u'languageLayout') + self.bibleLabel = QtGui.QLabel(languageDialog) + self.bibleLabel.setObjectName(u'bibleLabel') + self.languageLayout.addWidget(self.bibleLabel) + self.infoLabel = QtGui.QLabel(languageDialog) + self.infoLabel.setWordWrap(True) + self.infoLabel.setObjectName(u'infoLabel') + self.languageLayout.addWidget(self.infoLabel) + self.languageHBoxLayout = QtGui.QHBoxLayout() + self.languageHBoxLayout.setSpacing(8) + self.languageHBoxLayout.setObjectName(u'languageHBoxLayout') + self.languageLabel = QtGui.QLabel(languageDialog) + self.languageLabel.setObjectName(u'languageLabel') + self.languageHBoxLayout.addWidget(self.languageLabel) + self.languageComboBox = QtGui.QComboBox(languageDialog) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.requestComboBox.sizePolicy() - .hasHeightForWidth()) - self.requestComboBox.setSizePolicy(sizePolicy) - self.requestComboBox.setObjectName(u'RequestComboBox') - self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, - self.requestComboBox) - self.verticalLayout.addLayout(self.formLayout) - spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, - QtGui.QSizePolicy.Expanding) - self.verticalLayout.addItem(spacerItem) - self.formLayout.addWidget( - create_accept_reject_button_box(languageDialog)) + sizePolicy.setHeightForWidth( + self.languageComboBox.sizePolicy().hasHeightForWidth()) + self.languageComboBox.setSizePolicy(sizePolicy) + self.languageComboBox.setObjectName(u'languageComboBox') + self.languageHBoxLayout.addWidget(self.languageComboBox) + self.languageLayout.addLayout(self.languageHBoxLayout) + self.buttonBox = QtGui.QDialogButtonBox(languageDialog) + self.buttonBox.setOrientation(QtCore.Qt.Horizontal) + self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel| + QtGui.QDialogButtonBox.Ok) + self.buttonBox.setObjectName(u'buttonBox') + self.languageLayout.addWidget(self.buttonBox) + self.retranslateUi(languageDialog) - QtCore.QMetaObject.connectSlotsByName(languageDialog) + QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'accepted()'), + languageDialog.accept) + QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'), + languageDialog.reject) def retranslateUi(self, languageDialog): languageDialog.setWindowTitle( translate('BiblesPlugin.LanguageDialog', 'Select Language')) - self.headlineLabel.setText( - translate('BiblesPlugin.LanguageDialog', 'Select Language:')) + self.bibleLabel.setText(translate('BiblesPlugin.LanguageDialog', '')) self.infoLabel.setText(translate('BiblesPlugin.LanguageDialog', - 'Please select the Bible\'s language')) - self.requestLabel.setText(translate('BiblesPlugin.languageDialog', + 'OpenLP is unable to determine the language of this translation ' + 'of the Bible. Please select the language from the list below.')) + self.languageLabel.setText(translate('BiblesPlugin.LanguageDialog', 'Language:')) diff --git a/openlp/plugins/bibles/forms/languageform.py b/openlp/plugins/bibles/forms/languageform.py index 0e2c3f003..e7cde104c 100644 --- a/openlp/plugins/bibles/forms/languageform.py +++ b/openlp/plugins/bibles/forms/languageform.py @@ -53,23 +53,24 @@ class LanguageForm(QDialog, Ui_LanguageDialog): self.setupUi(self) def exec_(self, bible_name): - self.requestComboBox.addItem(u'') + self.languageComboBox.addItem(u'') if bible_name: self.infoLabel.setText(unicode(translate( 'BiblesPlugin.LanguageDialog', - 'Please select the language for Bible:\n"%s"')) % - bible_name) + 'OpenLP is unable to determine the language of this translation' + ' of the Bible. Please select the language for "%s" from the ' + 'list below.')) % bible_name) items = BiblesResourcesDB.get_languages() for item in items: - self.requestComboBox.addItem(item[u'name']) + self.languageComboBox.addItem(item[u'name']) return QDialog.exec_(self) def accept(self): - if self.requestComboBox.currentText() == u'': + if self.languageComboBox.currentText() == u'': critical_error_message_box( message=translate('BiblesPlugin.LanguageForm', - 'You need to select a language.')) - self.requestComboBox.setFocus() + 'You need to choose a language.')) + self.languageComboBox.setFocus() return False else: return QDialog.accept(self) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 7278da42f..a3eb0e849 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -480,7 +480,7 @@ class BibleDB(QtCore.QObject, Manager): language = None language_form = LanguageForm(self.wizard) if language_form.exec_(bible_name): - language = unicode(language_form.requestComboBox.currentText()) + language = unicode(language_form.languageComboBox.currentText()) if not language: return False language = BiblesResourcesDB.get_language(language) From 6486d41b8cc86dd9a9c5fc76f9907cb782386a54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Thu, 26 May 2011 09:25:17 +0200 Subject: [PATCH 080/190] correct some words and code changed behaviour if the "cancel" button is pressed while upgrading --- openlp/plugins/bibles/bibleplugin.py | 2 +- .../plugins/bibles/forms/bibleupgradeform.py | 34 +++++++++---------- openlp/plugins/bibles/lib/http.py | 20 +++++------ 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index 4d43ab76d..0ec8b8ed5 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -84,7 +84,7 @@ class BiblePlugin(Plugin): if QtGui.QMessageBox.information(self.formparent, translate('OpenLP', 'Information'), translate('OpenLP', 'Bible format has changed.\nYou have to upgrade your ' - 'existing bibles.\nShould OpenLP upgrade now?'), + 'existing Bibles.\nShould OpenLP upgrade now?'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)) == QtGui.QMessageBox.Yes: self.onToolsUpgradeItemTriggered() diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index b210b7c95..7b7c259ac 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -111,6 +111,8 @@ class BibleUpgradeForm(OpenLPWizard): """ log.debug(u'Wizard cancelled by user') self.stop_import_flag = True + if not self.currentPage() == self.progressPage: + self.done(QtGui.QDialog.Rejected) def onCurrentIdChanged(self, pageId): """ @@ -413,7 +415,7 @@ class BibleUpgradeForm(OpenLPWizard): OpenLPWizard.preWizard(self) self.progressLabel.setText(translate( 'BiblesPlugin.UpgradeWizardForm', - 'Starting upgrading bible(s)...')) + 'Starting upgrading Bible(s)...')) Receiver.send_message(u'openlp_process_events') def performWizard(self): @@ -450,7 +452,7 @@ class BibleUpgradeForm(OpenLPWizard): self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\nFailed')) % - (number+1, self.maxBibles, name), + (number + 1, self.maxBibles, name), self.progressBar.maximum() - self.progressBar.value()) number += 1 continue @@ -503,8 +505,8 @@ class BibleUpgradeForm(OpenLPWizard): self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\nFailed')) % - (number+1, self.maxBibles, name), - self.progressBar.maximum()-self.progressBar.value()) + (number + 1, self.maxBibles, name), + self.progressBar.maximum() - self.progressBar.value()) number += 1 continue bible = BiblesResourcesDB.get_webbible( @@ -517,16 +519,15 @@ class BibleUpgradeForm(OpenLPWizard): else: language_id = self.newbibles[number].get_language(name) if not language_id: - log.exception(u'Upgrading from "%s" '\ - 'failed' % filename) + log.exception(u'Upgrading from "%s" failed' % filename) delete_database(self.path, clean_filename(self.newbibles[number].get_name())) del self.newbibles[number] self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\nFailed')) % - (number+1, self.maxBibles, name), - self.progressBar.maximum()-self.progressBar.value()) + (number + 1, self.maxBibles, name), + self.progressBar.maximum() - self.progressBar.value()) number += 1 continue self.progressBar.setMaximum(len(books)) @@ -538,7 +539,7 @@ class BibleUpgradeForm(OpenLPWizard): 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\n' 'Upgrading %s ...')) % - (number+1, self.maxBibles, name, book)) + (number + 1, self.maxBibles, name, book)) book_ref_id = self.newbibles[number].\ get_book_ref_id_by_name(book, len(books), language_id) if not book_ref_id: @@ -560,16 +561,15 @@ class BibleUpgradeForm(OpenLPWizard): if not language_id: language_id = self.newbibles[number].get_language(name) if not language_id: - log.exception(u'Upgrading books from "%s" '\ - 'failed' % name) + log.exception(u'Upgrading books from "%s" failed' % name) delete_database(self.path, clean_filename(self.newbibles[number].get_name())) del self.newbibles[number] self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\nFailed')) % - (number+1, self.maxBibles, name), - self.progressBar.maximum()-self.progressBar.value()) + (number + 1, self.maxBibles, name), + self.progressBar.maximum() - self.progressBar.value()) number += 1 continue books = oldbible.get_books() @@ -582,7 +582,7 @@ class BibleUpgradeForm(OpenLPWizard): 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\n' 'Upgrading %s ...')) % - (number+1, self.maxBibles, name, book[u'name'])) + (number + 1, self.maxBibles, name, book[u'name'])) book_ref_id = self.newbibles[number].\ get_book_ref_id_by_name(book[u'name'], len(books), language_id) @@ -614,14 +614,14 @@ class BibleUpgradeForm(OpenLPWizard): 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\n' 'Done')) % - (number+1, self.maxBibles, name)) + (number + 1, self.maxBibles, name)) self.success[biblenumber] = True else: self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\nFailed')) % - (number+1, self.maxBibles, name), - self.progressBar.maximum()-self.progressBar.value()) + (number + 1, self.maxBibles, name), + self.progressBar.maximum() - self.progressBar.value()) delete_database(self.path, clean_filename(self.newbibles[number].get_name())) number += 1 diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 1247aa1f0..5a05ade92 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -58,10 +58,10 @@ class BGExtract(object): def get_bible_chapter(self, version, bookname, chapter): """ - Access and decode bibles via the BibleGateway website. + Access and decode Bibles via the BibleGateway website. ``version`` - The version of the bible like 31 for New International version. + The version of the Bible like 31 for New International version. ``bookname`` Name of the Book. @@ -133,10 +133,10 @@ class BGExtract(object): def get_books_from_http(self, version): """ - Load a list of all books a bible contaions from BibleGateway website. + Load a list of all books a Bible contaions from BibleGateway website. ``version`` - The version of the bible like NIV for New International Version + The version of the Bible like NIV for New International Version """ log.debug(u'BGExtract.get_books_from_http("%s")', version) url_params = urllib.urlencode( @@ -157,7 +157,7 @@ class BGExtract(object): try: soup = BeautifulSoup(soup) except HTMLParseError: - log.exception(u'BeautifulSoup could not parse the bible page.') + log.exception(u'BeautifulSoup could not parse the Bible page.') if not soup: send_error_message(u'parse') return None @@ -224,11 +224,11 @@ class BSExtract(object): def get_books_from_http(self, version): """ - Load a list of all books a bible contains from Bibleserver mobile + Load a list of all books a Bible contains from Bibleserver mobile website. ``version`` - The version of the bible like NIV for New International Version + The version of the Bible like NIV for New International Version """ log.debug(u'BSExtract.get_books_from_http("%s")', version) chapter_url = u'http://m.bibleserver.com/overlay/selectBook?'\ @@ -261,7 +261,7 @@ class CWExtract(object): Access and decode bibles via the Crosswalk website ``version`` - The version of the bible like niv for New International Version + The version of the Bible like niv for New International Version ``bookname`` Text name of in english e.g. 'gen' for Genesis @@ -320,7 +320,7 @@ class CWExtract(object): def get_books_from_http(self, version): """ - Load a list of all books a bible contain from the Crosswalk website. + Load a list of all books a Bible contain from the Crosswalk website. ``version`` The version of the bible like NIV for New International Version @@ -383,7 +383,7 @@ class HTTPBible(BibleDB): self.wizard.progressBar.setMaximum(68) self.wizard.incrementProgressBar(unicode(translate( 'BiblesPlugin.HTTPBible', - 'Registering bible and loading books...'))) + 'Registering Bible and loading books...'))) self.create_meta(u'download source', self.download_source) self.create_meta(u'download name', self.download_name) if self.proxy_server: From 24d7b7b03829b22de1a22cab869c1fb4bc40c179 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Thu, 26 May 2011 09:34:29 +0200 Subject: [PATCH 081/190] small spelling change --- openlp/plugins/bibles/bibleplugin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index 0ec8b8ed5..5a1ff8eec 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -117,7 +117,7 @@ class BiblePlugin(Plugin): self.toolsUpgradeItem = QtGui.QAction(tools_menu) self.toolsUpgradeItem.setObjectName(u'toolsUpgradeItem') self.toolsUpgradeItem.setText( - translate('BiblePlugin', '&Upgrade Bible databases')) + translate('BiblePlugin', '&Upgrade older Bibles')) self.toolsUpgradeItem.setStatusTip( translate('BiblePlugin', 'Upgrade the Bible databases to the ' 'latest format')) From 98614f629c1c4c96eed68271d76a30161502eaf4 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Thu, 26 May 2011 10:15:56 +0200 Subject: [PATCH 083/190] make themes in menu checkable --- openlp/core/ui/servicemanager.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 6834c8df8..82a49cc54 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -37,7 +37,8 @@ from openlp.core.lib import OpenLPToolbar, ServiceItem, Receiver, build_icon, \ ItemCapabilities, SettingsManager, translate from openlp.core.lib.theme import ThemeLevel from openlp.core.lib.ui import UiStrings, critical_error_message_box, \ - context_menu_action, context_menu_separator, find_and_set_in_combo_box + context_menu_action, context_menu_separator, find_and_set_in_combo_box, \ + checkable_action from openlp.core.ui import ServiceNoteForm, ServiceItemEditForm, StartTimeForm from openlp.core.ui.printserviceform import PrintServiceForm from openlp.core.utils import AppLocation, delete_file, file_is_unicode, \ @@ -676,8 +677,19 @@ class ServiceManager(QtGui.QWidget): .is_capable(ItemCapabilities.AllowsVariableStartTime): self.timeAction.setVisible(True) self.themeMenu.menuAction().setVisible(False) - if serviceItem[u'service_item'].is_text(): + if serviceItem[u'service_item'].is_text() and \ + len(self.themeMenu.actions()) > 1: self.themeMenu.menuAction().setVisible(True) + if serviceItem[u'service_item'].theme is None: + themeAction = self.themeMenu.findChild(QtGui.QAction, u'Sunrise') + else: + themeAction = self.themeMenu.findChild(QtGui.QAction, u'Sunrise') + if themeAction is not None: + themeAction.setChecked(True) + print self.mainwindow.renderer.global_theme + for themeAction in self.themeMenu.actions(): + themeAction.setChecked( + themeAction.text() == serviceItem[u'service_item'].theme) action = self.menu.exec_(self.serviceManagerList.mapToGlobal(point)) def onServiceItemNoteForm(self): @@ -1276,10 +1288,16 @@ class ServiceManager(QtGui.QWidget): self.themeComboBox.clear() self.themeMenu.clear() self.themeComboBox.addItem(u'') + themeGroup = QtGui.QActionGroup(self.themeMenu) + themeGroup.setExclusive(True) + themeGroup.setObjectName(u'themeGroup') for theme in theme_list: self.themeComboBox.addItem(theme) - context_menu_action(self.themeMenu, None, theme, + themeAction = context_menu_action(self.themeMenu, None, theme, self.onThemeChangeAction) + themeAction.setObjectName(theme) + themeAction.setCheckable(True) + themeGroup.addAction(themeAction) find_and_set_in_combo_box(self.themeComboBox, self.service_theme) self.mainwindow.renderer.set_service_theme(self.service_theme) self.regenerateServiceItems() From 9221c8cb60c0a5ce21f01edde1a76fab8001f039 Mon Sep 17 00:00:00 2001 From: Josh Miller Date: Thu, 26 May 2011 06:37:36 -0400 Subject: [PATCH 084/190] Corrections to the code, enable_loop is now can_loop, and fits the 80 character line requirement as best i could get it too --- openlp/core/ui/slidecontroller.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 90c7abf85..8260ce222 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -937,12 +937,13 @@ class SlideController(QtGui.QWidget): self.updatePreview() else: row = self.previewListWidget.currentRow() + 1 - enable_loop = QtCore.QSettings().value(self.parent.generalSettingsSection + u'/enable slide loop', QtCore.QVariant(True)).toBool() + can_loop = QtCore.QSettings().value(self.parent.generalSettingsSection + + u'/enable slide loop', QtCore.QVariant(True)).toBool() if row == self.previewListWidget.rowCount(): - if enable_loop: + if can_loop: row = 0 else: - pass + row = self.previewListWidget.rowCount() - 1 self.__checkUpdateSelectedSlide(row) self.slideSelected() @@ -959,8 +960,9 @@ class SlideController(QtGui.QWidget): else: row = self.previewListWidget.currentRow() - 1 if row == -1: - enable_loop = QtCore.QSettings().value(self.parent.generalSettingsSection + u'/enable slide loop', QtCore.QVariant(True)).toBool() - if enable_loop: + can_loop = QtCore.QSettings().value(self.parent.generalSettingsSection + + u'/enable slide loop', QtCore.QVariant(True)).toBool() + if can_loop: row = self.previewListWidget.rowCount() - 1 else: row = 0 From 254bac86d46669407c13a7d327e135cac4fa59b0 Mon Sep 17 00:00:00 2001 From: Josh Miller Date: Thu, 26 May 2011 06:56:21 -0400 Subject: [PATCH 085/190] Corrections to the code, enable_loop is now can_loop, and fits the 80 character line requirement as best i could get it too and gets rid of the odd emtpy line in generaltab.py --- openlp/core/ui/generaltab.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index 95e8dda4e..dad6ab339 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -387,4 +387,3 @@ class GeneralTab(SettingsTab): Called when the width, height, x position or y position has changed. """ self.display_changed = True - From 6b90adea6edfc5d6fcc827f31fe5c377064b10c6 Mon Sep 17 00:00:00 2001 From: Josh Miller Date: Thu, 26 May 2011 07:01:48 -0400 Subject: [PATCH 086/190] Corrections to the code, enable_loop is now can_loop, and fits the 80 character line requirement as best i could get it too and gets rid of the odd emtpy line in generaltab.py and changes can_loop directly to the setting required --- openlp/core/ui/slidecontroller.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 8260ce222..782684b45 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -937,10 +937,9 @@ class SlideController(QtGui.QWidget): self.updatePreview() else: row = self.previewListWidget.currentRow() + 1 - can_loop = QtCore.QSettings().value(self.parent.generalSettingsSection - + u'/enable slide loop', QtCore.QVariant(True)).toBool() if row == self.previewListWidget.rowCount(): - if can_loop: + if QtCore.QSettings().value(self.parent.generalSettingsSection + + u'/enable slide loop', QtCore.QVariant(True)).toBool(): row = 0 else: row = self.previewListWidget.rowCount() - 1 @@ -960,9 +959,8 @@ class SlideController(QtGui.QWidget): else: row = self.previewListWidget.currentRow() - 1 if row == -1: - can_loop = QtCore.QSettings().value(self.parent.generalSettingsSection - + u'/enable slide loop', QtCore.QVariant(True)).toBool() - if can_loop: + if QtCore.QSettings().value(self.parent.generalSettingsSection + + u'/enable slide loop', QtCore.QVariant(True)).toBool(): row = self.previewListWidget.rowCount() - 1 else: row = 0 From e70ba41373abceb0a143e54e2135ae512cbbc52f Mon Sep 17 00:00:00 2001 From: Gerald Britton Date: Thu, 26 May 2011 09:35:01 -0400 Subject: [PATCH 087/190] Add specific error messages if OoO open fails. Use a lambda to avoid repetition --- openlp/plugins/songs/lib/oooimport.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/songs/lib/oooimport.py b/openlp/plugins/songs/lib/oooimport.py index a03a36121..5e4cd25d4 100644 --- a/openlp/plugins/songs/lib/oooimport.py +++ b/openlp/plugins/songs/lib/oooimport.py @@ -71,6 +71,10 @@ class OooImport(SongImport): log.error(exc) return self.import_wizard.progressBar.setMaximum(len(self.import_source)) + error_msg = lambda: self.log_error( + self.filepath, + translate('SongsPlugin.SongImport', + u'Unable to open file')) for filename in self.import_source: if self.stop_import_flag: break @@ -81,9 +85,9 @@ class OooImport(SongImport): self.process_ooo_document() self.close_ooo_file() else: - self.log_error(self.filepath) + error_msg() else: - self.log_error(self.filepath) + error_msg() self.close_ooo() def process_ooo_document(self): From 40222b23c8f4991e95918f62ed11eaf7a1646fa5 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Thu, 26 May 2011 17:35:44 +0100 Subject: [PATCH 088/190] Remove index from search_lyrics for mysql - myisam --- openlp/plugins/songs/lib/db.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/songs/lib/db.py b/openlp/plugins/songs/lib/db.py index 404ad2c42..2c01f76fa 100644 --- a/openlp/plugins/songs/lib/db.py +++ b/openlp/plugins/songs/lib/db.py @@ -197,7 +197,7 @@ def init_schema(url): Column(u'song_number', types.Unicode(64)), Column(u'theme_name', types.Unicode(128)), Column(u'search_title', types.Unicode(255), index=True, nullable=False), - Column(u'search_lyrics', types.UnicodeText, index=True, nullable=False) + Column(u'search_lyrics', types.UnicodeText, nullable=False) ) # Definition of the "topics" table From acdbefd922a69f8704126cac2edf95825a8eb5e0 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 26 May 2011 18:11:22 +0100 Subject: [PATCH 089/190] Fixes --- openlp.pyw | 2 +- openlp/__init__.py | 2 +- openlp/core/__init__.py | 2 +- openlp/core/lib/__init__.py | 2 +- openlp/core/lib/db.py | 2 +- openlp/core/lib/displaytags.py | 2 +- openlp/core/lib/dockwidget.py | 2 +- openlp/core/lib/eventreceiver.py | 2 +- openlp/core/lib/htmlbuilder.py | 2 +- openlp/core/lib/imagemanager.py | 2 +- openlp/core/lib/listwidgetwithdnd.py | 2 +- openlp/core/lib/mediamanageritem.py | 2 +- openlp/core/lib/plugin.py | 2 +- openlp/core/lib/pluginmanager.py | 2 +- openlp/core/lib/renderer.py | 2 +- openlp/core/lib/searchedit.py | 2 +- openlp/core/lib/serviceitem.py | 2 +- openlp/core/lib/settingsmanager.py | 2 +- openlp/core/lib/settingstab.py | 2 +- openlp/core/lib/spelltextedit.py | 2 +- openlp/core/lib/theme.py | 2 +- openlp/core/lib/toolbar.py | 2 +- openlp/core/lib/ui.py | 2 +- openlp/core/theme/__init__.py | 2 +- openlp/core/theme/theme.py | 2 +- openlp/core/ui/__init__.py | 2 +- openlp/core/ui/aboutdialog.py | 6 +++--- openlp/core/ui/aboutform.py | 2 +- openlp/core/ui/advancedtab.py | 2 +- openlp/core/ui/displaytagdialog.py | 2 +- openlp/core/ui/displaytagform.py | 2 +- openlp/core/ui/exceptiondialog.py | 2 +- openlp/core/ui/exceptionform.py | 2 +- openlp/core/ui/filerenamedialog.py | 2 +- openlp/core/ui/filerenameform.py | 2 +- openlp/core/ui/firsttimeform.py | 2 +- openlp/core/ui/firsttimelanguagedialog.py | 2 +- openlp/core/ui/firsttimelanguageform.py | 2 +- openlp/core/ui/firsttimewizard.py | 2 +- openlp/core/ui/generaltab.py | 2 +- openlp/core/ui/maindisplay.py | 2 +- openlp/core/ui/mainwindow.py | 2 +- openlp/core/ui/mediadockmanager.py | 2 +- openlp/core/ui/plugindialog.py | 2 +- openlp/core/ui/pluginform.py | 2 +- openlp/core/ui/printservicedialog.py | 2 +- openlp/core/ui/printserviceform.py | 2 +- openlp/core/ui/screen.py | 2 +- openlp/core/ui/serviceitemeditdialog.py | 2 +- openlp/core/ui/serviceitemeditform.py | 2 +- openlp/core/ui/servicemanager.py | 2 +- openlp/core/ui/servicenoteform.py | 2 +- openlp/core/ui/settingsdialog.py | 2 +- openlp/core/ui/settingsform.py | 2 +- openlp/core/ui/shortcutlistdialog.py | 2 +- openlp/core/ui/shortcutlistform.py | 2 +- openlp/core/ui/slidecontroller.py | 2 +- openlp/core/ui/splashscreen.py | 2 +- openlp/core/ui/starttimedialog.py | 2 +- openlp/core/ui/starttimeform.py | 2 +- openlp/core/ui/themeform.py | 2 +- openlp/core/ui/thememanager.py | 2 +- openlp/core/ui/themestab.py | 2 +- openlp/core/ui/themewizard.py | 2 +- openlp/core/ui/wizard.py | 2 +- openlp/core/utils/__init__.py | 2 +- openlp/core/utils/actions.py | 2 +- openlp/core/utils/languagemanager.py | 2 +- openlp/plugins/__init__.py | 2 +- openlp/plugins/alerts/__init__.py | 2 +- openlp/plugins/alerts/alertsplugin.py | 2 +- openlp/plugins/alerts/forms/__init__.py | 2 +- openlp/plugins/alerts/forms/alertdialog.py | 2 +- openlp/plugins/alerts/forms/alertform.py | 2 +- openlp/plugins/alerts/lib/__init__.py | 2 +- openlp/plugins/alerts/lib/alertsmanager.py | 2 +- openlp/plugins/alerts/lib/alertstab.py | 2 +- openlp/plugins/alerts/lib/db.py | 2 +- openlp/plugins/bibles/__init__.py | 2 +- openlp/plugins/bibles/bibleplugin.py | 2 +- openlp/plugins/bibles/forms/__init__.py | 2 +- openlp/plugins/bibles/forms/bibleimportform.py | 2 +- openlp/plugins/bibles/lib/__init__.py | 2 +- openlp/plugins/bibles/lib/biblestab.py | 2 +- openlp/plugins/bibles/lib/csvbible.py | 2 +- openlp/plugins/bibles/lib/db.py | 2 +- openlp/plugins/bibles/lib/http.py | 2 +- openlp/plugins/bibles/lib/manager.py | 2 +- openlp/plugins/bibles/lib/mediaitem.py | 2 +- openlp/plugins/bibles/lib/openlp1.py | 2 +- openlp/plugins/bibles/lib/opensong.py | 2 +- openlp/plugins/bibles/lib/osis.py | 2 +- openlp/plugins/bibles/lib/versereferencelist.py | 2 +- openlp/plugins/custom/__init__.py | 2 +- openlp/plugins/custom/customplugin.py | 2 +- openlp/plugins/custom/forms/__init__.py | 2 +- openlp/plugins/custom/forms/editcustomdialog.py | 2 +- openlp/plugins/custom/forms/editcustomform.py | 2 +- openlp/plugins/custom/forms/editcustomslidedialog.py | 2 +- openlp/plugins/custom/forms/editcustomslideform.py | 2 +- openlp/plugins/custom/lib/__init__.py | 2 +- openlp/plugins/custom/lib/customtab.py | 2 +- openlp/plugins/custom/lib/customxmlhandler.py | 2 +- openlp/plugins/custom/lib/db.py | 2 +- openlp/plugins/custom/lib/mediaitem.py | 2 +- openlp/plugins/images/__init__.py | 2 +- openlp/plugins/images/imageplugin.py | 2 +- openlp/plugins/images/lib/__init__.py | 2 +- openlp/plugins/images/lib/mediaitem.py | 2 +- openlp/plugins/media/__init__.py | 2 +- openlp/plugins/media/lib/__init__.py | 2 +- openlp/plugins/media/lib/mediaitem.py | 2 +- openlp/plugins/media/lib/mediatab.py | 2 +- openlp/plugins/media/mediaplugin.py | 2 +- openlp/plugins/presentations/__init__.py | 2 +- openlp/plugins/presentations/lib/__init__.py | 2 +- openlp/plugins/presentations/lib/impresscontroller.py | 2 +- openlp/plugins/presentations/lib/mediaitem.py | 2 +- openlp/plugins/presentations/lib/messagelistener.py | 2 +- openlp/plugins/presentations/lib/powerpointcontroller.py | 2 +- openlp/plugins/presentations/lib/pptviewcontroller.py | 2 +- openlp/plugins/presentations/lib/pptviewlib/ppttest.py | 2 +- openlp/plugins/presentations/lib/presentationcontroller.py | 2 +- openlp/plugins/presentations/lib/presentationtab.py | 2 +- openlp/plugins/presentations/presentationplugin.py | 2 +- openlp/plugins/remotes/__init__.py | 2 +- openlp/plugins/remotes/lib/__init__.py | 2 +- openlp/plugins/remotes/lib/httpserver.py | 2 +- openlp/plugins/remotes/lib/remotetab.py | 2 +- openlp/plugins/remotes/remoteplugin.py | 2 +- openlp/plugins/songs/__init__.py | 2 +- openlp/plugins/songs/forms/__init__.py | 2 +- openlp/plugins/songs/forms/authorsdialog.py | 2 +- openlp/plugins/songs/forms/authorsform.py | 2 +- openlp/plugins/songs/forms/editsongdialog.py | 2 +- openlp/plugins/songs/forms/editsongform.py | 2 +- openlp/plugins/songs/forms/editversedialog.py | 2 +- openlp/plugins/songs/forms/editverseform.py | 2 +- openlp/plugins/songs/forms/songbookdialog.py | 2 +- openlp/plugins/songs/forms/songbookform.py | 2 +- openlp/plugins/songs/forms/songexportform.py | 2 +- openlp/plugins/songs/forms/songimportform.py | 2 +- openlp/plugins/songs/forms/songmaintenancedialog.py | 2 +- openlp/plugins/songs/forms/songmaintenanceform.py | 2 +- openlp/plugins/songs/forms/topicsdialog.py | 2 +- openlp/plugins/songs/forms/topicsform.py | 2 +- openlp/plugins/songs/lib/__init__.py | 2 +- openlp/plugins/songs/lib/cclifileimport.py | 2 +- openlp/plugins/songs/lib/db.py | 2 +- openlp/plugins/songs/lib/easislidesimport.py | 2 +- openlp/plugins/songs/lib/ewimport.py | 2 +- openlp/plugins/songs/lib/foilpresenterimport.py | 2 +- openlp/plugins/songs/lib/importer.py | 2 +- openlp/plugins/songs/lib/mediaitem.py | 2 +- openlp/plugins/songs/lib/olp1import.py | 2 +- openlp/plugins/songs/lib/olpimport.py | 2 +- openlp/plugins/songs/lib/oooimport.py | 2 +- openlp/plugins/songs/lib/openlyricsexport.py | 2 +- openlp/plugins/songs/lib/openlyricsimport.py | 2 +- openlp/plugins/songs/lib/opensongimport.py | 2 +- openlp/plugins/songs/lib/sofimport.py | 2 +- openlp/plugins/songs/lib/songbeamerimport.py | 2 +- openlp/plugins/songs/lib/songimport.py | 2 +- openlp/plugins/songs/lib/songshowplusimport.py | 2 +- openlp/plugins/songs/lib/songstab.py | 2 +- openlp/plugins/songs/lib/ui.py | 2 +- openlp/plugins/songs/lib/wowimport.py | 2 +- openlp/plugins/songs/lib/xml.py | 2 +- openlp/plugins/songs/songsplugin.py | 2 +- openlp/plugins/songusage/__init__.py | 2 +- openlp/plugins/songusage/forms/__init__.py | 2 +- openlp/plugins/songusage/forms/songusagedeletedialog.py | 2 +- openlp/plugins/songusage/forms/songusagedeleteform.py | 2 +- openlp/plugins/songusage/forms/songusagedetaildialog.py | 2 +- openlp/plugins/songusage/forms/songusagedetailform.py | 2 +- openlp/plugins/songusage/lib/__init__.py | 2 +- openlp/plugins/songusage/lib/db.py | 2 +- openlp/plugins/songusage/songusageplugin.py | 2 +- setup.py | 2 +- 179 files changed, 181 insertions(+), 181 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index 93337e8e9..f796fa45f 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -8,7 +8,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/__init__.py b/openlp/__init__.py index a7080a5ca..d48d3f28a 100644 --- a/openlp/__init__.py +++ b/openlp/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index 7cae05ab3..a6c804a99 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 56300fc62..35cd14bd2 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index e6ab584d7..5b03e5fa4 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/displaytags.py b/openlp/core/lib/displaytags.py index 785ef1c70..c59f6e868 100644 --- a/openlp/core/lib/displaytags.py +++ b/openlp/core/lib/displaytags.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/dockwidget.py b/openlp/core/lib/dockwidget.py index c1b8fae3d..5c461bbf8 100644 --- a/openlp/core/lib/dockwidget.py +++ b/openlp/core/lib/dockwidget.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/eventreceiver.py b/openlp/core/lib/eventreceiver.py index fd2dff6c4..0de1a6e0b 100644 --- a/openlp/core/lib/eventreceiver.py +++ b/openlp/core/lib/eventreceiver.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/htmlbuilder.py b/openlp/core/lib/htmlbuilder.py index fad2be519..cf7e73648 100644 --- a/openlp/core/lib/htmlbuilder.py +++ b/openlp/core/lib/htmlbuilder.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/imagemanager.py b/openlp/core/lib/imagemanager.py index 3b18bd014..214fa4bda 100644 --- a/openlp/core/lib/imagemanager.py +++ b/openlp/core/lib/imagemanager.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/listwidgetwithdnd.py b/openlp/core/lib/listwidgetwithdnd.py index dc2128f25..5ebc7bfb7 100644 --- a/openlp/core/lib/listwidgetwithdnd.py +++ b/openlp/core/lib/listwidgetwithdnd.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 06e7a313c..9b76447ff 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py index 62110fea7..0417446c1 100644 --- a/openlp/core/lib/plugin.py +++ b/openlp/core/lib/plugin.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/pluginmanager.py b/openlp/core/lib/pluginmanager.py index ffb7774a8..6a77939e1 100644 --- a/openlp/core/lib/pluginmanager.py +++ b/openlp/core/lib/pluginmanager.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index f97719128..079a9aa9c 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/searchedit.py b/openlp/core/lib/searchedit.py index 6fcb973f2..8c18ab09b 100644 --- a/openlp/core/lib/searchedit.py +++ b/openlp/core/lib/searchedit.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 8b89ce3ff..37723321c 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/settingsmanager.py b/openlp/core/lib/settingsmanager.py index 6d3d86a82..7eff1c00a 100644 --- a/openlp/core/lib/settingsmanager.py +++ b/openlp/core/lib/settingsmanager.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/settingstab.py b/openlp/core/lib/settingstab.py index aa5c7dfcf..c5fd86697 100644 --- a/openlp/core/lib/settingstab.py +++ b/openlp/core/lib/settingstab.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/spelltextedit.py b/openlp/core/lib/spelltextedit.py index 9e8b54aec..84cb30af6 100644 --- a/openlp/core/lib/spelltextedit.py +++ b/openlp/core/lib/spelltextedit.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/theme.py b/openlp/core/lib/theme.py index c3d860666..b9e588f15 100644 --- a/openlp/core/lib/theme.py +++ b/openlp/core/lib/theme.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/toolbar.py b/openlp/core/lib/toolbar.py index 622220cec..9f9ab5197 100644 --- a/openlp/core/lib/toolbar.py +++ b/openlp/core/lib/toolbar.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/lib/ui.py b/openlp/core/lib/ui.py index 9e7512cfe..5055bb619 100644 --- a/openlp/core/lib/ui.py +++ b/openlp/core/lib/ui.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/theme/__init__.py b/openlp/core/theme/__init__.py index e9a32167d..1b0999c6c 100644 --- a/openlp/core/theme/__init__.py +++ b/openlp/core/theme/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/theme/theme.py b/openlp/core/theme/theme.py index 175dd4212..9a0bee2c2 100644 --- a/openlp/core/theme/theme.py +++ b/openlp/core/theme/theme.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/__init__.py b/openlp/core/ui/__init__.py index 661d45632..1555c134c 100644 --- a/openlp/core/ui/__init__.py +++ b/openlp/core/ui/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/aboutdialog.py b/openlp/core/ui/aboutdialog.py index d4a51d203..7855d2c2a 100644 --- a/openlp/core/ui/aboutdialog.py +++ b/openlp/core/ui/aboutdialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # @@ -116,7 +116,7 @@ class Ui_AboutDialog(object): u'Scott "sguerrieri" Guerrieri', u'Matthias "matthub" Hub', u'Meinert "m2j" Jordan', u'Armin "orangeshirt" K\xf6hler', u'Joshua "milleja46" Miller', - u'Stevan "smpettit" Pettit', u'Mattias "mahfiaz" P\xf5ldaru', + u'Stevan "StevanP" Pettit', u'Mattias "mahfiaz" P\xf5ldaru', u'Christian "crichter" Richter', u'Philip "Phill" Ridout', u'Jeffrey "whydoubt" Smith', u'Maikel Stuivenberg', u'Frode "frodus" Woldsund'] @@ -230,7 +230,7 @@ class Ui_AboutDialog(object): 'Portions copyright \xa9 2004-2011 %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 Millar, Stevan Pettit, Andreas Preikschat, Mattias ' + u'Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias ' u'P\xf5ldaru, Christian Richter, Philip Ridout, Jeffrey Smith, ' u'Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund') licence = translate('OpenLP.AboutForm', diff --git a/openlp/core/ui/aboutform.py b/openlp/core/ui/aboutform.py index f92efbdfe..f3e809ebc 100644 --- a/openlp/core/ui/aboutform.py +++ b/openlp/core/ui/aboutform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index 63aec4003..bad1ea822 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/displaytagdialog.py b/openlp/core/ui/displaytagdialog.py index 2758989c2..f501f03f6 100644 --- a/openlp/core/ui/displaytagdialog.py +++ b/openlp/core/ui/displaytagdialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/displaytagform.py b/openlp/core/ui/displaytagform.py index 1ac67284f..78a78f8fa 100644 --- a/openlp/core/ui/displaytagform.py +++ b/openlp/core/ui/displaytagform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/exceptiondialog.py b/openlp/core/ui/exceptiondialog.py index 274478312..58669b96c 100644 --- a/openlp/core/ui/exceptiondialog.py +++ b/openlp/core/ui/exceptiondialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/exceptionform.py b/openlp/core/ui/exceptionform.py index 755168142..69f3c14af 100644 --- a/openlp/core/ui/exceptionform.py +++ b/openlp/core/ui/exceptionform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/filerenamedialog.py b/openlp/core/ui/filerenamedialog.py index acdcc1ab0..cca7bcd16 100644 --- a/openlp/core/ui/filerenamedialog.py +++ b/openlp/core/ui/filerenamedialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/filerenameform.py b/openlp/core/ui/filerenameform.py index 08c8de53c..d1516a18c 100644 --- a/openlp/core/ui/filerenameform.py +++ b/openlp/core/ui/filerenameform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/firsttimeform.py b/openlp/core/ui/firsttimeform.py index e6a34e9e8..3b006bf5e 100644 --- a/openlp/core/ui/firsttimeform.py +++ b/openlp/core/ui/firsttimeform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/firsttimelanguagedialog.py b/openlp/core/ui/firsttimelanguagedialog.py index bd8b3bdec..8a891780d 100644 --- a/openlp/core/ui/firsttimelanguagedialog.py +++ b/openlp/core/ui/firsttimelanguagedialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/firsttimelanguageform.py b/openlp/core/ui/firsttimelanguageform.py index 81c7f5b4b..3661ba51b 100644 --- a/openlp/core/ui/firsttimelanguageform.py +++ b/openlp/core/ui/firsttimelanguageform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/firsttimewizard.py b/openlp/core/ui/firsttimewizard.py index 533aba467..6852d533a 100644 --- a/openlp/core/ui/firsttimewizard.py +++ b/openlp/core/ui/firsttimewizard.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index e19eca41f..05a4be414 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index afe30f499..dc7c28ded 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index a4cc2ed06..82f1b9253 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/mediadockmanager.py b/openlp/core/ui/mediadockmanager.py index 1c762468a..f22ec0b92 100644 --- a/openlp/core/ui/mediadockmanager.py +++ b/openlp/core/ui/mediadockmanager.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/plugindialog.py b/openlp/core/ui/plugindialog.py index b00422a71..08683a2b6 100644 --- a/openlp/core/ui/plugindialog.py +++ b/openlp/core/ui/plugindialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/pluginform.py b/openlp/core/ui/pluginform.py index 754aef036..0f7f6dbeb 100644 --- a/openlp/core/ui/pluginform.py +++ b/openlp/core/ui/pluginform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/printservicedialog.py b/openlp/core/ui/printservicedialog.py index e2ed7ead1..4afd58b74 100644 --- a/openlp/core/ui/printservicedialog.py +++ b/openlp/core/ui/printservicedialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/printserviceform.py b/openlp/core/ui/printserviceform.py index 7dc1a09c5..09ae8857f 100644 --- a/openlp/core/ui/printserviceform.py +++ b/openlp/core/ui/printserviceform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/screen.py b/openlp/core/ui/screen.py index 2f99c3a16..2b6e10644 100644 --- a/openlp/core/ui/screen.py +++ b/openlp/core/ui/screen.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/serviceitemeditdialog.py b/openlp/core/ui/serviceitemeditdialog.py index 827f76367..febc01524 100644 --- a/openlp/core/ui/serviceitemeditdialog.py +++ b/openlp/core/ui/serviceitemeditdialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/serviceitemeditform.py b/openlp/core/ui/serviceitemeditform.py index 1b229daf7..e05f4751e 100644 --- a/openlp/core/ui/serviceitemeditform.py +++ b/openlp/core/ui/serviceitemeditform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 9a530d075..7851e5e41 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/servicenoteform.py b/openlp/core/ui/servicenoteform.py index 3c202c4b1..9a6cb4e22 100644 --- a/openlp/core/ui/servicenoteform.py +++ b/openlp/core/ui/servicenoteform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/settingsdialog.py b/openlp/core/ui/settingsdialog.py index 72e6b260f..6bdf4f749 100644 --- a/openlp/core/ui/settingsdialog.py +++ b/openlp/core/ui/settingsdialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/settingsform.py b/openlp/core/ui/settingsform.py index 98417077e..5ecb61c3f 100644 --- a/openlp/core/ui/settingsform.py +++ b/openlp/core/ui/settingsform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/shortcutlistdialog.py b/openlp/core/ui/shortcutlistdialog.py index 1e3de964e..b98df4cf4 100644 --- a/openlp/core/ui/shortcutlistdialog.py +++ b/openlp/core/ui/shortcutlistdialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/shortcutlistform.py b/openlp/core/ui/shortcutlistform.py index 373494a91..d679d6cfa 100644 --- a/openlp/core/ui/shortcutlistform.py +++ b/openlp/core/ui/shortcutlistform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 6e915352b..feb67d72f 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/splashscreen.py b/openlp/core/ui/splashscreen.py index 43401bbbb..1d4c845d0 100644 --- a/openlp/core/ui/splashscreen.py +++ b/openlp/core/ui/splashscreen.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/starttimedialog.py b/openlp/core/ui/starttimedialog.py index 4a06cabd1..42d151dcc 100644 --- a/openlp/core/ui/starttimedialog.py +++ b/openlp/core/ui/starttimedialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/starttimeform.py b/openlp/core/ui/starttimeform.py index 931d1e40a..e33f88da0 100644 --- a/openlp/core/ui/starttimeform.py +++ b/openlp/core/ui/starttimeform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/themeform.py b/openlp/core/ui/themeform.py index da9295279..bae3e8692 100644 --- a/openlp/core/ui/themeform.py +++ b/openlp/core/ui/themeform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 924a1a49f..4dabcfdf7 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/themestab.py b/openlp/core/ui/themestab.py index 46150c4ac..709b3ad80 100644 --- a/openlp/core/ui/themestab.py +++ b/openlp/core/ui/themestab.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/themewizard.py b/openlp/core/ui/themewizard.py index 281c9a5da..2f75a01c2 100644 --- a/openlp/core/ui/themewizard.py +++ b/openlp/core/ui/themewizard.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/ui/wizard.py b/openlp/core/ui/wizard.py index c4dd18bf4..6275b64b6 100644 --- a/openlp/core/ui/wizard.py +++ b/openlp/core/ui/wizard.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index ef6e37d74..4ef445e36 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/utils/actions.py b/openlp/core/utils/actions.py index c999c4504..b34ed4c9b 100644 --- a/openlp/core/utils/actions.py +++ b/openlp/core/utils/actions.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/core/utils/languagemanager.py b/openlp/core/utils/languagemanager.py index 3e2f3d1a7..0c0a4ed56 100644 --- a/openlp/core/utils/languagemanager.py +++ b/openlp/core/utils/languagemanager.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/__init__.py b/openlp/plugins/__init__.py index 8bd9f40b8..fec8ebe71 100644 --- a/openlp/plugins/__init__.py +++ b/openlp/plugins/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/alerts/__init__.py b/openlp/plugins/alerts/__init__.py index 3072148b9..c8e82eaa2 100644 --- a/openlp/plugins/alerts/__init__.py +++ b/openlp/plugins/alerts/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index 4afdf2981..9a61ff7d6 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/alerts/forms/__init__.py b/openlp/plugins/alerts/forms/__init__.py index 0dd20ca69..4c9b353d4 100644 --- a/openlp/plugins/alerts/forms/__init__.py +++ b/openlp/plugins/alerts/forms/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/alerts/forms/alertdialog.py b/openlp/plugins/alerts/forms/alertdialog.py index 53d38263f..8ee777ebe 100644 --- a/openlp/plugins/alerts/forms/alertdialog.py +++ b/openlp/plugins/alerts/forms/alertdialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/alerts/forms/alertform.py b/openlp/plugins/alerts/forms/alertform.py index 6c2932923..13cb4503a 100644 --- a/openlp/plugins/alerts/forms/alertform.py +++ b/openlp/plugins/alerts/forms/alertform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/alerts/lib/__init__.py b/openlp/plugins/alerts/lib/__init__.py index 83acee990..2ac257585 100644 --- a/openlp/plugins/alerts/lib/__init__.py +++ b/openlp/plugins/alerts/lib/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/alerts/lib/alertsmanager.py b/openlp/plugins/alerts/lib/alertsmanager.py index 6ff038c62..c55e76ef7 100644 --- a/openlp/plugins/alerts/lib/alertsmanager.py +++ b/openlp/plugins/alerts/lib/alertsmanager.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/alerts/lib/alertstab.py b/openlp/plugins/alerts/lib/alertstab.py index 01a9c853f..31e59a35d 100644 --- a/openlp/plugins/alerts/lib/alertstab.py +++ b/openlp/plugins/alerts/lib/alertstab.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/alerts/lib/db.py b/openlp/plugins/alerts/lib/db.py index 58f6cb092..b70dbffd2 100644 --- a/openlp/plugins/alerts/lib/db.py +++ b/openlp/plugins/alerts/lib/db.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/bibles/__init__.py b/openlp/plugins/bibles/__init__.py index 0dc4208c6..273148af2 100644 --- a/openlp/plugins/bibles/__init__.py +++ b/openlp/plugins/bibles/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index 5ee031932..2deb86cc1 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/bibles/forms/__init__.py b/openlp/plugins/bibles/forms/__init__.py index d13e049d3..83b444394 100644 --- a/openlp/plugins/bibles/forms/__init__.py +++ b/openlp/plugins/bibles/forms/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index ffbf6dbb1..e05e29d57 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/bibles/lib/__init__.py b/openlp/plugins/bibles/lib/__init__.py index b62a9f791..9fda8fbd6 100644 --- a/openlp/plugins/bibles/lib/__init__.py +++ b/openlp/plugins/bibles/lib/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/bibles/lib/biblestab.py b/openlp/plugins/bibles/lib/biblestab.py index dbfb3fd97..321148a22 100644 --- a/openlp/plugins/bibles/lib/biblestab.py +++ b/openlp/plugins/bibles/lib/biblestab.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index ffe03908d..37764108a 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index e494f16ea..c896528ea 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 44b2d33a7..b66aa0373 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 1991f646d..e367e091e 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 6d434725e..b245f7241 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/bibles/lib/openlp1.py b/openlp/plugins/bibles/lib/openlp1.py index 27e99d03b..c3a1c9f68 100644 --- a/openlp/plugins/bibles/lib/openlp1.py +++ b/openlp/plugins/bibles/lib/openlp1.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index 01c181c23..115b08e42 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index 85a368853..958d70d90 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/bibles/lib/versereferencelist.py b/openlp/plugins/bibles/lib/versereferencelist.py index af9af0268..c51eb106e 100644 --- a/openlp/plugins/bibles/lib/versereferencelist.py +++ b/openlp/plugins/bibles/lib/versereferencelist.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/custom/__init__.py b/openlp/plugins/custom/__init__.py index 1cf34bfe0..82729a11c 100644 --- a/openlp/plugins/custom/__init__.py +++ b/openlp/plugins/custom/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py index b3e208b13..887f813fa 100644 --- a/openlp/plugins/custom/customplugin.py +++ b/openlp/plugins/custom/customplugin.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/custom/forms/__init__.py b/openlp/plugins/custom/forms/__init__.py index 67c02fa19..53953c428 100644 --- a/openlp/plugins/custom/forms/__init__.py +++ b/openlp/plugins/custom/forms/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/custom/forms/editcustomdialog.py b/openlp/plugins/custom/forms/editcustomdialog.py index 08855cc4a..418c7ea76 100644 --- a/openlp/plugins/custom/forms/editcustomdialog.py +++ b/openlp/plugins/custom/forms/editcustomdialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index 0561298fe..5a23e2066 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/custom/forms/editcustomslidedialog.py b/openlp/plugins/custom/forms/editcustomslidedialog.py index 6eda83d1d..165e6d847 100644 --- a/openlp/plugins/custom/forms/editcustomslidedialog.py +++ b/openlp/plugins/custom/forms/editcustomslidedialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/custom/forms/editcustomslideform.py b/openlp/plugins/custom/forms/editcustomslideform.py index 769b543dc..d8087dc2c 100644 --- a/openlp/plugins/custom/forms/editcustomslideform.py +++ b/openlp/plugins/custom/forms/editcustomslideform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/custom/lib/__init__.py b/openlp/plugins/custom/lib/__init__.py index 4df4ede3d..678c0065c 100644 --- a/openlp/plugins/custom/lib/__init__.py +++ b/openlp/plugins/custom/lib/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/custom/lib/customtab.py b/openlp/plugins/custom/lib/customtab.py index a35ddbc38..fb83fab81 100644 --- a/openlp/plugins/custom/lib/customtab.py +++ b/openlp/plugins/custom/lib/customtab.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/custom/lib/customxmlhandler.py b/openlp/plugins/custom/lib/customxmlhandler.py index 836a14ec9..e1021fdad 100644 --- a/openlp/plugins/custom/lib/customxmlhandler.py +++ b/openlp/plugins/custom/lib/customxmlhandler.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/custom/lib/db.py b/openlp/plugins/custom/lib/db.py index b276e78f2..83f298856 100644 --- a/openlp/plugins/custom/lib/db.py +++ b/openlp/plugins/custom/lib/db.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 380b137ea..91af98bea 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/images/__init__.py b/openlp/plugins/images/__init__.py index 17a8d80da..5d9f77ab9 100644 --- a/openlp/plugins/images/__init__.py +++ b/openlp/plugins/images/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/images/imageplugin.py b/openlp/plugins/images/imageplugin.py index 63f488b13..3a05f7923 100644 --- a/openlp/plugins/images/imageplugin.py +++ b/openlp/plugins/images/imageplugin.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/images/lib/__init__.py b/openlp/plugins/images/lib/__init__.py index 341ace05d..370dba7b0 100644 --- a/openlp/plugins/images/lib/__init__.py +++ b/openlp/plugins/images/lib/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 9f8724c94..f760a984e 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/media/__init__.py b/openlp/plugins/media/__init__.py index 1d451f137..24dc4554a 100644 --- a/openlp/plugins/media/__init__.py +++ b/openlp/plugins/media/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/media/lib/__init__.py b/openlp/plugins/media/lib/__init__.py index b7fca8470..434eec67a 100644 --- a/openlp/plugins/media/lib/__init__.py +++ b/openlp/plugins/media/lib/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 20765504a..9dc17f4d3 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/media/lib/mediatab.py b/openlp/plugins/media/lib/mediatab.py index 32b1da226..2e11cdd6b 100644 --- a/openlp/plugins/media/lib/mediatab.py +++ b/openlp/plugins/media/lib/mediatab.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index 3cd463c8b..e27f73634 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/presentations/__init__.py b/openlp/plugins/presentations/__init__.py index a433e7b23..573716b93 100644 --- a/openlp/plugins/presentations/__init__.py +++ b/openlp/plugins/presentations/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/presentations/lib/__init__.py b/openlp/plugins/presentations/lib/__init__.py index 0dbe58490..154709800 100644 --- a/openlp/plugins/presentations/lib/__init__.py +++ b/openlp/plugins/presentations/lib/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index 7ec01187e..0d0cc43a3 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index c0c5b2c8e..b757b5bfd 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/presentations/lib/messagelistener.py b/openlp/plugins/presentations/lib/messagelistener.py index 238e2cfc0..6b2c9cbd2 100644 --- a/openlp/plugins/presentations/lib/messagelistener.py +++ b/openlp/plugins/presentations/lib/messagelistener.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/presentations/lib/powerpointcontroller.py b/openlp/plugins/presentations/lib/powerpointcontroller.py index 1eb458ba9..fb2ce7bcc 100644 --- a/openlp/plugins/presentations/lib/powerpointcontroller.py +++ b/openlp/plugins/presentations/lib/powerpointcontroller.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/presentations/lib/pptviewcontroller.py b/openlp/plugins/presentations/lib/pptviewcontroller.py index 36191f8aa..7e2336b75 100644 --- a/openlp/plugins/presentations/lib/pptviewcontroller.py +++ b/openlp/plugins/presentations/lib/pptviewcontroller.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/presentations/lib/pptviewlib/ppttest.py b/openlp/plugins/presentations/lib/pptviewlib/ppttest.py index 7ef7d4654..fe483655c 100644 --- a/openlp/plugins/presentations/lib/pptviewlib/ppttest.py +++ b/openlp/plugins/presentations/lib/pptviewlib/ppttest.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/presentations/lib/presentationcontroller.py b/openlp/plugins/presentations/lib/presentationcontroller.py index d5629be12..63bd44cc4 100644 --- a/openlp/plugins/presentations/lib/presentationcontroller.py +++ b/openlp/plugins/presentations/lib/presentationcontroller.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/presentations/lib/presentationtab.py b/openlp/plugins/presentations/lib/presentationtab.py index be553d3f2..5579a2a99 100644 --- a/openlp/plugins/presentations/lib/presentationtab.py +++ b/openlp/plugins/presentations/lib/presentationtab.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index 0253796a8..171039d15 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/remotes/__init__.py b/openlp/plugins/remotes/__init__.py index fee1b76ff..b4a914d45 100644 --- a/openlp/plugins/remotes/__init__.py +++ b/openlp/plugins/remotes/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/remotes/lib/__init__.py b/openlp/plugins/remotes/lib/__init__.py index cb29f3cfe..c364b4be3 100644 --- a/openlp/plugins/remotes/lib/__init__.py +++ b/openlp/plugins/remotes/lib/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/remotes/lib/httpserver.py b/openlp/plugins/remotes/lib/httpserver.py index 545cb0144..0ff8bc32e 100644 --- a/openlp/plugins/remotes/lib/httpserver.py +++ b/openlp/plugins/remotes/lib/httpserver.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/remotes/lib/remotetab.py b/openlp/plugins/remotes/lib/remotetab.py index 84097ee9c..5041b49e2 100644 --- a/openlp/plugins/remotes/lib/remotetab.py +++ b/openlp/plugins/remotes/lib/remotetab.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/remotes/remoteplugin.py b/openlp/plugins/remotes/remoteplugin.py index 3ce29889e..8eec7516d 100644 --- a/openlp/plugins/remotes/remoteplugin.py +++ b/openlp/plugins/remotes/remoteplugin.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/__init__.py b/openlp/plugins/songs/__init__.py index 52b8ad06e..79e071eeb 100644 --- a/openlp/plugins/songs/__init__.py +++ b/openlp/plugins/songs/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/forms/__init__.py b/openlp/plugins/songs/forms/__init__.py index e7817b8d1..a224bf00e 100644 --- a/openlp/plugins/songs/forms/__init__.py +++ b/openlp/plugins/songs/forms/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/forms/authorsdialog.py b/openlp/plugins/songs/forms/authorsdialog.py index ec9d8bcf6..8b56b0e65 100644 --- a/openlp/plugins/songs/forms/authorsdialog.py +++ b/openlp/plugins/songs/forms/authorsdialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/forms/authorsform.py b/openlp/plugins/songs/forms/authorsform.py index 57577e55c..bcc1b7235 100644 --- a/openlp/plugins/songs/forms/authorsform.py +++ b/openlp/plugins/songs/forms/authorsform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/forms/editsongdialog.py b/openlp/plugins/songs/forms/editsongdialog.py index 88ad40daa..0d864bba8 100644 --- a/openlp/plugins/songs/forms/editsongdialog.py +++ b/openlp/plugins/songs/forms/editsongdialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 480055a8e..ba4afdfe7 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/forms/editversedialog.py b/openlp/plugins/songs/forms/editversedialog.py index 495a03be9..16579f6a9 100644 --- a/openlp/plugins/songs/forms/editversedialog.py +++ b/openlp/plugins/songs/forms/editversedialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index d13ff884d..f604f0c5b 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/forms/songbookdialog.py b/openlp/plugins/songs/forms/songbookdialog.py index 5508c93c9..68709009b 100644 --- a/openlp/plugins/songs/forms/songbookdialog.py +++ b/openlp/plugins/songs/forms/songbookdialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/forms/songbookform.py b/openlp/plugins/songs/forms/songbookform.py index 343b5b6e3..e927e9bde 100644 --- a/openlp/plugins/songs/forms/songbookform.py +++ b/openlp/plugins/songs/forms/songbookform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/forms/songexportform.py b/openlp/plugins/songs/forms/songexportform.py index d2dd4fb67..58550c710 100644 --- a/openlp/plugins/songs/forms/songexportform.py +++ b/openlp/plugins/songs/forms/songexportform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/forms/songimportform.py b/openlp/plugins/songs/forms/songimportform.py index ec2c7774b..46d9f1c83 100644 --- a/openlp/plugins/songs/forms/songimportform.py +++ b/openlp/plugins/songs/forms/songimportform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/forms/songmaintenancedialog.py b/openlp/plugins/songs/forms/songmaintenancedialog.py index 0ac0a8925..88fafefad 100644 --- a/openlp/plugins/songs/forms/songmaintenancedialog.py +++ b/openlp/plugins/songs/forms/songmaintenancedialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/forms/songmaintenanceform.py b/openlp/plugins/songs/forms/songmaintenanceform.py index cc0bae8bc..22e47d7b4 100644 --- a/openlp/plugins/songs/forms/songmaintenanceform.py +++ b/openlp/plugins/songs/forms/songmaintenanceform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/forms/topicsdialog.py b/openlp/plugins/songs/forms/topicsdialog.py index cff8ee4c5..3cf298cfc 100644 --- a/openlp/plugins/songs/forms/topicsdialog.py +++ b/openlp/plugins/songs/forms/topicsdialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/forms/topicsform.py b/openlp/plugins/songs/forms/topicsform.py index 35e543ee4..88149264a 100644 --- a/openlp/plugins/songs/forms/topicsform.py +++ b/openlp/plugins/songs/forms/topicsform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index a529464df..9e068e7f1 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/cclifileimport.py b/openlp/plugins/songs/lib/cclifileimport.py index 6f500dc28..11bb429a8 100644 --- a/openlp/plugins/songs/lib/cclifileimport.py +++ b/openlp/plugins/songs/lib/cclifileimport.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/db.py b/openlp/plugins/songs/lib/db.py index 4e3f5b503..5a9be63e3 100644 --- a/openlp/plugins/songs/lib/db.py +++ b/openlp/plugins/songs/lib/db.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/easislidesimport.py b/openlp/plugins/songs/lib/easislidesimport.py index eb7127f62..11a68c2d8 100644 --- a/openlp/plugins/songs/lib/easislidesimport.py +++ b/openlp/plugins/songs/lib/easislidesimport.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/ewimport.py b/openlp/plugins/songs/lib/ewimport.py index 64cabfc32..7d2658245 100644 --- a/openlp/plugins/songs/lib/ewimport.py +++ b/openlp/plugins/songs/lib/ewimport.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/foilpresenterimport.py b/openlp/plugins/songs/lib/foilpresenterimport.py index b8c9a6a2a..b78c91762 100644 --- a/openlp/plugins/songs/lib/foilpresenterimport.py +++ b/openlp/plugins/songs/lib/foilpresenterimport.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/importer.py b/openlp/plugins/songs/lib/importer.py index 2723ef626..cf2d3f536 100644 --- a/openlp/plugins/songs/lib/importer.py +++ b/openlp/plugins/songs/lib/importer.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 278d9bf5d..cc36f983a 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/olp1import.py b/openlp/plugins/songs/lib/olp1import.py index 2ae37cca4..022c05414 100644 --- a/openlp/plugins/songs/lib/olp1import.py +++ b/openlp/plugins/songs/lib/olp1import.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/olpimport.py b/openlp/plugins/songs/lib/olpimport.py index e58567f1c..b617734bd 100644 --- a/openlp/plugins/songs/lib/olpimport.py +++ b/openlp/plugins/songs/lib/olpimport.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/oooimport.py b/openlp/plugins/songs/lib/oooimport.py index 292c94401..34765274d 100644 --- a/openlp/plugins/songs/lib/oooimport.py +++ b/openlp/plugins/songs/lib/oooimport.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/openlyricsexport.py b/openlp/plugins/songs/lib/openlyricsexport.py index 4f589c474..d12674116 100644 --- a/openlp/plugins/songs/lib/openlyricsexport.py +++ b/openlp/plugins/songs/lib/openlyricsexport.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/openlyricsimport.py b/openlp/plugins/songs/lib/openlyricsimport.py index 1d03149a5..abd419ec0 100644 --- a/openlp/plugins/songs/lib/openlyricsimport.py +++ b/openlp/plugins/songs/lib/openlyricsimport.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/opensongimport.py b/openlp/plugins/songs/lib/opensongimport.py index 03b5e9a67..162a0e651 100644 --- a/openlp/plugins/songs/lib/opensongimport.py +++ b/openlp/plugins/songs/lib/opensongimport.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/sofimport.py b/openlp/plugins/songs/lib/sofimport.py index ded1ceb65..013a8b0b5 100644 --- a/openlp/plugins/songs/lib/sofimport.py +++ b/openlp/plugins/songs/lib/sofimport.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/songbeamerimport.py b/openlp/plugins/songs/lib/songbeamerimport.py index 97b165c0c..258ed23b4 100644 --- a/openlp/plugins/songs/lib/songbeamerimport.py +++ b/openlp/plugins/songs/lib/songbeamerimport.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index 3d3292f0b..ef142c8f8 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/songshowplusimport.py b/openlp/plugins/songs/lib/songshowplusimport.py index d7c4eb30c..b4a7e5061 100644 --- a/openlp/plugins/songs/lib/songshowplusimport.py +++ b/openlp/plugins/songs/lib/songshowplusimport.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/songstab.py b/openlp/plugins/songs/lib/songstab.py index 28954b33a..a65e21a28 100644 --- a/openlp/plugins/songs/lib/songstab.py +++ b/openlp/plugins/songs/lib/songstab.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/ui.py b/openlp/plugins/songs/lib/ui.py index af8aa1361..1db226b7a 100644 --- a/openlp/plugins/songs/lib/ui.py +++ b/openlp/plugins/songs/lib/ui.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/wowimport.py b/openlp/plugins/songs/lib/wowimport.py index fbbf60b95..73c851038 100644 --- a/openlp/plugins/songs/lib/wowimport.py +++ b/openlp/plugins/songs/lib/wowimport.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py index b49fa2893..7bcf56aa1 100644 --- a/openlp/plugins/songs/lib/xml.py +++ b/openlp/plugins/songs/lib/xml.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 98f15e32e..696431870 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songusage/__init__.py b/openlp/plugins/songusage/__init__.py index e1ab42f0c..ed9dd1fe6 100644 --- a/openlp/plugins/songusage/__init__.py +++ b/openlp/plugins/songusage/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songusage/forms/__init__.py b/openlp/plugins/songusage/forms/__init__.py index ea03b20c4..f382b0bb9 100644 --- a/openlp/plugins/songusage/forms/__init__.py +++ b/openlp/plugins/songusage/forms/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songusage/forms/songusagedeletedialog.py b/openlp/plugins/songusage/forms/songusagedeletedialog.py index ed527ebae..ec93cc780 100644 --- a/openlp/plugins/songusage/forms/songusagedeletedialog.py +++ b/openlp/plugins/songusage/forms/songusagedeletedialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songusage/forms/songusagedeleteform.py b/openlp/plugins/songusage/forms/songusagedeleteform.py index d9e24fa43..9eea0a6da 100644 --- a/openlp/plugins/songusage/forms/songusagedeleteform.py +++ b/openlp/plugins/songusage/forms/songusagedeleteform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songusage/forms/songusagedetaildialog.py b/openlp/plugins/songusage/forms/songusagedetaildialog.py index 4e8e1eb37..e06127ae8 100644 --- a/openlp/plugins/songusage/forms/songusagedetaildialog.py +++ b/openlp/plugins/songusage/forms/songusagedetaildialog.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songusage/forms/songusagedetailform.py b/openlp/plugins/songusage/forms/songusagedetailform.py index 3a889c1cc..3f90961b0 100644 --- a/openlp/plugins/songusage/forms/songusagedetailform.py +++ b/openlp/plugins/songusage/forms/songusagedetailform.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songusage/lib/__init__.py b/openlp/plugins/songusage/lib/__init__.py index 34fc155dd..3c9c20ecd 100644 --- a/openlp/plugins/songusage/lib/__init__.py +++ b/openlp/plugins/songusage/lib/__init__.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songusage/lib/db.py b/openlp/plugins/songusage/lib/db.py index 0c59156fc..2c6c4fa6c 100644 --- a/openlp/plugins/songusage/lib/db.py +++ b/openlp/plugins/songusage/lib/db.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py index 77c31705f..7d05e0add 100644 --- a/openlp/plugins/songusage/songusageplugin.py +++ b/openlp/plugins/songusage/songusageplugin.py @@ -7,7 +7,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # diff --git a/setup.py b/setup.py index 618bbb487..98bf98054 100755 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # # Põldaru, Christian Richter, Philip Ridout, Jeffrey Smith, Maikel # # Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # # --------------------------------------------------------------------------- # From af961afa7883117031570bb8e18ce29282105811 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Thu, 26 May 2011 20:00:25 +0200 Subject: [PATCH 090/190] removed the 'default' button --- openlp/core/ui/displaytagdialog.py | 5 ----- openlp/core/ui/displaytagform.py | 9 --------- 2 files changed, 14 deletions(-) diff --git a/openlp/core/ui/displaytagdialog.py b/openlp/core/ui/displaytagdialog.py index f501f03f6..a7701d8f3 100644 --- a/openlp/core/ui/displaytagdialog.py +++ b/openlp/core/ui/displaytagdialog.py @@ -69,9 +69,6 @@ class Ui_DisplayTagDialog(object): spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) - self.defaultPushButton = QtGui.QPushButton(self.widget) - self.defaultPushButton.setObjectName(u'defaultPushButton') - self.horizontalLayout.addWidget(self.defaultPushButton) self.deletePushButton = QtGui.QPushButton(self.widget) self.deletePushButton.setObjectName(u'deletePushButton') self.horizontalLayout.addWidget(self.deletePushButton) @@ -141,8 +138,6 @@ class Ui_DisplayTagDialog(object): self.endTagLabel.setText( translate('OpenLP.DisplayTagDialog', 'End tag')) self.deletePushButton.setText(UiStrings().Delete) - self.defaultPushButton.setText( - translate('OpenLP.DisplayTagDialog', 'Default')) self.newPushButton.setText(UiStrings().New) self.tagTableWidget.horizontalHeaderItem(0).setText( translate('OpenLP.DisplayTagDialog', 'Description')) diff --git a/openlp/core/ui/displaytagform.py b/openlp/core/ui/displaytagform.py index d0f27120f..6aaddf2b8 100644 --- a/openlp/core/ui/displaytagform.py +++ b/openlp/core/ui/displaytagform.py @@ -51,8 +51,6 @@ class DisplayTagForm(QtGui.QDialog, Ui_DisplayTagDialog): self._loadDisplayTags() QtCore.QObject.connect(self.tagTableWidget, QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onRowSelected) - QtCore.QObject.connect(self.defaultPushButton, - QtCore.SIGNAL(u'pressed()'), self.onDefaultPushed) QtCore.QObject.connect(self.newPushButton, QtCore.SIGNAL(u'pressed()'), self.onNewPushed) QtCore.QObject.connect(self.savePushButton, @@ -141,13 +139,6 @@ class DisplayTagForm(QtGui.QDialog, Ui_DisplayTagDialog): self.tagTableWidget.selectRow(self.tagTableWidget.rowCount() - 1) self.onRowSelected() - def onDefaultPushed(self): - """ - Remove all Custom Tags and reset to base set only. - """ - DisplayTags.reset_html_tags() - self._resetTable() - def onDeletePushed(self): """ Delete selected custom tag. From 74e47dcbc7fb8c948a6447915551e3984af36ea8 Mon Sep 17 00:00:00 2001 From: Gerald Britton Date: Thu, 26 May 2011 14:20:14 -0400 Subject: [PATCH 091/190] Add specific error messages for file problems. Remove unicode strings in calls to translate() --- openlp/plugins/songs/lib/oooimport.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/openlp/plugins/songs/lib/oooimport.py b/openlp/plugins/songs/lib/oooimport.py index 5e4cd25d4..3cc61f4e3 100644 --- a/openlp/plugins/songs/lib/oooimport.py +++ b/openlp/plugins/songs/lib/oooimport.py @@ -67,14 +67,10 @@ class OooImport(SongImport): self.log_error( self.import_source[0], translate('SongsPlugin.SongImport', - u'Unable to open OpenOffice.org or LibreOffice')) + 'Unable to open OpenOffice.org or LibreOffice')) log.error(exc) return self.import_wizard.progressBar.setMaximum(len(self.import_source)) - error_msg = lambda: self.log_error( - self.filepath, - translate('SongsPlugin.SongImport', - u'Unable to open file')) for filename in self.import_source: if self.stop_import_flag: break @@ -85,9 +81,13 @@ class OooImport(SongImport): self.process_ooo_document() self.close_ooo_file() else: - error_msg() + self.log_error(self.filepath, + translate('SongsPlugin.SongImport', + 'Unable to open file')) else: - error_msg() + self.log_error(self.filepath, + translate('SongsPlugin.SongImport', + 'File not found')) self.close_ooo() def process_ooo_document(self): From 6aca4600b7b345f82de99bd210b14edbafa0c287 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Thu, 26 May 2011 20:52:05 +0200 Subject: [PATCH 093/190] fixed bug 788770 Fixes: https://launchpad.net/bugs/788770 --- openlp/core/lib/serviceitem.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 37723321c..cf682abc6 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -177,10 +177,11 @@ class ServiceItem(object): .format_slide(slide[u'raw_slide'], line_break, self) for page in formatted: page = page.replace(u'
    ', u'{br}') + html = expand_tags(cgi.escape(page.rstrip())) self._display_frames.append({ u'title': clean_tags(page), u'text': clean_tags(page.rstrip()), - u'html': expand_tags(cgi.escape(page.rstrip())), + u'html': html.replace(u'&nbsp;', u' '), u'verseTag': slide[u'verseTag'] }) elif self.service_item_type == ServiceItemType.Image or \ From c435127585284e27676963cdfb02ead7fb077efb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Thu, 26 May 2011 21:13:11 +0200 Subject: [PATCH 094/190] some fixes in relation with the extened LanguageForm close cursor from OldBibleDB --- openlp/plugins/bibles/forms/bibleimportform.py | 2 +- openlp/plugins/bibles/forms/bibleupgradeform.py | 1 + openlp/plugins/bibles/forms/languageform.py | 6 +----- openlp/plugins/bibles/lib/csvbible.py | 7 +++---- openlp/plugins/bibles/lib/db.py | 7 +++++++ openlp/plugins/bibles/lib/http.py | 4 ++-- openlp/plugins/bibles/lib/openlp1.py | 7 +++---- openlp/plugins/bibles/lib/opensong.py | 4 ++-- openlp/plugins/bibles/lib/osis.py | 7 +++---- 9 files changed, 23 insertions(+), 22 deletions(-) diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index 45ada29ba..731c4ff17 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -706,7 +706,7 @@ class BibleImportForm(OpenLPWizard): name=license_version, filename=unicode(self.field(u'openlp1_location').toString()) ) - if importer.do_import(): + if importer.do_import(license_version): self.manager.save_meta_data(license_version, license_version, license_copyright, license_permissions) self.manager.reload_bibles() diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index 7b7c259ac..fef8c04df 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -324,6 +324,7 @@ class BibleUpgradeForm(OpenLPWizard): oldbible = OldBibleDB(self.mediaItem, path=self.path, file=filename) oldname = oldbible.get_name() + oldbible.close_cursor() if not version_name: critical_error_message_box(UiStrings().EmptyField, translate('BiblesPlugin.UpgradeWizardForm', diff --git a/openlp/plugins/bibles/forms/languageform.py b/openlp/plugins/bibles/forms/languageform.py index e7cde104c..477c7ee1e 100644 --- a/openlp/plugins/bibles/forms/languageform.py +++ b/openlp/plugins/bibles/forms/languageform.py @@ -55,11 +55,7 @@ class LanguageForm(QDialog, Ui_LanguageDialog): def exec_(self, bible_name): self.languageComboBox.addItem(u'') if bible_name: - self.infoLabel.setText(unicode(translate( - 'BiblesPlugin.LanguageDialog', - 'OpenLP is unable to determine the language of this translation' - ' of the Bible. Please select the language for "%s" from the ' - 'list below.')) % bible_name) + self.bibleLabel.setText(unicode(bible_name)) items = BiblesResourcesDB.get_languages() for item in items: self.languageComboBox.addItem(item[u'name']) diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index a4a498677..8b1ce0c8d 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -92,7 +92,7 @@ class CSVBible(BibleDB): self.booksfile = kwargs[u'booksfile'] self.versesfile = kwargs[u'versefile'] - def do_import(self): + def do_import(self, bible_name=None): """ Import the bible books and verses. """ @@ -100,10 +100,9 @@ class CSVBible(BibleDB): self.wizard.progressBar.setMinimum(0) self.wizard.progressBar.setMaximum(66) success = True - language_id = self.get_language() + language_id = self.get_language(bible_name) if not language_id: - log.exception(u'Importing books from "%s" '\ - 'failed' % self.filename) + log.exception(u'Importing books from "%s" failed' % self.filename) return False books_file = None book_list = {} diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index a3eb0e849..ab4cf3ba4 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -999,6 +999,13 @@ class OldBibleDB(QtCore.QObject, Manager): self.cursor = conn.cursor() return self.cursor + def close_cursor(self): + """ + Close the cursor + """ + if self.cursor: + self.cursor.close() + def run_sql(self, query, parameters=()): """ Run an SQL query on the database, returning the results. diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 5a05ade92..ab82799d1 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -375,7 +375,7 @@ class HTTPBible(BibleDB): if u'proxy_password' in kwargs: self.proxy_password = kwargs[u'proxy_password'] - def do_import(self): + def do_import(self, bible_name=None): """ Run the import. This method overrides the parent class method. Returns ``True`` on success, ``False`` on failure. @@ -414,7 +414,7 @@ class HTTPBible(BibleDB): language_id = bible[u'language_id'] self.create_meta(u'language_id', language_id) else: - language_id = self.get_language() + language_id = self.get_language(bible_name) if not language_id: log.exception(u'Importing books from %s " '\ 'failed' % self.filename) diff --git a/openlp/plugins/bibles/lib/openlp1.py b/openlp/plugins/bibles/lib/openlp1.py index 2c3eb7851..3564c5d37 100644 --- a/openlp/plugins/bibles/lib/openlp1.py +++ b/openlp/plugins/bibles/lib/openlp1.py @@ -46,7 +46,7 @@ class OpenLP1Bible(BibleDB): BibleDB.__init__(self, parent, **kwargs) self.filename = kwargs[u'filename'] - def do_import(self): + def do_import(self, bible_name=None): """ Imports an openlp.org v1 bible. """ @@ -58,10 +58,9 @@ class OpenLP1Bible(BibleDB): except: return False #Create the bible language - language_id = self.get_language() + language_id = self.get_language(bible_name) if not language_id: - log.exception(u'Importing books from "%s " '\ - 'failed' % self.filename) + log.exception(u'Importing books from "%s" failed' % self.filename) return False # Create all books. cursor.execute(u'SELECT id, testament_id, name, abbreviation FROM book') diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index f848cd69b..005139784 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -46,7 +46,7 @@ class OpenSongBible(BibleDB): BibleDB.__init__(self, parent, **kwargs) self.filename = kwargs['filename'] - def do_import(self): + def do_import(self, bible_name=None): """ Loads a Bible from file. """ @@ -62,7 +62,7 @@ class OpenSongBible(BibleDB): file = open(self.filename, u'r') opensong = objectify.parse(file) bible = opensong.getroot() - language_id = self.get_language() + language_id = self.get_language(bible_name) if not language_id: log.exception(u'Importing books from "%s" '\ 'failed' % self.filename) diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index 682fed11a..effb62104 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -86,7 +86,7 @@ class OSISBible(BibleDB): if fbibles: fbibles.close() - def do_import(self): + def do_import(self, bible_name=None): """ Loads a Bible from file. """ @@ -109,10 +109,9 @@ class OSISBible(BibleDB): if detect_file: detect_file.close() # Set meta language_id - language_id = self.get_language() + language_id = self.get_language(bible_name) if not language_id: - log.exception(u'Importing books from "%s" '\ - 'failed' % self.filename) + log.exception(u'Importing books from "%s" failed' % self.filename) return False try: osis = codecs.open(self.filename, u'r', details['encoding']) From b5c392112b9dd4a4736a5fa8a18b928537708418 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Thu, 26 May 2011 22:15:38 +0200 Subject: [PATCH 095/190] test close database --- openlp/plugins/bibles/forms/bibleupgradeform.py | 1 - openlp/plugins/bibles/lib/db.py | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index fef8c04df..7b7c259ac 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -324,7 +324,6 @@ class BibleUpgradeForm(OpenLPWizard): oldbible = OldBibleDB(self.mediaItem, path=self.path, file=filename) oldname = oldbible.get_name() - oldbible.close_cursor() if not version_name: critical_error_message_box(UiStrings().EmptyField, translate('BiblesPlugin.UpgradeWizardForm', diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index ab4cf3ba4..c557d8047 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -499,6 +499,12 @@ class BibleDB(QtCore.QObject, Manager): return True return False + def close_database(self): + """ + Close database connection. + """ + self.session.close() + def dump_bible(self): """ Utility debugging method to dump the contents of a bible. From 39537f9ef711125d1b8ae6f5ed0d7c0d21612f0d Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Thu, 26 May 2011 22:17:52 +0200 Subject: [PATCH 096/190] fixed bug 788770 Fixes: https://launchpad.net/bugs/788770 --- openlp/plugins/bibles/lib/mediaitem.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index b245f7241..41059f942 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -775,6 +775,7 @@ class BibleMediaItem(MediaManagerItem): # We have to be 'Continuous'. else: bible_text = u'%s %s %s\n' % (bible_text, verse_text, text) + bible_text = bible_text.strip(u' ') if not old_item: start_item = bitem elif self.checkTitle(bitem, old_item): From f29830b98ea8d37ae76a67c88757879a16165c53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Thu, 26 May 2011 22:38:07 +0200 Subject: [PATCH 097/190] change BookNameDialog like Raoul want. --- .../plugins/bibles/forms/bibleupgradeform.py | 2 +- openlp/plugins/bibles/forms/booknamedialog.py | 154 +++++++++--------- openlp/plugins/bibles/forms/booknameform.py | 30 ++-- openlp/plugins/bibles/lib/db.py | 3 +- 4 files changed, 93 insertions(+), 96 deletions(-) diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index 7b7c259ac..875396de6 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -623,7 +623,7 @@ class BibleUpgradeForm(OpenLPWizard): (number + 1, self.maxBibles, name), self.progressBar.maximum() - self.progressBar.value()) delete_database(self.path, - clean_filename(self.newbibles[number].get_name())) + clean_filename(name)) number += 1 self.mediaItem.reloadBibles() successful_import = 0 diff --git a/openlp/plugins/bibles/forms/booknamedialog.py b/openlp/plugins/bibles/forms/booknamedialog.py index 632007013..d2901ce23 100644 --- a/openlp/plugins/bibles/forms/booknamedialog.py +++ b/openlp/plugins/bibles/forms/booknamedialog.py @@ -27,92 +27,88 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import translate -from openlp.core.lib.ui import create_accept_reject_button_box class Ui_BookNameDialog(object): def setupUi(self, bookNameDialog): - bookNameDialog.setObjectName(u'BookNameDialog') - bookNameDialog.resize(400, 275) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, - QtGui.QSizePolicy.MinimumExpanding) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(bookNameDialog.sizePolicy() - .hasHeightForWidth()) - bookNameDialog.setSizePolicy(sizePolicy) - self.widget = QtGui.QWidget(bookNameDialog) - self.widget.setGeometry(QtCore.QRect(10, 15, 381, 251)) - self.widget.setObjectName(u'widget') - self.verticalLayout = QtGui.QVBoxLayout(self.widget) - self.verticalLayout.setObjectName(u'verticalLayout') - self.headlineLabel = QtGui.QLabel(self.widget) - font = QtGui.QFont() - font.setFamily(u'Arial') - font.setPointSize(11) - font.setWeight(75) - font.setBold(True) - self.headlineLabel.setFont(font) - self.headlineLabel.setObjectName(u'HeadlineLabel') - self.verticalLayout.addWidget(self.headlineLabel) - self.infoLabel = QtGui.QLabel(self.widget) - self.infoLabel.setObjectName(u'InfoLabel') - self.verticalLayout.addWidget(self.infoLabel) - self.formLayout = QtGui.QFormLayout() - self.formLayout.setObjectName(u'formLayout') - self.requestLabel = QtGui.QLabel(self.widget) - self.requestLabel.setObjectName(u'RequestLabel') - self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, - self.requestLabel) - self.requestComboBox = QtGui.QComboBox(self.widget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, - QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.requestComboBox.sizePolicy() - .hasHeightForWidth()) - self.requestComboBox.setSizePolicy(sizePolicy) - self.requestComboBox.setObjectName(u'RequestComboBox') - self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, - self.requestComboBox) - self.verticalLayout.addLayout(self.formLayout) - self.infoLabelTestaments = QtGui.QLabel(self.widget) - self.infoLabelTestaments.setObjectName(u'InfoLabelTestaments') - self.verticalLayout.addWidget(self.infoLabelTestaments) - self.checkBoxOldTestament = QtGui.QCheckBox(self.widget) - self.checkBoxOldTestament.setObjectName(u'OldTestament') - self.checkBoxOldTestament.setCheckState(QtCore.Qt.Checked) - self.verticalLayout.addWidget(self.checkBoxOldTestament) - self.checkBoxNewTestament = QtGui.QCheckBox(self.widget) - self.checkBoxNewTestament.setObjectName(u'OldTestament') - self.checkBoxNewTestament.setCheckState(QtCore.Qt.Checked) - self.verticalLayout.addWidget(self.checkBoxNewTestament) - self.checkBoxApocrypha = QtGui.QCheckBox(self.widget) - self.checkBoxApocrypha.setObjectName(u'OldTestament') - self.checkBoxApocrypha.setCheckState(QtCore.Qt.Checked) - self.verticalLayout.addWidget(self.checkBoxApocrypha) - self.verticalLayout.addWidget( - create_accept_reject_button_box(bookNameDialog)) - spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, - QtGui.QSizePolicy.Expanding) - self.verticalLayout.addItem(spacerItem) + bookNameDialog.setObjectName(u'bookNameDialog') + bookNameDialog.resize(400, 271) + self.bookNameLayout = QtGui.QVBoxLayout(bookNameDialog) + self.bookNameLayout.setSpacing(8) + self.bookNameLayout.setMargin(8) + self.bookNameLayout.setObjectName(u'bookNameLayout') + self.infoLabel = QtGui.QLabel(bookNameDialog) + self.infoLabel.setWordWrap(True) + self.infoLabel.setObjectName(u'infoLabel') + self.bookNameLayout.addWidget(self.infoLabel) + self.correspondingLayout = QtGui.QGridLayout() + self.correspondingLayout.setSpacing(8) + self.correspondingLayout.setObjectName(u'correspondingLayout') + self.currentLabel = QtGui.QLabel(bookNameDialog) + self.currentLabel.setObjectName(u'currentLabel') + self.correspondingLayout.addWidget(self.currentLabel, 0, 0, 1, 1) + self.currentLineEdit = QtGui.QLineEdit(bookNameDialog) + self.currentLineEdit.setReadOnly(True) + self.currentLineEdit.setObjectName(u'currentLineEdit') + self.correspondingLayout.addWidget(self.currentLineEdit, 0, 1, 1, 1) + self.correspondingLabel = QtGui.QLabel(bookNameDialog) + self.correspondingLabel.setObjectName(u'correspondingLabel') + self.correspondingLayout.addWidget( + self.correspondingLabel, 1, 0, 1, 1) + self.correspondingComboBox = QtGui.QComboBox(bookNameDialog) + self.correspondingComboBox.setObjectName(u'correspondingComboBox') + self.correspondingLayout.addWidget( + self.correspondingComboBox, 1, 1, 1, 1) + self.bookNameLayout.addLayout(self.correspondingLayout) + self.optionsGroupBox = QtGui.QGroupBox(bookNameDialog) + self.optionsGroupBox.setObjectName(u'optionsGroupBox') + self.optionsLayout = QtGui.QVBoxLayout(self.optionsGroupBox) + self.optionsLayout.setSpacing(8) + self.optionsLayout.setMargin(8) + self.optionsLayout.setObjectName(u'optionsLayout') + self.oldTestamentCheckBox = QtGui.QCheckBox(self.optionsGroupBox) + self.oldTestamentCheckBox.setObjectName(u'oldTestamentCheckBox') + self.oldTestamentCheckBox.setCheckState(QtCore.Qt.Checked) + self.optionsLayout.addWidget(self.oldTestamentCheckBox) + self.newTestamentCheckBox = QtGui.QCheckBox(self.optionsGroupBox) + self.newTestamentCheckBox.setObjectName(u'newTestamentCheckBox') + self.newTestamentCheckBox.setCheckState(QtCore.Qt.Checked) + self.optionsLayout.addWidget(self.newTestamentCheckBox) + self.apocryphaCheckBox = QtGui.QCheckBox(self.optionsGroupBox) + self.apocryphaCheckBox.setObjectName(u'apocryphaCheckBox') + self.apocryphaCheckBox.setCheckState(QtCore.Qt.Checked) + self.optionsLayout.addWidget(self.apocryphaCheckBox) + self.bookNameLayout.addWidget(self.optionsGroupBox) + self.buttonBox = QtGui.QDialogButtonBox(bookNameDialog) + self.buttonBox.setOrientation(QtCore.Qt.Horizontal) + self.buttonBox.setStandardButtons( + QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) + self.buttonBox.setObjectName(u'buttonBox') + self.bookNameLayout.addWidget(self.buttonBox) + self.retranslateUi(bookNameDialog) - QtCore.QMetaObject.connectSlotsByName(self) + QtCore.QObject.connect( + self.buttonBox, QtCore.SIGNAL(u'accepted()'), + bookNameDialog.accept) + QtCore.QObject.connect( + self.buttonBox, QtCore.SIGNAL(u'rejected()'), + bookNameDialog.reject) + QtCore.QMetaObject.connectSlotsByName(bookNameDialog) def retranslateUi(self, bookNameDialog): - bookNameDialog.setWindowTitle( - translate('BiblesPlugin.BookNameDialog', 'Select Book')) - self.headlineLabel.setText( - translate('BiblesPlugin.BookNameDialog', 'Select Book:')) + bookNameDialog.setWindowTitle(translate('BiblesPlugin.BookNameDialog', + 'Select Book Name')) self.infoLabel.setText(translate('BiblesPlugin.BookNameDialog', - 'The following books cannot be clearly attributed. \n' - 'Please select which book it is.')) - self.requestLabel.setText(translate('BiblesPlugin.BookNameDialog', - 'Book:')) - self.infoLabelTestaments.setText(translate( - 'BiblesPlugin.BookNameDialog', 'Show books from:')) - self.checkBoxOldTestament.setText(translate( + 'The following book name cannot be matched up internally. Please ' + 'select the corresponding English name from the list.')) + self.currentLabel.setText(translate('BiblesPlugin.BookNameDialog', + 'Current name:')) + self.correspondingLabel.setText(translate( + 'BiblesPlugin.BookNameDialog', 'Corresponding name:')) + self.optionsGroupBox.setTitle(translate('BiblesPlugin.BookNameDialog', + 'Show Books From')) + self.oldTestamentCheckBox.setText(translate( 'BiblesPlugin.BookNameDialog', 'Old Testament')) - self.checkBoxNewTestament.setText(translate( + self.newTestamentCheckBox.setText(translate( 'BiblesPlugin.BookNameDialog', 'New Testament')) - self.checkBoxApocrypha.setText(translate('BiblesPlugin.BookNameDialog', + self.apocryphaCheckBox.setText(translate('BiblesPlugin.BookNameDialog', 'Apocrypha')) diff --git a/openlp/plugins/bibles/forms/booknameform.py b/openlp/plugins/bibles/forms/booknameform.py index fdb383a8c..df4943656 100644 --- a/openlp/plugins/bibles/forms/booknameform.py +++ b/openlp/plugins/bibles/forms/booknameform.py @@ -59,13 +59,13 @@ class BookNameForm(QDialog, Ui_BookNameDialog): """ Set up the signals used in the booknameform. """ - QtCore.QObject.connect(self.checkBoxOldTestament, + QtCore.QObject.connect(self.oldTestamentCheckBox, QtCore.SIGNAL(u'stateChanged(int)'), self.onCheckBoxIndexChanged) - QtCore.QObject.connect(self.checkBoxNewTestament, + QtCore.QObject.connect(self.newTestamentCheckBox, QtCore.SIGNAL(u'stateChanged(int)'), self.onCheckBoxIndexChanged) - QtCore.QObject.connect(self.checkBoxApocrypha, + QtCore.QObject.connect(self.apocryphaCheckBox, QtCore.SIGNAL(u'stateChanged(int)'), self.onCheckBoxIndexChanged) @@ -79,8 +79,8 @@ class BookNameForm(QDialog, Ui_BookNameDialog): ''' Reload the Combobox items ''' - self.requestComboBox.clear() - self.requestComboBox.addItem(u'') + self.correspondingComboBox.clear() + self.correspondingComboBox.addItem(u'') items = BiblesResourcesDB.get_books() for item in items: addBook = True @@ -88,36 +88,36 @@ class BookNameForm(QDialog, Ui_BookNameDialog): if book.book_reference_id == item[u'id']: addBook = False break - if self.checkBoxOldTestament.checkState() == QtCore.Qt.Unchecked \ + if self.oldTestamentCheckBox.checkState() == QtCore.Qt.Unchecked \ and item[u'testament_id'] == 1: addBook = False - elif self.checkBoxNewTestament.checkState() == QtCore.Qt.Unchecked \ + elif self.newTestamentCheckBox.checkState() == QtCore.Qt.Unchecked \ and item[u'testament_id'] == 2: addBook = False - elif self.checkBoxApocrypha.checkState() == QtCore.Qt.Unchecked \ + elif self.apocryphaCheckBox.checkState() == QtCore.Qt.Unchecked \ and item[u'testament_id'] == 3: addBook = False if addBook: - self.requestComboBox.addItem(item[u'name']) + self.correspondingComboBox.addItem(item[u'name']) def exec_(self, name, books, maxbooks): self.books = books log.debug(maxbooks) if maxbooks <= 27: - self.checkBoxOldTestament.setCheckState(QtCore.Qt.Unchecked) - self.checkBoxApocrypha.setCheckState(QtCore.Qt.Unchecked) + self.oldTestamentCheckBox.setCheckState(QtCore.Qt.Unchecked) + self.apocryphaCheckBox.setCheckState(QtCore.Qt.Unchecked) elif maxbooks <= 66: - self.checkBoxApocrypha.setCheckState(QtCore.Qt.Unchecked) + self.apocryphaCheckBox.setCheckState(QtCore.Qt.Unchecked) self.reloadComboBox() - self.requestLabel.setText(name) + self.currentLineEdit.setText(name) return QDialog.exec_(self) def accept(self): - if self.requestComboBox.currentText() == u'': + if self.correspondingComboBox.currentText() == u'': critical_error_message_box( message=translate('BiblesPlugin.BookNameForm', 'You need to select a book.')) - self.requestComboBox.setFocus() + self.correspondingComboBox.setFocus() return False else: return QDialog.accept(self) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index c557d8047..864c002f5 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -343,7 +343,8 @@ class BibleDB(QtCore.QObject, Manager): book_ref = None book_name = BookNameForm(self.wizard) if book_name.exec_(book, self.get_books(), maxbooks): - book_ref = unicode(book_name.requestComboBox.currentText()) + book_ref = unicode( + book_name.correspondingComboBox.currentText()) if not book_ref: return None else: From b890b52a8d5d88a35e33eb02de26e5e348888998 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Fri, 27 May 2011 08:29:14 +0200 Subject: [PATCH 098/190] finished the theme menu --- openlp/core/ui/servicemanager.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index ed0de1fa8..1cf76951c 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -677,19 +677,18 @@ class ServiceManager(QtGui.QWidget): .is_capable(ItemCapabilities.AllowsVariableStartTime): self.timeAction.setVisible(True) self.themeMenu.menuAction().setVisible(False) + # Set up the theme menu. if serviceItem[u'service_item'].is_text() and \ len(self.themeMenu.actions()) > 1: self.themeMenu.menuAction().setVisible(True) + # The service item does not have a theme, check the "Default". if serviceItem[u'service_item'].theme is None: - themeAction = self.themeMenu.findChild(QtGui.QAction, u'Sunrise') + themeAction = self.themeMenu.defaultAction() else: - themeAction = self.themeMenu.findChild(QtGui.QAction, u'Sunrise') + themeAction = self.themeMenu.findChild( + QtGui.QAction, serviceItem[u'service_item'].theme) if themeAction is not None: themeAction.setChecked(True) - print self.mainwindow.renderer.global_theme - for themeAction in self.themeMenu.actions(): - themeAction.setChecked( - themeAction.text() == serviceItem[u'service_item'].theme) action = self.menu.exec_(self.serviceManagerList.mapToGlobal(point)) def onServiceItemNoteForm(self): @@ -1295,6 +1294,14 @@ class ServiceManager(QtGui.QWidget): themeGroup = QtGui.QActionGroup(self.themeMenu) themeGroup.setExclusive(True) themeGroup.setObjectName(u'themeGroup') + # Create a "Default" theme, which allows the user to reset the item's + # theme to the service theme or global theme. + defaultTheme = context_menu_action(self.themeMenu, None, + UiStrings().Default, self.onThemeChangeAction) + defaultTheme.setCheckable(True) + self.themeMenu.setDefaultAction(defaultTheme) + themeGroup.addAction(defaultTheme) + context_menu_separator(self.themeMenu) for theme in theme_list: self.themeComboBox.addItem(theme) themeAction = context_menu_action(self.themeMenu, None, theme, @@ -1307,7 +1314,10 @@ class ServiceManager(QtGui.QWidget): self.regenerateServiceItems() def onThemeChangeAction(self): - theme = unicode(self.sender().text()) + theme = unicode(self.sender().objectName()) + # No object name means that the "Default" theme is supposed to be used. + if not theme: + theme = None item = self.findServiceItem()[0] self.serviceItems[item][u'service_item'].theme = theme self.regenerateServiceItems() From 8a38c0b76624427896cab097e254e534f78600b8 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Fri, 27 May 2011 08:45:42 +0200 Subject: [PATCH 099/190] do not hide the menu --- openlp/core/ui/servicemanager.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 1cf76951c..30bb66115 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -678,8 +678,7 @@ class ServiceManager(QtGui.QWidget): self.timeAction.setVisible(True) self.themeMenu.menuAction().setVisible(False) # Set up the theme menu. - if serviceItem[u'service_item'].is_text() and \ - len(self.themeMenu.actions()) > 1: + if serviceItem[u'service_item'].is_text(): self.themeMenu.menuAction().setVisible(True) # The service item does not have a theme, check the "Default". if serviceItem[u'service_item'].theme is None: From 18e3cb023264367520798455e53e69050bf40607 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Fri, 27 May 2011 09:02:02 +0200 Subject: [PATCH 100/190] removed not needed import --- openlp/core/ui/servicemanager.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 30bb66115..c32567075 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -37,8 +37,7 @@ from openlp.core.lib import OpenLPToolbar, ServiceItem, Receiver, build_icon, \ ItemCapabilities, SettingsManager, translate from openlp.core.lib.theme import ThemeLevel from openlp.core.lib.ui import UiStrings, critical_error_message_box, \ - context_menu_action, context_menu_separator, find_and_set_in_combo_box, \ - checkable_action + context_menu_action, context_menu_separator, find_and_set_in_combo_box from openlp.core.ui import ServiceNoteForm, ServiceItemEditForm, StartTimeForm from openlp.core.ui.printserviceform import PrintServiceForm from openlp.core.utils import AppLocation, delete_file, file_is_unicode, \ From d3148f90f8c4a4ef4522faaca964fc8c9ff9f193 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Fri, 27 May 2011 09:54:49 +0200 Subject: [PATCH 101/190] fix Traceback like Jonathan recommand --- openlp/core/lib/db.py | 3 ++- openlp/plugins/bibles/lib/db.py | 13 ------------- openlp/plugins/bibles/lib/manager.py | 1 + 3 files changed, 3 insertions(+), 14 deletions(-) diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 5b03e5fa4..e51271624 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -34,6 +34,7 @@ from PyQt4 import QtCore from sqlalchemy import create_engine, MetaData from sqlalchemy.exceptions import InvalidRequestError from sqlalchemy.orm import scoped_session, sessionmaker +from sqlalchemy.pool import NullPool from openlp.core.utils import AppLocation, delete_file @@ -52,7 +53,7 @@ def init_db(url, auto_flush=True, auto_commit=False): ``auto_commit`` Sets the commit behaviour of the session """ - engine = create_engine(url) + engine = create_engine(url, poolclass=NullPool) metadata = MetaData(bind=engine) session = scoped_session(sessionmaker(autoflush=auto_flush, autocommit=auto_commit, bind=engine)) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 0cf3b8a26..87da5fc52 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -500,12 +500,6 @@ class BibleDB(QtCore.QObject, Manager): return True return False - def close_database(self): - """ - Close database connection. - """ - self.session.close() - def dump_bible(self): """ Utility debugging method to dump the contents of a bible. @@ -1006,13 +1000,6 @@ class OldBibleDB(QtCore.QObject, Manager): self.cursor = conn.cursor() return self.cursor - def close_cursor(self): - """ - Close the cursor - """ - if self.cursor: - self.cursor.close() - def run_sql(self, query, parameters=()): """ Run an SQL query on the database, returning the results. diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 5fb235520..2699462c3 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -156,6 +156,7 @@ class BibleManager(object): # Find old database versions if bible.is_old_database(): self.old_bible_databases.append(filename) + bible.session.close() continue log.debug(u'Bible Name: "%s"', name) self.db_cache[name] = bible From e5231aba410d391f566dc6e3f065a34f8a7e4658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Fri, 27 May 2011 11:23:46 +0200 Subject: [PATCH 102/190] change using old bible databases in bibleupgradeform --- .../plugins/bibles/forms/bibleupgradeform.py | 30 +++++++------------ openlp/plugins/bibles/lib/db.py | 4 +-- openlp/plugins/bibles/lib/manager.py | 2 +- 3 files changed, 14 insertions(+), 22 deletions(-) diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index 875396de6..1cc075324 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -131,7 +131,7 @@ class BibleUpgradeForm(OpenLPWizard): """ for number, filename in enumerate(self.files): if number in self.success and self.success[number] == True: - delete_file(os.path.join(self.path, filename)) + delete_file(os.path.join(self.path, filename[0])) def customInit(self): """ @@ -183,7 +183,7 @@ class BibleUpgradeForm(OpenLPWizard): self.formWidget = {} self.formLayoutAttention = {} for number, filename in enumerate(self.files): - bible = OldBibleDB(self.mediaItem, path=self.path, file=filename) + bible = OldBibleDB(self.mediaItem, path=self.path, file=filename[0]) self.checkBox[number] = QtGui.QCheckBox(self.scrollAreaContents) checkBoxName = u'checkBox[%d]' % number self.checkBox[number].setObjectName(checkBoxName) @@ -321,9 +321,6 @@ class BibleUpgradeForm(OpenLPWizard): if not self.checkBox[number].checkState() == QtCore.Qt.Checked: continue version_name = unicode(self.versionNameEdit[number].text()) - oldbible = OldBibleDB(self.mediaItem, path=self.path, - file=filename) - oldname = oldbible.get_name() if not version_name: critical_error_message_box(UiStrings().EmptyField, translate('BiblesPlugin.UpgradeWizardForm', @@ -341,13 +338,13 @@ class BibleUpgradeForm(OpenLPWizard): self.versionNameEdit[number].setFocus() return False elif os.path.exists(os.path.join(self.path, clean_filename( - version_name))) and version_name == oldname: - newfilename = u'old_database_%s' % filename + version_name))) and version_name == filename[1]: + newfilename = u'old_database_%s' % filename[0] if not os.path.exists(os.path.join(self.path, newfilename)): - os.rename(os.path.join(self.path, filename), + os.rename(os.path.join(self.path, filename[0]), os.path.join(self.path, newfilename)) - self.files[number] = newfilename + self.files[number] = [newfilename, filename[1]] continue else: critical_error_message_box( @@ -393,9 +390,7 @@ class BibleUpgradeForm(OpenLPWizard): self.maxBibles = len(self.files) for number, filename in enumerate(self.files): self.checkBox[number].setCheckState(QtCore.Qt.Checked) - oldbible = OldBibleDB(self.mediaItem, path=self.path, - file=filename) - oldname = oldbible.get_name() + oldname = filename[1] if self.manager.exists(oldname): self.verticalWidget[number].show() self.formWidget[number].show() @@ -444,11 +439,8 @@ class BibleUpgradeForm(OpenLPWizard): if not self.checkBox[biblenumber].checkState() == QtCore.Qt.Checked: continue self.progressBar.reset() - oldbible = OldBibleDB(self.mediaItem, path=self.path, - file=filename) - name = oldbible.get_name() - if name is None: - delete_file(os.path.join(self.path, filename)) + if filename[1] is None: + delete_file(os.path.join(self.path, filename[0])) self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\nFailed')) % @@ -460,7 +452,7 @@ class BibleUpgradeForm(OpenLPWizard): 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\nUpgrading ...')) % (number + 1, self.maxBibles, name)) - if os.path.exists(os.path.join(self.path, filename)): + if os.path.exists(os.path.join(self.path, filename[0])): name = unicode(self.versionNameEdit[biblenumber].text()) self.newbibles[number] = BibleDB(self.mediaItem, path=self.path, name=name) @@ -519,7 +511,7 @@ class BibleUpgradeForm(OpenLPWizard): else: language_id = self.newbibles[number].get_language(name) if not language_id: - log.exception(u'Upgrading from "%s" failed' % filename) + log.exception(u'Upgrading from "%s" failed' % filename[0]) delete_database(self.path, clean_filename(self.newbibles[number].get_name())) del self.newbibles[number] diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 87da5fc52..776521aa6 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -996,8 +996,8 @@ class OldBibleDB(QtCore.QObject, Manager): """ if self.cursor is None: filepath = os.path.join(self.path, self.file) - conn = sqlite3.connect(filepath) - self.cursor = conn.cursor() + self.connection = sqlite3.connect(filepath) + self.cursor = self.connection.cursor() return self.cursor def run_sql(self, query, parameters=()): diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 2699462c3..40ddcaf25 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -155,7 +155,7 @@ class BibleManager(object): continue # Find old database versions if bible.is_old_database(): - self.old_bible_databases.append(filename) + self.old_bible_databases.append([filename, name]) bible.session.close() continue log.debug(u'Bible Name: "%s"', name) From 59d374517e587de38169215fc6a68e2d50847a64 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Fri, 27 May 2011 11:34:14 +0200 Subject: [PATCH 103/190] - improved 'auto select' - fixed a traceback - improved parentage - clean ups --- openlp/core/lib/mediamanageritem.py | 18 +++++--- openlp/core/ui/slidecontroller.py | 3 +- openlp/plugins/custom/customplugin.py | 3 -- openlp/plugins/custom/forms/editcustomform.py | 10 ++-- openlp/plugins/custom/lib/mediaitem.py | 46 +++++++++---------- openlp/plugins/songs/forms/editsongform.py | 2 +- openlp/plugins/songs/lib/mediaitem.py | 9 ++-- 7 files changed, 46 insertions(+), 45 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 9b76447ff..33a59be08 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -112,13 +112,10 @@ class MediaManagerItem(QtGui.QWidget): self.requiredIcons() self.setupUi() self.retranslateUi() - self.autoSelectItem = None + self.auto_select_id = -1 QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'%s_service_load' % self.parent.name.lower()), self.serviceLoad) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'%s_set_autoselect_item' % self.parent.name.lower()), - self.setAutoSelectItem) def requiredIcons(self): """ @@ -479,9 +476,6 @@ class MediaManagerItem(QtGui.QWidget): if keepFocus: self.listView.setFocus() - def setAutoSelectItem(self, itemToSelect=None): - self.autoSelectItem = itemToSelect - def onLiveClick(self): """ Send an item live by building a service item then adding that service @@ -617,6 +611,16 @@ class MediaManagerItem(QtGui.QWidget): item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] return item_id + def save_auto_select_id(self): + """ + Sorts out, what item to select after loading a list. + """ + # The item to select has not been set. + if self.auto_select_id == -1: + item = self.listView.currentItem() + if item: + self.auto_select_id = item.data(QtCore.Qt.UserRole).toInt()[0] + def search(self, string): """ Performs a plugin specific search for items containing ``string`` diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index b1094bbe3..85598a767 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -1044,7 +1044,8 @@ class SlideController(QtGui.QWidget): """ From the preview display request the Item to be added to service """ - self.parent.serviceManagerContents.addServiceItem(self.serviceItem) + if self.serviceItem: + self.parent.serviceManagerContents.addServiceItem(self.serviceItem) def onGoLiveClick(self): """ diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py index 887f813fa..e790a2449 100644 --- a/openlp/plugins/custom/customplugin.py +++ b/openlp/plugins/custom/customplugin.py @@ -27,8 +27,6 @@ import logging -from forms import EditCustomForm - from openlp.core.lib import Plugin, StringContent, build_icon, translate from openlp.core.lib.db import Manager from openlp.plugins.custom.lib import CustomMediaItem, CustomTab @@ -52,7 +50,6 @@ class CustomPlugin(Plugin): CustomMediaItem, CustomTab) self.weight = -5 self.manager = Manager(u'custom', init_schema) - self.edit_custom_form = EditCustomForm(self) self.icon_path = u':/plugins/plugin_custom.png' self.icon = build_icon(self.icon_path) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index 0e4376634..00165e6ff 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -43,13 +43,13 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): Class documentation goes here. """ log.info(u'Custom Editor loaded') - def __init__(self, parent): + def __init__(self, parent, manager): """ Constructor """ QtGui.QDialog.__init__(self) self.parent = parent - self.manager = self.parent.manager + self.manager = manager self.setupUi(self) # Create other objects and forms. self.editSlideForm = EditCustomSlideForm(self) @@ -115,8 +115,6 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): def accept(self): log.debug(u'accept') if self.saveCustom(): - Receiver.send_message(u'custom_set_autoselect_item', - self.customSlide.id) Receiver.send_message(u'custom_load_list') QtGui.QDialog.accept(self) @@ -138,7 +136,9 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.customSlide.text = unicode(sxml.extract_xml(), u'utf-8') self.customSlide.credits = unicode(self.creditEdit.text()) self.customSlide.theme_name = unicode(self.themeComboBox.currentText()) - return self.manager.save_object(self.customSlide) + success = self.manager.save_object(self.customSlide) + self.parent.auto_select_id = self.customSlide.id + return success def onUpButtonClicked(self): selectedRow = self.slideListView.currentRow() diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 43f4afd63..d0a3de061 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -35,6 +35,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 openlp.plugins.custom.forms import EditCustomForm from openlp.plugins.custom.lib import CustomXMLParser from openlp.plugins.custom.lib.db import CustomSlide @@ -57,6 +58,7 @@ class CustomMediaItem(MediaManagerItem): def __init__(self, parent, plugin, icon): self.IconPath = u'custom/custom' MediaManagerItem.__init__(self, parent, self, icon) + self.edit_custom_form = EditCustomForm(self, self.parent.manager) self.singleServiceItem = False self.quickPreviewAllowed = True self.hasSearch = True @@ -136,6 +138,8 @@ class CustomMediaItem(MediaManagerItem): self.onRemoteEditClear() def loadList(self, custom_slides): + # Sort out what custom we want to select after loading the list. + self.save_auto_select_id() self.listView.clear() # Sort the customs by its title considering language specific # characters. lower() is needed for windows! @@ -146,33 +150,34 @@ class CustomMediaItem(MediaManagerItem): custom_name.setData( QtCore.Qt.UserRole, QtCore.QVariant(custom_slide.id)) self.listView.addItem(custom_name) - # Auto-select the item if name has been set - if custom_slide.id == self.autoSelectItem: + # Auto-select the custom. + if custom_slide.id == self.auto_select_id: self.listView.setCurrentItem(custom_name) + self.auto_select_id = -1 def onNewClick(self): - self.parent.edit_custom_form.loadCustom(0) - self.parent.edit_custom_form.exec_() + self.edit_custom_form.loadCustom(0) + self.edit_custom_form.exec_() self.initialise() def onRemoteEditClear(self): self.remoteTriggered = None self.remoteCustom = -1 - def onRemoteEdit(self, customid): + def onRemoteEdit(self, message): """ Called by ServiceManager or SlideController by event passing - the Song Id in the payload along with an indicator to say which + the custom Id in the payload along with an indicator to say which type of display is required. """ - fields = customid.split(u':') - valid = self.manager.get_object(CustomSlide, fields[1]) + remote_type, custom_id = message.split(u':') + custom_id = int(custom_id) + valid = self.manager.get_object(CustomSlide, custom_id) if valid: - self.remoteCustom = fields[1] - self.remoteTriggered = fields[0] - self.parent.edit_custom_form.loadCustom(fields[1], - (fields[0] == u'P')) - self.parent.edit_custom_form.exec_() + self.remoteCustom = custom_id + self.remoteTriggered = remote_type + self.edit_custom_form.loadCustom(custom_id, (remote_type == u'P')) + self.edit_custom_form.exec_() def onEditClick(self): """ @@ -181,8 +186,8 @@ class CustomMediaItem(MediaManagerItem): if check_item_selected(self.listView, UiStrings().SelectEdit): item = self.listView.currentItem() item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] - self.parent.edit_custom_form.loadCustom(item_id, False) - self.parent.edit_custom_form.exec_() + self.edit_custom_form.loadCustom(item_id, False) + self.edit_custom_form.exec_() self.initialise() def onDeleteClick(self): @@ -203,7 +208,6 @@ class CustomMediaItem(MediaManagerItem): self.searchTextEdit.setFocus() def generateSlideData(self, service_item, item=None, xmlVersion=False): - raw_slides = [] raw_footer = [] slide = None theme = None @@ -221,8 +225,7 @@ class CustomMediaItem(MediaManagerItem): service_item.theme = theme customXML = CustomXMLParser(customSlide.text) verseList = customXML.get_verses() - for verse in verseList: - raw_slides.append(verse[1]) + raw_slides = [verse[1] for verse in verseList] service_item.title = title for slide in raw_slides: service_item.add_from_text(slide[:30], slide) @@ -260,7 +263,7 @@ class CustomMediaItem(MediaManagerItem): def onSearchTextEditChanged(self, text): """ If search as type enabled invoke the search on each key press. - If the Title is being searched do not start till 2 characters + If the Title is being searched do not start until 2 characters have been entered. """ search_length = 2 @@ -283,8 +286,5 @@ class CustomMediaItem(MediaManagerItem): func.lower(CustomSlide.text).like(u'%' + string.lower() + u'%')), order_by_ref=CustomSlide.title) - results = [] - for custom in search_results: - results.append([custom.id, custom.title]) - return results + return [[custom.id, custom.title] for custom in search_results] diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 393009f82..45f1a123a 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -696,7 +696,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.clearCaches() if self._validate_song(): self.saveSong() - Receiver.send_message(u'songs_set_autoselect_item',self.song.id) Receiver.send_message(u'songs_load_list') self.song = None QtGui.QDialog.accept(self) @@ -756,6 +755,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.song.topics.append(self.manager.get_object(Topic, topicId)) clean_song(self.manager, self.song) self.manager.save_object(self.song) + self.parent.auto_select_id = self.song.id def _processLyrics(self): """ diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 7fe4d45c4..3d9a9ef76 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -232,6 +232,7 @@ class SongMediaItem(MediaManagerItem): def displayResultsSong(self, searchresults): log.debug(u'display results Song') + self.save_auto_select_id() self.listView.clear() # Sort the songs by its title considering language specific characters. # lower() is needed for windows! @@ -245,8 +246,9 @@ class SongMediaItem(MediaManagerItem): song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id)) self.listView.addItem(song_name) # Auto-select the item if name has been set - if song.id == self.autoSelectItem : + if song.id == self.auto_select_id: self.listView.setCurrentItem(song_name) + self.auto_select_id = -1 def displayResultsAuthor(self, searchresults): log.debug(u'display results Author') @@ -487,7 +489,4 @@ class SongMediaItem(MediaManagerItem): Search for some songs """ search_results = self.searchEntire(string) - results = [] - for song in search_results: - results.append([song.id, song.title]) - return results + return [[song.id, song.title] for song in search_results] From 8eb261ee88a8e4f09506fd50e84b8e50927e32ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Fri, 27 May 2011 11:39:58 +0200 Subject: [PATCH 104/190] bug fixes setFocus to the Combobox in booknameform --- openlp/plugins/bibles/forms/bibleupgradeform.py | 8 +++++++- openlp/plugins/bibles/forms/booknameform.py | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index 1cc075324..8ac99d99f 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -439,7 +439,10 @@ class BibleUpgradeForm(OpenLPWizard): if not self.checkBox[biblenumber].checkState() == QtCore.Qt.Checked: continue self.progressBar.reset() - if filename[1] is None: + oldbible = OldBibleDB(self.mediaItem, path=self.path, + file=filename[0]) + name = filename[1] + if name is None: delete_file(os.path.join(self.path, filename[0])) self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', @@ -596,6 +599,9 @@ class BibleUpgradeForm(OpenLPWizard): self.newbibles[number].delete_book(db_book) continue for verse in verses: + if self.stop_import_flag: + bible_failed = True + break self.newbibles[number].create_verse(db_book.id, int(verse[u'chapter']), int(verse[u'verse']), unicode(verse[u'text'])) diff --git a/openlp/plugins/bibles/forms/booknameform.py b/openlp/plugins/bibles/forms/booknameform.py index df4943656..e2d7004ec 100644 --- a/openlp/plugins/bibles/forms/booknameform.py +++ b/openlp/plugins/bibles/forms/booknameform.py @@ -110,6 +110,7 @@ class BookNameForm(QDialog, Ui_BookNameDialog): self.apocryphaCheckBox.setCheckState(QtCore.Qt.Unchecked) self.reloadComboBox() self.currentLineEdit.setText(name) + self.correspondingComboBox.setFocus() return QDialog.exec_(self) def accept(self): From c63382e41c993a18e6d0b4a3770e38a6b25c3923 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Fri, 27 May 2011 12:17:59 +0200 Subject: [PATCH 105/190] - hide the theme menu when theme level is not 'Song' - clean ups --- openlp/core/ui/servicemanager.py | 3 ++- openlp/core/ui/thememanager.py | 2 -- openlp/core/ui/themestab.py | 9 +++------ 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index c32567075..349b0a4a3 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -677,7 +677,8 @@ class ServiceManager(QtGui.QWidget): self.timeAction.setVisible(True) self.themeMenu.menuAction().setVisible(False) # Set up the theme menu. - if serviceItem[u'service_item'].is_text(): + if serviceItem[u'service_item'].is_text() and \ + self.mainwindow.renderer.theme_level == ThemeLevel.Song: self.themeMenu.menuAction().setVisible(True) # The service item does not have a theme, check the "Default". if serviceItem[u'service_item'].theme is None: diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 4dabcfdf7..72bdf4558 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -57,8 +57,6 @@ class ThemeManager(QtGui.QWidget): self.settingsSection = u'themes' self.themeForm = ThemeForm(self) self.fileRenameForm = FileRenameForm(self) - self.serviceComboBox = \ - self.mainwindow.serviceManagerContents.themeComboBox # start with the layout self.layout = QtGui.QVBoxLayout(self) self.layout.setSpacing(0) diff --git a/openlp/core/ui/themestab.py b/openlp/core/ui/themestab.py index 709b3ad80..7e8188f42 100644 --- a/openlp/core/ui/themestab.py +++ b/openlp/core/ui/themestab.py @@ -145,10 +145,8 @@ class ThemesTab(SettingsTab): def save(self): settings = QtCore.QSettings() settings.beginGroup(self.settingsSection) - settings.setValue(u'theme level', - QtCore.QVariant(self.theme_level)) - settings.setValue(u'global theme', - QtCore.QVariant(self.global_theme)) + settings.setValue(u'theme level', QtCore.QVariant(self.theme_level)) + settings.setValue(u'global theme', QtCore.QVariant(self.global_theme)) settings.endGroup() self.mainwindow.renderer.set_global_theme( self.global_theme, self.theme_level) @@ -186,8 +184,7 @@ class ThemesTab(SettingsTab): self.settingsSection + u'/global theme', QtCore.QVariant(u'')).toString()) self.DefaultComboBox.clear() - for theme in theme_list: - self.DefaultComboBox.addItem(theme) + self.DefaultComboBox.addItems(theme_list) find_and_set_in_combo_box(self.DefaultComboBox, self.global_theme) self.mainwindow.renderer.set_global_theme( self.global_theme, self.theme_level) From f1b778fb240ab12582e435a98fbb68df32cdc028 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Fri, 27 May 2011 12:54:52 +0100 Subject: [PATCH 106/190] Change loop and timed slide settings labels --- openlp/core/ui/generaltab.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index 2435b8dcc..2a9bd221e 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -223,9 +223,9 @@ class GeneralTab(SettingsTab): self.autoPreviewCheckBox.setText(translate('OpenLP.GeneralTab', 'Automatically preview next item in service')) self.enableLoopCheckBox.setText(translate('OpenLP.GeneralTab', - 'Enable slide loop')) + 'Enable slide wrap-around')) self.timeoutLabel.setText(translate('OpenLP.GeneralTab', - 'Slide loop delay:')) + 'Timed slide interval:')) self.timeoutSpinBox.setSuffix(translate('OpenLP.GeneralTab', ' sec')) self.ccliGroupBox.setTitle( translate('OpenLP.GeneralTab', 'CCLI Details')) From 42a8a4407e84b032b2e87673ca7d7f8e32e1bb73 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Fri, 27 May 2011 16:28:38 +0200 Subject: [PATCH 107/190] fixed bug 789143 Fixes: https://launchpad.net/bugs/789143 --- openlp/plugins/songs/lib/__init__.py | 46 ++-------------------------- 1 file changed, 2 insertions(+), 44 deletions(-) diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index 9e068e7f1..e3779f2c0 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -171,7 +171,8 @@ class VerseType(object): @staticmethod def from_loose_input(verse_name): """ - Return the VerseType for a given string, Other if not found + Return the VerseType for a given string, Other if not found. Use this + with caution! ``verse_name`` The string to return a VerseType for @@ -265,52 +266,9 @@ def clean_song(manager, song): whitespace = re.compile(r'\W+', re.UNICODE) song.search_title = (whitespace.sub(u' ', song.title).strip() + u'@' + whitespace.sub(u' ', song.alternate_title).strip()).strip().lower() - # Remove the old "language" attribute from lyrics tag (prior to 1.9.5). This - # is not very important, but this keeps the database clean. This can be - # removed when everybody has cleaned his songs. - song.lyrics = song.lyrics.replace(u'', u'') verses = SongXML().get_verses(song.lyrics) lyrics = u' '.join([whitespace.sub(u' ', verse[1]) for verse in verses]) song.search_lyrics = lyrics.lower() - # We need a new and clean SongXML instance. - sxml = SongXML() - # Rebuild the song's verses, to remove any wrong verse names (for example - # translated ones), which might have been added prior to 1.9.5. - # List for later comparison. - compare_order = [] - for verse in verses: - verse_type = VerseType.Tags[VerseType.from_loose_input( - verse[0][u'type'])] - sxml.add_verse_to_lyrics( - verse_type, - verse[0][u'label'], - verse[1], - verse[0][u'lang'] if verse[0].has_key(u'lang') else None - ) - compare_order.append((u'%s%s' % (verse_type, verse[0][u'label']) - ).upper()) - if verse[0][u'label'] == u'1': - compare_order.append(verse_type.upper()) - song.lyrics = unicode(sxml.extract_xml(), u'utf-8') - # Rebuild the verse order, to convert translated verse tags, which might - # have been added prior to 1.9.5. - if song.verse_order: - order = song.verse_order.strip().split() - else: - order = [] - new_order = [] - for verse_def in order: - verse_type = VerseType.Tags[VerseType.from_loose_input(verse_def[0])] - if len(verse_def) > 1: - new_order.append((u'%s%s' % (verse_type, verse_def[1:])).upper()) - else: - new_order.append(verse_type.upper()) - song.verse_order = u' '.join(new_order) - # Check if the verse order contains tags for verses which do not exist. - for order in new_order: - if order not in compare_order: - song.verse_order = u'' - break # The song does not have any author, add one. if not song.authors: name = SongStrings.AuthorUnknown From cd4942657daa642b152d4fe78b8eab0b07a8768f Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Fri, 27 May 2011 18:42:54 +0100 Subject: [PATCH 108/190] Change timed slide tooltip to remove reference to looping, and fix periods on others --- openlp/core/ui/slidecontroller.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index b1094bbe3..7c6976906 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -140,14 +140,14 @@ class SlideController(QtGui.QWidget): self.previousItem = self.toolbar.addToolbarButton( translate('OpenLP.SlideController', 'Previous Slide'), u':/slides/slide_previous.png', - translate('OpenLP.SlideController', 'Move to previous'), + translate('OpenLP.SlideController', 'Move to previous.'), self.onSlideSelectedPrevious, shortcuts=[QtCore.Qt.Key_Up, QtCore.Qt.Key_PageUp], context=QtCore.Qt.WidgetWithChildrenShortcut) self.nextItem = self.toolbar.addToolbarButton( translate('OpenLP.SlideController', 'Next Slide'), u':/slides/slide_next.png', - translate('OpenLP.SlideController', 'Move to next'), + translate('OpenLP.SlideController', 'Move to next.'), self.onSlideSelectedNext, shortcuts=[QtCore.Qt.Key_Down, QtCore.Qt.Key_PageDown], context=QtCore.Qt.WidgetWithChildrenShortcut) @@ -183,7 +183,7 @@ class SlideController(QtGui.QWidget): startLoop = self.toolbar.addToolbarButton( # Does not need translating - control string. u'Start Loop', u':/media/media_time.png', - translate('OpenLP.SlideController', 'Start continuous loop'), + translate('OpenLP.SlideController', 'Enable timed slides.'), self.onStartLoop) startLoop.setObjectName(u'startLoop') action_list = ActionList.get_instance() @@ -191,7 +191,7 @@ class SlideController(QtGui.QWidget): stopLoop = self.toolbar.addToolbarButton( # Does not need translating - control string. u'Stop Loop', u':/media/media_stop.png', - translate('OpenLP.SlideController', 'Stop continuous loop'), + translate('OpenLP.SlideController', 'Stop timed slides.'), self.onStopLoop) stopLoop.setObjectName(u'stopLoop') action_list.add_action(stopLoop, UiStrings().LiveToolbar) @@ -206,39 +206,39 @@ class SlideController(QtGui.QWidget): self.toolbar.addToolbarWidget(u'Image SpinBox', self.delaySpinBox) self.delaySpinBox.setSuffix(UiStrings().Seconds) self.delaySpinBox.setToolTip(translate('OpenLP.SlideController', - 'Delay between slides in seconds')) + 'Delay between slides in seconds.')) else: self.toolbar.addToolbarButton( # Does not need translating - control string. u'Go Live', u':/general/general_live.png', - translate('OpenLP.SlideController', 'Move to live'), + translate('OpenLP.SlideController', 'Move to live.'), self.onGoLive) self.toolbar.addToolbarButton( # Does not need translating - control string. u'Add to Service', u':/general/general_add.png', - translate('OpenLP.SlideController', 'Add to Service'), + translate('OpenLP.SlideController', 'Add to Service.'), self.onPreviewAddToService) self.toolbar.addToolbarSeparator(u'Close Separator') self.toolbar.addToolbarButton( # Does not need translating - control string. u'Edit Song', u':/general/general_edit.png', translate('OpenLP.SlideController', - 'Edit and reload song preview'), + 'Edit and reload song preview.'), self.onEditSong) self.controllerLayout.addWidget(self.toolbar) # Build a Media ToolBar self.mediabar = OpenLPToolbar(self) self.mediabar.addToolbarButton( u'Media Start', u':/slides/media_playback_start.png', - translate('OpenLP.SlideController', 'Start playing media'), + translate('OpenLP.SlideController', 'Start playing media.'), self.onMediaPlay) self.mediabar.addToolbarButton( u'Media Pause', u':/slides/media_playback_pause.png', - translate('OpenLP.SlideController', 'Start playing media'), + translate('OpenLP.SlideController', 'Start playing media.'), self.onMediaPause) self.mediabar.addToolbarButton( u'Media Stop', u':/slides/media_playback_stop.png', - translate('OpenLP.SlideController', 'Start playing media'), + translate('OpenLP.SlideController', 'Start playing media.'), self.onMediaStop) if self.isLive: # Build the Song Toolbar From 665fc82c9480a6f32026eb64885ba0363bab742d Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Fri, 27 May 2011 21:25:03 +0200 Subject: [PATCH 109/190] Fix for bug #789285: OpenLP does not work with SQLAlchemy 0.7. --- openlp/core/lib/db.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 5b03e5fa4..351d79e3e 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -32,7 +32,7 @@ import os from PyQt4 import QtCore from sqlalchemy import create_engine, MetaData -from sqlalchemy.exceptions import InvalidRequestError +from sqlalchemy.exc import InvalidRequestError from sqlalchemy.orm import scoped_session, sessionmaker from openlp.core.utils import AppLocation, delete_file From 010373b798c76f5dd71bda030f804b22a7312e23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Fri, 27 May 2011 22:33:23 +0200 Subject: [PATCH 110/190] Fixed Traceback if BookNameDialog was canceled while upgrading non webbibles Replace LineEdit in BookNameDialog with Label --- openlp/plugins/bibles/forms/bibleupgradeform.py | 2 +- openlp/plugins/bibles/forms/booknamedialog.py | 8 ++++---- openlp/plugins/bibles/forms/booknameform.py | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index 8ac99d99f..bd9a3172d 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -606,7 +606,7 @@ class BibleUpgradeForm(OpenLPWizard): int(verse[u'chapter']), int(verse[u'verse']), unicode(verse[u'text'])) Receiver.send_message(u'openlp_process_events') - self.newbibles[number].session.commit() + self.newbibles[number].session.commit() if not bible_failed: self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', diff --git a/openlp/plugins/bibles/forms/booknamedialog.py b/openlp/plugins/bibles/forms/booknamedialog.py index d2901ce23..e9211b3d5 100644 --- a/openlp/plugins/bibles/forms/booknamedialog.py +++ b/openlp/plugins/bibles/forms/booknamedialog.py @@ -41,15 +41,15 @@ class Ui_BookNameDialog(object): self.infoLabel.setObjectName(u'infoLabel') self.bookNameLayout.addWidget(self.infoLabel) self.correspondingLayout = QtGui.QGridLayout() + self.correspondingLayout.setColumnStretch(1, 1) self.correspondingLayout.setSpacing(8) self.correspondingLayout.setObjectName(u'correspondingLayout') self.currentLabel = QtGui.QLabel(bookNameDialog) self.currentLabel.setObjectName(u'currentLabel') self.correspondingLayout.addWidget(self.currentLabel, 0, 0, 1, 1) - self.currentLineEdit = QtGui.QLineEdit(bookNameDialog) - self.currentLineEdit.setReadOnly(True) - self.currentLineEdit.setObjectName(u'currentLineEdit') - self.correspondingLayout.addWidget(self.currentLineEdit, 0, 1, 1, 1) + self.currentBookLabel = QtGui.QLabel(bookNameDialog) + self.currentBookLabel.setObjectName(u'currentBookLabel') + self.correspondingLayout.addWidget(self.currentBookLabel, 0, 1, 1, 1) self.correspondingLabel = QtGui.QLabel(bookNameDialog) self.correspondingLabel.setObjectName(u'correspondingLabel') self.correspondingLayout.addWidget( diff --git a/openlp/plugins/bibles/forms/booknameform.py b/openlp/plugins/bibles/forms/booknameform.py index e2d7004ec..8ad3ad977 100644 --- a/openlp/plugins/bibles/forms/booknameform.py +++ b/openlp/plugins/bibles/forms/booknameform.py @@ -109,7 +109,7 @@ class BookNameForm(QDialog, Ui_BookNameDialog): elif maxbooks <= 66: self.apocryphaCheckBox.setCheckState(QtCore.Qt.Unchecked) self.reloadComboBox() - self.currentLineEdit.setText(name) + self.currentBookLabel.setText(unicode(name)) self.correspondingComboBox.setFocus() return QDialog.exec_(self) From 5f9b23f8e737dbee841a511a196ecda2600d43d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Fri, 27 May 2011 22:53:46 +0200 Subject: [PATCH 111/190] remove unnecessary line --- openlp/plugins/bibles/forms/bibleupgradeform.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index bd9a3172d..a5b175aef 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -627,7 +627,6 @@ class BibleUpgradeForm(OpenLPWizard): successful_import = 0 failed_import = 0 for number, filename in enumerate(self.files): - #for number, success in self.success.iteritems(): if number in self.success and self.success[number] == True: successful_import += 1 elif self.checkBox[number].checkState() == QtCore.Qt.Checked: From e550665b23a0632e1210a391d88c5e3ef42e6189 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Fri, 27 May 2011 23:11:53 +0200 Subject: [PATCH 112/190] bug fix --- openlp/plugins/bibles/lib/manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 50a64ca42..2a3858afc 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -221,7 +221,7 @@ class BibleManager(object): { u'name': book.name, u'book_reference_id': book.book_reference_id, - u'chapters': self.db_cache[bible].get_chapter_count(book.book_reference_id) + u'chapters': self.db_cache[bible].get_chapter_count(book) } for book in self.db_cache[bible].get_books() ] From 7ed1be6612956e7402a0cfe7988d8a574c9a3168 Mon Sep 17 00:00:00 2001 From: Stevan Pettit Date: Sat, 28 May 2011 00:05:33 -0400 Subject: [PATCH 113/190] Fixed bug #788335 - Changed slidecontroller to correctly blank screen --- openlp/core/ui/slidecontroller.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 08e1c0366..98046ba2a 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -841,6 +841,11 @@ class SlideController(QtGui.QWidget): Receiver.send_message(u'%s_unblank' % self.serviceItem.name.lower(), [self.serviceItem, self.isLive]) + else: + if hide_mode: + Receiver.send_message(u'maindisplay_hide', hide_mode) + else: + Receiver.send_message(u'maindisplay_show') def hidePlugin(self, hide): """ @@ -859,6 +864,11 @@ class SlideController(QtGui.QWidget): Receiver.send_message(u'%s_unblank' % self.serviceItem.name.lower(), [self.serviceItem, self.isLive]) + else: + if hide: + Receiver.send_message(u'maindisplay_hide', HideMode.Screen) + else: + Receiver.send_message(u'maindisplay_show') def onSlideSelected(self, start=False): """ From 4138d6fbd01951006a81a2cfee157eed45845998 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Sat, 28 May 2011 10:53:37 +0100 Subject: [PATCH 114/190] Change lots of parents --- openlp/core/lib/mediamanageritem.py | 21 ++++---- openlp/core/lib/plugin.py | 2 +- openlp/plugins/alerts/forms/alertform.py | 5 +- openlp/plugins/bibles/lib/mediaitem.py | 54 +++++++++---------- openlp/plugins/custom/forms/editcustomform.py | 8 +-- openlp/plugins/custom/lib/mediaitem.py | 24 ++++----- openlp/plugins/images/lib/mediaitem.py | 12 ++--- openlp/plugins/media/lib/mediaitem.py | 10 ++-- openlp/plugins/presentations/lib/mediaitem.py | 12 ++--- .../presentations/presentationplugin.py | 2 +- openlp/plugins/remotes/lib/httpserver.py | 18 +++---- openlp/plugins/songs/forms/editsongform.py | 3 +- openlp/plugins/songs/lib/mediaitem.py | 34 ++++++------ 13 files changed, 102 insertions(+), 103 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 9b76447ff..9b780fa75 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -93,8 +93,7 @@ class MediaManagerItem(QtGui.QWidget): QtGui.QWidget.__init__(self) self.parent = parent self.whitespace = re.compile(r'\W+', re.UNICODE) - #TODO: plugin should not be the parent in future - self.plugin = parent # plugin + self.plugin = plugin visible_title = self.plugin.getString(StringContent.VisibleName) self.title = unicode(visible_title[u'title']) self.settingsSection = self.plugin.name.lower() @@ -114,10 +113,10 @@ class MediaManagerItem(QtGui.QWidget): self.retranslateUi() self.autoSelectItem = None QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'%s_service_load' % self.parent.name.lower()), + QtCore.SIGNAL(u'%s_service_load' % self.plugin.name.lower()), self.serviceLoad) QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'%s_set_autoselect_item' % self.parent.name.lower()), + QtCore.SIGNAL(u'%s_set_autoselect_item' % self.plugin.name.lower()), self.setAutoSelectItem) def requiredIcons(self): @@ -475,7 +474,7 @@ class MediaManagerItem(QtGui.QWidget): serviceItem = self.buildServiceItem() if serviceItem: serviceItem.from_plugin = True - self.parent.previewController.addServiceItem(serviceItem) + self.plugin.previewController.addServiceItem(serviceItem) if keepFocus: self.listView.setFocus() @@ -503,7 +502,7 @@ class MediaManagerItem(QtGui.QWidget): if serviceItem: if not item_id: serviceItem.from_plugin = True - self.parent.liveController.addServiceItem(serviceItem) + self.plugin.liveController.addServiceItem(serviceItem) def createItemFromId(self, item_id): item = QtGui.QListWidgetItem() @@ -533,7 +532,7 @@ class MediaManagerItem(QtGui.QWidget): serviceItem = self.buildServiceItem(item, True) if serviceItem: serviceItem.from_plugin = False - self.parent.serviceManager.addServiceItem(serviceItem, + self.plugin.serviceManager.addServiceItem(serviceItem, replace=replace) def onAddEditClick(self): @@ -546,14 +545,14 @@ class MediaManagerItem(QtGui.QWidget): 'You must select one or more items.')) else: log.debug(u'%s Add requested', self.plugin.name) - serviceItem = self.parent.serviceManager.getServiceItem() + serviceItem = self.plugin.serviceManager.getServiceItem() if not serviceItem: QtGui.QMessageBox.information(self, UiStrings().NISs, translate('OpenLP.MediaManagerItem', 'You must select an existing service item to add to.')) elif self.plugin.name.lower() == serviceItem.name.lower(): self.generateSlideData(serviceItem) - self.parent.serviceManager.addServiceItem(serviceItem, + self.plugin.serviceManager.addServiceItem(serviceItem, replace=True) else: # Turn off the remote edit update message indicator @@ -567,8 +566,8 @@ class MediaManagerItem(QtGui.QWidget): """ Common method for generating a service item """ - serviceItem = ServiceItem(self.parent) - serviceItem.add_icon(self.parent.icon_path) + serviceItem = ServiceItem(self.plugin) + serviceItem.add_icon(self.plugin.icon_path) if self.generateSlideData(serviceItem, item, xmlVersion): return serviceItem else: diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py index 0417446c1..974c59de2 100644 --- a/openlp/core/lib/plugin.py +++ b/openlp/core/lib/plugin.py @@ -215,7 +215,7 @@ class Plugin(QtCore.QObject): you need, and return it for integration into openlp.org. """ if self.media_item_class: - return self.media_item_class(self, self, self.icon) + return self.media_item_class(self.mediadock, self, self.icon) return None def addImportMenuItem(self, importMenu): diff --git a/openlp/plugins/alerts/forms/alertform.py b/openlp/plugins/alerts/forms/alertform.py index 13cb4503a..92db42723 100644 --- a/openlp/plugins/alerts/forms/alertform.py +++ b/openlp/plugins/alerts/forms/alertform.py @@ -41,7 +41,8 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog): Initialise the alert form """ self.manager = plugin.manager - self.parent = plugin + self.plugin = plugin + self.parent = plugin.formparent self.item_id = None QtGui.QDialog.__init__(self, plugin.formparent) self.setupUi(self) @@ -195,7 +196,7 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog): self.parameterEdit.setFocus() return False text = text.replace(u'<>', unicode(self.parameterEdit.text())) - self.parent.alertsmanager.displayAlert(text) + self.plugin.alertsmanager.displayAlert(text) return True def onCurrentRowChanged(self, row): diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 41059f942..baf04995b 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -61,7 +61,7 @@ class BibleMediaItem(MediaManagerItem): self.unlockIcon = QtGui.QIcon(u':/bibles/bibles_search_unlock.png') MediaManagerItem.__init__(self, parent, plugin, icon) # Place to store the search results for both bibles. - self.settings = self.parent.settings_tab + self.settings = self.plugin.settings_tab self.quickPreviewAllowed = True self.hasSearch = True self.search_results = {} @@ -338,7 +338,7 @@ class BibleMediaItem(MediaManagerItem): def initialise(self): log.debug(u'bible manager initialise') - self.parent.manager.media = self + self.plugin.manager.media = self self.loadBibles() bible = QtCore.QSettings().value( self.settingsSection + u'/quick bible', QtCore.QVariant( @@ -365,7 +365,7 @@ class BibleMediaItem(MediaManagerItem): self.quickSecondComboBox.addItem(u'') self.advancedSecondComboBox.addItem(u'') # Get all bibles and sort the list. - bibles = self.parent.manager.get_bibles().keys() + bibles = self.plugin.manager.get_bibles().keys() bibles.sort(cmp=locale.strcoll) # Load the bibles into the combo boxes. for bible in bibles: @@ -386,7 +386,7 @@ class BibleMediaItem(MediaManagerItem): def reloadBibles(self): log.debug(u'Reloading Bibles') - self.parent.manager.reload_bibles() + self.plugin.manager.reload_bibles() self.loadBibles() def initialiseAdvancedBible(self, bible): @@ -400,7 +400,7 @@ class BibleMediaItem(MediaManagerItem): The bible to initialise (unicode). """ log.debug(u'initialiseAdvancedBible %s', bible) - book_data = self.parent.manager.get_books(bible) + book_data = self.plugin.manager.get_books(bible) self.advancedBookComboBox.clear() first = True for book in book_data: @@ -416,7 +416,7 @@ class BibleMediaItem(MediaManagerItem): def initialiseChapterVerse(self, bible, book, chapter_count): log.debug(u'initialiseChapterVerse %s, %s', bible, book) self.chapter_count = chapter_count - verse_count = self.parent.manager.get_verse_count(bible, book, 1) + verse_count = self.plugin.manager.get_verse_count(bible, book, 1) if verse_count == 0: self.advancedSearchButton.setEnabled(False) critical_error_message_box( @@ -445,7 +445,7 @@ class BibleMediaItem(MediaManagerItem): books = [] # We have to do a 'Reference Search'. if self.quickSearchEdit.currentSearchType() == BibleSearch.Reference: - bibles = self.parent.manager.get_bibles() + bibles = self.plugin.manager.get_bibles() bible = unicode(self.quickVersionComboBox.currentText()) if bible: book_data = bibles[bible].get_books() @@ -455,8 +455,8 @@ class BibleMediaItem(MediaManagerItem): def onImportClick(self): if not hasattr(self, u'import_wizard'): - self.import_wizard = BibleImportForm(self, self.parent.manager, - self.parent) + self.import_wizard = BibleImportForm(self, self.plugin.manager, + self.plugin) # If the import was not cancelled then reload. if self.import_wizard.exec_(): self.reloadBibles() @@ -515,7 +515,7 @@ class BibleMediaItem(MediaManagerItem): bible = unicode(self.advancedVersionComboBox.currentText()) book = unicode(self.advancedBookComboBox.currentText()) verse_from = int(self.advancedFromVerse.currentText()) - verse_count = self.parent.manager.get_verse_count(bible, book, + verse_count = self.plugin.manager.get_verse_count(bible, book, chapter_to) self.adjustComboBox(verse_from, verse_count, self.advancedToVerse, True) @@ -527,7 +527,7 @@ class BibleMediaItem(MediaManagerItem): chapter_to = int(self.advancedToChapter.currentText()) verse_from = int(self.advancedFromVerse.currentText()) verse_to = int(self.advancedToVerse.currentText()) - verse_count = self.parent.manager.get_verse_count(bible, book, + verse_count = self.plugin.manager.get_verse_count(bible, book, chapter_to) if chapter_from == chapter_to and verse_from > verse_to: self.adjustComboBox(verse_from, verse_count, self.advancedToVerse) @@ -539,7 +539,7 @@ class BibleMediaItem(MediaManagerItem): book = unicode(self.advancedBookComboBox.currentText()) chapter_from = int(self.advancedFromChapter.currentText()) chapter_to = int(self.advancedToChapter.currentText()) - verse_count = self.parent.manager.get_verse_count(bible, book, + verse_count = self.plugin.manager.get_verse_count(bible, book, chapter_from) self.adjustComboBox(1, verse_count, self.advancedFromVerse) if chapter_from > chapter_to: @@ -599,9 +599,9 @@ class BibleMediaItem(MediaManagerItem): range_separator + chapter_to + verse_separator + verse_to versetext = u'%s %s' % (book, verse_range) Receiver.send_message(u'cursor_busy') - self.search_results = self.parent.manager.get_verses(bible, versetext) + self.search_results = self.plugin.manager.get_verses(bible, versetext) if second_bible: - self.second_search_results = self.parent.manager.get_verses( + self.second_search_results = self.plugin.manager.get_verses( second_bible, versetext) if not self.advancedLockButton.isChecked(): self.listView.clear() @@ -627,15 +627,15 @@ class BibleMediaItem(MediaManagerItem): text = unicode(self.quickSearchEdit.text()) if self.quickSearchEdit.currentSearchType() == BibleSearch.Reference: # We are doing a 'Reference Search'. - self.search_results = self.parent.manager.get_verses(bible, text) + self.search_results = self.plugin.manager.get_verses(bible, text) if second_bible and self.search_results: - self.second_search_results = self.parent.manager.get_verses( + self.second_search_results = self.plugin.manager.get_verses( second_bible, text) else: # We are doing a 'Text Search'. Receiver.send_message(u'cursor_busy') - bibles = self.parent.manager.get_bibles() - self.search_results = self.parent.manager.verse_search(bible, + bibles = self.plugin.manager.get_bibles() + self.search_results = self.plugin.manager.verse_search(bible, second_bible, text) if second_bible and self.search_results: text = [] @@ -674,19 +674,19 @@ class BibleMediaItem(MediaManagerItem): further action is saved for/in each row. """ verse_separator = get_reference_match(u'sep_v_display') - version = self.parent.manager.get_meta_data(bible, u'Version').value - copyright = self.parent.manager.get_meta_data(bible, u'Copyright').value + version = self.plugin.manager.get_meta_data(bible, u'Version').value + copyright = self.plugin.manager.get_meta_data(bible, u'Copyright').value permissions = \ - self.parent.manager.get_meta_data(bible, u'Permissions').value + self.plugin.manager.get_meta_data(bible, u'Permissions').value second_version = u'' second_copyright = u'' second_permissions = u'' if second_bible: - second_version = self.parent.manager.get_meta_data( + second_version = self.plugin.manager.get_meta_data( second_bible, u'Version').value - second_copyright = self.parent.manager.get_meta_data( + second_copyright = self.plugin.manager.get_meta_data( second_bible, u'Copyright').value - second_permissions = self.parent.manager.get_meta_data( + second_permissions = self.plugin.manager.get_meta_data( second_bible, u'Permissions').value items = [] for count, verse in enumerate(search_results): @@ -879,7 +879,7 @@ class BibleMediaItem(MediaManagerItem): # We are still in the same chapter, but a verse has been skipped. return True elif old_chapter + 1 == chapter and (verse != 1 or - old_verse != self.parent.manager.get_verse_count( + old_verse != self.plugin.manager.get_verse_count( old_bible, old_book, old_chapter)): # We are in the following chapter, but the last verse was not the # last verse of the chapter or the current verse is not the @@ -923,7 +923,7 @@ class BibleMediaItem(MediaManagerItem): Search for some Bible verses (by reference). """ bible = unicode(self.quickVersionComboBox.currentText()) - search_results = self.parent.manager.get_verses(bible, string, False) + search_results = self.plugin.manager.get_verses(bible, string, False) results = [] if search_results: versetext = u' '.join([verse.text for verse in search_results]) @@ -933,6 +933,6 @@ class BibleMediaItem(MediaManagerItem): def createItemFromId(self, item_id): item = QtGui.QListWidgetItem() bible = unicode(self.quickVersionComboBox.currentText()) - search_results = self.parent.manager.get_verses(bible, item_id, False) + search_results = self.plugin.manager.get_verses(bible, item_id, False) items = self.buildDisplayResults(bible, u'', search_results) return items diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index 0e4376634..68d11404d 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -43,13 +43,13 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): Class documentation goes here. """ log.info(u'Custom Editor loaded') - def __init__(self, parent): + def __init__(self, plugin): """ Constructor """ - QtGui.QDialog.__init__(self) - self.parent = parent - self.manager = self.parent.manager + self.plugin = plugin + QtGui.QDialog.__init__(self, self.plugin.formparent) + self.manager = self.plugin.manager self.setupUi(self) # Create other objects and forms. self.editSlideForm = EditCustomSlideForm(self) diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 43f4afd63..4a9dd8140 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -56,14 +56,14 @@ class CustomMediaItem(MediaManagerItem): def __init__(self, parent, plugin, icon): self.IconPath = u'custom/custom' - MediaManagerItem.__init__(self, parent, self, icon) + MediaManagerItem.__init__(self, parent, plugin, icon) self.singleServiceItem = False self.quickPreviewAllowed = True self.hasSearch = True # Holds information about whether the edit is remotly triggered and # which Custom is required. self.remoteCustom = -1 - self.manager = parent.manager + self.manager = plugin.manager def addEndHeaderBar(self): self.addToolbarSeparator() @@ -151,8 +151,8 @@ class CustomMediaItem(MediaManagerItem): self.listView.setCurrentItem(custom_name) def onNewClick(self): - self.parent.edit_custom_form.loadCustom(0) - self.parent.edit_custom_form.exec_() + self.plugin.edit_custom_form.loadCustom(0) + self.plugin.edit_custom_form.exec_() self.initialise() def onRemoteEditClear(self): @@ -170,9 +170,9 @@ class CustomMediaItem(MediaManagerItem): if valid: self.remoteCustom = fields[1] self.remoteTriggered = fields[0] - self.parent.edit_custom_form.loadCustom(fields[1], + self.plugin.edit_custom_form.loadCustom(fields[1], (fields[0] == u'P')) - self.parent.edit_custom_form.exec_() + self.plugin.edit_custom_form.exec_() def onEditClick(self): """ @@ -181,8 +181,8 @@ class CustomMediaItem(MediaManagerItem): if check_item_selected(self.listView, UiStrings().SelectEdit): item = self.listView.currentItem() item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] - self.parent.edit_custom_form.loadCustom(item_id, False) - self.parent.edit_custom_form.exec_() + self.plugin.edit_custom_form.loadCustom(item_id, False) + self.plugin.edit_custom_form.exec_() self.initialise() def onDeleteClick(self): @@ -195,7 +195,7 @@ class CustomMediaItem(MediaManagerItem): id_list = [(item.data(QtCore.Qt.UserRole)).toInt()[0] for item in self.listView.selectedIndexes()] for id in id_list: - self.parent.manager.delete_object(CustomSlide, id) + self.plugin.manager.delete_object(CustomSlide, id) for row in row_list: self.listView.takeItem(row) @@ -212,7 +212,7 @@ class CustomMediaItem(MediaManagerItem): service_item.add_capability(ItemCapabilities.AllowsPreview) service_item.add_capability(ItemCapabilities.AllowsLoop) service_item.add_capability(ItemCapabilities.AllowsVirtualSplit) - customSlide = self.parent.manager.get_object(CustomSlide, item_id) + customSlide = self.plugin.manager.get_object(CustomSlide, item_id) title = customSlide.title credit = customSlide.credits service_item.edit_id = item_id @@ -245,13 +245,13 @@ class CustomMediaItem(MediaManagerItem): search_type = self.searchTextEdit.currentSearchType() if search_type == CustomSearch.Titles: log.debug(u'Titles Search') - search_results = self.parent.manager.get_all_objects(CustomSlide, + search_results = self.plugin.manager.get_all_objects(CustomSlide, CustomSlide.title.like(u'%' + self.whitespace.sub(u' ', search_keywords) + u'%'), order_by_ref=CustomSlide.title) self.loadList(search_results) elif search_type == CustomSearch.Themes: log.debug(u'Theme Search') - search_results = self.parent.manager.get_all_objects(CustomSlide, + search_results = self.plugin.manager.get_all_objects(CustomSlide, CustomSlide.theme_name.like(u'%' + self.whitespace.sub(u' ', search_keywords) + u'%'), order_by_ref=CustomSlide.title) self.loadList(search_results) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index f760a984e..921a52ede 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -47,7 +47,7 @@ class ImageMediaItem(MediaManagerItem): def __init__(self, parent, plugin, icon): self.IconPath = u'images/image' - MediaManagerItem.__init__(self, parent, self, icon) + MediaManagerItem.__init__(self, parent, plugin, icon) self.quickPreviewAllowed = True self.hasSearch = True QtCore.QObject.connect(Receiver.get_receiver(), @@ -112,14 +112,14 @@ class ImageMediaItem(MediaManagerItem): def loadList(self, list, initialLoad=False): if not initialLoad: - self.parent.formparent.displayProgressBar(len(list)) + self.plugin.formparent.displayProgressBar(len(list)) # Sort the themes by its filename considering language specific # characters. lower() is needed for windows! list.sort(cmp=locale.strcoll, key=lambda filename: os.path.split(unicode(filename))[1].lower()) for imageFile in list: if not initialLoad: - self.parent.formparent.incrementProgressBar() + self.plugin.formparent.incrementProgressBar() filename = os.path.split(unicode(imageFile))[1] thumb = os.path.join(self.servicePath, filename) if os.path.exists(thumb): @@ -134,7 +134,7 @@ class ImageMediaItem(MediaManagerItem): item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(imageFile)) self.listView.addItem(item_name) if not initialLoad: - self.parent.formparent.finishedProgressBar() + self.plugin.formparent.finishedProgressBar() def generateSlideData(self, service_item, item=None, xmlVersion=False): if item: @@ -188,7 +188,7 @@ class ImageMediaItem(MediaManagerItem): Called to reset the Live backgound with the image selected, """ self.resetAction.setVisible(False) - self.parent.liveController.display.resetImage() + self.plugin.liveController.display.resetImage() def liveThemeChanged(self): """ @@ -208,7 +208,7 @@ class ImageMediaItem(MediaManagerItem): filename = unicode(bitem.data(QtCore.Qt.UserRole).toString()) if os.path.exists(filename): (path, name) = os.path.split(filename) - self.parent.liveController.display.directImage(name, filename) + self.plugin.liveController.display.directImage(name, filename) self.resetAction.setVisible(True) else: critical_error_message_box(UiStrings().LiveBGError, diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 9dc17f4d3..96b97d25a 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -50,7 +50,7 @@ class MediaMediaItem(MediaManagerItem): self.background = False self.PreviewFunction = QtGui.QPixmap( u':/media/media_video.png').toImage() - MediaManagerItem.__init__(self, parent, self, icon) + MediaManagerItem.__init__(self, parent, plugin, icon) self.singleServiceItem = False self.hasSearch = True self.mediaObject = None @@ -65,8 +65,8 @@ class MediaMediaItem(MediaManagerItem): self.onNewPrompt = translate('MediaPlugin.MediaItem', 'Select Media') self.onNewFileMasks = unicode(translate('MediaPlugin.MediaItem', 'Videos (%s);;Audio (%s);;%s (*)')) % ( - u' '.join(self.parent.video_extensions_list), - u' '.join(self.parent.audio_extensions_list), UiStrings().AllFiles) + u' '.join(self.plugin.video_extensions_list), + u' '.join(self.plugin.audio_extensions_list), UiStrings().AllFiles) self.replaceAction.setText(UiStrings().ReplaceBG) self.replaceAction.setToolTip(UiStrings().ReplaceLiveBG) self.resetAction.setText(UiStrings().ResetBG) @@ -95,7 +95,7 @@ class MediaMediaItem(MediaManagerItem): Called to reset the Live backgound with the media selected, """ self.resetAction.setVisible(False) - self.parent.liveController.display.resetVideo() + self.plugin.liveController.display.resetVideo() def videobackgroundReplaced(self): """ @@ -114,7 +114,7 @@ class MediaMediaItem(MediaManagerItem): filename = unicode(item.data(QtCore.Qt.UserRole).toString()) if os.path.exists(filename): (path, name) = os.path.split(filename) - self.parent.liveController.display.video(filename, 0, True) + self.plugin.liveController.display.video(filename, 0, True) self.resetAction.setVisible(True) else: critical_error_message_box(UiStrings().LiveBGError, diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index b757b5bfd..e138d4ef9 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -46,14 +46,14 @@ class PresentationMediaItem(MediaManagerItem): """ log.info(u'Presentations Media Item loaded') - def __init__(self, parent, icon, title, controllers): + def __init__(self, parent, plugin, icon, controllers): """ Constructor. Setup defaults """ self.controllers = controllers self.IconPath = u'presentations/presentation' self.Automatic = u'' - MediaManagerItem.__init__(self, parent, self, icon) + MediaManagerItem.__init__(self, parent, plugin, icon) self.message_listener = MessageListener(self) self.hasSearch = True QtCore.QObject.connect(Receiver.get_receiver(), @@ -82,7 +82,7 @@ class PresentationMediaItem(MediaManagerItem): for type in types: if fileType.find(type) == -1: fileType += u'*.%s ' % type - self.parent.serviceManager.supportedSuffixes(type) + self.plugin.serviceManager.supportedSuffixes(type) self.onNewFileMasks = unicode(translate('PresentationPlugin.MediaItem', 'Presentations (%s)')) % fileType @@ -161,14 +161,14 @@ class PresentationMediaItem(MediaManagerItem): titles = [os.path.split(file)[1] for file in currlist] Receiver.send_message(u'cursor_busy') if not initialLoad: - self.parent.formparent.displayProgressBar(len(files)) + 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, key=lambda filename: os.path.split(unicode(filename))[1].lower()) for file in files: if not initialLoad: - self.parent.formparent.incrementProgressBar() + self.plugin.formparent.incrementProgressBar() if currlist.count(file) > 0: continue filename = os.path.split(unicode(file))[1] @@ -208,7 +208,7 @@ class PresentationMediaItem(MediaManagerItem): self.listView.addItem(item_name) Receiver.send_message(u'cursor_normal') if not initialLoad: - self.parent.formparent.finishedProgressBar() + self.plugin.formparent.finishedProgressBar() def onDeleteClick(self): """ diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index 171039d15..313e6258f 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -99,7 +99,7 @@ class PresentationPlugin(Plugin): Create the Media Manager List """ return PresentationMediaItem( - self, self.icon, self.name, self.controllers) + self.mediadock, self, self.icon, self.controllers) def registerControllers(self, controller): """ diff --git a/openlp/plugins/remotes/lib/httpserver.py b/openlp/plugins/remotes/lib/httpserver.py index 0ff8bc32e..9d29156f7 100644 --- a/openlp/plugins/remotes/lib/httpserver.py +++ b/openlp/plugins/remotes/lib/httpserver.py @@ -154,12 +154,12 @@ class HttpServer(object): e.g. http://localhost:4316/send/slidecontroller_live_next http://localhost:4316/send/alerts_text?q=your%20alert%20text """ - def __init__(self, parent): + def __init__(self, plugin): """ Initialise the httpserver, and start the server """ log.debug(u'Initialise httpserver') - self.parent = parent + self.plugin = plugin self.html_dir = os.path.join( AppLocation.get_directory(AppLocation.PluginsDir), u'remotes', u'html') @@ -176,10 +176,10 @@ class HttpServer(object): """ log.debug(u'Start TCP server') port = QtCore.QSettings().value( - self.parent.settingsSection + u'/port', + self.plugin.settingsSection + u'/port', QtCore.QVariant(4316)).toInt()[0] address = QtCore.QSettings().value( - self.parent.settingsSection + u'/ip address', + self.plugin.settingsSection + u'/ip address', QtCore.QVariant(u'0.0.0.0')).toString() self.server = QtNetwork.QTcpServer() self.server.listen(QtNetwork.QHostAddress(address), port) @@ -264,7 +264,7 @@ class HttpConnection(object): def _get_service_items(self): service_items = [] - service_manager = self.parent.parent.serviceManager + service_manager = self.parent.plugin.serviceManager if self.parent.current_item: cur_uuid = self.parent.current_item._uuid else: @@ -457,7 +457,7 @@ class HttpConnection(object): """ if action == u'search': searches = [] - for plugin in self.parent.parent.pluginManager.plugins: + for plugin in self.parent.plugin.pluginManager.plugins: if plugin.status == PluginStatus.Active and \ plugin.mediaItem and plugin.mediaItem.hasSearch: searches.append(plugin.name) @@ -473,7 +473,7 @@ class HttpConnection(object): The plugin name to search in. """ text = json.loads(self.url_params[u'data'][0])[u'request'][u'text'] - plugin = self.parent.parent.pluginManager.get_plugin_by_name(type) + plugin = self.parent.plugin.pluginManager.get_plugin_by_name(type) if plugin.status == PluginStatus.Active and \ plugin.mediaItem and plugin.mediaItem.hasSearch: results =plugin.mediaItem.search(text) @@ -488,7 +488,7 @@ class HttpConnection(object): Go live on an item of type ``type``. """ id = json.loads(self.url_params[u'data'][0])[u'request'][u'id'] - plugin = self.parent.parent.pluginManager.get_plugin_by_name(type) + plugin = self.parent.plugin.pluginManager.get_plugin_by_name(type) if plugin.status == PluginStatus.Active and plugin.mediaItem: plugin.mediaItem.goLive(id) @@ -497,7 +497,7 @@ class HttpConnection(object): Add item of type ``type`` to the end of the service """ id = json.loads(self.url_params[u'data'][0])[u'request'][u'id'] - plugin = self.parent.parent.pluginManager.get_plugin_by_name(type) + plugin = self.parent.plugin.pluginManager.get_plugin_by_name(type) if plugin.status == PluginStatus.Active and plugin.mediaItem: item_id = plugin.mediaItem.createItemFromId(id) plugin.mediaItem.addToService(item_id) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 393009f82..b6e0c04a8 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -52,7 +52,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): Constructor """ QtGui.QDialog.__init__(self, parent) - self.parent = parent self.song = None # can this be automated? self.width = 400 @@ -90,7 +89,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.onVerseListViewPressed) QtCore.QObject.connect(self.themeAddButton, QtCore.SIGNAL(u'clicked()'), - self.parent.parent.renderer.theme_manager.onAddTheme) + self.parent().plugin.renderer.theme_manager.onAddTheme) QtCore.QObject.connect(self.maintenanceButton, QtCore.SIGNAL(u'clicked()'), self.onMaintenanceButtonClicked) QtCore.QObject.connect(Receiver.get_receiver(), diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 7fe4d45c4..49ed759ff 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -62,12 +62,12 @@ class SongMediaItem(MediaManagerItem): def __init__(self, parent, plugin, icon): self.IconPath = u'songs/song' - MediaManagerItem.__init__(self, parent, self, icon) - self.edit_song_form = EditSongForm(self, self.parent.manager) - self.openLyrics = OpenLyrics(self.parent.manager) + MediaManagerItem.__init__(self, parent, plugin, icon) + self.edit_song_form = EditSongForm(self, self.plugin.manager) + self.openLyrics = OpenLyrics(self.plugin.manager) self.singleServiceItem = False self.song_maintenance_form = SongMaintenanceForm( - self.parent.manager, self) + self.plugin.manager, self) # Holds information about whether the edit is remotly triggered and # which Song is required. self.remoteSong = -1 @@ -178,31 +178,31 @@ class SongMediaItem(MediaManagerItem): self.displayResultsSong(search_results) elif search_type == SongSearch.Titles: log.debug(u'Titles Search') - search_results = self.parent.manager.get_all_objects(Song, + search_results = self.plugin.manager.get_all_objects(Song, Song.search_title.like(u'%' + self.whitespace.sub(u' ', search_keywords.lower()) + u'%')) self.displayResultsSong(search_results) elif search_type == SongSearch.Lyrics: log.debug(u'Lyrics Search') - search_results = self.parent.manager.get_all_objects(Song, + search_results = self.plugin.manager.get_all_objects(Song, Song.search_lyrics.like(u'%' + search_keywords.lower() + u'%')) self.displayResultsSong(search_results) elif search_type == SongSearch.Authors: log.debug(u'Authors Search') - search_results = self.parent.manager.get_all_objects(Author, + search_results = self.plugin.manager.get_all_objects(Author, Author.display_name.like(u'%' + search_keywords + u'%'), Author.display_name.asc()) self.displayResultsAuthor(search_results) elif search_type == SongSearch.Themes: log.debug(u'Theme Search') - search_results = self.parent.manager.get_all_objects(Song, + search_results = self.plugin.manager.get_all_objects(Song, Song.theme_name.like(u'%' + self.whitespace.sub(u' ', search_keywords) + u'%')) self.displayResultsSong(search_results) self.check_search_result() def searchEntire(self, search_keywords): - return self.parent.manager.get_all_objects(Song, + return self.plugin.manager.get_all_objects(Song, or_(Song.search_title.like(u'%' + self.whitespace.sub(u' ', search_keywords.lower()) + u'%'), Song.search_lyrics.like(u'%' + search_keywords.lower() + u'%'), @@ -225,7 +225,7 @@ class SongMediaItem(MediaManagerItem): if self.editItem and self.updateServiceOnEdit and \ not self.remoteTriggered: item = self.buildServiceItem(self.editItem) - self.parent.serviceManager.replaceServiceItem(item) + self.plugin.serviceManager.replaceServiceItem(item) self.onRemoteEditClear() self.onSearchTextButtonClick() log.debug(u'onSongListLoad - finished') @@ -284,12 +284,12 @@ class SongMediaItem(MediaManagerItem): def onImportClick(self): if not hasattr(self, u'import_wizard'): - self.import_wizard = SongImportForm(self, self.parent) + self.import_wizard = SongImportForm(self, self.plugin) if self.import_wizard.exec_() == QtGui.QDialog.Accepted: Receiver.send_message(u'songs_load_list') def onExportClick(self): - export_wizard = SongExportForm(self, self.parent) + export_wizard = SongExportForm(self, self.plugin) export_wizard.exec_() def onNewClick(self): @@ -314,7 +314,7 @@ class SongMediaItem(MediaManagerItem): log.debug(u'onRemoteEdit %s' % message) remote_type, song_id = message.split(u':') song_id = int(song_id) - valid = self.parent.manager.get_object(Song, song_id) + valid = self.plugin.manager.get_object(Song, song_id) if valid: self.remoteSong = song_id self.remoteTriggered = remote_type @@ -350,7 +350,7 @@ class SongMediaItem(MediaManagerItem): return for item in items: item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] - self.parent.manager.delete_object(Song, item_id) + self.plugin.manager.delete_object(Song, item_id) self.onSearchTextButtonClick() def generateSlideData(self, service_item, item=None, xmlVersion=False): @@ -362,7 +362,7 @@ class SongMediaItem(MediaManagerItem): service_item.add_capability(ItemCapabilities.OnLoadUpdate) service_item.add_capability(ItemCapabilities.AddIfNewItem) service_item.add_capability(ItemCapabilities.AllowsVirtualSplit) - song = self.parent.manager.get_object(Song, item_id) + song = self.plugin.manager.get_object(Song, item_id) service_item.theme = song.theme_name service_item.edit_id = item_id if song.lyrics.startswith(u' Date: Sat, 28 May 2011 11:15:10 +0100 Subject: [PATCH 115/190] merge fixes --- openlp/plugins/custom/forms/editcustomform.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index 1aa283311..26a25e12a 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -43,12 +43,11 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): Class documentation goes here. """ log.info(u'Custom Editor loaded') - def __init__(self, plugin, manager): + def __init__(self, parent, manager): """ Constructor """ - self.plugin = plugin - QtGui.QDialog.__init__(self, self.plugin.formparent) + QtGui.QDialog.__init__(self, parent) self.manager = manager self.setupUi(self) # Create other objects and forms. @@ -137,7 +136,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.customSlide.credits = unicode(self.creditEdit.text()) self.customSlide.theme_name = unicode(self.themeComboBox.currentText()) success = self.manager.save_object(self.customSlide) - self.parent.auto_select_id = self.customSlide.id + self.parent().auto_select_id = self.customSlide.id return success def onUpButtonClicked(self): From 6a1ee02cdd94c80d91c00d3c972b1853cd44d4f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Sat, 28 May 2011 14:48:10 +0200 Subject: [PATCH 116/190] add Backup page to the wizard remove blank item on Combobox in BookNameForm --- .../plugins/bibles/forms/bibleupgradeform.py | 116 ++++++++++++++++++ openlp/plugins/bibles/forms/booknameform.py | 1 - 2 files changed, 116 insertions(+), 1 deletion(-) diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index a5b175aef..64a9f9ffa 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -29,6 +29,7 @@ The bible import functions for OpenLP import logging import os.path import re +import shutil from PyQt4 import QtCore, QtGui @@ -133,6 +134,32 @@ class BibleUpgradeForm(OpenLPWizard): if number in self.success and self.success[number] == True: delete_file(os.path.join(self.path, filename[0])) + def onBackupBrowseButtonClicked(self): + """ + Show the file open dialog for the OSIS file. + """ + filename = QtGui.QFileDialog.getExistingDirectory(self, translate( + 'BiblesPlugin.UpgradeWizardForm', 'Select a Backup Directory'), + os.path.dirname(SettingsManager.get_last_dir( + self.plugin.settingsSection, 1))) + if filename: + self.backupDirectoryEdit.setText(filename) + SettingsManager.set_last_dir(self.plugin.settingsSection, + filename, 1) + + def backupOldBibles(self, backupdirectory): + """ + Backup old bible databases in a given folder. + """ + for filename in self.files: + try: + shutil.copy(os.path.join(self.path, filename[0]), + backupdirectory) + except: + return False + break + return True + def customInit(self): """ Perform any custom initialisation for bible upgrading. @@ -146,11 +173,52 @@ class BibleUpgradeForm(OpenLPWizard): """ QtCore.QObject.connect(self.finishButton, QtCore.SIGNAL(u'clicked()'), self.onFinishButton) + QtCore.QObject.connect(self.backupBrowseButton, + QtCore.SIGNAL(u'clicked()'), self.onBackupBrowseButtonClicked) def addCustomPages(self): """ Add the bible import specific wizard pages. """ + # Backup Page + self.backupPage = QtGui.QWizardPage() + self.backupPage.setObjectName(u'BackupPage') + self.backupLayout = QtGui.QVBoxLayout(self.backupPage) + self.backupLayout.setObjectName(u'BackupLayout') + self.backupInfoLabel = QtGui.QLabel(self.backupPage) + self.backupInfoLabel.setObjectName(u'backupInfoLabel') + self.backupInfoLabel.setWordWrap(True) + self.backupLayout.addWidget(self.backupInfoLabel) + self.formLayout = QtGui.QFormLayout() + self.formLayout.setMargin(0) + self.formLayout.setObjectName(u'FormLayout') + self.backupDirectoryLabel = QtGui.QLabel(self.backupPage) + self.backupDirectoryLabel.setObjectName(u'backupDirectoryLabel') + self.backupDirectoryLayout = QtGui.QHBoxLayout() + self.backupDirectoryLayout.setObjectName(u'BackupDirectoryLayout') + self.backupDirectoryEdit = QtGui.QLineEdit(self.backupPage) + self.backupDirectoryEdit.setObjectName(u'BackupFolderEdit') + self.backupDirectoryLayout.addWidget(self.backupDirectoryEdit) + self.backupBrowseButton = QtGui.QToolButton(self.backupPage) + self.backupBrowseButton.setIcon(self.openIcon) + self.backupBrowseButton.setObjectName(u'BackupBrowseButton') + self.backupDirectoryLayout.addWidget(self.backupBrowseButton) + self.formLayout.addRow(self.backupDirectoryLabel, + self.backupDirectoryLayout) + self.backupLayout.addLayout(self.formLayout) + self.backupAdditionalInfoLabel = QtGui.QLabel(self.backupPage) + self.backupAdditionalInfoLabel.setObjectName( + u'BackupAdditionalInfoLabel') + self.backupAdditionalInfoLabel.setWordWrap(True) + self.backupLayout.addWidget(self.backupAdditionalInfoLabel) + self.noBackupCheckBox = QtGui.QCheckBox(self.backupPage) + self.noBackupCheckBox.setObjectName('NoBackupCheckBox') + self.backupLayout.addWidget(self.noBackupCheckBox) + self.spacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed, + QtGui.QSizePolicy.Minimum) + self.backupLayout.addItem(self.spacer) + self.addPage(self.backupPage) + # Select Page self.selectPage = QtGui.QWizardPage() self.selectPage.setObjectName(u'SelectPage') self.pageLayout = QtGui.QVBoxLayout(self.selectPage) @@ -290,6 +358,27 @@ class BibleUpgradeForm(OpenLPWizard): 'This wizard will help you to upgrade your existing Bibles from a ' 'prior version of OpenLP 2. Click the next button below to start ' 'the process by selecting the Bibles to upgrade.')) + self.backupPage.setTitle( + translate('BiblesPlugin.UpgradeWizardForm', + 'Select Backup Directory')) + self.backupPage.setSubTitle( + translate('BiblesPlugin.UpgradeWizardForm', + 'Please select a Directory for Backup your old Bibles')) + self.backupInfoLabel.setText(translate('BiblesPlugin.UpgradeWizardForm', + 'The Bible upgrade procedure will prevent you running older ' + 'versions of OpenLP. \nPlease select a backup location for your ' + 'existing Bibles.')) + self.backupDirectoryLabel.setText( + translate('BiblesPlugin.UpgradeWizardForm', 'Backup Directory:')) + self.backupAdditionalInfoLabel.setText( + translate('BiblesPlugin.UpgradeWizardForm', + 'These Bibles can copied back to your OpenLP data folder should ' + 'you need to revert to a previous version. Instructions on how ' + 'to restore the files can be found on our FAQ ' + 'at http://wiki.openlp.org/faq')) + self.noBackupCheckBox.setText( + translate('BiblesPlugin.UpgradeWizardForm', + 'There is no need to backup my Bibles')) self.selectPage.setTitle( translate('BiblesPlugin.UpgradeWizardForm', 'Select Bibles')) @@ -316,6 +405,33 @@ class BibleUpgradeForm(OpenLPWizard): """ if self.currentPage() == self.welcomePage: return True + elif self.currentPage() == self.backupPage: + if not self.noBackupCheckBox.checkState() == QtCore.Qt.Checked: + if not unicode(self.backupDirectoryEdit.text()): + critical_error_message_box(UiStrings().EmptyField, + translate('BiblesPlugin.UpgradeWizardForm', + 'You need to specify a Backup Directory for your ' + 'Bibles.')) + self.backupDirectoryEdit.setFocus() + return False + elif not os.path.exists(unicode( + self.backupDirectoryEdit.text())): + critical_error_message_box(UiStrings().Error, + translate('BiblesPlugin.UpgradeWizardForm', + 'The given path is not an existing directory.')) + self.backupDirectoryEdit.setFocus() + return False + else: + if not self.backupOldBibles(unicode( + self.backupDirectoryEdit.text())): + critical_error_message_box(UiStrings().Error, + translate('BiblesPlugin.UpgradeWizardForm', + 'The backup was not successfull.\nTo backup your ' + 'Bibles you need the permission to write in the given ' + 'directory. If you have a permissions to write and ' + 'this error still occurs, please report a bug.')) + return False + return True elif self.currentPage() == self.selectPage: for number, filename in enumerate(self.files): if not self.checkBox[number].checkState() == QtCore.Qt.Checked: diff --git a/openlp/plugins/bibles/forms/booknameform.py b/openlp/plugins/bibles/forms/booknameform.py index 8ad3ad977..28e4c9df1 100644 --- a/openlp/plugins/bibles/forms/booknameform.py +++ b/openlp/plugins/bibles/forms/booknameform.py @@ -80,7 +80,6 @@ class BookNameForm(QDialog, Ui_BookNameDialog): Reload the Combobox items ''' self.correspondingComboBox.clear() - self.correspondingComboBox.addItem(u'') items = BiblesResourcesDB.get_books() for item in items: addBook = True From 9b9f47a5beb4507537616c9d14ea0ff3267caf61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Sat, 28 May 2011 15:33:15 +0200 Subject: [PATCH 117/190] small fix --- openlp/plugins/bibles/forms/bibleupgradeform.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index 64a9f9ffa..00623fbce 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -157,7 +157,6 @@ class BibleUpgradeForm(OpenLPWizard): backupdirectory) except: return False - break return True def customInit(self): From 88f1f4065e714cbe9eb58689681ac54d3ca8f8d3 Mon Sep 17 00:00:00 2001 From: "Jeffrey S. Smith" Date: Sat, 28 May 2011 08:45:44 -0500 Subject: [PATCH 118/190] Make 'continuous loop' button into a selection ('loop' or 'play to end') --- openlp/core/ui/slidecontroller.py | 105 ++++++++++++++++++------------ 1 file changed, 65 insertions(+), 40 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 85598a767..28656ef25 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -66,7 +66,7 @@ class SlideController(QtGui.QWidget): float(self.screens.current[u'size'].height()) self.image_manager = self.parent.image_manager self.loopList = [ - u'Start Loop', + u'Play Slides Menu', u'Loop Separator', u'Image SpinBox' ] @@ -153,6 +153,7 @@ class SlideController(QtGui.QWidget): context=QtCore.Qt.WidgetWithChildrenShortcut) self.toolbar.addToolbarSeparator(u'Close Separator') if self.isLive: + # Hide Menu self.hideMenu = QtGui.QToolButton(self.toolbar) self.hideMenu.setText(translate('OpenLP.SlideController', 'Hide')) self.hideMenu.setPopupMode(QtGui.QToolButton.MenuButtonPopup) @@ -180,27 +181,34 @@ class SlideController(QtGui.QWidget): self.hideMenu.menu().addAction(self.themeScreen) self.hideMenu.menu().addAction(self.desktopScreen) self.toolbar.addToolbarSeparator(u'Loop Separator') - startLoop = self.toolbar.addToolbarButton( - # Does not need translating - control string. - u'Start Loop', u':/media/media_time.png', - translate('OpenLP.SlideController', 'Start continuous loop'), - self.onStartLoop) - startLoop.setObjectName(u'startLoop') - action_list = ActionList.get_instance() - action_list.add_action(startLoop, UiStrings().LiveToolbar) - stopLoop = self.toolbar.addToolbarButton( - # Does not need translating - control string. - u'Stop Loop', u':/media/media_stop.png', - translate('OpenLP.SlideController', 'Stop continuous loop'), - self.onStopLoop) - stopLoop.setObjectName(u'stopLoop') - action_list.add_action(stopLoop, UiStrings().LiveToolbar) - self.toogleLoop = shortcut_action(self, u'toogleLoop', - [QtGui.QKeySequence(u'L')], self.onToggleLoop, - category=UiStrings().LiveToolbar) - self.toogleLoop.setText(translate('OpenLP.SlideController', - 'Start/Stop continuous loop')) - self.addAction(self.toogleLoop) + # Play Slides Menu + self.playSlidesMenu = QtGui.QToolButton(self.toolbar) + self.playSlidesMenu.setText(translate('OpenLP.SlideController', + 'Play Slides')) + self.playSlidesMenu.setPopupMode(QtGui.QToolButton.MenuButtonPopup) + self.toolbar.addToolbarWidget(u'Play Slides Menu', + self.playSlidesMenu) + self.playSlidesMenu.setMenu(QtGui.QMenu( + translate('OpenLP.SlideController', 'Play Slides'), + self.toolbar)) + self.playSlidesLoop = shortcut_action(self.playSlidesMenu, + u'playSlidesLoop', [], self.onPlaySlidesLoop, + u':/media/media_time.png', False, UiStrings().LiveToolbar) + self.playSlidesLoop.setText( + translate('OpenLP.SlideController', 'Play Slides in Loop')) + self.playSlidesOnce = shortcut_action(self.playSlidesMenu, + u'playSlidesOnce', [], self.onPlaySlidesOnce, + u':/media/media_time.png', False, UiStrings().LiveToolbar) + self.playSlidesOnce.setText( + translate('OpenLP.SlideController', 'Play Slides to End')) + if QtCore.QSettings().value(self.parent.generalSettingsSection + + u'/enable slide loop', QtCore.QVariant(True)).toBool(): + self.playSlidesMenu.setDefaultAction(self.playSlidesLoop) + else: + self.playSlidesMenu.setDefaultAction(self.playSlidesOnce) + self.playSlidesMenu.menu().addAction(self.playSlidesLoop) + self.playSlidesMenu.menu().addAction(self.playSlidesOnce) + # Loop Delay Spinbox self.delaySpinBox = QtGui.QSpinBox() self.delaySpinBox.setRange(1, 180) self.toolbar.addToolbarWidget(u'Image SpinBox', self.delaySpinBox) @@ -321,7 +329,6 @@ class SlideController(QtGui.QWidget): QtCore.SIGNAL(u'slidecontroller_live_spin_delay'), self.receiveSpinDelay) self.toolbar.makeWidgetsInvisible(self.loopList) - self.toolbar.actions[u'Stop Loop'].setVisible(False) else: QtCore.QObject.connect(self.previewListWidget, QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), @@ -496,10 +503,6 @@ class SlideController(QtGui.QWidget): self.mediabar.setVisible(False) self.toolbar.makeWidgetsInvisible([u'Song Menu']) self.toolbar.makeWidgetsInvisible(self.loopList) - self.toogleLoop.setEnabled(False) - self.toolbar.actions[u'Start Loop'].setEnabled(False) - self.toolbar.actions[u'Stop Loop'].setEnabled(False) - self.toolbar.actions[u'Stop Loop'].setVisible(False) if item.is_text(): if QtCore.QSettings().value( self.parent.songsSettingsSection + u'/display songbar', @@ -508,9 +511,6 @@ class SlideController(QtGui.QWidget): if item.is_capable(ItemCapabilities.AllowsLoop) and \ len(item.get_frames()) > 1: self.toolbar.makeWidgetsVisible(self.loopList) - self.toogleLoop.setEnabled(True) - self.toolbar.actions[u'Start Loop'].setEnabled(True) - self.toolbar.actions[u'Stop Loop'].setEnabled(True) if item.is_media(): self.toolbar.setVisible(False) self.mediabar.setVisible(True) @@ -933,7 +933,7 @@ class SlideController(QtGui.QWidget): rect.y(), rect.width(), rect.height()) self.slidePreview.setPixmap(winimg) - def onSlideSelectedNext(self): + def onSlideSelectedNext(self, wrap=None): """ Go to the next slide. """ @@ -946,8 +946,11 @@ class SlideController(QtGui.QWidget): else: row = self.previewListWidget.currentRow() + 1 if row == self.previewListWidget.rowCount(): - if QtCore.QSettings().value(self.parent.generalSettingsSection + - u'/enable slide loop', QtCore.QVariant(True)).toBool(): + if wrap is None: + wrap = QtCore.QSettings().value( + self.parent.generalSettingsSection + + u'/enable slide loop', QtCore.QVariant(True)).toBool() + if wrap: row = 0 else: row = self.previewListWidget.rowCount() - 1 @@ -996,11 +999,11 @@ class SlideController(QtGui.QWidget): self.previewListWidget.rowCount() - 1) self.slideSelected() - def onToggleLoop(self, toggled): + def onToggleLoop(self): """ Toggles the loop state. """ - if self.toolbar.actions[u'Start Loop'].isVisible(): + if self.playSlidesLoop.isChecked() or self.playSlidesOnce.isChecked(): self.onStartLoop() else: self.onStopLoop() @@ -1012,8 +1015,6 @@ class SlideController(QtGui.QWidget): if self.previewListWidget.rowCount() > 1: self.timer_id = self.startTimer( int(self.delaySpinBox.value()) * 1000) - self.toolbar.actions[u'Stop Loop'].setVisible(True) - self.toolbar.actions[u'Start Loop'].setVisible(False) def onStopLoop(self): """ @@ -1022,15 +1023,39 @@ class SlideController(QtGui.QWidget): if self.timer_id != 0: self.killTimer(self.timer_id) self.timer_id = 0 - self.toolbar.actions[u'Start Loop'].setVisible(True) - self.toolbar.actions[u'Stop Loop'].setVisible(False) + + def onPlaySlidesLoop(self, checked=None): + """ + Start or stop 'Play Slides in Loop' + """ + if checked is None: + checked = self.playSlidesLoop.isChecked() + else: + self.playSlidesLoop.setChecked(checked) + log.debug(u'onPlaySlidesLoop %s' % checked) + self.playSlidesMenu.setDefaultAction(self.playSlidesLoop) + self.playSlidesOnce.setChecked(False) + self.onToggleLoop() + + def onPlaySlidesOnce(self, checked=None): + """ + Start or stop 'Play Slides to End' + """ + if checked is None: + checked = self.playSlidesOnce.isChecked() + else: + self.playSlidesOnce.setChecked(checked) + log.debug(u'onPlaySlidesOnce %s' % checked) + self.playSlidesMenu.setDefaultAction(self.playSlidesOnce) + self.playSlidesLoop.setChecked(False) + self.onToggleLoop() def timerEvent(self, event): """ If the timer event is for this window select next slide """ if event.timerId() == self.timer_id: - self.onSlideSelectedNext() + self.onSlideSelectedNext(self.playSlidesLoop.isChecked()) def onEditSong(self): """ From 6507b431b0a7f12918bd704a09ff7414ca8befd9 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sat, 28 May 2011 18:25:11 +0200 Subject: [PATCH 119/190] fix for older versions --- openlp/plugins/songs/lib/__init__.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index e3779f2c0..ac7724ade 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -269,6 +269,19 @@ def clean_song(manager, song): verses = SongXML().get_verses(song.lyrics) lyrics = u' '.join([whitespace.sub(u' ', verse[1]) for verse in verses]) song.search_lyrics = lyrics.lower() + compare_order = [] + for verse in verses: + compare_order.append( + (u'%s%s' % (verse[0][u'type'], verse[0][u'label'])).upper()) + if verse[0][u'label'] == u'1': + compare_order.append(verse[0][u'type'].upper()) + # Check if the verse order contains tags for verses which do not exist. + # (This is relevant for people upgrading from 1.9.4 and older). + for order in song.verse_order.split(): + # The verse order contains invalid tags, so reset the order. + if order not in compare_order: + song.verse_order = u'' + break # The song does not have any author, add one. if not song.authors: name = SongStrings.AuthorUnknown From 5bedf62ec45d7732d3b8502a82dea1c394758640 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sat, 28 May 2011 18:30:16 +0200 Subject: [PATCH 120/190] added more code back --- openlp/plugins/songs/lib/__init__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index ac7724ade..8aab8a34d 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -277,7 +277,11 @@ def clean_song(manager, song): compare_order.append(verse[0][u'type'].upper()) # Check if the verse order contains tags for verses which do not exist. # (This is relevant for people upgrading from 1.9.4 and older). - for order in song.verse_order.split(): + if song.verse_order: + order = song.verse_order.strip().split() + else: + order = [] + for order in order: # The verse order contains invalid tags, so reset the order. if order not in compare_order: song.verse_order = u'' From 64b9b4232167af374d810af37ebb90c065d45b9e Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sat, 28 May 2011 19:01:41 +0200 Subject: [PATCH 121/190] better solution --- openlp/plugins/songs/lib/__init__.py | 74 +++++++++++++++++++--------- 1 file changed, 52 insertions(+), 22 deletions(-) diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index 8aab8a34d..53b3d7cb1 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -171,8 +171,7 @@ class VerseType(object): @staticmethod def from_loose_input(verse_name): """ - Return the VerseType for a given string, Other if not found. Use this - with caution! + Return the VerseType for a given string, Other if not found ``verse_name`` The string to return a VerseType for @@ -266,26 +265,57 @@ def clean_song(manager, song): whitespace = re.compile(r'\W+', re.UNICODE) song.search_title = (whitespace.sub(u' ', song.title).strip() + u'@' + whitespace.sub(u' ', song.alternate_title).strip()).strip().lower() - verses = SongXML().get_verses(song.lyrics) - lyrics = u' '.join([whitespace.sub(u' ', verse[1]) for verse in verses]) - song.search_lyrics = lyrics.lower() - compare_order = [] - for verse in verses: - compare_order.append( - (u'%s%s' % (verse[0][u'type'], verse[0][u'label'])).upper()) - if verse[0][u'label'] == u'1': - compare_order.append(verse[0][u'type'].upper()) - # Check if the verse order contains tags for verses which do not exist. - # (This is relevant for people upgrading from 1.9.4 and older). - if song.verse_order: - order = song.verse_order.strip().split() - else: - order = [] - for order in order: - # The verse order contains invalid tags, so reset the order. - if order not in compare_order: - song.verse_order = u'' - break + # Only do this, if we the song is a 1.9.4 song (or older). + if song.lyrics.find(u'') != -1: + # Remove the old "language" attribute from lyrics tag (prior to 1.9.5). + # This is not very important, but this keeps the database clean. This + # can be removed when everybody has cleaned his songs. + song.lyrics = song.lyrics.replace( + u'', u'') + verses = SongXML().get_verses(song.lyrics) + lyrics = u' '.join([whitespace.sub(u' ', verse[1]) for verse in verses]) + song.search_lyrics = lyrics.lower() + # We need a new and clean SongXML instance. + sxml = SongXML() + # Rebuild the song's verses, to remove any wrong verse names (for + # example translated ones), which might have been added prior to 1.9.5. + # List for later comparison. + compare_order = [] + for verse in verses: + verse_type = VerseType.Tags[VerseType.from_loose_input( + verse[0][u'type'])] + sxml.add_verse_to_lyrics( + verse_type, + verse[0][u'label'], + verse[1], + verse[0][u'lang'] if verse[0].has_key(u'lang') else None + ) + compare_order.append((u'%s%s' % (verse_type, verse[0][u'label']) + ).upper()) + if verse[0][u'label'] == u'1': + compare_order.append(verse_type.upper()) + song.lyrics = unicode(sxml.extract_xml(), u'utf-8') + # Rebuild the verse order, to convert translated verse tags, which might + # have been added prior to 1.9.5. + if song.verse_order: + order = song.verse_order.strip().split() + else: + order = [] + new_order = [] + for verse_def in order: + verse_type = VerseType.Tags[ + VerseType.from_loose_input(verse_def[0])] + if len(verse_def) > 1: + new_order.append( + (u'%s%s' % (verse_type, verse_def[1:])).upper()) + else: + new_order.append(verse_type.upper()) + song.verse_order = u' '.join(new_order) + # Check if the verse order contains tags for verses which do not exist. + for order in new_order: + if order not in compare_order: + song.verse_order = u'' + break # The song does not have any author, add one. if not song.authors: name = SongStrings.AuthorUnknown From 82a72fdc877831ee79e96bea02b3b2c778637c8a Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Sat, 28 May 2011 19:47:14 +0100 Subject: [PATCH 122/190] Don't set .parent's on Qt items, pass to init instead --- openlp/core/lib/dockwidget.py | 1 - openlp/core/lib/mediamanageritem.py | 3 +- openlp/core/lib/plugin.py | 3 +- openlp/core/lib/renderer.py | 4 +- openlp/core/ui/maindisplay.py | 3 +- openlp/core/ui/pluginform.py | 5 +-- openlp/core/ui/slidecontroller.py | 43 +++++++++---------- openlp/plugins/alerts/forms/alertform.py | 1 - openlp/plugins/alerts/lib/alertsmanager.py | 9 ++-- .../presentations/presentationplugin.py | 2 +- openlp/plugins/songs/forms/editsongform.py | 4 +- 11 files changed, 37 insertions(+), 41 deletions(-) diff --git a/openlp/core/lib/dockwidget.py b/openlp/core/lib/dockwidget.py index 5c461bbf8..182b98c48 100644 --- a/openlp/core/lib/dockwidget.py +++ b/openlp/core/lib/dockwidget.py @@ -47,7 +47,6 @@ class OpenLPDockWidget(QtGui.QDockWidget): """ log.debug(u'Initialise the %s widget' % name) QtGui.QDockWidget.__init__(self, parent) - self.parent = parent if name: self.setObjectName(name) if icon: diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 679aa12d6..602b3c55b 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -90,8 +90,7 @@ class MediaManagerItem(QtGui.QWidget): """ Constructor to create the media manager item. """ - QtGui.QWidget.__init__(self) - self.parent = parent + QtGui.QWidget.__init__(self, parent) self.whitespace = re.compile(r'\W+', re.UNICODE) self.plugin = plugin visible_title = self.plugin.getString(StringContent.VisibleName) diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py index 974c59de2..65ed76dfe 100644 --- a/openlp/core/lib/plugin.py +++ b/openlp/core/lib/plugin.py @@ -215,7 +215,8 @@ class Plugin(QtCore.QObject): you need, and return it for integration into openlp.org. """ if self.media_item_class: - return self.media_item_class(self.mediadock, self, self.icon) + return self.media_item_class(self.mediadock.media_dock, self, + self.icon) return None def addImportMenuItem(self, importMenu): diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 079a9aa9c..4acf88202 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -77,7 +77,7 @@ class Renderer(object): self.theme_data = None self.bg_frame = None self.force_page = False - self.display = MainDisplay(self, self.image_manager, False) + self.display = MainDisplay(None, self.image_manager, False) self.display.setup() def update_display(self): @@ -86,7 +86,7 @@ class Renderer(object): """ log.debug(u'Update Display') self._calculate_default(self.screens.current[u'size']) - self.display = MainDisplay(self, self.image_manager, False) + self.display = MainDisplay(None, self.image_manager, False) self.display.setup() self.bg_frame = None self.theme_data = None diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index dc7c28ded..763b9bc8b 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -50,7 +50,8 @@ class MainDisplay(QtGui.QGraphicsView): """ def __init__(self, parent, image_manager, live): QtGui.QGraphicsView.__init__(self) - self.parent = parent + if parent: + self.setParent(parent) self.isLive = live self.image_manager = image_manager self.screens = ScreenList.get_instance() diff --git a/openlp/core/ui/pluginform.py b/openlp/core/ui/pluginform.py index 0f7f6dbeb..c93b08ccb 100644 --- a/openlp/core/ui/pluginform.py +++ b/openlp/core/ui/pluginform.py @@ -40,7 +40,6 @@ class PluginForm(QtGui.QDialog, Ui_PluginViewDialog): """ def __init__(self, parent=None): QtGui.QDialog.__init__(self, parent) - self.parent = parent self.activePlugin = None self.programaticChange = False self.setupUi(self) @@ -65,7 +64,7 @@ class PluginForm(QtGui.QDialog, Ui_PluginViewDialog): self._clearDetails() self.programaticChange = True pluginListWidth = 0 - for plugin in self.parent.pluginManager.plugins: + for plugin in self.parent().pluginManager.plugins: item = QtGui.QListWidgetItem(self.pluginListWidget) # We do this just to make 100% sure the status is an integer as # sometimes when it's loaded from the config, it isn't cast to int. @@ -117,7 +116,7 @@ class PluginForm(QtGui.QDialog, Ui_PluginViewDialog): plugin_name_singular = \ self.pluginListWidget.currentItem().text().split(u' ')[0] self.activePlugin = None - for plugin in self.parent.pluginManager.plugins: + for plugin in self.parent().pluginManager.plugins: if plugin.nameStrings[u'singular'] == plugin_name_singular: self.activePlugin = plugin break diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 98046ba2a..5cd128f5e 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -46,7 +46,6 @@ class SlideList(QtGui.QTableWidget): """ def __init__(self, parent=None, name=None): QtGui.QTableWidget.__init__(self, parent.controller) - self.parent = parent class SlideController(QtGui.QWidget): @@ -60,11 +59,10 @@ class SlideController(QtGui.QWidget): """ QtGui.QWidget.__init__(self, parent) self.isLive = isLive - self.parent = parent self.screens = ScreenList.get_instance() self.ratio = float(self.screens.current[u'size'].width()) / \ float(self.screens.current[u'size'].height()) - self.image_manager = self.parent.image_manager + self.image_manager = self.parent().image_manager self.loopList = [ u'Start Loop', u'Loop Separator', @@ -461,7 +459,7 @@ class SlideController(QtGui.QWidget): self.previewListWidget.resizeRowsToContents() else: # Sort out image heights. - width = self.parent.controlSplitter.sizes()[self.split] + width = self.parent().controlSplitter.sizes()[self.split] for framenumber in range(len(self.serviceItem.get_frames())): self.previewListWidget.setRowHeight( framenumber, width / self.ratio) @@ -502,7 +500,7 @@ class SlideController(QtGui.QWidget): self.toolbar.actions[u'Stop Loop'].setVisible(False) if item.is_text(): if QtCore.QSettings().value( - self.parent.songsSettingsSection + u'/display songbar', + self.parent().songsSettingsSection + u'/display songbar', QtCore.QVariant(True)).toBool() and len(self.slideList) > 0: self.toolbar.makeWidgetsVisible([u'Song Menu']) if item.is_capable(ItemCapabilities.AllowsLoop) and \ @@ -591,7 +589,7 @@ class SlideController(QtGui.QWidget): Receiver.send_message(u'%s_start' % serviceItem.name.lower(), [serviceItem, self.isLive, self.hideMode(), slideno]) self.slideList = {} - width = self.parent.controlSplitter.sizes()[self.split] + width = self.parent().controlSplitter.sizes()[self.split] self.previewListWidget.clear() self.previewListWidget.setRowCount(0) self.previewListWidget.setColumnWidth(0, width) @@ -625,8 +623,8 @@ class SlideController(QtGui.QWidget): label.setScaledContents(True) if self.serviceItem.is_command(): image = resize_image(frame[u'image'], - self.parent.renderer.width, - self.parent.renderer.height) + self.parent().renderer.width, + self.parent().renderer.height) else: # If current slide set background to image if framenumber == slideno: @@ -635,7 +633,7 @@ class SlideController(QtGui.QWidget): image = self.image_manager.get_image(frame[u'title']) label.setPixmap(QtGui.QPixmap.fromImage(image)) self.previewListWidget.setCellWidget(framenumber, 0, label) - slideHeight = width * self.parent.renderer.screen_ratio + slideHeight = width * self.parent().renderer.screen_ratio row += 1 text.append(unicode(row)) self.previewListWidget.setItem(framenumber, 0, item) @@ -736,7 +734,7 @@ class SlideController(QtGui.QWidget): """ log.debug(u'mainDisplaySetBackground live = %s' % self.isLive) display_type = QtCore.QSettings().value( - self.parent.generalSettingsSection + u'/screen blank', + self.parent().generalSettingsSection + u'/screen blank', QtCore.QVariant(u'')).toString() if not self.display.primary: # Order done to handle initial conversion @@ -772,11 +770,11 @@ class SlideController(QtGui.QWidget): self.desktopScreen.setChecked(False) if checked: QtCore.QSettings().setValue( - self.parent.generalSettingsSection + u'/screen blank', + self.parent().generalSettingsSection + u'/screen blank', QtCore.QVariant(u'blanked')) else: QtCore.QSettings().remove( - self.parent.generalSettingsSection + u'/screen blank') + self.parent().generalSettingsSection + u'/screen blank') self.blankPlugin() self.updatePreview() @@ -793,11 +791,11 @@ class SlideController(QtGui.QWidget): self.desktopScreen.setChecked(False) if checked: QtCore.QSettings().setValue( - self.parent.generalSettingsSection + u'/screen blank', + self.parent().generalSettingsSection + u'/screen blank', QtCore.QVariant(u'themed')) else: QtCore.QSettings().remove( - self.parent.generalSettingsSection + u'/screen blank') + self.parent().generalSettingsSection + u'/screen blank') self.blankPlugin() self.updatePreview() @@ -814,11 +812,11 @@ class SlideController(QtGui.QWidget): self.desktopScreen.setChecked(checked) if checked: QtCore.QSettings().setValue( - self.parent.generalSettingsSection + u'/screen blank', + self.parent().generalSettingsSection + u'/screen blank', QtCore.QVariant(u'hidden')) else: QtCore.QSettings().remove( - self.parent.generalSettingsSection + u'/screen blank') + self.parent().generalSettingsSection + u'/screen blank') self.hidePlugin(checked) self.updatePreview() @@ -956,8 +954,8 @@ class SlideController(QtGui.QWidget): else: row = self.previewListWidget.currentRow() + 1 if row == self.previewListWidget.rowCount(): - if QtCore.QSettings().value(self.parent.generalSettingsSection + - u'/enable slide loop', QtCore.QVariant(True)).toBool(): + if QtCore.QSettings().value(self.parent().generalSettingsSection + + u'/enable slide loop', QtCore.QVariant(True)).toBool(): row = 0 else: row = self.previewListWidget.rowCount() - 1 @@ -977,8 +975,8 @@ class SlideController(QtGui.QWidget): else: row = self.previewListWidget.currentRow() - 1 if row == -1: - if QtCore.QSettings().value(self.parent.generalSettingsSection + - u'/enable slide loop', QtCore.QVariant(True)).toBool(): + if QtCore.QSettings().value(self.parent().generalSettingsSection + + u'/enable slide loop', QtCore.QVariant(True)).toBool(): row = self.previewListWidget.rowCount() - 1 else: row = 0 @@ -1055,7 +1053,8 @@ class SlideController(QtGui.QWidget): From the preview display request the Item to be added to service """ if self.serviceItem: - self.parent.serviceManagerContents.addServiceItem(self.serviceItem) + self.parent().serviceManagerContents.addServiceItem( + self.serviceItem) def onGoLiveClick(self): """ @@ -1083,7 +1082,7 @@ class SlideController(QtGui.QWidget): Receiver.send_message('servicemanager_preview_live', u'%s:%s' % (self.serviceItem._uuid, row)) else: - self.parent.liveController.addServiceManagerItem( + self.parent().liveController.addServiceManagerItem( self.serviceItem, row) def onMediaStart(self, item): diff --git a/openlp/plugins/alerts/forms/alertform.py b/openlp/plugins/alerts/forms/alertform.py index 92db42723..1415c809c 100644 --- a/openlp/plugins/alerts/forms/alertform.py +++ b/openlp/plugins/alerts/forms/alertform.py @@ -42,7 +42,6 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog): """ self.manager = plugin.manager self.plugin = plugin - self.parent = plugin.formparent self.item_id = None QtGui.QDialog.__init__(self, plugin.formparent) self.setupUi(self) diff --git a/openlp/plugins/alerts/lib/alertsmanager.py b/openlp/plugins/alerts/lib/alertsmanager.py index c55e76ef7..1d40d5dd3 100644 --- a/openlp/plugins/alerts/lib/alertsmanager.py +++ b/openlp/plugins/alerts/lib/alertsmanager.py @@ -40,8 +40,7 @@ class AlertsManager(QtCore.QObject): log.info(u'Alert Manager loaded') def __init__(self, parent): - QtCore.QObject.__init__(self) - self.parent = parent + QtCore.QObject.__init__(self, parent) self.screen = None self.timer_id = 0 self.alertList = [] @@ -85,8 +84,8 @@ class AlertsManager(QtCore.QObject): if len(self.alertList) == 0: return text = self.alertList.pop(0) - alertTab = self.parent.settings_tab - self.parent.liveController.display.alert(text) + alertTab = self.parent().settings_tab + self.parent().liveController.display.alert(text) # Check to see if we have a timer running. if self.timer_id == 0: self.timer_id = self.startTimer(int(alertTab.timeout) * 1000) @@ -101,7 +100,7 @@ class AlertsManager(QtCore.QObject): """ log.debug(u'timer event') if event.timerId() == self.timer_id: - self.parent.liveController.display.alert(u'') + self.parent().liveController.display.alert(u'') self.killTimer(self.timer_id) self.timer_id = 0 self.generateAlert() diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index 313e6258f..29acb73f4 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -99,7 +99,7 @@ class PresentationPlugin(Plugin): Create the Media Manager List """ return PresentationMediaItem( - self.mediadock, self, self.icon, self.controllers) + self.mediadock.media_dock, self, self.icon, self.controllers) def registerControllers(self, controller): """ diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index c942e2daa..a958f180f 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -648,7 +648,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): text = unicode(self.songBookComboBox.currentText()) if item == 0 and text: temp_song_book = text - self.parent.song_maintenance_form.exec_() + self.parent().song_maintenance_form.exec_() self.loadAuthors() self.loadBooks() self.loadTopics() @@ -754,7 +754,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.song.topics.append(self.manager.get_object(Topic, topicId)) clean_song(self.manager, self.song) self.manager.save_object(self.song) - self.parent.auto_select_id = self.song.id + self.parent().auto_select_id = self.song.id def _processLyrics(self): """ From 147c41e16f6e07698e3f363cf68111692573f1c3 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Sat, 28 May 2011 20:38:19 +0100 Subject: [PATCH 123/190] Fix a couple of parents so the form opens in the right place --- openlp/plugins/custom/forms/editcustomform.py | 5 +++-- openlp/plugins/custom/lib/mediaitem.py | 3 ++- openlp/plugins/songs/forms/editsongform.py | 9 +++++---- openlp/plugins/songs/lib/mediaitem.py | 3 ++- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index 26a25e12a..054d6dbeb 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -43,12 +43,13 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): Class documentation goes here. """ log.info(u'Custom Editor loaded') - def __init__(self, parent, manager): + def __init__(self, mediaitem, parent, manager): """ Constructor """ QtGui.QDialog.__init__(self, parent) self.manager = manager + self.mediaitem = mediaitem self.setupUi(self) # Create other objects and forms. self.editSlideForm = EditCustomSlideForm(self) @@ -136,7 +137,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.customSlide.credits = unicode(self.creditEdit.text()) self.customSlide.theme_name = unicode(self.themeComboBox.currentText()) success = self.manager.save_object(self.customSlide) - self.parent().auto_select_id = self.customSlide.id + self.mediaitem().auto_select_id = self.customSlide.id return success def onUpButtonClicked(self): diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 2ae3ff85f..0398d8fa2 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -58,7 +58,8 @@ class CustomMediaItem(MediaManagerItem): def __init__(self, parent, plugin, icon): self.IconPath = u'custom/custom' MediaManagerItem.__init__(self, parent, plugin, icon) - self.edit_custom_form = EditCustomForm(self, self.plugin.manager) + self.edit_custom_form = EditCustomForm(self, self.plugin.formparent, + self.plugin.manager) self.singleServiceItem = False self.quickPreviewAllowed = True self.hasSearch = True diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index a958f180f..c8c351509 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -47,11 +47,12 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): """ log.info(u'%s EditSongForm loaded', __name__) - def __init__(self, parent, manager): + def __init__(self, mediaitem, parent, manager): """ Constructor """ QtGui.QDialog.__init__(self, parent) + self.mediaitem = mediaitem self.song = None # can this be automated? self.width = 400 @@ -89,7 +90,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.onVerseListViewPressed) QtCore.QObject.connect(self.themeAddButton, QtCore.SIGNAL(u'clicked()'), - self.parent().plugin.renderer.theme_manager.onAddTheme) + self.mediaitem.plugin.renderer.theme_manager.onAddTheme) QtCore.QObject.connect(self.maintenanceButton, QtCore.SIGNAL(u'clicked()'), self.onMaintenanceButtonClicked) QtCore.QObject.connect(Receiver.get_receiver(), @@ -648,7 +649,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): text = unicode(self.songBookComboBox.currentText()) if item == 0 and text: temp_song_book = text - self.parent().song_maintenance_form.exec_() + self.mediaitem.song_maintenance_form.exec_() self.loadAuthors() self.loadBooks() self.loadTopics() @@ -754,7 +755,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.song.topics.append(self.manager.get_object(Topic, topicId)) clean_song(self.manager, self.song) self.manager.save_object(self.song) - self.parent().auto_select_id = self.song.id + self.mediaitem.auto_select_id = self.song.id def _processLyrics(self): """ diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 9ced6179b..02108a846 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -63,7 +63,8 @@ class SongMediaItem(MediaManagerItem): def __init__(self, parent, plugin, icon): self.IconPath = u'songs/song' MediaManagerItem.__init__(self, parent, plugin, icon) - self.edit_song_form = EditSongForm(self, self.plugin.manager) + self.edit_song_form = EditSongForm(self, self.plugin.formparent, + self.plugin.manager) self.openLyrics = OpenLyrics(self.plugin.manager) self.singleServiceItem = False self.song_maintenance_form = SongMaintenanceForm( From ddf11d468157fd1084e8b2910a825b44de24f313 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Sat, 28 May 2011 21:12:32 +0100 Subject: [PATCH 124/190] Live dangerously, and pass parent None to MainDisplay --- openlp/core/ui/maindisplay.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 763b9bc8b..715bb3b5b 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -49,9 +49,7 @@ class MainDisplay(QtGui.QGraphicsView): This is the display screen. """ def __init__(self, parent, image_manager, live): - QtGui.QGraphicsView.__init__(self) - if parent: - self.setParent(parent) + QtGui.QGraphicsView.__init__(self, parent) self.isLive = live self.image_manager = image_manager self.screens = ScreenList.get_instance() From 382e2f11c84829940b1956b1dd4e1d8a28a1e08f Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sat, 28 May 2011 22:26:55 +0200 Subject: [PATCH 125/190] Added a simple file to point users to the online manual. This is necessary for the Debian and Ubuntu builds. --- documentation/manual.txt | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 documentation/manual.txt diff --git a/documentation/manual.txt b/documentation/manual.txt new file mode 100644 index 000000000..55a3f7d98 --- /dev/null +++ b/documentation/manual.txt @@ -0,0 +1,7 @@ +OpenLP Manual +============= + +If you're reading this file, you're probably looking for the OpenLP manual. The +manual is hosted online at http://manual.openlp.org/. If you want to help with +the manual, contact the OpenLP team via IRC in the #openlp.org channel on the +Freenode network. From caa6639c7b184d348c25099479a3cd66895550e5 Mon Sep 17 00:00:00 2001 From: Gerald Britton Date: Sat, 28 May 2011 16:43:33 -0400 Subject: [PATCH 126/190] Uglification to conform to weird standards :) --- openlp/plugins/songs/lib/oooimport.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/openlp/plugins/songs/lib/oooimport.py b/openlp/plugins/songs/lib/oooimport.py index 45e85f64c..ddbab8b31 100644 --- a/openlp/plugins/songs/lib/oooimport.py +++ b/openlp/plugins/songs/lib/oooimport.py @@ -82,12 +82,11 @@ class OooImport(SongImport): self.close_ooo_file() else: self.log_error(self.filepath, - translate('SongsPlugin.SongImport', - 'Unable to open file')) + translate('SongsPlugin.SongImport', + 'Unable to open file')) else: self.log_error(self.filepath, - translate('SongsPlugin.SongImport', - 'File not found')) + translate('SongsPlugin.SongImport', 'File not found')) self.close_ooo() def process_ooo_document(self): From 81fca6bedb8e284bec07317afebd8fc71ed7b481 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Sat, 28 May 2011 23:01:27 +0200 Subject: [PATCH 127/190] change layout of backup page change some strings --- .../plugins/bibles/forms/bibleupgradeform.py | 54 +++++++++++-------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index 00623fbce..0fdcdfd11 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -147,6 +147,13 @@ class BibleUpgradeForm(OpenLPWizard): SettingsManager.set_last_dir(self.plugin.settingsSection, filename, 1) + def onNoBackupCheckBoxToggled(self, checked): + """ + Enable or disable the backup directory widgets. + """ + self.backupDirectoryEdit.setEnabled(not checked) + self.backupBrowseButton.setEnabled(not checked) + def backupOldBibles(self, backupdirectory): """ Backup old bible databases in a given folder. @@ -173,7 +180,9 @@ class BibleUpgradeForm(OpenLPWizard): QtCore.QObject.connect(self.finishButton, QtCore.SIGNAL(u'clicked()'), self.onFinishButton) QtCore.QObject.connect(self.backupBrowseButton, - QtCore.SIGNAL(u'clicked()'), self.onBackupBrowseButtonClicked) + QtCore.SIGNAL(u'clicked()'), self.onBackupBrowseButtonClicked) + QtCore.QObject.connect(self.noBackupCheckBox, + QtCore.SIGNAL(u'toggled(bool)'), self.onNoBackupCheckBoxToggled) def addCustomPages(self): """ @@ -185,9 +194,14 @@ class BibleUpgradeForm(OpenLPWizard): self.backupLayout = QtGui.QVBoxLayout(self.backupPage) self.backupLayout.setObjectName(u'BackupLayout') self.backupInfoLabel = QtGui.QLabel(self.backupPage) - self.backupInfoLabel.setObjectName(u'backupInfoLabel') + self.backupInfoLabel.setOpenExternalLinks(True) + self.backupInfoLabel.setTextFormat(QtCore.Qt.RichText) self.backupInfoLabel.setWordWrap(True) + self.backupInfoLabel.setObjectName(u'backupInfoLabel') self.backupLayout.addWidget(self.backupInfoLabel) + self.selectLabel = QtGui.QLabel(self.backupPage) + self.selectLabel.setObjectName(u'selectLabel') + self.backupLayout.addWidget(self.selectLabel) self.formLayout = QtGui.QFormLayout() self.formLayout.setMargin(0) self.formLayout.setObjectName(u'FormLayout') @@ -205,11 +219,6 @@ class BibleUpgradeForm(OpenLPWizard): self.formLayout.addRow(self.backupDirectoryLabel, self.backupDirectoryLayout) self.backupLayout.addLayout(self.formLayout) - self.backupAdditionalInfoLabel = QtGui.QLabel(self.backupPage) - self.backupAdditionalInfoLabel.setObjectName( - u'BackupAdditionalInfoLabel') - self.backupAdditionalInfoLabel.setWordWrap(True) - self.backupLayout.addWidget(self.backupAdditionalInfoLabel) self.noBackupCheckBox = QtGui.QCheckBox(self.backupPage) self.noBackupCheckBox.setObjectName('NoBackupCheckBox') self.backupLayout.addWidget(self.noBackupCheckBox) @@ -356,25 +365,24 @@ class BibleUpgradeForm(OpenLPWizard): translate('BiblesPlugin.UpgradeWizardForm', 'This wizard will help you to upgrade your existing Bibles from a ' 'prior version of OpenLP 2. Click the next button below to start ' - 'the process by selecting the Bibles to upgrade.')) + 'the upgrade process.')) self.backupPage.setTitle( translate('BiblesPlugin.UpgradeWizardForm', 'Select Backup Directory')) self.backupPage.setSubTitle( translate('BiblesPlugin.UpgradeWizardForm', - 'Please select a Directory for Backup your old Bibles')) + 'Please select a backup directory for your Bibles')) self.backupInfoLabel.setText(translate('BiblesPlugin.UpgradeWizardForm', - 'The Bible upgrade procedure will prevent you running older ' - 'versions of OpenLP. \nPlease select a backup location for your ' - 'existing Bibles.')) + 'Previous releases of OpenLP 2.0 are unable to use upgraded Bibles.' + ' This will create a backup of your current Bibles so that you can ' + 'simply copy the files back to your OpenLP data directory if you ' + 'need to revert to a previous release of OpenLP. Instructions on ' + 'how to restore the files can be found in our Frequently Asked Questions.')) + self.selectLabel.setText(translate('BiblesPlugin.UpgradeWizardForm', + 'Please select a backup location for your Bibles.')) self.backupDirectoryLabel.setText( translate('BiblesPlugin.UpgradeWizardForm', 'Backup Directory:')) - self.backupAdditionalInfoLabel.setText( - translate('BiblesPlugin.UpgradeWizardForm', - 'These Bibles can copied back to your OpenLP data folder should ' - 'you need to revert to a previous version. Instructions on how ' - 'to restore the files can be found on our FAQ ' - 'at http://wiki.openlp.org/faq')) self.noBackupCheckBox.setText( translate('BiblesPlugin.UpgradeWizardForm', 'There is no need to backup my Bibles')) @@ -749,21 +757,21 @@ class BibleUpgradeForm(OpenLPWizard): if failed_import > 0: failed_import_text = unicode(translate( 'BiblesPlugin.UpgradeWizardForm', - ' - %s upgrade fail')) % failed_import + ', %s failed')) % failed_import else: failed_import_text = u'' if successful_import > 0: if include_webbible: self.progressLabel.setText(unicode( - translate('BiblesPlugin.UpgradeWizardForm', 'Upgrade %s ' - 'Bible(s) successful%s.\nPlease note, that verses from ' + translate('BiblesPlugin.UpgradeWizardForm', 'Upgrading ' + 'Bible(s): %s successful%s\nPlease note, that verses from ' 'Web Bibles will be downloaded\non demand and so an ' 'Internet connection is required.')) % (successful_import, failed_import_text)) else: self.progressLabel.setText(unicode( - translate('BiblesPlugin.UpgradeWizardForm', 'Upgrade %s ' - 'Bible(s) successful.%s')) % (successful_import, + translate('BiblesPlugin.UpgradeWizardForm', 'Upgrading ' + 'Bible(s): %s successful%s')) % (successful_import, failed_import_text)) else: self.progressLabel.setText( From 975dd3cb00854537feb7f20d67c3958e90ccdc4e Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Sat, 28 May 2011 22:23:07 +0100 Subject: [PATCH 128/190] mediaitem() -> mediaitem --- openlp/plugins/custom/forms/editcustomform.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index 054d6dbeb..5c9c035b7 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -137,7 +137,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.customSlide.credits = unicode(self.creditEdit.text()) self.customSlide.theme_name = unicode(self.themeComboBox.currentText()) success = self.manager.save_object(self.customSlide) - self.mediaitem().auto_select_id = self.customSlide.id + self.mediaitem.auto_select_id = self.customSlide.id return success def onUpButtonClicked(self): From b56f93aad5e21ba4c0e3fcc60714d002fdc8c6aa Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sun, 29 May 2011 08:23:12 +0200 Subject: [PATCH 129/190] camelCase fixes and shortcut fixes --- openlp/core/ui/mainwindow.py | 2 +- openlp/plugins/songusage/songusageplugin.py | 76 ++++++++++----------- 2 files changed, 38 insertions(+), 40 deletions(-) diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 82f1b9253..3ebb34b8c 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -179,7 +179,7 @@ class Ui_MainWindow(object): u'printServiceItem', [QtGui.QKeySequence(u'Ctrl+P')], self.serviceManagerContents.printServiceOrder, category=UiStrings().File) - self.fileExitItem = shortcut_action(mainWindow, u'FileExitItem', + self.fileExitItem = shortcut_action(mainWindow, u'fileExitItem', [QtGui.QKeySequence(u'Alt+F4')], mainWindow.close, u':/system/system_exit.png', category=UiStrings().File) action_list.add_category(UiStrings().Import, CategoryOrder.standardMenu) diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py index 7d05e0add..9a4f6910f 100644 --- a/openlp/plugins/songusage/songusageplugin.py +++ b/openlp/plugins/songusage/songusageplugin.py @@ -62,44 +62,44 @@ class SongUsagePlugin(Plugin): """ log.info(u'add tools menu') self.toolsMenu = tools_menu - self.SongUsageMenu = QtGui.QMenu(tools_menu) - self.SongUsageMenu.setObjectName(u'SongUsageMenu') - self.SongUsageMenu.setTitle(translate( + self.songUsageMenu = QtGui.QMenu(tools_menu) + self.songUsageMenu.setObjectName(u'songUsageMenu') + self.songUsageMenu.setTitle(translate( 'SongUsagePlugin', '&Song Usage Tracking')) # SongUsage Delete - self.SongUsageDelete = base_action(tools_menu, u'SongUsageDelete') - self.SongUsageDelete.setText(translate('SongUsagePlugin', + self.songUsageDelete = base_action(tools_menu, u'songUsageDelete') + self.songUsageDelete.setText(translate('SongUsagePlugin', '&Delete Tracking Data')) - self.SongUsageDelete.setStatusTip(translate('SongUsagePlugin', + self.songUsageDelete.setStatusTip(translate('SongUsagePlugin', 'Delete song usage data up to a specified date.')) # SongUsage Report - self.SongUsageReport = base_action(tools_menu, u'SongUsageReport') - self.SongUsageReport.setText( + self.songUsageReport = base_action(tools_menu, u'songUsageReport') + self.songUsageReport.setText( translate('SongUsagePlugin', '&Extract Tracking Data')) - self.SongUsageReport.setStatusTip( + self.songUsageReport.setStatusTip( translate('SongUsagePlugin', 'Generate a report on song usage.')) # SongUsage activation - self.SongUsageStatus = shortcut_action(tools_menu, u'SongUsageStatus', + self.songUsageStatus = shortcut_action(tools_menu, u'songUsageStatus', [QtCore.Qt.Key_F4], self.toggleSongUsageState, checked=False) - self.SongUsageStatus.setText(translate( + self.songUsageStatus.setText(translate( 'SongUsagePlugin', 'Toggle Tracking')) - self.SongUsageStatus.setStatusTip(translate('SongUsagePlugin', + self.songUsageStatus.setStatusTip(translate('SongUsagePlugin', 'Toggle the tracking of song usage.')) #Add Menus together - self.toolsMenu.addAction(self.SongUsageMenu.menuAction()) - self.SongUsageMenu.addAction(self.SongUsageStatus) - self.SongUsageMenu.addSeparator() - self.SongUsageMenu.addAction(self.SongUsageDelete) - self.SongUsageMenu.addAction(self.SongUsageReport) + self.toolsMenu.addAction(self.songUsageMenu.menuAction()) + self.songUsageMenu.addAction(self.songUsageStatus) + self.songUsageMenu.addSeparator() + self.songUsageMenu.addAction(self.songUsageDelete) + self.songUsageMenu.addAction(self.songUsageReport) # Signals and slots - QtCore.QObject.connect(self.SongUsageStatus, + QtCore.QObject.connect(self.songUsageStatus, QtCore.SIGNAL(u'visibilityChanged(bool)'), - self.SongUsageStatus.setChecked) - QtCore.QObject.connect(self.SongUsageDelete, + self.songUsageStatus.setChecked) + QtCore.QObject.connect(self.songUsageDelete, QtCore.SIGNAL(u'triggered()'), self.onSongUsageDelete) - QtCore.QObject.connect(self.SongUsageReport, + QtCore.QObject.connect(self.songUsageReport, QtCore.SIGNAL(u'triggered()'), self.onSongUsageReport) - self.SongUsageMenu.menuAction().setVisible(False) + self.songUsageMenu.menuAction().setVisible(False) def initialise(self): log.info(u'SongUsage Initialising') @@ -110,20 +110,20 @@ class SongUsagePlugin(Plugin): self.SongUsageActive = QtCore.QSettings().value( self.settingsSection + u'/active', QtCore.QVariant(False)).toBool() - self.SongUsageStatus.setChecked(self.SongUsageActive) + self.songUsageStatus.setChecked(self.SongUsageActive) action_list = ActionList.get_instance() - action_list.add_action(self.SongUsageDelete, + action_list.add_action(self.songUsageDelete, translate('SongUsagePlugin', 'Song Usage')) - action_list.add_action(self.SongUsageReport, + action_list.add_action(self.songUsageReport, translate('SongUsagePlugin', 'Song Usage')) - action_list.add_action(self.SongUsageStatus, + action_list.add_action(self.songUsageStatus, translate('SongUsagePlugin', 'Song Usage')) if self.manager is None: self.manager = Manager(u'songusage', init_schema) - self.SongUsagedeleteform = SongUsageDeleteForm(self.manager, + self.songUsageDeleteForm = SongUsageDeleteForm(self.manager, self.formparent) - self.SongUsagedetailform = SongUsageDetailForm(self, self.formparent) - self.SongUsageMenu.menuAction().setVisible(True) + self.songUsageDetailForm = SongUsageDetailForm(self, self.formparent) + self.songUsageMenu.menuAction().setVisible(True) def finalise(self): """ @@ -132,13 +132,13 @@ class SongUsagePlugin(Plugin): log.info(u'Plugin Finalise') self.manager.finalise() Plugin.finalise(self) - self.SongUsageMenu.menuAction().setVisible(False) + self.songUsageMenu.menuAction().setVisible(False) action_list = ActionList.get_instance() - action_list.remove_action(self.SongUsageDelete, + action_list.remove_action(self.songUsageDelete, translate('SongUsagePlugin', 'Song Usage')) - action_list.remove_action(self.SongUsageReport, + action_list.remove_action(self.songUsageReport, translate('SongUsagePlugin', 'Song Usage')) - action_list.remove_action(self.SongUsageStatus, + action_list.remove_action(self.songUsageStatus, translate('SongUsagePlugin', 'Song Usage')) #stop any events being processed self.SongUsageActive = False @@ -160,17 +160,15 @@ class SongUsagePlugin(Plugin): song_usage_item.title = audit[0] song_usage_item.copyright = audit[2] song_usage_item.ccl_number = audit[3] - song_usage_item.authors = u'' - for author in audit[1]: - song_usage_item.authors += author + u' ' + song_usage_item.authors = u' '.join(audit[1]) self.manager.save_object(song_usage_item) def onSongUsageDelete(self): - self.SongUsagedeleteform.exec_() + self.songUsageDeleteForm.exec_() def onSongUsageReport(self): - self.SongUsagedetailform.initialise() - self.SongUsagedetailform.exec_() + self.songUsageDetailForm.initialise() + self.songUsageDetailForm.exec_() def about(self): about_text = translate('SongUsagePlugin', 'SongUsage Plugin' From 22ad88d3ee36c284e67d0d9dd35729bd4a9606e4 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sun, 29 May 2011 08:26:14 +0200 Subject: [PATCH 131/190] fix for bug #789618 Fixes: https://launchpad.net/bugs/789618 --- openlp/core/ui/printserviceform.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/openlp/core/ui/printserviceform.py b/openlp/core/ui/printserviceform.py index 09ae8857f..b1147731b 100644 --- a/openlp/core/ui/printserviceform.py +++ b/openlp/core/ui/printserviceform.py @@ -56,7 +56,9 @@ http://doc.trolltech.com/4.7/richtext-html-subset.html#css-properties font-size:large; } -.itemText {} +.itemText { + margin-top:10px; +} .itemFooter { font-size:8px; @@ -85,7 +87,7 @@ http://doc.trolltech.com/4.7/richtext-html-subset.html#css-properties .imageList {} .customNotes { - margin-top: 10px; + margin-top:10px; } .customNotesTitle { @@ -212,11 +214,11 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog): verse_def = None for slide in item.get_frames(): if not verse_def or verse_def != slide[u'verseTag']: - p = self._addElement(u'div', parent=div, + text_div = self._addElement(u'div', parent=div, classId=u'itemText') else: - self._addElement(u'br', parent=p) - self._addElement(u'p', slide[u'html'], p) + self._addElement(u'br', parent=text_div) + self._addElement(u'span', slide[u'html'], text_div) verse_def = slide[u'verseTag'] # Break the page before the div element. if index != 0 and self.pageBreakAfterText.isChecked(): From 46f9153ea8e49612892d1f4db19c442670b759c7 Mon Sep 17 00:00:00 2001 From: Stevan Pettit Date: Sun, 29 May 2011 09:12:11 -0400 Subject: [PATCH 132/190] Remove some whitespace in editsongform.py --- openlp/plugins/songs/forms/editsongform.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index f30c618b4..d30a1be10 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -757,7 +757,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.manager.save_object(self.song) if self.parent.new: self.parent.auto_select_id = self.song.id - + def _processLyrics(self): """ Process the lyric data entered by the user into the OpenLP XML format. From a8ea8d668a5067af5f2b975f0ba5545811e3e028 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Sun, 29 May 2011 21:32:37 +0200 Subject: [PATCH 133/190] correct indent --- openlp/plugins/bibles/lib/manager.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 2cbd2f919..2a3858afc 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -219,9 +219,9 @@ class BibleManager(object): log.debug(u'BibleManager.get_books("%s")', bible) return [ { - u'name': book.name, - u'book_reference_id': book.book_reference_id, - u'chapters': self.db_cache[bible].get_chapter_count(book) + u'name': book.name, + u'book_reference_id': book.book_reference_id, + u'chapters': self.db_cache[bible].get_chapter_count(book) } for book in self.db_cache[bible].get_books() ] From 9cd536e137585ca2c90339effb3c3b3379ad71f1 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Sun, 29 May 2011 21:46:13 +0100 Subject: [PATCH 134/190] Fix the parent that whydoubt sneaked in --- openlp/core/ui/slidecontroller.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 6de04a64d..a59f00f21 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -199,7 +199,7 @@ class SlideController(QtGui.QWidget): u':/media/media_time.png', False, UiStrings().LiveToolbar) self.playSlidesOnce.setText( translate('OpenLP.SlideController', 'Play Slides to End')) - if QtCore.QSettings().value(self.parent.generalSettingsSection + + if QtCore.QSettings().value(self.parent().generalSettingsSection + u'/enable slide loop', QtCore.QVariant(True)).toBool(): self.playSlidesMenu.setDefaultAction(self.playSlidesLoop) else: From fe35a5775c3036d6bf41a474e1f2eae248fa428d Mon Sep 17 00:00:00 2001 From: Stevan Pettit Date: Sun, 29 May 2011 19:52:36 -0400 Subject: [PATCH 135/190] bug-789102 - Removed code that auto-selects new items. --- openlp/plugins/custom/forms/editcustomform.py | 2 -- openlp/plugins/custom/lib/mediaitem.py | 3 --- openlp/plugins/songs/forms/editsongform.py | 2 -- openlp/plugins/songs/lib/mediaitem.py | 3 --- 4 files changed, 10 deletions(-) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index b74954fe6..eb4a13fda 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -137,8 +137,6 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.customSlide.credits = unicode(self.creditEdit.text()) self.customSlide.theme_name = unicode(self.themeComboBox.currentText()) success = self.manager.save_object(self.customSlide) - if self.parent.new: - self.parent.auto_select_id = self.customSlide.id return success def onUpButtonClicked(self): diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 718c78d75..d0a3de061 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -66,7 +66,6 @@ class CustomMediaItem(MediaManagerItem): # which Custom is required. self.remoteCustom = -1 self.manager = parent.manager - self.new = False def addEndHeaderBar(self): self.addToolbarSeparator() @@ -157,11 +156,9 @@ class CustomMediaItem(MediaManagerItem): self.auto_select_id = -1 def onNewClick(self): - self.new = True self.edit_custom_form.loadCustom(0) self.edit_custom_form.exec_() self.initialise() - self.new = False def onRemoteEditClear(self): self.remoteTriggered = None diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index d30a1be10..e6643568c 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -755,8 +755,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.song.topics.append(self.manager.get_object(Topic, topicId)) clean_song(self.manager, self.song) self.manager.save_object(self.song) - if self.parent.new: - self.parent.auto_select_id = self.song.id def _processLyrics(self): """ diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 5454d5401..3d9a9ef76 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -74,7 +74,6 @@ class SongMediaItem(MediaManagerItem): self.editItem = None self.quickPreviewAllowed = True self.hasSearch = True - self.new = False def addEndHeaderBar(self): self.addToolbarSeparator() @@ -297,10 +296,8 @@ class SongMediaItem(MediaManagerItem): def onNewClick(self): log.debug(u'onNewClick') - self.new = True self.edit_song_form.newSong() self.edit_song_form.exec_() - self.new = False def onSongMaintenanceClick(self): self.song_maintenance_form.exec_() From 0a2d97021cf97e04336fd271d33b0f2002ef70fc Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Mon, 30 May 2011 07:03:46 +0200 Subject: [PATCH 136/190] added spaces --- openlp/core/ui/printserviceform.py | 36 +++++++++++++++--------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/openlp/core/ui/printserviceform.py b/openlp/core/ui/printserviceform.py index b1147731b..ccd1eb18c 100644 --- a/openlp/core/ui/printserviceform.py +++ b/openlp/core/ui/printserviceform.py @@ -42,44 +42,44 @@ http://doc.trolltech.com/4.7/richtext-html-subset.html#css-properties */ .serviceTitle { - font-weight:600; - font-size:x-large; - color:black; + font-weight: 600; + font-size: x-large; + color: black; } .item { - color:black; + color: black; } .itemTitle { - font-weight:600; - font-size:large; + font-weight: 600; + font-size: large; } .itemText { - margin-top:10px; + margin-top: 10px; } .itemFooter { - font-size:8px; + font-size: 8px; } .itemNotes {} .itemNotesTitle { - font-weight:bold; - font-size:12px; + font-weight: bold; + font-size: 12px; } .itemNotesText { - font-size:11px; + font-size: 11px; } .media {} .mediaTitle { - font-weight:bold; - font-size:11px; + font-weight: bold; + font-size: 11px; } .mediaText {} @@ -87,20 +87,20 @@ http://doc.trolltech.com/4.7/richtext-html-subset.html#css-properties .imageList {} .customNotes { - margin-top:10px; + margin-top: 10px; } .customNotesTitle { - font-weight:bold; - font-size:11px; + font-weight: bold; + font-size: 11px; } .customNotesText { - font-size:11px; + font-size: 11px; } .newPage { - page-break-before:always; + page-break-before: always; } """ From 30ec309ff8550cab242331aabcaf2f27cfbd7ff6 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Mon, 30 May 2011 08:45:58 +0200 Subject: [PATCH 137/190] Fixed up various index errors on InnoDB tables. --- openlp/plugins/songs/lib/db.py | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/openlp/plugins/songs/lib/db.py b/openlp/plugins/songs/lib/db.py index ced98537e..9a332e994 100644 --- a/openlp/plugins/songs/lib/db.py +++ b/openlp/plugins/songs/lib/db.py @@ -165,7 +165,7 @@ def init_schema(url): Column(u'id', types.Integer, primary_key=True), Column(u'first_name', types.Unicode(128)), Column(u'last_name', types.Unicode(128)), - Column(u'display_name', types.Unicode(255), nullable=False) + Column(u'display_name', types.Unicode(255), index=True, nullable=False) ) # Definition of the "media_files" table @@ -186,7 +186,7 @@ def init_schema(url): songs_table = Table(u'songs', metadata, Column(u'id', types.Integer, primary_key=True), Column(u'song_book_id', types.Integer, - ForeignKey(u'song_books.id'), default=0), + ForeignKey(u'song_books.id'), default=None), Column(u'title', types.Unicode(255), nullable=False), Column(u'alternate_title', types.Unicode(255)), Column(u'lyrics', types.UnicodeText, nullable=False), @@ -203,7 +203,7 @@ def init_schema(url): # Definition of the "topics" table topics_table = Table(u'topics', metadata, Column(u'id', types.Integer, primary_key=True), - Column(u'name', types.Unicode(128), nullable=False) + Column(u'name', types.Unicode(128), index=True, nullable=False) ) # Definition of the "authors_songs" table @@ -230,27 +230,6 @@ def init_schema(url): ForeignKey(u'topics.id'), primary_key=True) ) - # Define table indexes - Index(u'authors_id', authors_table.c.id) - Index(u'authors_display_name_id', authors_table.c.display_name, - authors_table.c.id) - Index(u'media_files_id', media_files_table.c.id) - Index(u'song_books_id', song_books_table.c.id) - Index(u'songs_id', songs_table.c.id) - Index(u'topics_id', topics_table.c.id) - Index(u'authors_songs_author', authors_songs_table.c.author_id, - authors_songs_table.c.song_id) - Index(u'authors_songs_song', authors_songs_table.c.song_id, - authors_songs_table.c.author_id) - Index(u'media_files_songs_file', media_files_songs_table.c.media_file_id, - media_files_songs_table.c.song_id) - Index(u'media_files_songs_song', media_files_songs_table.c.song_id, - media_files_songs_table.c.media_file_id) - Index(u'topics_song_topic', songs_topics_table.c.topic_id, - songs_topics_table.c.song_id) - Index(u'topics_song_song', songs_topics_table.c.song_id, - songs_topics_table.c.topic_id) - mapper(Author, authors_table) mapper(Book, song_books_table) mapper(MediaFile, media_files_table) From 99ae60aba318fc9b50bcaa1552ccac61cae593a4 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Mon, 30 May 2011 13:17:23 +0200 Subject: [PATCH 138/190] Fixed up loading a song from a service. --- openlp/plugins/songs/lib/mediaitem.py | 1 + openlp/plugins/songs/lib/xml.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 3d9a9ef76..65e2289cd 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -27,6 +27,7 @@ import logging import locale +import re from PyQt4 import QtCore, QtGui from sqlalchemy.sql import or_ diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py index 7bcf56aa1..f5ec28103 100644 --- a/openlp/plugins/songs/lib/xml.py +++ b/openlp/plugins/songs/lib/xml.py @@ -514,7 +514,7 @@ class OpenLyrics(object): ``song`` The song object. """ - song.song_book_id = 0 + song.song_book_id = None song.song_number = u'' if hasattr(properties, u'songbooks'): for songbook in properties.songbooks.songbook: From ed3a608b8da9c5f3093f55b7cdc7054871e42dce Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Mon, 30 May 2011 17:07:49 +0200 Subject: [PATCH 140/190] fixed tag deletion (bug #789929 Fixes: https://launchpad.net/bugs/789929 --- openlp/core/ui/displaytagform.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/openlp/core/ui/displaytagform.py b/openlp/core/ui/displaytagform.py index 6aaddf2b8..4b25f851a 100644 --- a/openlp/core/ui/displaytagform.py +++ b/openlp/core/ui/displaytagform.py @@ -147,6 +147,7 @@ class DisplayTagForm(QtGui.QDialog, Ui_DisplayTagDialog): DisplayTags.remove_html_tag(self.selected) self.selected = -1 self._resetTable() + self._saveTable() def onSavedPushed(self): """ @@ -171,14 +172,19 @@ class DisplayTagForm(QtGui.QDialog, Ui_DisplayTagDialog): html[u'end tag'] = u'{/%s}' % tag self.selected = -1 self._resetTable() - temp = [] + self._saveTable() + + def _saveTable(self): + """ + Saves all display tags except protected ones. + """ + tags = [] for tag in DisplayTags.get_html_tags(): if not tag[u'protected']: - temp.append(tag) - if temp: - ctemp = cPickle.dumps(temp) + tags.append(tag) + if tags: QtCore.QSettings().setValue(u'displayTags/html_tags', - QtCore.QVariant(ctemp)) + QtCore.QVariant(cPickle.dumps(tags))) else: QtCore.QSettings().setValue(u'displayTags/html_tags', QtCore.QVariant(u'')) From 27b8ec3deba4fc948d29c3c9daec37cf442c59d1 Mon Sep 17 00:00:00 2001 From: Gerald Britton Date: Mon, 30 May 2011 15:19:16 -0400 Subject: [PATCH 141/190] Add exception logging to import.py --- openlp/plugins/songs/lib/importer.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/openlp/plugins/songs/lib/importer.py b/openlp/plugins/songs/lib/importer.py index cf2d3f536..fffc0f4f8 100644 --- a/openlp/plugins/songs/lib/importer.py +++ b/openlp/plugins/songs/lib/importer.py @@ -38,20 +38,25 @@ from songbeamerimport import SongBeamerImport from songshowplusimport import SongShowPlusImport from foilpresenterimport import FoilPresenterImport # Imports that might fail +import logging +log = logging.getLogger(__name__) try: from olp1import import OpenLP1SongImport HAS_OPENLP1 = True except ImportError: + log.exception('Error importing %s', 'OpenLP1SongImport') HAS_OPENLP1 = False try: from sofimport import SofImport HAS_SOF = True except ImportError: + log.exception('Error importing %s', 'SofImport') HAS_SOF = False try: from oooimport import OooImport HAS_OOO = True except ImportError: + log.exception('Error importing %s', 'OooImport') HAS_OOO = False class SongFormat(object): From ab3896ce6fd431de6ac946ae5b4a416ec4e44e9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Mon, 30 May 2011 21:41:02 +0200 Subject: [PATCH 142/190] removed unnecessary code --- openlp/plugins/bibles/lib/mediaitem.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 2ade16e6d..d6911b936 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -534,8 +534,6 @@ class BibleMediaItem(MediaManagerItem): unicode(self.advancedVersionComboBox.currentText())) def onAdvancedSecondComboBox(self): - QtCore.QSettings().setValue(self.settingsSection + u'/advanced bible', - QtCore.QVariant(self.advancedVersionComboBox.currentText())) self.initialiseAdvancedBible( unicode(self.advancedVersionComboBox.currentText())) From 934a70b9555339539757bc97c78f10fc8d5ec3d3 Mon Sep 17 00:00:00 2001 From: Gerald Britton Date: Mon, 30 May 2011 16:14:36 -0400 Subject: [PATCH 143/190] Relocate import logging statement --- openlp/plugins/songs/lib/importer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/songs/lib/importer.py b/openlp/plugins/songs/lib/importer.py index fffc0f4f8..ab92033c4 100644 --- a/openlp/plugins/songs/lib/importer.py +++ b/openlp/plugins/songs/lib/importer.py @@ -27,6 +27,7 @@ """ The :mod:`importer` modules provides the general song import functionality. """ +import logging from opensongimport import OpenSongImport from easislidesimport import EasiSlidesImport from olpimport import OpenLPSongImport @@ -38,7 +39,6 @@ from songbeamerimport import SongBeamerImport from songshowplusimport import SongShowPlusImport from foilpresenterimport import FoilPresenterImport # Imports that might fail -import logging log = logging.getLogger(__name__) try: from olp1import import OpenLP1SongImport From 8a8580f359b982dae79344998e4e9776af9ff054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Mon, 30 May 2011 22:58:30 +0200 Subject: [PATCH 144/190] Fix unicode bookname handling on Biblegateway --- openlp/plugins/bibles/lib/http.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 5fc742cce..891fd4a1b 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -72,9 +72,8 @@ class BGExtract(object): log.debug(u'BGExtract.get_bible_chapter("%s", "%s", "%s")', version, bookname, chapter) urlbookname = urllib.quote(bookname.encode("utf-8")) - url_params = urllib.urlencode( - {u'search': u'%s %s' % (urlbookname, chapter), - u'version': u'%s' % version}) + url_params = u'search=%s+%s&version=%s' % (urlbookname, chapter, + version) cleaner = [(re.compile(' |
    |\'\+\''), lambda match: '')] soup = get_soup_for_bible_ref( u'http://www.biblegateway.com/passage/?%s' % url_params, @@ -97,7 +96,7 @@ class BGExtract(object): verse_list = {} # Cater for inconsistent mark up in the first verse of a chapter. first_verse = verses.find(u'versenum') - if first_verse: + if first_verse and 0 in first_verse.contents: verse_list[1] = unicode(first_verse.contents[0]) for verse in verses(u'sup', u'versenum'): raw_verse_num = verse.next From cde0eb5ab571462751e6291317597aed4a86f331 Mon Sep 17 00:00:00 2001 From: Gerald Britton Date: Mon, 30 May 2011 17:15:34 -0400 Subject: [PATCH 145/190] Only import uno exceptions if not running Windoes --- openlp/plugins/songs/lib/oooimport.py | 1 + openlp/plugins/songs/lib/sofimport.py | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/openlp/plugins/songs/lib/oooimport.py b/openlp/plugins/songs/lib/oooimport.py index ddbab8b31..fb6ee43a6 100644 --- a/openlp/plugins/songs/lib/oooimport.py +++ b/openlp/plugins/songs/lib/oooimport.py @@ -40,6 +40,7 @@ if os.name == u'nt': PAGE_BEFORE = 4 PAGE_AFTER = 5 PAGE_BOTH = 6 + NoConnectException = Exception else: import uno from com.sun.star.connection import NoConnectException diff --git a/openlp/plugins/songs/lib/sofimport.py b/openlp/plugins/songs/lib/sofimport.py index 5cc0482f2..7f0bed72b 100644 --- a/openlp/plugins/songs/lib/sofimport.py +++ b/openlp/plugins/songs/lib/sofimport.py @@ -36,7 +36,7 @@ import os import re from oooimport import OooImport -from com.sun.star.uno import RuntimeException + log = logging.getLogger(__name__) @@ -44,12 +44,14 @@ if os.name == u'nt': BOLD = 150.0 ITALIC = 2 from oooimport import PAGE_BEFORE, PAGE_AFTER, PAGE_BOTH + RuntimeException = Exception else: try: from com.sun.star.awt.FontWeight import BOLD from com.sun.star.awt.FontSlant import ITALIC from com.sun.star.style.BreakType import PAGE_BEFORE, PAGE_AFTER, \ PAGE_BOTH + from com.sun.star.uno import RuntimeException except ImportError: pass From 729fe2cfa3371c59e4a3584ee5391079b217c1a9 Mon Sep 17 00:00:00 2001 From: Stevan Pettit Date: Mon, 30 May 2011 23:52:17 -0400 Subject: [PATCH 146/190] bug-789102, moved mediaitem list updates out of editforms into mediaitems --- openlp/core/lib/mediamanageritem.py | 3 ++- openlp/plugins/custom/forms/editcustomform.py | 1 - openlp/plugins/custom/lib/mediaitem.py | 6 +++++- openlp/plugins/songs/forms/editsongform.py | 1 - openlp/plugins/songs/lib/mediaitem.py | 10 ++++++++++ 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 602b3c55b..223dd9385 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -453,7 +453,8 @@ class MediaManagerItem(QtGui.QWidget): """ if QtCore.QSettings().value(u'advanced/single click preview', QtCore.QVariant(False)).toBool() and self.quickPreviewAllowed \ - and self.listView.selectedIndexes(): + and self.listView.selectedIndexes() \ + and self.auto_select_id == -1: self.onPreviewClick(True) def onPreviewClick(self, keepFocus=False): diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index 5c9c035b7..4a7585f11 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -115,7 +115,6 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): def accept(self): log.debug(u'accept') if self.saveCustom(): - Receiver.send_message(u'custom_load_list') QtGui.QDialog.accept(self) def saveCustom(self): diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 0398d8fa2..9113352e7 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -131,7 +131,7 @@ class CustomMediaItem(MediaManagerItem): QtCore.QVariant(CustomSearch.Titles)).toInt()[0]) # Called to redisplay the custom list screen edith from a search # or from the exit of the Custom edit dialog. If remote editing is - # active trigger it and clean up so it will not update again. + # active trigger it and clean up so it will not update again. if self.remoteTriggered == u'L': self.onAddClick() if self.remoteTriggered == u'P': @@ -160,6 +160,7 @@ class CustomMediaItem(MediaManagerItem): self.edit_custom_form.loadCustom(0) self.edit_custom_form.exec_() self.initialise() + self.onSelectionChange() def onRemoteEditClear(self): self.remoteTriggered = None @@ -179,6 +180,8 @@ class CustomMediaItem(MediaManagerItem): self.remoteTriggered = remote_type self.edit_custom_form.loadCustom(custom_id, (remote_type == u'P')) self.edit_custom_form.exec_() + self.auto_select_id = -1 + self.initialise() def onEditClick(self): """ @@ -189,6 +192,7 @@ class CustomMediaItem(MediaManagerItem): item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] self.edit_custom_form.loadCustom(item_id, False) self.edit_custom_form.exec_() + self.auto_select_id = -1 self.initialise() def onDeleteClick(self): diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index c8c351509..a07ceb6c9 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -696,7 +696,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.clearCaches() if self._validate_song(): self.saveSong() - Receiver.send_message(u'songs_load_list') self.song = None QtGui.QDialog.accept(self) diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 02108a846..ca93ed896 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -214,6 +214,7 @@ class SongMediaItem(MediaManagerItem): Handle the exit from the edit dialog and trigger remote updates of songs """ + print "reload list" log.debug(u'onSongListLoad - start') # Called to redisplay the song list screen edit from a search # or from the exit of the Song edit dialog. If remote editing is active @@ -248,6 +249,7 @@ class SongMediaItem(MediaManagerItem): self.listView.addItem(song_name) # Auto-select the item if name has been set if song.id == self.auto_select_id: + print "have match" , song.id self.listView.setCurrentItem(song_name) self.auto_select_id = -1 @@ -297,8 +299,12 @@ class SongMediaItem(MediaManagerItem): def onNewClick(self): log.debug(u'onNewClick') + print "New" self.edit_song_form.newSong() self.edit_song_form.exec_() + print "back from edit" + self.onSongListLoad() + self.onSelectionChange() def onSongMaintenanceClick(self): self.song_maintenance_form.exec_() @@ -323,6 +329,8 @@ class SongMediaItem(MediaManagerItem): self.remoteTriggered = remote_type self.edit_song_form.loadSong(song_id, (remote_type == u'P')) self.edit_song_form.exec_() + self.auto_select_id = -1 + self.onSongListLoad() def onEditClick(self): """ @@ -334,6 +342,8 @@ class SongMediaItem(MediaManagerItem): item_id = (self.editItem.data(QtCore.Qt.UserRole)).toInt()[0] self.edit_song_form.loadSong(item_id, False) self.edit_song_form.exec_() + self.auto_select_id = -1 + self.onSongListLoad() self.editItem = None def onDeleteClick(self): From efc678d51883d99f2292637312964be04fc12246 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Tue, 31 May 2011 09:26:44 +0200 Subject: [PATCH 147/190] bug fix --- openlp/plugins/bibles/lib/http.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 891fd4a1b..49728637d 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -96,7 +96,7 @@ class BGExtract(object): verse_list = {} # Cater for inconsistent mark up in the first verse of a chapter. first_verse = verses.find(u'versenum') - if first_verse and 0 in first_verse.contents: + if first_verse and len(first_verse.contents): verse_list[1] = unicode(first_verse.contents[0]) for verse in verses(u'sup', u'versenum'): raw_verse_num = verse.next From 63102855e8392fecfdca5c7aa72bccaf87945145 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20K=C3=B6hler?= Date: Tue, 31 May 2011 09:31:38 +0200 Subject: [PATCH 148/190] remove unnecessary whitespace --- openlp/plugins/bibles/lib/http.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 49728637d..edb111d93 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -99,7 +99,7 @@ class BGExtract(object): if first_verse and len(first_verse.contents): verse_list[1] = unicode(first_verse.contents[0]) for verse in verses(u'sup', u'versenum'): - raw_verse_num = verse.next + raw_verse_num = verse.next clean_verse_num = 0 # Not all verses exist in all translations and may or may not be # represented by a verse number. If they are not fine, if they are From ee151cde2a7bd04b574c6892432b33e2873b71bc Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 31 May 2011 12:59:05 +0200 Subject: [PATCH 149/190] Fixed bug #790382 by using the Mako template engine to pass Python variables into the template. --- openlp/plugins/remotes/html/index.html | 60 ++++++++++++------------ openlp/plugins/remotes/html/stage.html | 4 +- openlp/plugins/remotes/lib/httpserver.py | 38 +++++++++++++-- 3 files changed, 65 insertions(+), 37 deletions(-) diff --git a/openlp/plugins/remotes/html/index.html b/openlp/plugins/remotes/html/index.html index 6390b9446..b370d589e 100644 --- a/openlp/plugins/remotes/html/index.html +++ b/openlp/plugins/remotes/html/index.html @@ -27,7 +27,7 @@ --> - OpenLP 2.0 Remote + ${app_title} @@ -37,81 +37,81 @@
    - Back -

    Service Manager

    - Refresh + ${back} +

    ${service_manager}

    + ${refresh}
    - Back -

    Slide Controller

    - Refresh + ${back} +

    ${slide_controller}

    + ${refresh}
    - Back -

    Alerts

    + ${back} +

    ${alerts}

    - +
    - Show Alert + ${show_alert}
    - + \ No newline at end of file diff --git a/openlp/plugins/remotes/html/stage.html b/openlp/plugins/remotes/html/stage.html index b67f0ccd6..c002ea68b 100644 --- a/openlp/plugins/remotes/html/stage.html +++ b/openlp/plugins/remotes/html/stage.html @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2011 Raoul Snyman # # Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, Armin Khler, # -# Andreas Preikschat, Mattias Pldaru, Christian Richter, Philip Ridout, # +# Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, Armin Köhler, # +# Andreas Preikschat, Mattias Põldaru, Christian Richter, Philip Ridout, # # Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode # # Woldsund # # --------------------------------------------------------------------------- # diff --git a/openlp/plugins/remotes/lib/httpserver.py b/openlp/plugins/remotes/lib/httpserver.py index 9d29156f7..d9cae42d0 100644 --- a/openlp/plugins/remotes/lib/httpserver.py +++ b/openlp/plugins/remotes/lib/httpserver.py @@ -115,7 +115,6 @@ import logging import os import urlparse import re -from pprint import pformat try: import json @@ -123,10 +122,11 @@ except ImportError: import simplejson as json from PyQt4 import QtCore, QtNetwork +from mako.template import Template from openlp.core.lib import Receiver, PluginStatus from openlp.core.ui import HideMode -from openlp.core.utils import AppLocation +from openlp.core.utils import AppLocation, translate log = logging.getLogger(__name__) @@ -261,6 +261,7 @@ class HttpConnection(object): self.ready_read) QtCore.QObject.connect(self.socket, QtCore.SIGNAL(u'disconnected()'), self.disconnected) + self.translate() def _get_service_items(self): service_items = [] @@ -280,6 +281,27 @@ class HttpConnection(object): }) return service_items + def translate(self): + """ + Translate various strings in the mobile app. + """ + self.template_vars = { + 'app_title': translate('RemotePlugin.Mobile', 'OpenLP 2.0 Remote'), + 'stage_title': translate('RemotePlugin.Mobile', 'OpenLP 2.0 Stage View'), + 'service_manager': translate('RemotePlugin.Mobile', 'Service Manager'), + 'slide_controller': translate('RemotePlugin.Mobile', 'Slide Controller'), + 'alerts': translate('RemotePlugin.Mobile', 'Alerts'), + 'search': translate('RemotePlugin.Mobile', 'Search'), + 'back': translate('RemotePlugin.Mobile', 'Back'), + 'refresh': translate('RemotePlugin.Mobile', 'Refresh'), + 'blank': translate('RemotePlugin.Mobile', 'Blank'), + 'show': translate('RemotePlugin.Mobile', 'Show'), + 'prev': translate('RemotePlugin.Mobile', 'Prev'), + 'next': translate('RemotePlugin.Mobile', 'Next'), + 'text': translate('RemotePlugin.Mobile', 'Text'), + 'show_alert': translate('RemotePlugin.Mobile', 'Show Alert') + } + def ready_read(self): """ Data has been sent from the client. Respond to it @@ -327,8 +349,11 @@ class HttpConnection(object): if not path.startswith(self.parent.html_dir): return HttpResponse(code=u'404 Not Found') ext = os.path.splitext(filename)[1] + html = None if ext == u'.html': mimetype = u'text/html' + variables = self.template_vars + html = Template(filename=path, input_encoding=u'utf-8', output_encoding=u'utf-8').render(**variables) elif ext == u'.css': mimetype = u'text/css' elif ext == u'.js': @@ -343,9 +368,12 @@ class HttpConnection(object): mimetype = u'text/plain' file_handle = None try: - file_handle = open(path, u'rb') - log.debug(u'Opened %s' % path) - content = file_handle.read() + if html: + content = html + else: + file_handle = open(path, u'rb') + log.debug(u'Opened %s' % path) + content = file_handle.read() except IOError: log.exception(u'Failed to open %s' % path) return HttpResponse(code=u'404 Not Found') From 9f7a96c31514b9dc31c6d766c95b611e3d321c6a Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 31 May 2011 13:25:35 +0200 Subject: [PATCH 150/190] Fixed up some missing translations. --- openlp/plugins/remotes/html/stage.html | 3 ++- openlp/plugins/remotes/html/stage.js | 12 ++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/openlp/plugins/remotes/html/stage.html b/openlp/plugins/remotes/html/stage.html index c002ea68b..c5d0872d0 100644 --- a/openlp/plugins/remotes/html/stage.html +++ b/openlp/plugins/remotes/html/stage.html @@ -27,12 +27,13 @@ --> - OpenLP 2.0 Stage View + ${stage_title} +
  • ").text(value[1]); - var golive = $("Go Live").attr("value", value[0]).click(OpenLP.goLive); - var additem = $("Add To Service").attr("value", value[0]).click(OpenLP.addToService); + var golive = $("").attr("value", value[0]).click(OpenLP.goLive).text($("#go-live").val()); + var additem = $("").attr("value", value[0]).click(OpenLP.addToService).text($("#add-to-service").val()); item.append($("