From 55f6197212478480665e3310e744ef536a53aeb1 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Sat, 12 Jun 2010 02:52:04 +0100 Subject: [PATCH 01/83] RFC: Refactor database setup code A possible way to refactor database code to remove code duplication and, I hope, provide a simpler, more intuitive model to be copied by others --- openlp/core/lib/__init__.py | 1 - openlp/core/lib/{basemodel.py => db.py} | 26 ++- openlp/migration/migratebibles.py | 3 +- openlp/migration/migratesongs.py | 3 +- openlp/plugins/alerts/forms/alertform.py | 2 +- .../plugins/alerts/lib/{classes.py => db.py} | 28 +++- openlp/plugins/alerts/lib/manager.py | 7 +- openlp/plugins/alerts/lib/meta.py | 38 ----- openlp/plugins/alerts/lib/models.py | 39 ----- openlp/plugins/alerts/lib/tables.py | 33 ---- openlp/plugins/bibles/lib/models.py | 2 +- openlp/plugins/custom/lib/classes.py | 2 +- openlp/plugins/songs/forms/authorsdialog.py | 1 + openlp/plugins/songs/forms/authorsform.py | 1 - openlp/plugins/songs/forms/editsongdialog.py | 3 +- openlp/plugins/songs/forms/editsongform.py | 2 +- openlp/plugins/songs/forms/songbookdialog.py | 1 + openlp/plugins/songs/forms/songbookform.py | 1 - .../songs/forms/songmaintenanceform.py | 4 +- openlp/plugins/songs/forms/topicsdialog.py | 1 + openlp/plugins/songs/forms/topicsform.py | 1 - openlp/plugins/songs/lib/classes.py | 52 ------ openlp/plugins/songs/lib/db.py | 150 ++++++++++++++++++ openlp/plugins/songs/lib/manager.py | 7 +- openlp/plugins/songs/lib/meta.py | 38 ----- openlp/plugins/songs/lib/models.py | 48 ------ openlp/plugins/songs/lib/songimport.py | 2 +- openlp/plugins/songs/lib/tables.py | 99 ------------ openlp/plugins/songs/songsplugin.py | 1 - openlp/plugins/songusage/lib/classes.py | 2 +- 30 files changed, 223 insertions(+), 375 deletions(-) rename openlp/core/lib/{basemodel.py => db.py} (74%) rename openlp/plugins/alerts/lib/{classes.py => db.py} (72%) delete mode 100644 openlp/plugins/alerts/lib/meta.py delete mode 100644 openlp/plugins/alerts/lib/models.py delete mode 100644 openlp/plugins/alerts/lib/tables.py delete mode 100644 openlp/plugins/songs/lib/classes.py create mode 100644 openlp/plugins/songs/lib/db.py delete mode 100644 openlp/plugins/songs/lib/meta.py delete mode 100644 openlp/plugins/songs/lib/models.py delete mode 100644 openlp/plugins/songs/lib/tables.py diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index d5b46e6cb..e09b6f1b4 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -184,5 +184,4 @@ from themexmlhandler import ThemeXML from renderer import Renderer from rendermanager import RenderManager from mediamanageritem import MediaManagerItem -from basemodel import BaseModel from baselistwithdnd import BaseListWithDnD diff --git a/openlp/core/lib/basemodel.py b/openlp/core/lib/db.py similarity index 74% rename from openlp/core/lib/basemodel.py rename to openlp/core/lib/db.py index f56336c7b..4762da157 100644 --- a/openlp/core/lib/basemodel.py +++ b/openlp/core/lib/db.py @@ -22,6 +22,31 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +""" +The :mod:`db` module provides the core database functionality for OpenLP +""" + +from sqlalchemy import create_engine, MetaData +from sqlalchemy.orm import scoped_session, sessionmaker + +def init_db(url, auto_flush=True, auto_commit=False): + """ + Initialise and return the session and metadata for a database + + ``url`` + The database to initialise connection with + + ``auto_flush`` + Sets the flushing behaviour of the session + + ``auto_commit`` + Sets the commit behaviour of the session + """ + engine = create_engine(url) + metadata = MetaData(bind=engine) + session = scoped_session(sessionmaker(autoflush=auto_flush, + autocommit=auto_commit, bind=engine)) + return session, metadata class BaseModel(object): """ @@ -37,4 +62,3 @@ class BaseModel(object): for key in kwargs: me.__setattr__(key, kwargs[key]) return me - diff --git a/openlp/migration/migratebibles.py b/openlp/migration/migratebibles.py index 89bb5ffdf..b024343a4 100644 --- a/openlp/migration/migratebibles.py +++ b/openlp/migration/migratebibles.py @@ -30,7 +30,8 @@ import sqlite3 from sqlalchemy.exceptions import InvalidRequestError from sqlalchemy.orm import mapper -from openlp.core.lib import BaseModel, SettingsManager +from openlp.core.lib import SettingsManager +from openlp.core.lib.db import BaseModel from openlp.core.utils import AppLocation from openlp.plugins.bibles.lib.models import * diff --git a/openlp/migration/migratesongs.py b/openlp/migration/migratesongs.py index 87d5de40b..c4cab00bc 100644 --- a/openlp/migration/migratesongs.py +++ b/openlp/migration/migratesongs.py @@ -31,7 +31,8 @@ from sqlalchemy import create_engine from sqlalchemy.exceptions import InvalidRequestError from sqlalchemy.orm import scoped_session, sessionmaker, mapper, relation -from openlp.core.lib import BaseModel, SettingsManager +from openlp.core.lib import SettingsManager +from openlp.core.lib.db import BaseModel from openlp.core.utils import AppLocation from openlp.plugins.songs.lib.models import metadata, songs_table, Song, \ Author, Topic, Book diff --git a/openlp/plugins/alerts/forms/alertform.py b/openlp/plugins/alerts/forms/alertform.py index 04028fc1b..e8fc0d2fe 100644 --- a/openlp/plugins/alerts/forms/alertform.py +++ b/openlp/plugins/alerts/forms/alertform.py @@ -25,8 +25,8 @@ from PyQt4 import QtGui, QtCore -from openlp.plugins.alerts.lib.models import AlertItem from openlp.core.lib import translate +from openlp.plugins.alerts.lib.db import AlertItem from alertdialog import Ui_AlertDialog diff --git a/openlp/plugins/alerts/lib/classes.py b/openlp/plugins/alerts/lib/db.py similarity index 72% rename from openlp/plugins/alerts/lib/classes.py rename to openlp/plugins/alerts/lib/db.py index e58f80829..3656d41b8 100644 --- a/openlp/plugins/alerts/lib/classes.py +++ b/openlp/plugins/alerts/lib/db.py @@ -22,11 +22,35 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +""" +The :mod:`db` module provides the database and schema that is the backend for +the Alerts plugin +""" -from openlp.core.lib import BaseModel +from sqlalchemy import Column, Table, types +from sqlalchemy.orm import mapper + +from openlp.core.lib.db import BaseModel, init_db class AlertItem(BaseModel): """ - Custom Slide model + AlertItem model """ pass + +def init_schema(url): + """ + Setup the alerts database connection and initialise the database schema + + ``url`` + The database to setup + """ + session, metadata = init_db(url) + + alerts_table = Table(u'alerts', metadata, + Column(u'id', types.Integer(), primary_key=True), + Column(u'text', types.UnicodeText, nullable=False)) + + mapper(AlertItem, alerts_table) + + return session, metadata diff --git a/openlp/plugins/alerts/lib/manager.py b/openlp/plugins/alerts/lib/manager.py index 088f0cbae..814e3dca6 100644 --- a/openlp/plugins/alerts/lib/manager.py +++ b/openlp/plugins/alerts/lib/manager.py @@ -29,7 +29,7 @@ from PyQt4 import QtCore from sqlalchemy.exceptions import InvalidRequestError from openlp.core.utils import AppLocation -from openlp.plugins.alerts.lib.models import init_models, metadata, AlertItem +from openlp.plugins.alerts.lib.db import init_schema, AlertItem log = logging.getLogger(__name__) @@ -61,8 +61,8 @@ class DBManager(object): unicode(settings.value(u'db hostname').toString()), unicode(settings.value(u'db database').toString())) settings.endGroup() - self.session = init_models(self.db_url) - metadata.create_all(checkfirst=True) + self.session, self.metadata = init_schema(self.db_url) + self.metadata.create_all(checkfirst=True) log.debug(u'Alerts Initialised') def get_all_alerts(self): @@ -111,4 +111,3 @@ class DBManager(object): return False else: return True - diff --git a/openlp/plugins/alerts/lib/meta.py b/openlp/plugins/alerts/lib/meta.py deleted file mode 100644 index affa31969..000000000 --- a/openlp/plugins/alerts/lib/meta.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # -# Thompson, Jon Tibble, Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is 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 sqlalchemy import MetaData - -__all__ = ['session', 'metadata', 'engine'] - -# SQLAlchemy database engine. Updated by model.init_model() -engine = None - -# SQLAlchemy session manager. Updated by model.init_model() -session = None - -# Global metadata. If you have multiple databases with overlapping table -# names, you'll need a metadata for each database -metadata = MetaData() diff --git a/openlp/plugins/alerts/lib/models.py b/openlp/plugins/alerts/lib/models.py deleted file mode 100644 index f222345f1..000000000 --- a/openlp/plugins/alerts/lib/models.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # -# Thompson, Jon Tibble, Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is 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 sqlalchemy import create_engine -from sqlalchemy.orm import scoped_session, sessionmaker, mapper - -from openlp.plugins.alerts.lib.meta import metadata -from openlp.plugins.alerts.lib.tables import * -from openlp.plugins.alerts.lib.classes import * - -def init_models(url): - engine = create_engine(url) - metadata.bind = engine - session = scoped_session(sessionmaker(autoflush=True, autocommit=False, - bind=engine)) - mapper(AlertItem, alerts_table) - return session diff --git a/openlp/plugins/alerts/lib/tables.py b/openlp/plugins/alerts/lib/tables.py deleted file mode 100644 index 0e707570d..000000000 --- a/openlp/plugins/alerts/lib/tables.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # -# Thompson, Jon Tibble, Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is 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 sqlalchemy import Column, Table, types - -from openlp.plugins.alerts.lib.meta import metadata - -# Definition of the "alerts" table -alerts_table = Table(u'alerts', metadata, - Column(u'id', types.Integer(), primary_key=True), - Column(u'text', types.UnicodeText, nullable=False)) diff --git a/openlp/plugins/bibles/lib/models.py b/openlp/plugins/bibles/lib/models.py index d970bce08..2cd52fb0b 100644 --- a/openlp/plugins/bibles/lib/models.py +++ b/openlp/plugins/bibles/lib/models.py @@ -27,7 +27,7 @@ from sqlalchemy import Column, Table, MetaData, ForeignKey, types, \ create_engine from sqlalchemy.orm import mapper, relation, sessionmaker, scoped_session -from openlp.core.lib import BaseModel +from openlp.core.lib.db import BaseModel class BibleMeta(BaseModel): diff --git a/openlp/plugins/custom/lib/classes.py b/openlp/plugins/custom/lib/classes.py index dc6c5c1b8..6d8c623d1 100644 --- a/openlp/plugins/custom/lib/classes.py +++ b/openlp/plugins/custom/lib/classes.py @@ -23,7 +23,7 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -from openlp.core.lib import BaseModel +from openlp.core.lib.db import BaseModel class CustomSlide(BaseModel): """ diff --git a/openlp/plugins/songs/forms/authorsdialog.py b/openlp/plugins/songs/forms/authorsdialog.py index 082b1133d..1a7a4ccb5 100644 --- a/openlp/plugins/songs/forms/authorsdialog.py +++ b/openlp/plugins/songs/forms/authorsdialog.py @@ -24,6 +24,7 @@ ############################################################################### from PyQt4 import QtCore, QtGui + from openlp.core.lib import translate class Ui_AuthorsDialog(object): diff --git a/openlp/plugins/songs/forms/authorsform.py b/openlp/plugins/songs/forms/authorsform.py index 4d7fcd4b6..c5d0b2fa4 100644 --- a/openlp/plugins/songs/forms/authorsform.py +++ b/openlp/plugins/songs/forms/authorsform.py @@ -28,7 +28,6 @@ from PyQt4 import QtGui, QtCore from openlp.core.lib import translate from openlp.plugins.songs.forms.authorsdialog import Ui_AuthorsDialog - class AuthorsForm(QtGui.QDialog, Ui_AuthorsDialog): """ Class to control the Maintenance of Authors Dialog diff --git a/openlp/plugins/songs/forms/editsongdialog.py b/openlp/plugins/songs/forms/editsongdialog.py index d613715dd..9c088ea30 100644 --- a/openlp/plugins/songs/forms/editsongdialog.py +++ b/openlp/plugins/songs/forms/editsongdialog.py @@ -24,9 +24,8 @@ ############################################################################### from PyQt4 import QtCore, QtGui -from openlp.core.lib import translate -from openlp.core.lib import build_icon +from openlp.core.lib import build_icon, translate class Ui_EditSongDialog(object): def setupUi(self, EditSongDialog): diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index d23bcd298..1ae8796f5 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -30,7 +30,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import SongXMLBuilder, SongXMLParser, Receiver, translate from openlp.plugins.songs.forms import EditVerseForm -from openlp.plugins.songs.lib.models import Song +from openlp.plugins.songs.lib.db import Song from editsongdialog import Ui_EditSongDialog log = logging.getLogger(__name__) diff --git a/openlp/plugins/songs/forms/songbookdialog.py b/openlp/plugins/songs/forms/songbookdialog.py index 06e27d04e..578be03fc 100644 --- a/openlp/plugins/songs/forms/songbookdialog.py +++ b/openlp/plugins/songs/forms/songbookdialog.py @@ -24,6 +24,7 @@ ############################################################################### from PyQt4 import QtCore, QtGui + from openlp.core.lib import translate class Ui_SongBookDialog(object): diff --git a/openlp/plugins/songs/forms/songbookform.py b/openlp/plugins/songs/forms/songbookform.py index ad85990f0..172b74892 100644 --- a/openlp/plugins/songs/forms/songbookform.py +++ b/openlp/plugins/songs/forms/songbookform.py @@ -28,7 +28,6 @@ from PyQt4 import QtGui from openlp.core.lib import translate from openlp.plugins.songs.forms.songbookdialog import Ui_SongBookDialog - class SongBookForm(QtGui.QDialog, Ui_SongBookDialog): """ Class documentation goes here. diff --git a/openlp/plugins/songs/forms/songmaintenanceform.py b/openlp/plugins/songs/forms/songmaintenanceform.py index 34388dd62..d6ac7bf04 100644 --- a/openlp/plugins/songs/forms/songmaintenanceform.py +++ b/openlp/plugins/songs/forms/songmaintenanceform.py @@ -25,12 +25,12 @@ from PyQt4 import QtGui, QtCore -from openlp.plugins.songs.lib.classes import Author, Book, Topic +from openlp.core.lib import translate +from openlp.plugins.songs.lib.db import Author, Book, Topic from songmaintenancedialog import Ui_SongMaintenanceDialog from authorsform import AuthorsForm from topicsform import TopicsForm from songbookform import SongBookForm -from openlp.core.lib import translate class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): """ diff --git a/openlp/plugins/songs/forms/topicsdialog.py b/openlp/plugins/songs/forms/topicsdialog.py index 3ed9da3c3..9200285f7 100644 --- a/openlp/plugins/songs/forms/topicsdialog.py +++ b/openlp/plugins/songs/forms/topicsdialog.py @@ -24,6 +24,7 @@ ############################################################################### from PyQt4 import QtCore, QtGui + from openlp.core.lib import translate class Ui_TopicsDialog(object): diff --git a/openlp/plugins/songs/forms/topicsform.py b/openlp/plugins/songs/forms/topicsform.py index fc5efe38d..a78c88c5a 100644 --- a/openlp/plugins/songs/forms/topicsform.py +++ b/openlp/plugins/songs/forms/topicsform.py @@ -28,7 +28,6 @@ from PyQt4 import QtGui from openlp.core.lib import translate from openlp.plugins.songs.forms.topicsdialog import Ui_TopicsDialog - class TopicsForm(QtGui.QDialog, Ui_TopicsDialog): """ Class documentation goes here. diff --git a/openlp/plugins/songs/lib/classes.py b/openlp/plugins/songs/lib/classes.py deleted file mode 100644 index c465588a4..000000000 --- a/openlp/plugins/songs/lib/classes.py +++ /dev/null @@ -1,52 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # -# Thompson, Jon Tibble, Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is 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 openlp.core.lib import BaseModel - -class Author(BaseModel): - """ - Author model - """ - pass - -class Book(BaseModel): - """ - Book model - """ - def __repr__(self): - return u'' % ( - str(self.id), self.name, self.publisher) - -class Song(BaseModel): - """ - Song model - """ - pass - -class Topic(BaseModel): - """ - Topic model - """ - pass diff --git a/openlp/plugins/songs/lib/db.py b/openlp/plugins/songs/lib/db.py new file mode 100644 index 000000000..3c1aae7cb --- /dev/null +++ b/openlp/plugins/songs/lib/db.py @@ -0,0 +1,150 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is 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 :mod:`db` module provides the database and schema that is the backend for +the Songs plugin +""" + +from sqlalchemy import Column, ForeignKey, Index, Table, types +from sqlalchemy.orm import mapper, relation + +from openlp.core.lib.db import BaseModel, init_db + +class Author(BaseModel): + """ + Author model + """ + pass + +class Book(BaseModel): + """ + Book model + """ + def __repr__(self): + return u'' % ( + str(self.id), self.name, self.publisher) + +class Song(BaseModel): + """ + Song model + """ + pass + +class Topic(BaseModel): + """ + Topic model + """ + pass + +def init_schema(url): + """ + Setup the songs database connection and initialise the database schema + + ``url`` + The database to setup + """ + session, metadata = init_db(url, auto_flush=False) + + # Definition of the "authors" table + authors_table = Table(u'authors', metadata, + 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) + ) + + # Definition of the "song_books" table + song_books_table = Table(u'song_books', metadata, + Column(u'id', types.Integer, primary_key=True), + Column(u'name', types.Unicode(128), nullable=False), + Column(u'publisher', types.Unicode(128)) + ) + + # Definition of the "songs" table + 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), + Column(u'title', types.Unicode(255), nullable=False), + Column(u'lyrics', types.UnicodeText, nullable=False), + Column(u'verse_order', types.Unicode(128)), + Column(u'copyright', types.Unicode(255)), + Column(u'comments', types.UnicodeText), + Column(u'ccli_number', types.Unicode(64)), + 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) + ) + + # 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) + ) + + # Definition of the "authors_songs" table + authors_songs_table = Table(u'authors_songs', metadata, + Column(u'author_id', types.Integer, + ForeignKey(u'authors.id'), primary_key=True), + Column(u'song_id', types.Integer, + ForeignKey(u'songs.id'), primary_key=True) + ) + + # Definition of the "songs_topics" table + songs_topics_table = Table(u'songs_topics', metadata, + Column(u'song_id', types.Integer, + ForeignKey(u'songs.id'), primary_key=True), + Column(u'topic_id', types.Integer, + 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'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'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(Song, songs_table, + properties={'authors': relation(Author, backref='songs', + secondary=authors_songs_table), + 'book': relation(Book, backref='songs'), + 'topics': relation(Topic, backref='songs', + secondary=songs_topics_table)}) + mapper(Topic, topics_table) + + return session, metadata diff --git a/openlp/plugins/songs/lib/manager.py b/openlp/plugins/songs/lib/manager.py index 0b833fb0b..0194cea5b 100644 --- a/openlp/plugins/songs/lib/manager.py +++ b/openlp/plugins/songs/lib/manager.py @@ -29,8 +29,7 @@ from PyQt4 import QtCore from sqlalchemy.exceptions import InvalidRequestError from openlp.core.utils import AppLocation -from openlp.plugins.songs.lib.models import init_models, metadata, Song, \ - Author, Topic, Book +from openlp.plugins.songs.lib.db import init_schema, Song, Author, Topic, Book #from openlp.plugins.songs.lib import OpenLyricsSong, OpenSongSong, CCLISong, \ # CSVSong @@ -111,8 +110,8 @@ class SongManager(object): u'db hostname', QtCore.QVariant(u'')).toString()), unicode(settings.value( u'db database', QtCore.QVariant(u'')).toString())) - self.session = init_models(self.db_url) - metadata.create_all(checkfirst=True) + self.session, self.metadata = init_schema(self.db_url) + self.metadata.create_all(checkfirst=True) settings.endGroup() log.debug(u'Song Initialised') diff --git a/openlp/plugins/songs/lib/meta.py b/openlp/plugins/songs/lib/meta.py deleted file mode 100644 index affa31969..000000000 --- a/openlp/plugins/songs/lib/meta.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # -# Thompson, Jon Tibble, Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is 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 sqlalchemy import MetaData - -__all__ = ['session', 'metadata', 'engine'] - -# SQLAlchemy database engine. Updated by model.init_model() -engine = None - -# SQLAlchemy session manager. Updated by model.init_model() -session = None - -# Global metadata. If you have multiple databases with overlapping table -# names, you'll need a metadata for each database -metadata = MetaData() diff --git a/openlp/plugins/songs/lib/models.py b/openlp/plugins/songs/lib/models.py deleted file mode 100644 index 272981d20..000000000 --- a/openlp/plugins/songs/lib/models.py +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # -# Thompson, Jon Tibble, Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is 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 sqlalchemy import create_engine -from sqlalchemy.orm import scoped_session, sessionmaker, mapper, relation - -from openlp.plugins.songs.lib.meta import metadata -from openlp.plugins.songs.lib.tables import * -from openlp.plugins.songs.lib.classes import * - -def init_models(url): - engine = create_engine(url) - metadata.bind = engine - session = scoped_session(sessionmaker(autoflush=False, autocommit=False, - bind=engine)) - mapper(Author, authors_table) - mapper(Book, song_books_table) - mapper(Song, songs_table, - properties={'authors': relation(Author, backref='songs', - secondary=authors_songs_table), - 'book': relation(Book, backref='songs'), - 'topics': relation(Topic, backref='songs', - secondary=songs_topics_table)}) - mapper(Topic, topics_table) - return session - diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index fa016729d..f2222e09b 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -28,7 +28,7 @@ import string from PyQt4 import QtGui from openlp.core.lib import SongXMLBuilder -from openlp.plugins.songs.lib.models import Song, Author, Topic, Book +from openlp.plugins.songs.lib.db import Song, Author, Topic, Book from openlp.plugins.songs.forms import VerseType class SongImport(object): diff --git a/openlp/plugins/songs/lib/tables.py b/openlp/plugins/songs/lib/tables.py deleted file mode 100644 index 24137d7b1..000000000 --- a/openlp/plugins/songs/lib/tables.py +++ /dev/null @@ -1,99 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # -# Thompson, Jon Tibble, Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is 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 sqlalchemy import * -from sqlalchemy import Column, Table, ForeignKey, types - -from openlp.plugins.songs.lib.meta import metadata - -# Definition of the "authors" table -authors_table = Table(u'authors', metadata, - 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) -) - -# Definition of the "song_books" table -song_books_table = Table(u'song_books', metadata, - Column(u'id', types.Integer, primary_key=True), - Column(u'name', types.Unicode(128), nullable=False), - Column(u'publisher', types.Unicode(128)) -) - -# Definition of the "songs" table -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), - Column(u'title', types.Unicode(255), nullable=False), - Column(u'lyrics', types.UnicodeText, nullable=False), - Column(u'verse_order', types.Unicode(128)), - Column(u'copyright', types.Unicode(255)), - Column(u'comments', types.UnicodeText), - Column(u'ccli_number', types.Unicode(64)), - 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) -) - -# 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) -) - -# Definition of the "authors_songs" table -authors_songs_table = Table(u'authors_songs', metadata, - Column(u'author_id', types.Integer, - ForeignKey(u'authors.id'), primary_key=True), - Column(u'song_id', types.Integer, - ForeignKey(u'songs.id'), primary_key=True) -) - -# Definition of the "songs_topics" table -songs_topics_table = Table(u'songs_topics', metadata, - Column(u'song_id', types.Integer, - ForeignKey(u'songs.id'), primary_key=True), - Column(u'topic_id', types.Integer, - 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'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'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) diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 993b18bb9..09485082c 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -34,7 +34,6 @@ from openlp.plugins.songs.lib import SongManager, SongMediaItem, SongsTab, \ log = logging.getLogger(__name__) - class SongsPlugin(Plugin): """ This is the number 1 plugin, if importance were placed on any diff --git a/openlp/plugins/songusage/lib/classes.py b/openlp/plugins/songusage/lib/classes.py index 298380f58..885d87faf 100644 --- a/openlp/plugins/songusage/lib/classes.py +++ b/openlp/plugins/songusage/lib/classes.py @@ -23,7 +23,7 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -from openlp.core.lib import BaseModel +from openlp.core.lib.db import BaseModel class SongUsageItem(BaseModel): """ From 5f2042168da20d5ebe51e57da091aa5142af761c Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Sat, 12 Jun 2010 03:14:18 +0100 Subject: [PATCH 02/83] RFC: Cleanup DB metadata for RFC --- openlp/plugins/alerts/lib/db.py | 3 ++- openlp/plugins/alerts/lib/manager.py | 3 +-- openlp/plugins/songs/lib/db.py | 3 ++- openlp/plugins/songs/lib/manager.py | 3 +-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/openlp/plugins/alerts/lib/db.py b/openlp/plugins/alerts/lib/db.py index 3656d41b8..5e4b1a99a 100644 --- a/openlp/plugins/alerts/lib/db.py +++ b/openlp/plugins/alerts/lib/db.py @@ -53,4 +53,5 @@ def init_schema(url): mapper(AlertItem, alerts_table) - return session, metadata + metadata.create_all(checkfirst=True) + return session diff --git a/openlp/plugins/alerts/lib/manager.py b/openlp/plugins/alerts/lib/manager.py index 814e3dca6..7b5cf2da0 100644 --- a/openlp/plugins/alerts/lib/manager.py +++ b/openlp/plugins/alerts/lib/manager.py @@ -61,8 +61,7 @@ class DBManager(object): unicode(settings.value(u'db hostname').toString()), unicode(settings.value(u'db database').toString())) settings.endGroup() - self.session, self.metadata = init_schema(self.db_url) - self.metadata.create_all(checkfirst=True) + self.session = init_schema(self.db_url) log.debug(u'Alerts Initialised') def get_all_alerts(self): diff --git a/openlp/plugins/songs/lib/db.py b/openlp/plugins/songs/lib/db.py index 3c1aae7cb..655043144 100644 --- a/openlp/plugins/songs/lib/db.py +++ b/openlp/plugins/songs/lib/db.py @@ -147,4 +147,5 @@ def init_schema(url): secondary=songs_topics_table)}) mapper(Topic, topics_table) - return session, metadata + metadata.create_all(checkfirst=True) + return session diff --git a/openlp/plugins/songs/lib/manager.py b/openlp/plugins/songs/lib/manager.py index 0194cea5b..8e0a79ef7 100644 --- a/openlp/plugins/songs/lib/manager.py +++ b/openlp/plugins/songs/lib/manager.py @@ -110,8 +110,7 @@ class SongManager(object): u'db hostname', QtCore.QVariant(u'')).toString()), unicode(settings.value( u'db database', QtCore.QVariant(u'')).toString())) - self.session, self.metadata = init_schema(self.db_url) - self.metadata.create_all(checkfirst=True) + self.session = init_schema(self.db_url) settings.endGroup() log.debug(u'Song Initialised') From 54aa8958fee401780392f77ba1277e148533d436 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Sun, 13 Jun 2010 00:00:14 +0100 Subject: [PATCH 03/83] RFC PT2: Refactor Manager --- openlp/core/lib/db.py | 121 ++++++++++++ openlp/plugins/alerts/alertsplugin.py | 6 +- openlp/plugins/alerts/forms/alertform.py | 11 +- openlp/plugins/alerts/lib/__init__.py | 1 - openlp/plugins/alerts/lib/manager.py | 112 ----------- openlp/plugins/songs/forms/editsongform.py | 24 +-- .../songs/forms/songmaintenanceform.py | 48 ++--- openlp/plugins/songs/lib/manager.py | 185 +----------------- openlp/plugins/songs/lib/mediaitem.py | 7 +- openlp/plugins/songs/lib/songimport.py | 8 +- openlp/plugins/songs/songsplugin.py | 4 +- 11 files changed, 176 insertions(+), 351 deletions(-) delete mode 100644 openlp/plugins/alerts/lib/manager.py diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 4762da157..323b48e39 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -25,10 +25,17 @@ """ The :mod:`db` module provides the core database functionality for OpenLP """ +import logging +from PyQt4 import QtCore from sqlalchemy import create_engine, MetaData +from sqlalchemy.exceptions import InvalidRequestError from sqlalchemy.orm import scoped_session, sessionmaker +from openlp.core.utils import AppLocation + +log = logging.getLogger(__name__) + def init_db(url, auto_flush=True, auto_commit=False): """ Initialise and return the session and metadata for a database @@ -62,3 +69,117 @@ class BaseModel(object): for key in kwargs: me.__setattr__(key, kwargs[key]) return me + +class Manager(object): + """ + Provide generic object persistence management + """ + def __init__(self, plugin_name, init_schema): + """ + Runs the initialisation process that includes creating the connection + to the database and the tables if they don't exist. + + ``plugin_name`` + The name to setup paths and settings section names + """ + settings = QtCore.QSettings() + settings.beginGroup(plugin_name) + self.db_url = u'' + db_type = unicode( + settings.value(u'db type', QtCore.QVariant(u'sqlite')).toString()) + if db_type == u'sqlite': + self.db_url = u'sqlite:///%s/%s.sqlite' % ( + AppLocation.get_section_data_path(plugin_name), plugin_name) + else: + self.db_url = u'%s://%s:%s@%s/%s' % (db_type, + unicode(settings.value(u'db username').toString()), + unicode(settings.value(u'db password').toString()), + unicode(settings.value(u'db hostname').toString()), + unicode(settings.value(u'db database').toString())) + settings.endGroup() + self.session = init_schema(self.db_url) + + def insert_object(self, object_instance): + """ + Save an object to the database + + ``object_instance`` + The object to save + """ + try: + self.session.add(object_instance) + self.session.commit() + return True + except InvalidRequestError: + self.session.rollback() + log.exception(u'Object save failed') + return False + + def get_object(self, object_class, id=None): + """ + Return the details of an object + + ``object_class`` + The type of object to return + + ``id`` + The unique reference for the class instance to return + """ + if not id: + return object_class() + else: + return self.session.query(object_class).get(id) + + def get_all_objects(self, object_class, order_by_ref=None): + """ + Returns all the objects from the database + + ``object_class`` + The type of object to return + + ``order_by_ref`` + Any parameters to order the returned objects by. Defaults to None. + """ + if order_by_ref: + return self.session.query(object_class).order_by(order_by_ref).all() + return self.session.query(object_class).all() + + def delete_object(self, object_class, id): + """ + Delete an object from the database + + ``object_class`` + The type of object to delete + + ``id`` + The unique reference for the class instance to be deleted + """ + if id != 0: + object = self.get_object(object_class, id) + try: + self.session.delete(object) + self.session.commit() + return True + except InvalidRequestError: + self.session.rollback() + log.exception(u'Failed to delete object') + return False + else: + return True + + def delete_all_objects(self, object_class): + """ + Delete all object records + + ``object_class`` + The type of object to delete + """ + try: + self.session.query(object_class).delete(synchronize_session=False) + self.session.commit() + return True + except InvalidRequestError: + self.session.rollback() + log.exception(u'Failed to delete all %s records', + object_class.__name__) + return False diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index 7474a0564..3c14e23b1 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -28,7 +28,9 @@ import logging from PyQt4 import QtCore, QtGui from openlp.core.lib import Plugin, build_icon, PluginStatus, translate -from openlp.plugins.alerts.lib import AlertsManager, AlertsTab, DBManager +from openlp.core.lib.db import Manager +from openlp.plugins.alerts.lib import AlertsManager, AlertsTab +from openlp.plugins.alerts.lib.db import init_schema from openlp.plugins.alerts.forms import AlertForm log = logging.getLogger(__name__) @@ -41,7 +43,7 @@ class alertsPlugin(Plugin): self.weight = -3 self.icon = build_icon(u':/media/media_image.png') self.alertsmanager = AlertsManager(self) - self.manager = DBManager() + self.manager = Manager(u'alerts', init_schema) self.alertForm = AlertForm(self.manager, self) self.status = PluginStatus.Active diff --git a/openlp/plugins/alerts/forms/alertform.py b/openlp/plugins/alerts/forms/alertform.py index e8fc0d2fe..b00ba0f05 100644 --- a/openlp/plugins/alerts/forms/alertform.py +++ b/openlp/plugins/alerts/forms/alertform.py @@ -62,7 +62,7 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog): def loadList(self): self.AlertListWidget.clear() - alerts = self.manager.get_all_alerts() + alerts = self.manager.get_all_objects(AlertItem, AlertItem.text) for alert in alerts: item_name = QtGui.QListWidgetItem(alert.text) item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(alert.id)) @@ -82,7 +82,7 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog): item = self.AlertListWidget.currentItem() if item: item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] - self.parent.manager.delete_alert(item_id) + self.manager.delete_object(AlertItem, item_id) row = self.AlertListWidget.row(item) self.AlertListWidget.takeItem(row) self.AlertTextEdit.setText(u'') @@ -98,15 +98,15 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog): else: alert = AlertItem() alert.text = unicode(self.AlertTextEdit.text()) - self.manager.save_alert(alert) + self.manager.insert_object(alert) self.AlertTextEdit.setText(u'') self.loadList() def onSaveClick(self): if self.item_id: - alert = self.manager.get_alert(self.item_id) + alert = self.manager.get_object(AlertItem, self.item_id) alert.text = unicode(self.AlertTextEdit.text()) - self.manager.save_alert(alert) + self.manager.insert_object(alert) self.item_id = None self.loadList() else: @@ -148,4 +148,3 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog): self.parent.alertsmanager.displayAlert(text) return True return False - diff --git a/openlp/plugins/alerts/lib/__init__.py b/openlp/plugins/alerts/lib/__init__.py index 81a2641f6..2c22e5375 100644 --- a/openlp/plugins/alerts/lib/__init__.py +++ b/openlp/plugins/alerts/lib/__init__.py @@ -25,4 +25,3 @@ from alertsmanager import AlertsManager from alertstab import AlertsTab -from manager import DBManager diff --git a/openlp/plugins/alerts/lib/manager.py b/openlp/plugins/alerts/lib/manager.py deleted file mode 100644 index 7b5cf2da0..000000000 --- a/openlp/plugins/alerts/lib/manager.py +++ /dev/null @@ -1,112 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # -# Thompson, Jon Tibble, Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is 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 -from sqlalchemy.exceptions import InvalidRequestError - -from openlp.core.utils import AppLocation -from openlp.plugins.alerts.lib.db import init_schema, AlertItem - -log = logging.getLogger(__name__) - -class DBManager(object): - """ - The Song Manager provides a central location for all database code. This - class takes care of connecting to the database and running all the queries. - """ - log.info(u'Alerts DB loaded') - - def __init__(self): - """ - Creates the connection to the database, and creates the tables if they - don't exist. - """ - log.debug(u'Alerts Initialising') - settings = QtCore.QSettings() - settings.beginGroup(u'alerts') - self.db_url = u'' - db_type = unicode( - settings.value(u'db type', QtCore.QVariant(u'sqlite')).toString()) - if db_type == u'sqlite': - self.db_url = u'sqlite:///%s/alerts.sqlite' % \ - AppLocation.get_section_data_path(u'alerts') - else: - self.db_url = u'%s://%s:%s@%s/%s' % (db_type, - unicode(settings.value(u'db username').toString()), - unicode(settings.value(u'db password').toString()), - unicode(settings.value(u'db hostname').toString()), - unicode(settings.value(u'db database').toString())) - settings.endGroup() - self.session = init_schema(self.db_url) - log.debug(u'Alerts Initialised') - - def get_all_alerts(self): - """ - Returns the details of a Alert Show - """ - return self.session.query(AlertItem).order_by(AlertItem.text).all() - - def save_alert(self, alert_item): - """ - Saves a Alert show to the database - """ - log.debug(u'Alert added') - try: - self.session.add(alert_item) - self.session.commit() - log.debug(u'Alert saved') - return True - except InvalidRequestError: - self.session.rollback() - log.exception(u'Alert save failed') - return False - - def get_alert(self, id=None): - """ - Returns the details of a Alert - """ - if id is None: - return AlertItem() - else: - return self.session.query(AlertItem).get(id) - - def delete_alert(self, id): - """ - Delete a Alert show - """ - if id != 0: - alert_item = self.get_alert(id) - try: - self.session.delete(alert_item) - self.session.commit() - return True - except InvalidRequestError: - self.session.rollback() - log.exception(u'Alert deleton failed') - return False - else: - return True diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 1ae8796f5..ecee8975d 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -30,7 +30,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import SongXMLBuilder, SongXMLParser, Receiver, translate from openlp.plugins.songs.forms import EditVerseForm -from openlp.plugins.songs.lib.db import Song +from openlp.plugins.songs.lib.db import Book, Song, Author, Topic from editsongdialog import Ui_EditSongDialog log = logging.getLogger(__name__) @@ -125,7 +125,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.TopicRemoveButton.setEnabled(False) def loadAuthors(self): - authors = self.songmanager.get_authors() + authors = self.songmanager.get_all_objects(Author, Author.display_name) authorsCompleter = QtGui.QCompleter( [author.display_name for author in authors], self.AuthorsSelectionComboItem) @@ -139,7 +139,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): row, QtCore.QVariant(author.id)) def loadTopics(self): - topics = self.songmanager.get_topics() + topics = self.songmanager.get_all_objects(Topic, Topic.name) topicsCompleter = QtGui.QCompleter( [topic.name for topic in topics], self.SongTopicCombo) topicsCompleter.setCaseSensitivity(QtCore.Qt.CaseInsensitive) @@ -151,7 +151,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.SongTopicCombo.setItemData(row, QtCore.QVariant(topic.id)) def loadBooks(self): - books = self.songmanager.get_books() + books = self.songmanager.get_all_objects(Book, Book.name) booksCompleter = QtGui.QCompleter( [book.name for book in books], self.SongbookCombo) booksCompleter.setCaseSensitivity(QtCore.Qt.CaseInsensitive) @@ -201,11 +201,12 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.loadAuthors() self.loadTopics() self.loadBooks() - self.song = self.songmanager.get_song(id) + self.song = self.songmanager.get_object(Song, id) self.TitleEditItem.setText(self.song.title) title = self.song.search_title.split(u'@') if self.song.song_book_id != 0: - book_name = self.songmanager.get_book(self.song.song_book_id) + book_name = self.songmanager.get_object(Book, + self.song.song_book_id) id = self.SongbookCombo.findText( unicode(book_name.name), QtCore.Qt.MatchExactly) if id == -1: @@ -301,7 +302,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): item = int(self.AuthorsSelectionComboItem.currentIndex()) if item > -1: item_id = (self.AuthorsSelectionComboItem.itemData(item)).toInt()[0] - author = self.songmanager.get_author(item_id) + author = self.songmanager.get_object(Author, item_id) self.song.authors.append(author) author_item = QtGui.QListWidgetItem(unicode(author.display_name)) author_item.setData(QtCore.Qt.UserRole, QtCore.QVariant(author.id)) @@ -315,7 +316,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.AuthorRemoveButton.setEnabled(False) item = self.AuthorsListView.currentItem() author_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] - author = self.songmanager.get_author(author_id) + author = self.songmanager.get_object(Author, author_id) self.song.authors.remove(author) row = self.AuthorsListView.row(item) self.AuthorsListView.takeItem(row) @@ -324,7 +325,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): item = int(self.SongTopicCombo.currentIndex()) if item > -1: item_id = (self.SongTopicCombo.itemData(item)).toInt()[0] - topic = self.songmanager.get_topic(item_id) + topic = self.songmanager.get_object(Topic, item_id) self.song.topics.append(topic) topic_item = QtGui.QListWidgetItem(unicode(topic.name)) topic_item.setData(QtCore.Qt.UserRole, QtCore.QVariant(topic.id)) @@ -337,7 +338,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.TopicRemoveButton.setEnabled(False) item = self.TopicsListView.currentItem() topic_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] - topic = self.songmanager.get_topic(topic_id) + topic = self.songmanager.get_object(Topic, topic_id) self.song.topics.remove(topic) row = self.TopicsListView.row(item) self.TopicsListView.takeItem(row) @@ -550,7 +551,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.song.ccli_number = unicode(self.CCLNumberEdit.text()) self.processLyrics() self.processTitle() - self.songmanager.save_song(self.song) + self.songmanager.insert_object(self.song) return True def processLyrics(self): @@ -596,4 +597,3 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.song.search_title = self.song.search_title.replace(u'{', u'') self.song.search_title = self.song.search_title.replace(u'}', u'') self.song.search_title = self.song.search_title.replace(u'?', u'') - diff --git a/openlp/plugins/songs/forms/songmaintenanceform.py b/openlp/plugins/songs/forms/songmaintenanceform.py index d6ac7bf04..c0134f100 100644 --- a/openlp/plugins/songs/forms/songmaintenanceform.py +++ b/openlp/plugins/songs/forms/songmaintenanceform.py @@ -26,11 +26,9 @@ from PyQt4 import QtGui, QtCore from openlp.core.lib import translate +from openlp.plugins.songs.forms import AuthorsForm, TopicsForm, SongBookForm from openlp.plugins.songs.lib.db import Author, Book, Topic from songmaintenancedialog import Ui_SongMaintenanceDialog -from authorsform import AuthorsForm -from topicsform import TopicsForm -from songbookform import SongBookForm class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): """ @@ -81,17 +79,17 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): else: return -1 - def _deleteItem(self, list_widget, get_func, del_func, reset_func, - dlg_title, del_text, err_text, sel_text): + def _deleteItem(self, item_class, list_widget, reset_func, dlg_title, + del_text, err_text, sel_text): item_id = self._getCurrentItemId(list_widget) if item_id != -1: - item = get_func(item_id) + item = self.songmanager.get_object(item_class, item_id) if item and len(item.songs) == 0: if QtGui.QMessageBox.warning(self, dlg_title, del_text, QtGui.QMessageBox.StandardButtons( QtGui.QMessageBox.No | QtGui.QMessageBox.Yes) ) == QtGui.QMessageBox.Yes: - del_func(item.id) + self.songmanager.delete_object(item_class, item.id) reset_func() else: QtGui.QMessageBox.critical(self, dlg_title, err_text) @@ -100,7 +98,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): def resetAuthors(self): self.AuthorsListWidget.clear() - authors = self.songmanager.get_authors() + authors = self.songmanager.get_all_objects(Author, Author.display_name) for author in authors: if author.display_name: author_name = QtGui.QListWidgetItem(author.display_name) @@ -112,7 +110,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): def resetTopics(self): self.TopicsListWidget.clear() - topics = self.songmanager.get_topics() + topics = self.songmanager.get_all_objects(Topic, Topic.name) for topic in topics: topic_name = QtGui.QListWidgetItem(topic.name) topic_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(topic.id)) @@ -120,7 +118,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): def resetBooks(self): self.BooksListWidget.clear() - books = self.songmanager.get_books() + books = self.songmanager.get_all_objects(Book, Book.name) for book in books: book_name = QtGui.QListWidgetItem(book.name) book_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(book.id)) @@ -133,7 +131,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): first_name=unicode(self.authorform.FirstNameEdit.text()), last_name=unicode(self.authorform.LastNameEdit.text()), display_name=unicode(self.authorform.DisplayEdit.text())) - if self.songmanager.save_author(author): + if self.songmanager.insert_object(author): self.resetAuthors() else: QtGui.QMessageBox.critical( @@ -145,7 +143,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): def onTopicAddButtonClick(self): if self.topicform.exec_(): topic = Topic.populate(name=unicode(self.topicform.NameEdit.text())) - if self.songmanager.save_topic(topic): + if self.songmanager.insert_object(topic): self.resetTopics() else: QtGui.QMessageBox.critical( @@ -159,7 +157,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): book = Book.populate( name=unicode(self.bookform.NameEdit.text()), publisher=unicode(self.bookform.PublisherEdit.text())) - if self.songmanager.save_book(book): + if self.songmanager.insert_object(book): self.resetBooks() else: QtGui.QMessageBox.critical( @@ -171,7 +169,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): def onAuthorEditButtonClick(self): author_id = self._getCurrentItemId(self.AuthorsListWidget) if author_id != -1: - author = self.songmanager.get_author(author_id) + author = self.songmanager.get_object(Author, author_id) self.authorform.setAutoDisplayName(False) self.authorform.FirstNameEdit.setText(author.first_name) self.authorform.LastNameEdit.setText(author.last_name) @@ -182,7 +180,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): author.last_name = unicode(self.authorform.LastNameEdit.text()) author.display_name = unicode( self.authorform.DisplayEdit.text()) - if self.songmanager.save_author(author): + if self.songmanager.insert_object(author): self.resetAuthors() else: QtGui.QMessageBox.critical( @@ -194,11 +192,11 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): def onTopicEditButtonClick(self): topic_id = self._getCurrentItemId(self.TopicsListWidget) if topic_id != -1: - topic = self.songmanager.get_topic(topic_id) + topic = self.songmanager.get_object(Topic, topic_id) self.topicform.NameEdit.setText(topic.name) if self.topicform.exec_(False): topic.name = unicode(self.topicform.NameEdit.text()) - if self.songmanager.save_topic(topic): + if self.songmanager.insert_object(topic): self.resetTopics() else: QtGui.QMessageBox.critical( @@ -210,13 +208,13 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): def onBookEditButtonClick(self): book_id = self._getCurrentItemId(self.BooksListWidget) if book_id != -1: - book = self.songmanager.get_book(book_id) + book = self.songmanager.get_object(Book, book_id) self.bookform.NameEdit.setText(book.name) self.bookform.PublisherEdit.setText(book.publisher) if self.bookform.exec_(False): book.name = unicode(self.bookform.NameEdit.text()) book.publisher = unicode(self.bookform.PublisherEdit.text()) - if self.songmanager.save_book(book): + if self.songmanager.insert_object(book): self.resetBooks() else: QtGui.QMessageBox.critical( @@ -229,9 +227,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): """ Delete the author if the author is not attached to any songs """ - self._deleteItem( - self.AuthorsListWidget, self.songmanager.get_author, - self.songmanager.delete_author, self.resetAuthors, + self._deleteItem(Author, self.AuthorsListWidget, self.resetAuthors, translate(u'SongsPlugin.SongMaintenanceForm', u'Delete Author'), translate(u'SongsPlugin.SongMaintenanceForm', u'Are you sure you want to delete the selected author?'), @@ -245,9 +241,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): """ Delete the Book is the Book is not attached to any songs """ - self._deleteItem( - self.TopicsListWidget, self.songmanager.get_topic, - self.songmanager.delete_topic, self.resetTopics, + self._deleteItem(Topic, self.TopicsListWidget, self.resetTopics, translate(u'SongsPlugin.SongMaintenanceForm', u'Delete Topic'), translate(u'SongsPlugin.SongMaintenanceForm', u'Are you sure you want to delete the selected topic?'), @@ -261,9 +255,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): """ Delete the Book is the Book is not attached to any songs """ - self._deleteItem( - self.BooksListWidget, self.songmanager.get_book, - self.songmanager.delete_book, self.resetBooks, + self._deleteItem(Book, self.BooksListWidget, self.resetBooks, translate(u'SongsPlugin.SongMaintenanceForm', u'Delete Book'), translate(u'SongsPlugin.SongMaintenanceForm', u'Are you sure you want to delete the selected book?'), diff --git a/openlp/plugins/songs/lib/manager.py b/openlp/plugins/songs/lib/manager.py index 8e0a79ef7..6cd9a90ad 100644 --- a/openlp/plugins/songs/lib/manager.py +++ b/openlp/plugins/songs/lib/manager.py @@ -25,10 +25,7 @@ import logging -from PyQt4 import QtCore -from sqlalchemy.exceptions import InvalidRequestError - -from openlp.core.utils import AppLocation +from openlp.core.lib.db import Manager from openlp.plugins.songs.lib.db import init_schema, Song, Author, Topic, Book #from openlp.plugins.songs.lib import OpenLyricsSong, OpenSongSong, CCLISong, \ # CSVSong @@ -79,7 +76,7 @@ class SongFormat(object): ] -class SongManager(object): +class SongManager(Manager): """ The Song Manager provides a central location for all database code. This class takes care of connecting to the database and running all the queries. @@ -92,34 +89,9 @@ class SongManager(object): don't exist. """ log.debug(u'Song Initialising') - settings = QtCore.QSettings() - settings.beginGroup(u'songs') - self.db_url = u'' - db_type = unicode(settings.value(u'songs/db type', - QtCore.QVariant(u'sqlite')).toString()) - if db_type == u'sqlite': - self.db_url = u'sqlite:///%s/songs.sqlite' % \ - AppLocation.get_section_data_path(u'songs') - else: - self.db_url = u'%s://%s:%s@%s/%s' % (db_type, - unicode(settings.value( - u'db username', QtCore.QVariant(u'')).toString()), - unicode(settings.value( - u'db password', QtCore.QVariant(u'')).toString()), - unicode(settings.value( - u'db hostname', QtCore.QVariant(u'')).toString()), - unicode(settings.value( - u'db database', QtCore.QVariant(u'')).toString())) - self.session = init_schema(self.db_url) - settings.endGroup() + Manager.__init__(self, u'songs', init_schema) log.debug(u'Song Initialised') - def get_songs(self): - """ - Returns the details of a song - """ - return self.session.query(Song).order_by(Song.title).all() - def search_song_title(self, keywords): """ Searches the song title for keywords. @@ -143,174 +115,23 @@ class SongManager(object): return self.session.query(Author).filter(Author.display_name.like( u'%' + keywords + u'%')).order_by(Author.display_name.asc()).all() - def get_song(self, id=None): - """ - Returns the details of a song - """ - if id is None: - return Song() - else: - return self.session.query(Song).get(id) - - def save_song(self, song): - """ - Saves a song to the database - """ - try: - self.session.add(song) - self.session.commit() - return True - except InvalidRequestError: - log.exception(u'Could not save song to song database') - self.session.rollback() - return False - - def delete_song(self, songid): - song = self.get_song(songid) - try: - self.session.delete(song) - self.session.commit() - return True - except InvalidRequestError: - self.session.rollback() - log.exception(u'Could not delete song from song database') - return False - - def get_authors(self): - """ - Returns a list of all the authors - """ - return self.session.query(Author).order_by(Author.display_name).all() - - def get_author(self, id): - """ - Details of the Author - """ - return self.session.query(Author).get(id) - def get_author_by_name(self, name): """ Get author by display name """ return self.session.query(Author).filter_by(display_name=name).first() - def save_author(self, author): - """ - Save the Author and refresh the cache - """ - try: - self.session.add(author) - self.session.commit() - return True - except InvalidRequestError: - self.session.rollback() - log.exception(u'Could not save author to song database') - return False - - def delete_author(self, authorid): - """ - Delete the author - """ - author = self.get_author(authorid) - try: - self.session.delete(author) - self.session.commit() - return True - except InvalidRequestError: - self.session.rollback() - log.exception(u'Could not delete author from song database') - return False - - def get_topics(self): - """ - Returns a list of all the topics - """ - return self.session.query(Topic).order_by(Topic.name).all() - - def get_topic(self, id): - """ - Details of the Topic - """ - return self.session.query(Topic).get(id) - def get_topic_by_name(self, name): """ Get topic by name """ return self.session.query(Topic).filter_by(name=name).first() - def save_topic(self, topic): - """ - Save the Topic - """ - try: - self.session.add(topic) - self.session.commit() - return True - except InvalidRequestError: - self.session.rollback() - log.exception(u'Could not save topic to song database') - return False - - def delete_topic(self, topicid): - """ - Delete the topic - """ - topic = self.get_topic(topicid) - try: - self.session.delete(topic) - self.session.commit() - return True - except InvalidRequestError: - self.session.rollback() - log.exception(u'Could not delete topic from song database') - return False - - def get_books(self): - """ - Returns a list of all the Books - """ - return self.session.query(Book).order_by(Book.name).all() - - def get_book(self, id): - """ - Details of the Books - """ - return self.session.query(Book).get(id) - def get_book_by_name(self, name): """ Get book by name """ return self.session.query(Book).filter_by(name=name).first() - def save_book(self, book): - """ - Save the Book - """ - try: - self.session.add(book) - self.session.commit() - return True - except InvalidRequestError: - self.session.rollback() - log.exception(u'Could not save book to song database') - return False - - def delete_book(self, bookid): - """ - Delete the Book - """ - book = self.get_book(bookid) - try: - self.session.delete(book) - self.session.commit() - return True - except InvalidRequestError: - self.session.rollback() - log.exception(u'Could not delete book from song database') - return False - def get_songs_for_theme(self, theme): return self.session.query(Song).filter(Song.theme_name == theme).all() - diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 67133f9c6..f0a4afc88 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -31,6 +31,7 @@ from openlp.core.lib import MediaManagerItem, SongXMLParser, \ BaseListWithDnD, Receiver, ItemCapabilities, translate from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm, \ ImportWizardForm +from openlp.plugins.songs.lib.db import Song log = logging.getLogger(__name__) @@ -267,7 +268,7 @@ class SongMediaItem(MediaManagerItem): type of display is required. """ fields = songid.split(u':') - valid = self.parent.manager.get_song(fields[1]) + valid = self.parent.manager.get_object(Song, fields[1]) if valid: self.remoteSong = fields[1] self.remoteTriggered = fields[0] @@ -301,7 +302,7 @@ class SongMediaItem(MediaManagerItem): return for item in items: item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] - self.parent.manager.delete_song(item_id) + self.parent.manager.delete_object(Song, item_id) self.onSearchTextButtonClick() def generateSlideData(self, service_item, item=None): @@ -322,7 +323,7 @@ class SongMediaItem(MediaManagerItem): service_item.add_capability(ItemCapabilities.AllowsEdit) service_item.add_capability(ItemCapabilities.AllowsPreview) service_item.add_capability(ItemCapabilities.AllowsLoop) - song = self.parent.manager.get_song(item_id) + song = self.parent.manager.get_object(Song, item_id) service_item.theme = song.theme_name service_item.editId = item_id if song.lyrics.startswith(u' Date: Tue, 15 Jun 2010 01:44:06 +0100 Subject: [PATCH 04/83] RFC PT3: Bibles --- openlp/core/lib/db.py | 42 ++++- .../plugins/bibles/forms/importwizardform.py | 12 +- openlp/plugins/bibles/lib/csvbible.py | 6 +- openlp/plugins/bibles/lib/db.py | 168 ++++++++++-------- openlp/plugins/bibles/lib/http.py | 3 +- openlp/plugins/bibles/lib/manager.py | 16 +- openlp/plugins/bibles/lib/models.py | 94 ---------- openlp/plugins/bibles/lib/opensong.py | 2 +- openlp/plugins/bibles/lib/osis.py | 4 +- openlp/plugins/songs/lib/songimport.py | 2 +- 10 files changed, 151 insertions(+), 198 deletions(-) delete mode 100644 openlp/plugins/bibles/lib/models.py diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 323b48e39..7517998f0 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -74,13 +74,20 @@ class Manager(object): """ Provide generic object persistence management """ - def __init__(self, plugin_name, init_schema): + def __init__(self, plugin_name, init_schema, db_file_name=None): """ Runs the initialisation process that includes creating the connection to the database and the tables if they don't exist. ``plugin_name`` The name to setup paths and settings section names + + ``init_schema`` + The init_schema function for this database + + ``db_file_name`` + The file name to use for this database. Defaults to None resulting + in the plugin_name being used. """ settings = QtCore.QSettings() settings.beginGroup(plugin_name) @@ -88,8 +95,13 @@ class Manager(object): db_type = unicode( settings.value(u'db type', QtCore.QVariant(u'sqlite')).toString()) if db_type == u'sqlite': - self.db_url = u'sqlite:///%s/%s.sqlite' % ( - AppLocation.get_section_data_path(plugin_name), plugin_name) + if db_file_name: + self.db_url = u'sqlite:///%s/%s' % ( + AppLocation.get_section_data_path(plugin_name), + db_file_name) + else: + self.db_url = u'sqlite:///%s/%s.sqlite' % ( + AppLocation.get_section_data_path(plugin_name), plugin_name) else: self.db_url = u'%s://%s:%s@%s/%s' % (db_type, unicode(settings.value(u'db username').toString()), @@ -99,6 +111,30 @@ class Manager(object): settings.endGroup() self.session = init_schema(self.db_url) + def delete_database(self, plugin_name, db_file_name=None): + """ + Remove a database file from the system. + + ``plugin_name`` + The name of the plugin to remove the database for + + ``db_file_name`` + The database file name. Defaults to None resulting in the + plugin_name being used. + """ + db_file_path = None + if db_file_name: + db_file_path = os.path.join( + AppLocation.get_section_data_path(plugin_name), db_file_name) + else: + db_file_path = os.path.join( + AppLocation.get_section_data_path(plugin_name), plugin_name) + try: + os.remove(db_file_path) + return True + except OSError: + return False + def insert_object(self, object_instance): """ Save an object to the database diff --git a/openlp/plugins/bibles/forms/importwizardform.py b/openlp/plugins/bibles/forms/importwizardform.py index b1eafcd61..023391615 100644 --- a/openlp/plugins/bibles/forms/importwizardform.py +++ b/openlp/plugins/bibles/forms/importwizardform.py @@ -224,7 +224,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): Show the file open dialog for the OSIS file. """ self.getFileName( - translate(u'BiblesPlugin.ImportWizardForm', u'Open OSIS File'), + translate(u'BiblesPlugin.ImportWizardForm', u'Open OSIS File'), self.OSISLocationEdit) def onBooksFileButtonClicked(self): @@ -239,10 +239,8 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): """ Show the file open dialog for the verses CSV file. """ - self.getFileName( - translate(u'BiblesPlugin.ImportWizardForm', - u'Open Verses CSV File'), - self.CsvVerseLocationEdit) + self.getFileName(translate(u'BiblesPlugin.ImportWizardForm', + u'Open Verses CSV File'), self.CsvVerseLocationEdit) def onOpenSongBrowseButtonClicked(self): """ @@ -450,11 +448,11 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): self.ImportProgressLabel.setText( translate(u'BiblesPlugin.ImportWizardForm', u'Your Bible import failed.')) - importer.delete() + importer.delete_database(self.bibleplugin.settingsSection, + importer.file) def postImport(self): self.ImportProgressBar.setValue(self.ImportProgressBar.maximum()) self.finishButton.setVisible(True) self.cancelButton.setVisible(False) Receiver.send_message(u'openlp_process_events') - diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index 3cfe9dea5..9a504f48f 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -97,11 +97,11 @@ class CSVBible(BibleDB): book_ptr = book.name self.wizard.incrementProgressBar( u'Importing %s %s' % (book.name, line[1])) - self.commit() + self.session.commit() self.create_verse(book.id, line[1], line[2], unicode(line[3], details['encoding'])) Receiver.send_message(u'openlp_process_events') - self.commit() + self.session.commit() except IOError: log.exception(u'Loading verses from file failed') success = False @@ -113,5 +113,3 @@ class CSVBible(BibleDB): return False else: return success - - diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 97983e72c..7733261db 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -23,19 +23,98 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -import os import logging import chardet import re -from sqlalchemy import or_ from PyQt4 import QtCore +from sqlalchemy import Column, ForeignKey, or_, Table, types +from sqlalchemy.orm import class_mapper, mapper, relation +from sqlalchemy.orm.exc import UnmappedClassError -from openlp.plugins.bibles.lib.models import * +from openlp.core.lib.db import BaseModel, init_db, Manager log = logging.getLogger(__name__) -class BibleDB(QtCore.QObject): +class BibleMeta(BaseModel): + """ + Bible Meta Data + """ + pass + +class Testament(BaseModel): + """ + Bible Testaments + """ + pass + +class Book(BaseModel): + """ + Song model + """ + pass + +class Verse(BaseModel): + """ + Topic model + """ + pass + +def init_schema(url): + """ + Setup a bible database connection and initialise the database schema + + ``url`` + The database to setup + """ + session, metadata = init_db(url) + + meta_table = Table(u'metadata', metadata, + Column(u'key', types.Unicode(255), primary_key=True, index=True), + Column(u'value', types.Unicode(255)), + ) + 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'testament_id', types.Integer, ForeignKey(u'testament.id')), + 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), + 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), + ) + + try: + class_mapper(BibleMeta) + except UnmappedClassError: + mapper(BibleMeta, meta_table) + try: + class_mapper(Testament) + except UnmappedClassError: + mapper(Testament, testament_table, + properties={'books': relation(Book, backref='testament')}) + try: + class_mapper(Book) + except UnmappedClassError: + mapper(Book, book_table, + properties={'verses': relation(Verse, backref='book')}) + try: + class_mapper(Verse) + except UnmappedClassError: + mapper(Verse, verse_table) + + metadata.create_all(checkfirst=True) + return session + + +class BibleDB(QtCore.QObject, Manager): """ This class represents a database-bound Bible. It is used as a base class for all the custom importers, so that the can implement their own import @@ -72,24 +151,7 @@ class BibleDB(QtCore.QObject): self.file = self.clean_filename(self.name) if u'file' in kwargs: self.file = kwargs[u'file'] - self.db_file = os.path.join(kwargs[u'path'], self.file) - log.debug(u'Load bible %s on path %s', self.file, self.db_file) - settings = QtCore.QSettings() - settings.beginGroup(u'bibles') - db_type = unicode( - settings.value(u'db type', QtCore.QVariant(u'sqlite')).toString()) - db_url = u'' - if db_type == u'sqlite': - db_url = u'sqlite:///' + self.db_file - else: - db_url = u'%s://%s:%s@%s/%s' % (db_type, - unicode(settings.value(u'db username').toString()), - unicode(settings.value(u'db password').toString()), - unicode(settings.value(u'db hostname').toString()), - unicode(settings.value(u'db database').toString())) - settings.endGroup() - self.session = init_models(db_url) - metadata.create_all(checkfirst=True) + Manager.__init__(self, u'bibles', init_schema, self.file) if u'file' in kwargs: self.get_name() @@ -104,7 +166,7 @@ class BibleDB(QtCore.QObject): """ Returns the version name of the Bible. """ - version_name = self.get_meta(u'Version') + version_name = self.get_object(BibleMeta, u'Version') if version_name: self.name = version_name.value else: @@ -124,16 +186,6 @@ class BibleDB(QtCore.QObject): old_filename = re.sub(r'[^\w]+', u'_', old_filename).strip(u'_') return old_filename + u'.sqlite' - def delete(self): - """ - Remove the Bible database file. Used when a Bible import fails. - """ - try: - os.remove(self.db_file) - return True - except OSError: - return False - def register(self, wizard): """ This method basically just initialialises the database. It is called @@ -148,33 +200,15 @@ class BibleDB(QtCore.QObject): self.create_tables() return self.name - def commit(self): - """ - Perform a database commit. - """ - log.debug('Committing...') - self.session.commit() - def create_tables(self): """ Create some initial metadata. """ log.debug(u'createTables') self.create_meta(u'dbversion', u'2') - self.create_testament(u'Old Testament') - self.create_testament(u'New Testament') - self.create_testament(u'Apocrypha') - - def create_testament(self, testament): - """ - Add a testament to the database. - - ``testament`` - The testament name. - """ - log.debug(u'BibleDB.create_testament("%s")', testament) - self.session.add(Testament.populate(name=testament)) - self.commit() + self.insert_object(Testament.populate(name=u'Old Testament')) + self.insert_object(Testament.populate(name=u'New Testament')) + self.insert_object(Testament.populate(name=u'Apocrypha')) def create_book(self, name, abbrev, testament=1): """ @@ -192,8 +226,7 @@ class BibleDB(QtCore.QObject): log.debug(u'create_book %s,%s', name, abbrev) book = Book.populate(name=name, abbreviation=abbrev, testament_id=testament) - self.session.add(book) - self.commit() + self.insert_object(book) return book def create_chapter(self, book_id, chapter, textlist): @@ -220,7 +253,7 @@ class BibleDB(QtCore.QObject): text = verse_text ) self.session.add(verse) - self.commit() + self.session.commit() def create_verse(self, book_id, chapter, verse, text): """ @@ -252,12 +285,7 @@ class BibleDB(QtCore.QObject): def create_meta(self, key, value): log.debug(u'save_meta %s/%s', key, value) - self.session.add(BibleMeta.populate(key=key, value=value)) - self.commit() - - def get_books(self): - log.debug(u'BibleDB.get_books()') - return self.session.query(Book).order_by(Book.id).all() + self.insert_object(BibleMeta.populate(key=key, value=value)) def get_book(self, book): log.debug(u'BibleDb.get_book("%s")', book) @@ -362,19 +390,6 @@ class BibleDB(QtCore.QObject): else: return count - def get_meta(self, key): - log.debug(u'get meta %s', key) - return self.session.query(BibleMeta).get(key) - - def delete_meta(self, metakey): - biblemeta = self.get_meta(metakey) - try: - self.session.delete(biblemeta) - self.commit() - return True - except: - return False - def dump_bible(self): log.debug(u'.........Dumping Bible Database') log.debug('...............................Books ') @@ -383,4 +398,3 @@ class BibleDB(QtCore.QObject): log.debug(u'...............................Verses ') verses = self.session.query(Verse).all() log.debug(verses) - diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index d3d6ca5f6..0b613b4b6 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -35,8 +35,7 @@ from openlp.core.lib import Receiver from openlp.core.utils import AppLocation from openlp.plugins.bibles.lib.common import BibleCommon, SearchResults, \ unescape -from openlp.plugins.bibles.lib.db import BibleDB -from openlp.plugins.bibles.lib.models import Book +from openlp.plugins.bibles.lib.db import BibleDB, Book log = logging.getLogger(__name__) diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 7ef18a604..39f3c255b 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -29,12 +29,12 @@ from PyQt4 import QtCore from openlp.core.lib import SettingsManager from openlp.core.utils import AppLocation +from openlp.plugins.bibles.lib.db import BibleDB, Book, BibleMeta from common import parse_reference from opensong import OpenSongBible from osis import OSISBible from csvbible import CSVBible -from db import BibleDB from http import HTTPBible log = logging.getLogger(__name__) @@ -137,11 +137,13 @@ class BibleManager(object): log.debug(u'Bible Name: "%s"', name) self.db_cache[name] = bible # look to see if lazy load bible exists and get create getter. - source = self.db_cache[name].get_meta(u'download source') + source = self.db_cache[name].get_object(BibleMeta, + u'download source') if source: - download_name = \ - self.db_cache[name].get_meta(u'download name').value - meta_proxy = self.db_cache[name].get_meta(u'proxy url') + download_name = self.db_cache[name].get_object(BibleMeta, + u'download name').value + meta_proxy = self.db_cache[name].get_object(BibleMeta, + u'proxy url') web_bible = HTTPBible(self.parent, path=self.path, file=filename, download_source=source.value, download_name=download_name) @@ -196,7 +198,7 @@ class BibleManager(object): u'name': book.name, u'chapters': self.db_cache[bible].get_chapter_count(book.name) } - for book in self.db_cache[bible].get_books() + for book in self.db_cache[bible].get_all_objects(Book, Book.id) ] def get_chapter_count(self, bible, book): @@ -249,7 +251,7 @@ class BibleManager(object): Returns the meta data for a given key """ log.debug(u'get_meta %s,%s', bible, key) - return self.db_cache[bible].get_meta(key) + return self.db_cache[bible].get_object(BibleMeta, key) def exists(self, name): """ diff --git a/openlp/plugins/bibles/lib/models.py b/openlp/plugins/bibles/lib/models.py deleted file mode 100644 index 2cd52fb0b..000000000 --- a/openlp/plugins/bibles/lib/models.py +++ /dev/null @@ -1,94 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # -# Thompson, Jon Tibble, Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is 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 sqlalchemy import Column, Table, MetaData, ForeignKey, types, \ - create_engine -from sqlalchemy.orm import mapper, relation, sessionmaker, scoped_session - -from openlp.core.lib.db import BaseModel - - -class BibleMeta(BaseModel): - """ - Bible Meta Data - """ - pass - - -class Testament(BaseModel): - """ - Bible Testaments - """ - pass - - -class Book(BaseModel): - """ - Song model - """ - pass - - -class Verse(BaseModel): - """ - Topic model - """ - pass - -def init_models(db_url): - engine = create_engine(db_url) - metadata.bind = engine - session = scoped_session(sessionmaker(autoflush=True, autocommit=False, - bind=engine)) - return session - -metadata = MetaData() -meta_table = Table(u'metadata', metadata, - Column(u'key', types.Unicode(255), primary_key=True, index=True), - Column(u'value', types.Unicode(255)), -) -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'testament_id', types.Integer, ForeignKey(u'testament.id')), - 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), - 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), -) -mapper(BibleMeta, meta_table) -mapper(Testament, testament_table, - properties={'books': relation(Book, backref='testament')}) -mapper(Book, book_table, - properties={'verses': relation(Verse, backref='book')}) -mapper(Verse, verse_table) diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index b2df50257..dfdc542ef 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -90,7 +90,7 @@ class OpenSongBible(BibleDB): QtCore.QString('%s %s %s' % ( translate(u'BiblesPlugin.Opensong', u'Importing'), \ db_book.name, chapter.attrib[u'n']))) - self.commit() + self.session.commit() except IOError: log.exception(u'Loading bible from OpenSong file failed') success = False diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index b4a2a2aa1..2f30cf63c 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -136,7 +136,7 @@ class OSISBible(BibleDB): self.wizard.ImportProgressBar.setMaximum(260) if last_chapter != chapter: if last_chapter != 0: - self.commit() + self.session.commit() self.wizard.incrementProgressBar( u'Importing %s %s...' % \ (self.books[match.group(1)][0], chapter)) @@ -162,7 +162,7 @@ class OSISBible(BibleDB): verse_text = self.spaces_regex.sub(u' ', verse_text) self.create_verse(db_book.id, chapter, verse, verse_text) Receiver.send_message(u'openlp_process_events') - self.commit() + self.session.commit() self.wizard.incrementProgressBar(u'Finishing import...') if match_count == 0: success = False diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index 2d6a4cd21..36a9b9953 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -28,8 +28,8 @@ import string from PyQt4 import QtGui from openlp.core.lib import SongXMLBuilder +from openlp.plugins.songs.lib import VerseType from openlp.plugins.songs.lib.db import Song, Author, Topic, Book -from openlp.plugins.songs.forms import VerseType class SongImport(object): """ From e92b0173480852c2e3e374eafdf8c2b8de1cd525 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Tue, 15 Jun 2010 03:08:22 +0100 Subject: [PATCH 05/83] RFC PT4: The other DB plugins --- openlp/core/lib/db.py | 14 ++- openlp/plugins/custom/customplugin.py | 9 +- openlp/plugins/custom/forms/editcustomform.py | 6 +- openlp/plugins/custom/lib/__init__.py | 1 - .../plugins/custom/lib/{classes.py => db.py} | 31 ++++- openlp/plugins/custom/lib/manager.py | 117 ------------------ openlp/plugins/custom/lib/mediaitem.py | 10 +- openlp/plugins/custom/lib/meta.py | 38 ------ openlp/plugins/custom/lib/models.py | 39 ------ openlp/plugins/custom/lib/tables.py | 37 ------ openlp/plugins/songs/lib/manager.py | 3 - openlp/plugins/songs/songsplugin.py | 4 +- .../songusage/forms/songusagedetailform.py | 17 ++- openlp/plugins/songusage/lib/classes.py | 32 ----- .../songusage/lib/{models.py => db.py} | 44 +++++-- openlp/plugins/songusage/lib/manager.py | 100 +++------------ openlp/plugins/songusage/lib/meta.py | 38 ------ openlp/plugins/songusage/lib/tables.py | 39 ------ openlp/plugins/songusage/songusageplugin.py | 6 +- 19 files changed, 120 insertions(+), 465 deletions(-) rename openlp/plugins/custom/lib/{classes.py => db.py} (68%) delete mode 100644 openlp/plugins/custom/lib/manager.py delete mode 100644 openlp/plugins/custom/lib/meta.py delete mode 100644 openlp/plugins/custom/lib/models.py delete mode 100644 openlp/plugins/custom/lib/tables.py delete mode 100644 openlp/plugins/songusage/lib/classes.py rename openlp/plugins/songusage/lib/{models.py => db.py} (63%) delete mode 100644 openlp/plugins/songusage/lib/meta.py delete mode 100644 openlp/plugins/songusage/lib/tables.py diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 7517998f0..4c7b1ca23 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -171,7 +171,7 @@ class Manager(object): Returns all the objects from the database ``object_class`` - The type of object to return + The type of objects to return ``order_by_ref`` Any parameters to order the returned objects by. Defaults to None. @@ -180,6 +180,18 @@ class Manager(object): return self.session.query(object_class).order_by(order_by_ref).all() return self.session.query(object_class).all() + def get_all_objects_filtered(self, object_class, filter_string): + """ + Returns a selection of objects from the database + + ``object_class`` + The type of objects to return + + ``filter_string`` + The filter governing selection of objects to return + """ + return self.session.query(object_class).filter(filter_string).all() + def delete_object(self, object_class, id): """ Delete an object from the database diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py index 9ae208a28..92bfdadfc 100644 --- a/openlp/plugins/custom/customplugin.py +++ b/openlp/plugins/custom/customplugin.py @@ -27,7 +27,9 @@ import logging from forms import EditCustomForm from openlp.core.lib import Plugin, build_icon, PluginStatus, translate -from openlp.plugins.custom.lib import CustomManager, CustomMediaItem, CustomTab +from openlp.core.lib.db import Manager +from openlp.plugins.custom.lib import CustomMediaItem, CustomTab +from openlp.plugins.custom.lib.db import CustomSlide, init_schema log = logging.getLogger(__name__) @@ -45,7 +47,7 @@ class CustomPlugin(Plugin): def __init__(self, plugin_helpers): Plugin.__init__(self, u'Custom', u'1.9.1', plugin_helpers) self.weight = -5 - self.custommanager = CustomManager() + self.custommanager = Manager(u'custom', init_schema) self.edit_custom_form = EditCustomForm(self.custommanager) self.icon = build_icon(u':/media/media_custom.png') self.status = PluginStatus.Active @@ -75,6 +77,7 @@ class CustomPlugin(Plugin): return about_text def can_delete_theme(self, theme): - if len(self.custommanager.get_customs_for_theme(theme)) == 0: + filter = u'theme_name=%s' % theme + if not self.custommanager.get_all_objects_filtered(CustomSlide, filter): return True return False diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index 4e8b5957a..2b8a5bc03 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -29,7 +29,7 @@ from PyQt4 import QtCore, QtGui from editcustomdialog import Ui_customEditDialog from openlp.core.lib import SongXMLBuilder, SongXMLParser, Receiver, translate -from openlp.plugins.custom.lib.models import CustomSlide +from openlp.plugins.custom.lib.db import CustomSlide log = logging.getLogger(__name__) @@ -117,7 +117,7 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog): self.customSlide = CustomSlide() self.initialise() if id != 0: - self.customSlide = self.custommanager.get_custom(id) + self.customSlide = self.custommanager.get_object(CustomSlide, id) self.TitleEdit.setText(self.customSlide.title) self.CreditEdit.setText(self.customSlide.credits) songXML = SongXMLParser(self.customSlide.text) @@ -167,7 +167,7 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog): u'utf-8') self.customSlide.theme_name = unicode(self.ThemeComboBox.currentText(), u'utf-8') - self.custommanager.save_slide(self.customSlide) + self.custommanager.insert_object(self.customSlide) return True def onUpButtonPressed(self): diff --git a/openlp/plugins/custom/lib/__init__.py b/openlp/plugins/custom/lib/__init__.py index e62669ad3..0d9de3173 100644 --- a/openlp/plugins/custom/lib/__init__.py +++ b/openlp/plugins/custom/lib/__init__.py @@ -23,6 +23,5 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -from manager import CustomManager from mediaitem import CustomMediaItem from customtab import CustomTab diff --git a/openlp/plugins/custom/lib/classes.py b/openlp/plugins/custom/lib/db.py similarity index 68% rename from openlp/plugins/custom/lib/classes.py rename to openlp/plugins/custom/lib/db.py index 6d8c623d1..277f3a7e8 100644 --- a/openlp/plugins/custom/lib/classes.py +++ b/openlp/plugins/custom/lib/db.py @@ -22,11 +22,40 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +""" +The :mod:`db` module provides the database and schema that is the backend for +the Custom plugin +""" -from openlp.core.lib.db import BaseModel +from sqlalchemy import Column, Table, types +from sqlalchemy.orm import mapper + +from openlp.core.lib.db import BaseModel, init_db class CustomSlide(BaseModel): """ Custom Slide model """ pass + +def init_schema(url): + """ + Setup the custom database connection and initialise the database schema + + ``url`` + The database to setup + """ + session, metadata = init_db(url) + + custom_slide_table = Table(u'custom_slide', metadata, + Column(u'id', types.Integer(), primary_key=True), + Column(u'title', types.Unicode(255), nullable=False), + Column(u'text', types.UnicodeText, nullable=False), + Column(u'credits', types.UnicodeText), + Column(u'theme_name', types.Unicode(128)) + ) + + mapper(CustomSlide, custom_slide_table) + + metadata.create_all(checkfirst=True) + return session diff --git a/openlp/plugins/custom/lib/manager.py b/openlp/plugins/custom/lib/manager.py deleted file mode 100644 index 793cd8699..000000000 --- a/openlp/plugins/custom/lib/manager.py +++ /dev/null @@ -1,117 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # -# Thompson, Jon Tibble, Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is 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 -from sqlalchemy.exceptions import InvalidRequestError - -from openlp.core.utils import AppLocation -from openlp.plugins.custom.lib.models import init_models, metadata, CustomSlide - -log = logging.getLogger(__name__) - -class CustomManager(object): - """ - The Song Manager provides a central location for all database code. This - class takes care of connecting to the database and running all the queries. - """ - log.info(u'Custom manager loaded') - - def __init__(self): - """ - Creates the connection to the database, and creates the tables if they - don't exist. - """ - log.debug(u'Custom Initialising') - settings = QtCore.QSettings() - settings.beginGroup(u'custom') - self.db_url = u'' - db_type = unicode( - settings.value(u'db type', QtCore.QVariant(u'sqlite')).toString()) - if db_type == u'sqlite': - self.db_url = u'sqlite:///%s/custom.sqlite' % \ - AppLocation.get_section_data_path(u'custom') - else: - self.db_url = u'%s://%s:%s@%s/%s' % (db_type, - unicode(settings.value(u'db username').toString()), - unicode(settings.value(u'db password').toString()), - unicode(settings.value(u'db hostname').toString()), - unicode(settings.value(u'db database').toString())) - self.session = init_models(self.db_url) - metadata.create_all(checkfirst=True) - settings.endGroup() - log.debug(u'Custom Initialised') - - def get_all_slides(self): - """ - Returns the details of a Custom Slide Show - """ - return self.session.query(CustomSlide).order_by(CustomSlide.title).all() - - def save_slide(self, customslide): - """ - Saves a Custom slide show to the database - """ - log.debug(u'Custom Slide added') - try: - self.session.add(customslide) - self.session.commit() - log.debug(u'Custom Slide saved') - return True - except InvalidRequestError: - self.session.rollback() - log.exception(u'Custom Slide save failed') - return False - - def get_custom(self, id=None): - """ - Returns the details of a Custom Slide - """ - if id is None: - return CustomSlide() - else: - return self.session.query(CustomSlide).get(id) - - def delete_custom(self, id): - """ - Delete a Custom slide show - """ - if id != 0: - customslide = self.get_custom(id) - try: - self.session.delete(customslide) - self.session.commit() - return True - except InvalidRequestError: - self.session.rollback() - log.exception(u'Custom Slide deleton failed') - return False - else: - return True - - def get_customs_for_theme(self, theme): - return self.session.query( - CustomSlide).filter(CustomSlide.theme_name == theme).all() diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 581334410..18f681489 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -29,6 +29,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import MediaManagerItem, SongXMLParser, BaseListWithDnD, \ Receiver, ItemCapabilities, translate +from openlp.plugins.custom.lib.db import CustomSlide log = logging.getLogger(__name__) @@ -72,7 +73,8 @@ class CustomMediaItem(MediaManagerItem): MediaManagerItem.requiredIcons(self) def initialise(self): - self.loadCustomListView(self.parent.custommanager.get_all_slides()) + self.loadCustomListView(self.parent.custommanager.get_all_objects( + CustomSlide, CustomSlide.title)) #Called to redisplay the song list screen edith from a search #or from the exit of the Song edit dialog. If remote editing is active #Trigger it and clean up so it will not update again. @@ -106,7 +108,7 @@ class CustomMediaItem(MediaManagerItem): type of display is required. """ fields = customid.split(u':') - valid = self.parent.custommanager.get_custom(fields[1]) + valid = self.parent.custommanager.get_object(CustomSlide, fields[1]) if valid: self.remoteCustom = fields[1] self.remoteTriggered = fields[0] @@ -126,7 +128,7 @@ class CustomMediaItem(MediaManagerItem): item = self.ListView.currentItem() if item: item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] - self.parent.custommanager.delete_custom(item_id) + self.parent.custommanager.delete_object(CustomSlide, item_id) row = self.ListView.row(item) self.ListView.takeItem(row) @@ -148,7 +150,7 @@ class CustomMediaItem(MediaManagerItem): service_item.add_capability(ItemCapabilities.AllowsEdit) service_item.add_capability(ItemCapabilities.AllowsPreview) service_item.add_capability(ItemCapabilities.AllowsLoop) - customSlide = self.parent.custommanager.get_custom(item_id) + customSlide = self.parent.custommanager.get_object(CustomSlide, item_id) title = customSlide.title credit = customSlide.credits service_item.editId = item_id diff --git a/openlp/plugins/custom/lib/meta.py b/openlp/plugins/custom/lib/meta.py deleted file mode 100644 index affa31969..000000000 --- a/openlp/plugins/custom/lib/meta.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # -# Thompson, Jon Tibble, Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is 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 sqlalchemy import MetaData - -__all__ = ['session', 'metadata', 'engine'] - -# SQLAlchemy database engine. Updated by model.init_model() -engine = None - -# SQLAlchemy session manager. Updated by model.init_model() -session = None - -# Global metadata. If you have multiple databases with overlapping table -# names, you'll need a metadata for each database -metadata = MetaData() diff --git a/openlp/plugins/custom/lib/models.py b/openlp/plugins/custom/lib/models.py deleted file mode 100644 index 3bd2886bd..000000000 --- a/openlp/plugins/custom/lib/models.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # -# Thompson, Jon Tibble, Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is 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 sqlalchemy import create_engine -from sqlalchemy.orm import scoped_session, sessionmaker, mapper - -from openlp.plugins.custom.lib.meta import metadata -from openlp.plugins.custom.lib.tables import * -from openlp.plugins.custom.lib.classes import * - -def init_models(url): - engine = create_engine(url) - metadata.bind = engine - session = scoped_session(sessionmaker(autoflush=True, autocommit=False, - bind=engine)) - mapper(CustomSlide, custom_slide_table) - return session diff --git a/openlp/plugins/custom/lib/tables.py b/openlp/plugins/custom/lib/tables.py deleted file mode 100644 index bb86d9d6d..000000000 --- a/openlp/plugins/custom/lib/tables.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # -# Thompson, Jon Tibble, Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is 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 sqlalchemy import Column, Table, types - -from openlp.plugins.custom.lib.meta import metadata - -# Definition of the "custom slide" table -custom_slide_table = Table(u'custom_slide', metadata, - Column(u'id', types.Integer(), primary_key=True), - Column(u'title', types.Unicode(255), nullable=False), - Column(u'text', types.UnicodeText, nullable=False), - Column(u'credits', types.UnicodeText), - Column(u'theme_name', types.Unicode(128)) -) diff --git a/openlp/plugins/songs/lib/manager.py b/openlp/plugins/songs/lib/manager.py index 6cd9a90ad..f2edf6e75 100644 --- a/openlp/plugins/songs/lib/manager.py +++ b/openlp/plugins/songs/lib/manager.py @@ -132,6 +132,3 @@ class SongManager(Manager): Get book by name """ return self.session.query(Book).filter_by(name=name).first() - - def get_songs_for_theme(self, theme): - return self.session.query(Song).filter(Song.theme_name == theme).all() diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index b7ddd473e..45ee4fe46 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -187,7 +187,7 @@ class SongsPlugin(Plugin): return about_text def can_delete_theme(self, theme): - if len(self.manager.get_songs_for_theme(theme)) == 0: + filter = u'theme_name=%s' % theme + if not self.manager.get_all_objects_filtered(Song, filter): return True return False - diff --git a/openlp/plugins/songusage/forms/songusagedetailform.py b/openlp/plugins/songusage/forms/songusagedetailform.py index fb1d1c73d..bb19bc2e6 100644 --- a/openlp/plugins/songusage/forms/songusagedetailform.py +++ b/openlp/plugins/songusage/forms/songusagedetailform.py @@ -71,20 +71,19 @@ class SongUsageDetailForm(QtGui.QDialog, Ui_SongUsageDetailDialog): def accept(self): log.debug(u'Detailed report generated') - filename = u'usage_detail_%s_%s.txt' % \ - (self.FromDate.selectedDate().toString(u'ddMMyyyy'), - self.ToDate.selectedDate().toString(u'ddMMyyyy')) - usage = self.parent.songusagemanager.get_all_songusage(\ - self.FromDate.selectedDate(), \ - self.ToDate.selectedDate()) + filename = u'usage_detail_%s_%s.txt' % ( + self.FromDate.selectedDate().toString(u'ddMMyyyy'), + self.ToDate.selectedDate().toString(u'ddMMyyyy')) + usage = self.parent.songusagemanager.get_songusage_for_period( + self.FromDate.selectedDate(), self.ToDate.selectedDate()) outname = os.path.join(unicode(self.FileLineEdit.text()), filename) file = None try: file = open(outname, u'w') for instance in usage: - record = u'\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\"\n' % \ - (instance.usagedate,instance.usagetime, instance.title, - instance.copyright, instance.ccl_number , instance.authors) + record = u'\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\"\n' % ( + instance.usagedate, instance.usagetime, instance.title, + instance.copyright, instance.ccl_number, instance.authors) file.write(record) except IOError: log.exception(u'Failed to write out song usage records') diff --git a/openlp/plugins/songusage/lib/classes.py b/openlp/plugins/songusage/lib/classes.py deleted file mode 100644 index 885d87faf..000000000 --- a/openlp/plugins/songusage/lib/classes.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # -# Thompson, Jon Tibble, Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is 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 openlp.core.lib.db import BaseModel - -class SongUsageItem(BaseModel): - """ - Audit model - """ - pass diff --git a/openlp/plugins/songusage/lib/models.py b/openlp/plugins/songusage/lib/db.py similarity index 63% rename from openlp/plugins/songusage/lib/models.py rename to openlp/plugins/songusage/lib/db.py index a7babbaed..ffb720a58 100644 --- a/openlp/plugins/songusage/lib/models.py +++ b/openlp/plugins/songusage/lib/db.py @@ -22,18 +22,42 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +""" +The :mod:`db` module provides the database and schema that is the backend for +the SongUsage plugin +""" -from sqlalchemy import create_engine -from sqlalchemy.orm import scoped_session, sessionmaker, mapper +from sqlalchemy import Column, Table, types +from sqlalchemy.orm import mapper -from openlp.plugins.songusage.lib.meta import metadata -from openlp.plugins.songusage.lib.tables import * -from openlp.plugins.songusage.lib.classes import * +from openlp.core.lib.db import BaseModel, init_db + +class SongUsageItem(BaseModel): + """ + SongUsageItem model + """ + pass + +def init_schema(url): + """ + Setup the songusage database connection and initialise the database schema + + ``url`` + The database to setup + """ + session, metadata = init_db(url) + + songusage_table = Table(u'songusage_data', metadata, + Column(u'id', types.Integer(), primary_key=True), + Column(u'usagedate', types.Date, index=True, nullable=False), + Column(u'usagetime', types.Time, index=True, nullable=False), + Column(u'title', types.Unicode(255), nullable=False), + Column(u'authors', types.Unicode(255), nullable=False), + Column(u'copyright', types.Unicode(255)), + Column(u'ccl_number', types.Unicode(65)) + ) -def init_models(url): - engine = create_engine(url) - metadata.bind = engine - session = scoped_session(sessionmaker(autoflush=True, autocommit=False, - bind=engine)) mapper(SongUsageItem, songusage_table) + + metadata.create_all(checkfirst=True) return session diff --git a/openlp/plugins/songusage/lib/manager.py b/openlp/plugins/songusage/lib/manager.py index b830fdafd..363f06fb8 100644 --- a/openlp/plugins/songusage/lib/manager.py +++ b/openlp/plugins/songusage/lib/manager.py @@ -25,16 +25,14 @@ import logging -from PyQt4 import QtCore from sqlalchemy.exceptions import InvalidRequestError -from openlp.core.utils import AppLocation -from openlp.plugins.songusage.lib.models import init_models, metadata, \ - SongUsageItem +from openlp.core.lib.db import Manager +from openlp.plugins.songusage.lib.db import init_schema, SongUsageItem log = logging.getLogger(__name__) -class SongUsageManager(object): +class SongUsageManager(Manager): """ The Song Manager provides a central location for all database code. This class takes care of connecting to the database and running all the queries. @@ -47,98 +45,31 @@ class SongUsageManager(object): don't exist. """ log.debug(u'SongUsage Initialising') - settings = QtCore.QSettings() - settings.beginGroup(u'songusage') - self.db_url = u'' - db_type = unicode( - settings.value(u'db type', QtCore.QVariant(u'sqlite')).toString()) - if db_type == u'sqlite': - self.db_url = u'sqlite:///%s/songusage.sqlite' % \ - AppLocation.get_section_data_path(u'songusage') - else: - self.db_url = u'%s://%s:%s@%s/%s' % (db_type, - unicode(settings.value(u'db username', - QtCore.QVariant(u'')).toString()), - unicode(settings.value(u'db password', - QtCore.QVariant(u'')).toString()), - unicode(settings.value(u'db hostname', - QtCore.QVariant(u'')).toString()), - unicode(settings.value(u'db database', - QtCore.QVariant(u'')).toString())) - self.session = init_models(self.db_url) - metadata.create_all(checkfirst=True) - settings.endGroup() + Manager.__init__(self, u'songusage', init_schema) log.debug(u'SongUsage Initialised') - def get_all_songusage(self, start_date, end_date): + def get_songusage_for_period(self, start_date, end_date): """ - Returns the details of SongUsage + Returns the details of SongUsage for a designated time period + + ``start_date`` + The start of the period to return + + ``end_date`` + The end of the period to return """ return self.session.query(SongUsageItem) \ .filter(SongUsageItem.usagedate >= start_date.toPyDate()) \ .filter(SongUsageItem.usagedate < end_date.toPyDate()) \ - .order_by(SongUsageItem.usagedate, SongUsageItem.usagetime ).all() - - def insert_songusage(self, songusageitem): - """ - Saves an SongUsage to the database - """ - log.debug(u'SongUsage added') - try: - self.session.add(songusageitem) - self.session.commit() - return True - except InvalidRequestError: - self.session.rollback() - log.exception(u'SongUsage item failed to save') - return False - - def get_songusage(self, id=None): - """ - Returns the details of a SongUsage - """ - if id is None: - return SongUsageItem() - else: - return self.session.query(SongUsageItem).get(id) - - def delete_songusage(self, id): - """ - Delete a SongUsage record - """ - if id != 0: - songusageitem = self.get_songusage(id) - try: - self.session.delete(songusageitem) - self.session.commit() - return True - except InvalidRequestError: - self.session.rollback() - log.exception(u'SongUsage Item failed to delete') - return False - else: - return True - - def delete_all(self): - """ - Delete all Song Usage records - """ - try: - self.session.query(SongUsageItem).delete(synchronize_session=False) - self.session.commit() - return True - except InvalidRequestError: - self.session.rollback() - log.exception(u'Failed to delete all Song Usage items') - return False + .order_by(SongUsageItem.usagedate, SongUsageItem.usagetime).all() def delete_to_date(self, date): """ Delete SongUsage records before given date """ try: - self.session.query(SongUsageItem)\ - .filter(SongUsageItem.usagedate <= date)\ + self.session.query(SongUsageItem) \ + .filter(SongUsageItem.usagedate <= date) \ .delete(synchronize_session=False) self.session.commit() return True @@ -146,4 +77,3 @@ class SongUsageManager(object): self.session.rollback() log.exception(u'Failed to delete all Song Usage items to %s' % date) return False - diff --git a/openlp/plugins/songusage/lib/meta.py b/openlp/plugins/songusage/lib/meta.py deleted file mode 100644 index affa31969..000000000 --- a/openlp/plugins/songusage/lib/meta.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # -# Thompson, Jon Tibble, Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is 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 sqlalchemy import MetaData - -__all__ = ['session', 'metadata', 'engine'] - -# SQLAlchemy database engine. Updated by model.init_model() -engine = None - -# SQLAlchemy session manager. Updated by model.init_model() -session = None - -# Global metadata. If you have multiple databases with overlapping table -# names, you'll need a metadata for each database -metadata = MetaData() diff --git a/openlp/plugins/songusage/lib/tables.py b/openlp/plugins/songusage/lib/tables.py deleted file mode 100644 index 008c722b1..000000000 --- a/openlp/plugins/songusage/lib/tables.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # -# Thompson, Jon Tibble, Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is 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 sqlalchemy import Column, Table, types - -from openlp.plugins.songusage.lib.meta import metadata - -# Definition of the "songusage" table -songusage_table = Table(u'songusage_data', metadata, - Column(u'id', types.Integer(), primary_key=True), - Column(u'usagedate', types.Date, index=True, nullable=False), - Column(u'usagetime', types.Time, index=True, nullable=False), - Column(u'title', types.Unicode(255), nullable=False), - Column(u'authors', types.Unicode(255), nullable=False), - Column(u'copyright', types.Unicode(255)), - Column(u'ccl_number', types.Unicode(65)) -) diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py index 6cbb08e1a..04292e069 100644 --- a/openlp/plugins/songusage/songusageplugin.py +++ b/openlp/plugins/songusage/songusageplugin.py @@ -23,16 +23,16 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -from datetime import datetime import logging +from datetime import datetime from PyQt4 import QtCore, QtGui from openlp.core.lib import Plugin, Receiver, build_icon, translate from openlp.plugins.songusage.lib import SongUsageManager from openlp.plugins.songusage.forms import SongUsageDetailForm, \ SongUsageDeleteForm -from openlp.plugins.songusage.lib.models import SongUsageItem +from openlp.plugins.songusage.lib.db import SongUsageItem log = logging.getLogger(__name__) @@ -146,7 +146,7 @@ class SongUsagePlugin(Plugin): song_usage_item.authors = u'' for author in audit[1]: song_usage_item.authors += author + u' ' - self.songusagemanager.insert_songusage(song_usage_item) + self.songusagemanager.insert_object(song_usage_item) def onSongUsageDelete(self): self.SongUsagedeleteform.exec_() From 85661fe6e468f657552174785ace5d1fe5accad8 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Tue, 15 Jun 2010 16:42:52 +0100 Subject: [PATCH 06/83] RFC: Tweaks --- openlp/core/lib/__init__.py | 29 +++++++++++- openlp/migration/migratebibles.py | 3 +- openlp/migration/migratesongs.py | 5 +-- openlp/plugins/alerts/alertsplugin.py | 3 ++ openlp/plugins/bibles/lib/db.py | 63 +++++++++++++++++---------- openlp/plugins/custom/lib/db.py | 2 +- 6 files changed, 74 insertions(+), 31 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index ffc61cdcc..5e6547906 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -22,7 +22,6 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### - """ The :mod:`lib` module contains most of the components and libraries that make OpenLP work. @@ -47,6 +46,10 @@ def translate(context, text, comment=None): ``text`` The text to put into the translation tables for translation. + + ``comment`` + An identifying string for when the same text is used in different roles + within the same context. """ return QtCore.QCoreApplication.translate(context, text, comment) @@ -115,6 +118,18 @@ def build_icon(icon): def context_menu_action(base, icon, text, slot): """ Utility method to help build context menus for plugins + + ``base`` + The parent menu to add this menu item to + + ``icon`` + An icon for this action + + ``text`` + The text to display for this action + + ``slot`` + The code to run when this action is triggered """ action = QtGui.QAction(text, base) if icon: @@ -125,6 +140,15 @@ def context_menu_action(base, icon, text, slot): def context_menu(base, icon, text): """ Utility method to help build context menus for plugins + + ``base`` + The parent object to add this menu to + + ``icon`` + An icon for this menu + + ``text`` + The text to display for this menu """ action = QtGui.QMenu(text, base) action.setIcon(build_icon(icon)) @@ -133,6 +157,9 @@ def context_menu(base, icon, text): def context_menu_separator(base): """ Add a separator to a context menu + + ``base`` + The menu object to add the separator to """ action = QtGui.QAction(u'', base) action.setSeparator(True) diff --git a/openlp/migration/migratebibles.py b/openlp/migration/migratebibles.py index b024343a4..411da0ce6 100644 --- a/openlp/migration/migratebibles.py +++ b/openlp/migration/migratebibles.py @@ -33,7 +33,7 @@ from sqlalchemy.orm import mapper from openlp.core.lib import SettingsManager from openlp.core.lib.db import BaseModel from openlp.core.utils import AppLocation -from openlp.plugins.bibles.lib.models import * +from openlp.plugins.bibles.lib.db import BibleMeta, Book, Testament, Verse class TBibleMeta(BaseModel): """ @@ -196,4 +196,3 @@ class MigrateBibles(object): conn.commit() conn.execute(u'vacuum;') conn.commit() - diff --git a/openlp/migration/migratesongs.py b/openlp/migration/migratesongs.py index c4cab00bc..0ede63387 100644 --- a/openlp/migration/migratesongs.py +++ b/openlp/migration/migratesongs.py @@ -34,10 +34,7 @@ from sqlalchemy.orm import scoped_session, sessionmaker, mapper, relation from openlp.core.lib import SettingsManager from openlp.core.lib.db import BaseModel from openlp.core.utils import AppLocation -from openlp.plugins.songs.lib.models import metadata, songs_table, Song, \ - Author, Topic, Book -from openlp.plugins.songs.lib.tables import * -from openlp.plugins.songs.lib.classes import * +from openlp.plugins.songs.lib.db import songs_table, Song, Author, Topic, Book def init_models(url): engine = create_engine(url) diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index 3c14e23b1..bd783a7cb 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -48,6 +48,9 @@ class alertsPlugin(Plugin): self.status = PluginStatus.Active def get_settings_tab(self): + """ + Return the settings tab for the Alerts plugin + """ self.alertsTab = AlertsTab(self) return self.alertsTab diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 7733261db..eee149320 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -197,18 +197,11 @@ class BibleDB(QtCore.QObject, Manager): The actual Qt wizard form. """ self.wizard = wizard - self.create_tables() - return self.name - - def create_tables(self): - """ - Create some initial metadata. - """ - log.debug(u'createTables') self.create_meta(u'dbversion', u'2') self.insert_object(Testament.populate(name=u'Old Testament')) self.insert_object(Testament.populate(name=u'New Testament')) self.insert_object(Testament.populate(name=u'Apocrypha')) + return self.name def create_book(self, name, abbrev, testament=1): """ @@ -284,26 +277,32 @@ class BibleDB(QtCore.QObject, Manager): return verse def create_meta(self, key, value): + """ + Utility method to save BibleMeta objects in a Bible database + + ``key`` + The key for this instance + + ``value`` + The value for this instance + """ log.debug(u'save_meta %s/%s', key, value) self.insert_object(BibleMeta.populate(key=key, value=value)) def get_book(self, book): - log.debug(u'BibleDb.get_book("%s")', book) - db_book = self.session.query(Book)\ - .filter(Book.name.like(book + u'%'))\ - .first() - if db_book is None: - db_book = self.session.query(Book)\ - .filter(Book.abbreviation.like(book + u'%'))\ - .first() - return db_book + """ + Return a book object from the database - def get_chapter(self, id, chapter): - log.debug(u'BibleDB.get_chapter("%s", %s)', id, chapter) - return self.session.query(Verse)\ - .filter_by(chapter=chapter)\ - .filter_by(book_id=id)\ - .first() + ``book`` + The name of the book to return + """ + log.debug(u'BibleDb.get_book("%s")', book) + db_book = self.session.query(Book).filter( + Book.name.like(book + u'%')).first() + if db_book is None: + db_book = self.session.query(Book).filter( + Book.abbreviation.like(book + u'%')).first() + return db_book def get_verses(self, reference_list): """ @@ -370,6 +369,12 @@ class BibleDB(QtCore.QObject, Manager): return verses def get_chapter_count(self, book): + """ + 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) count = self.session.query(Verse.chapter).join(Book)\ .filter(Book.name==book)\ @@ -380,6 +385,15 @@ class BibleDB(QtCore.QObject, Manager): return count def get_verse_count(self, book, chapter): + """ + Return the number of verses in a chapter + + ``book`` + The book containing the chapter + + ``chapter`` + The chapter to get the verse count for + """ log.debug(u'BibleDB.get_verse_count("%s", %s)', book, chapter) count = self.session.query(Verse).join(Book)\ .filter(Book.name==book)\ @@ -391,6 +405,9 @@ class BibleDB(QtCore.QObject, Manager): return count def dump_bible(self): + """ + Utility debugging method to dump the contents of a bible + """ log.debug(u'.........Dumping Bible Database') log.debug('...............................Books ') books = self.session.query(Book).all() diff --git a/openlp/plugins/custom/lib/db.py b/openlp/plugins/custom/lib/db.py index 277f3a7e8..39d935d9a 100644 --- a/openlp/plugins/custom/lib/db.py +++ b/openlp/plugins/custom/lib/db.py @@ -34,7 +34,7 @@ from openlp.core.lib.db import BaseModel, init_db class CustomSlide(BaseModel): """ - Custom Slide model + CustomSlide model """ pass From b7e3ec4441bc386ed2a93317fe966a655e4c27ee Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Tue, 15 Jun 2010 19:08:02 +0100 Subject: [PATCH 07/83] RFC: Refactor a filter method --- openlp/core/lib/db.py | 12 ++++++++++++ openlp/plugins/songs/lib/manager.py | 20 +------------------- openlp/plugins/songs/lib/songimport.py | 12 ++++++------ 3 files changed, 19 insertions(+), 25 deletions(-) diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 4c7b1ca23..87200faee 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -166,6 +166,18 @@ class Manager(object): else: return self.session.query(object_class).get(id) + def get_object_filtered(self, object_class, filter_string): + """ + Returns an object matching specified criteria + + ``object_class`` + The type of object to return + + ``filter_string`` + The criteria to select the object by + """ + return self.session.query(object_class).filter(filter_string).first() + def get_all_objects(self, object_class, order_by_ref=None): """ Returns all the objects from the database diff --git a/openlp/plugins/songs/lib/manager.py b/openlp/plugins/songs/lib/manager.py index f2edf6e75..10ec5aa34 100644 --- a/openlp/plugins/songs/lib/manager.py +++ b/openlp/plugins/songs/lib/manager.py @@ -26,7 +26,7 @@ import logging from openlp.core.lib.db import Manager -from openlp.plugins.songs.lib.db import init_schema, Song, Author, Topic, Book +from openlp.plugins.songs.lib.db import init_schema, Song, Author #from openlp.plugins.songs.lib import OpenLyricsSong, OpenSongSong, CCLISong, \ # CSVSong @@ -114,21 +114,3 @@ class SongManager(Manager): """ return self.session.query(Author).filter(Author.display_name.like( u'%' + keywords + u'%')).order_by(Author.display_name.asc()).all() - - def get_author_by_name(self, name): - """ - Get author by display name - """ - return self.session.query(Author).filter_by(display_name=name).first() - - def get_topic_by_name(self, name): - """ - Get topic by name - """ - return self.session.query(Topic).filter_by(name=name).first() - - def get_book_by_name(self, name): - """ - Get book by name - """ - return self.session.query(Book).filter_by(name=name).first() diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index 9b47a7501..814d13d5e 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -277,7 +277,6 @@ class SongImport(object): if len(self.authors) == 0: self.authors.append(u'Author unknown') self.commit_song() - #self.print_song() def commit_song(self): """ @@ -316,7 +315,8 @@ class SongImport(object): song.theme_name = self.theme_name song.ccli_number = self.ccli_number for authortext in self.authors: - author = self.manager.get_author_by_name(authortext) + filter_string = u'display_name=%s' % authortext + author = self.manager.get_object_filtered(Author, filter_string) if author is None: author = Author() author.display_name = authortext @@ -325,7 +325,8 @@ class SongImport(object): self.manager.insert_object(author) song.authors.append(author) if self.song_book_name: - song_book = self.manager.get_book_by_name(self.song_book_name) + filter_string = u'name=%s' % self.song_book_name + song_book = self.manager.get_object_filtered(Book, filter_string) if song_book is None: song_book = Book() song_book.name = self.song_book_name @@ -333,7 +334,8 @@ class SongImport(object): self.manager.insert_object(song_book) song.song_book_id = song_book.id for topictext in self.topics: - topic = self.manager.get_topic_by_name(topictext) + filter_string = u'name=%s' % topictext + topic = self.manager.get_object_filtered(Topic, filter_string) if topic is None: topic = Topic() topic.name = topictext @@ -370,5 +372,3 @@ class SongImport(object): print u'THEME: ' + self.theme_name if self.ccli_number: print u'CCLI: ' + self.ccli_number - - From 7f88043177999e3538e610515961568a8c29e80b Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Fri, 18 Jun 2010 02:26:01 +0100 Subject: [PATCH 08/83] RFC: Cleanups --- openlp/core/lib/db.py | 72 +++++++++---------- openlp/migration/migratebibles.py | 5 +- openlp/migration/migratesongs.py | 16 +++-- .../plugins/bibles/forms/importwizardform.py | 4 +- openlp/plugins/bibles/lib/db.py | 1 + openlp/plugins/custom/customplugin.py | 6 +- openlp/plugins/custom/forms/editcustomform.py | 3 +- openlp/plugins/songs/songsplugin.py | 4 +- openlp/plugins/songusage/lib/__init__.py | 6 +- 9 files changed, 63 insertions(+), 54 deletions(-) diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 87200faee..19cd3eadf 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -26,6 +26,7 @@ The :mod:`db` module provides the core database functionality for OpenLP """ import logging +import os from PyQt4 import QtCore from sqlalchemy import create_engine, MetaData @@ -55,11 +56,34 @@ def init_db(url, auto_flush=True, auto_commit=False): autocommit=auto_commit, bind=engine)) return session, metadata +def delete_database(plugin_name, db_file_name=None): + """ + Remove a database file from the system. + + ``plugin_name`` + The name of the plugin to remove the database for + + ``db_file_name`` + The database file name. Defaults to None resulting in the + plugin_name being used. + """ + db_file_path = None + if db_file_name: + db_file_path = os.path.join( + AppLocation.get_section_data_path(plugin_name), db_file_name) + else: + db_file_path = os.path.join( + AppLocation.get_section_data_path(plugin_name), plugin_name) + try: + os.remove(db_file_path) + return True + except OSError: + return False + class BaseModel(object): """ BaseModel provides a base object with a set of generic functions """ - @classmethod def populate(cls, **kwargs): """ @@ -111,30 +135,6 @@ class Manager(object): settings.endGroup() self.session = init_schema(self.db_url) - def delete_database(self, plugin_name, db_file_name=None): - """ - Remove a database file from the system. - - ``plugin_name`` - The name of the plugin to remove the database for - - ``db_file_name`` - The database file name. Defaults to None resulting in the - plugin_name being used. - """ - db_file_path = None - if db_file_name: - db_file_path = os.path.join( - AppLocation.get_section_data_path(plugin_name), db_file_name) - else: - db_file_path = os.path.join( - AppLocation.get_section_data_path(plugin_name), plugin_name) - try: - os.remove(db_file_path) - return True - except OSError: - return False - def insert_object(self, object_instance): """ Save an object to the database @@ -151,20 +151,20 @@ class Manager(object): log.exception(u'Object save failed') return False - def get_object(self, object_class, id=None): + def get_object(self, object_class, key=None): """ Return the details of an object ``object_class`` The type of object to return - ``id`` - The unique reference for the class instance to return + ``key`` + The unique reference or primary key for the instance to return """ - if not id: + if not key: return object_class() else: - return self.session.query(object_class).get(id) + return self.session.query(object_class).get(key) def get_object_filtered(self, object_class, filter_string): """ @@ -204,20 +204,20 @@ class Manager(object): """ return self.session.query(object_class).filter(filter_string).all() - def delete_object(self, object_class, id): + def delete_object(self, object_class, key): """ Delete an object from the database ``object_class`` The type of object to delete - ``id`` - The unique reference for the class instance to be deleted + ``key`` + The unique reference or primary key for the instance to be deleted """ - if id != 0: - object = self.get_object(object_class, id) + if key != 0: + object_instance = self.get_object(object_class, key) try: - self.session.delete(object) + self.session.delete(object_instance) self.session.commit() return True except InvalidRequestError: diff --git a/openlp/migration/migratebibles.py b/openlp/migration/migratebibles.py index 411da0ce6..37a0df933 100644 --- a/openlp/migration/migratebibles.py +++ b/openlp/migration/migratebibles.py @@ -27,6 +27,7 @@ import os import sys import sqlite3 +from sqlalchemy import Column, MetaData, Table, types from sqlalchemy.exceptions import InvalidRequestError from sqlalchemy.orm import mapper @@ -34,7 +35,9 @@ from openlp.core.lib import SettingsManager from openlp.core.lib.db import BaseModel from openlp.core.utils import AppLocation from openlp.plugins.bibles.lib.db import BibleMeta, Book, Testament, Verse - + +metadata = MetaData() + class TBibleMeta(BaseModel): """ Bible Meta Data diff --git a/openlp/migration/migratesongs.py b/openlp/migration/migratesongs.py index 0ede63387..0a6912c78 100644 --- a/openlp/migration/migratesongs.py +++ b/openlp/migration/migratesongs.py @@ -27,14 +27,16 @@ import os import sys import sqlite3 -from sqlalchemy import create_engine +from sqlalchemy import Column, create_engine, MetaData, Table, types from sqlalchemy.exceptions import InvalidRequestError from sqlalchemy.orm import scoped_session, sessionmaker, mapper, relation from openlp.core.lib import SettingsManager from openlp.core.lib.db import BaseModel from openlp.core.utils import AppLocation -from openlp.plugins.songs.lib.db import songs_table, Song, Author, Topic, Book +from openlp.plugins.songs.lib.db import Author, Book, Song, Topic + +metadata = MetaData() def init_models(url): engine = create_engine(url) @@ -57,14 +59,14 @@ def init_models(url): temp_authors_table = Table(u'authors_temp', metadata, Column(u'authorid', types.Integer, primary_key=True), - Column(u'authorname', String(40)) + Column(u'authorname', types.Unicode(40)) ) temp_songs_table = Table(u'songs_temp', metadata, Column(u'songid', types.Integer, primary_key=True), - Column(u'songtitle', String(60)), + Column(u'songtitle', types.Unicode(60)), Column(u'lyrics', types.UnicodeText), - Column(u'copyrightinfo', String(255)), + Column(u'copyrightinfo', types.Unicode(255)), Column(u'settingsid', types.Integer) ) @@ -101,8 +103,8 @@ class MigrateSongs(object): def process(self): self.display.output(u'Songs processing started') - for f in self.database_files: - self.v_1_9_0(f) + for data_file in self.database_files: + self.v_1_9_0(data_file) self.display.output(u'Songs processing finished') def v_1_9_0(self, database): diff --git a/openlp/plugins/bibles/forms/importwizardform.py b/openlp/plugins/bibles/forms/importwizardform.py index ac6c0995e..bb6398bb1 100644 --- a/openlp/plugins/bibles/forms/importwizardform.py +++ b/openlp/plugins/bibles/forms/importwizardform.py @@ -32,6 +32,7 @@ from PyQt4 import QtCore, QtGui from bibleimportwizard import Ui_BibleImportWizard from openlp.core.lib import Receiver, SettingsManager, translate +from openlp.core.lib.db import delete_database from openlp.core.utils import AppLocation from openlp.plugins.bibles.lib.manager import BibleFormat @@ -449,8 +450,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): self.ImportProgressLabel.setText( translate(u'BiblesPlugin.ImportWizardForm', u'Your Bible import failed.')) - importer.delete_database(self.bibleplugin.settingsSection, - importer.file) + delete_database(self.bibleplugin.settingsSection, importer.file) def postImport(self): self.ImportProgressBar.setValue(self.ImportProgressBar.maximum()) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index e6178a098..16c3d918d 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -154,6 +154,7 @@ class BibleDB(QtCore.QObject, Manager): Manager.__init__(self, u'bibles', init_schema, self.file) if u'file' in kwargs: self.get_name() + self.wizard = None def stop_import(self): """ diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py index a63bbdf47..9de676bf6 100644 --- a/openlp/plugins/custom/customplugin.py +++ b/openlp/plugins/custom/customplugin.py @@ -26,6 +26,7 @@ import logging from forms import EditCustomForm + from openlp.core.lib import Plugin, build_icon, PluginStatus, translate from openlp.core.lib.db import Manager from openlp.plugins.custom.lib import CustomMediaItem, CustomTab @@ -77,7 +78,8 @@ class CustomPlugin(Plugin): return about_text def can_delete_theme(self, theme): - filter = u'theme_name=%s' % theme - if not self.custommanager.get_all_objects_filtered(CustomSlide, filter): + filter_string = u'theme_name=%s' % theme + if not self.custommanager.get_all_objects_filtered(CustomSlide, + filter_string): return True return False diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index 2b8a5bc03..01296a329 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -167,8 +167,7 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog): u'utf-8') self.customSlide.theme_name = unicode(self.ThemeComboBox.currentText(), u'utf-8') - self.custommanager.insert_object(self.customSlide) - return True + return self.custommanager.insert_object(self.customSlide) def onUpButtonPressed(self): selectedRow = self.VerseListView.currentRow() diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 2462502b9..3dd467ad6 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -197,7 +197,7 @@ class SongsPlugin(Plugin): return about_text def can_delete_theme(self, theme): - filter = u'theme_name=%s' % theme - if not self.manager.get_all_objects_filtered(Song, filter): + filter_string = u'theme_name=%s' % theme + if not self.manager.get_all_objects_filtered(Song, filter_string): return True return False diff --git a/openlp/plugins/songusage/lib/__init__.py b/openlp/plugins/songusage/lib/__init__.py index 50bba3ddc..ae8425317 100644 --- a/openlp/plugins/songusage/lib/__init__.py +++ b/openlp/plugins/songusage/lib/__init__.py @@ -22,5 +22,7 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### - -from manager import SongUsageManager +""" +The :mod:`lib` module contains the library functions for the songusage plugin. +""" +from openlp.plugins.songusage.lib.manager import SongUsageManager From f2836baae4b107e1460efbd7e9acf0ce6f83385d Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Sat, 19 Jun 2010 18:31:42 +0100 Subject: [PATCH 09/83] More docstrings --- openlp/core/lib/baselistwithdnd.py | 10 +++++--- openlp/core/lib/dockwidget.py | 5 +++- openlp/core/lib/eventreceiver.py | 10 ++++++-- openlp/core/lib/mediamanageritem.py | 40 +++++++++++++++++++++++++++-- openlp/core/lib/plugin.py | 4 ++- openlp/core/lib/settingsmanager.py | 10 +++++++- openlp/core/lib/themexmlhandler.py | 4 ++- openlp/core/lib/toolbar.py | 4 ++- 8 files changed, 75 insertions(+), 12 deletions(-) diff --git a/openlp/core/lib/baselistwithdnd.py b/openlp/core/lib/baselistwithdnd.py index d34eada98..7802d7073 100644 --- a/openlp/core/lib/baselistwithdnd.py +++ b/openlp/core/lib/baselistwithdnd.py @@ -22,15 +22,19 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### - +""" +Extend QListWidget to handle drag and drop functionality +""" from PyQt4 import QtCore, QtGui class BaseListWithDnD(QtGui.QListWidget): """ - Please put a short description of what this class does in here. + Provide a list widget to store objects and handle drag and drop events """ - def __init__(self, parent=None): + """ + Initialise the list widget + """ QtGui.QListWidget.__init__(self, parent) self.parent = parent # this must be set by the class which is inheriting diff --git a/openlp/core/lib/dockwidget.py b/openlp/core/lib/dockwidget.py index 083c99184..729e29d33 100644 --- a/openlp/core/lib/dockwidget.py +++ b/openlp/core/lib/dockwidget.py @@ -22,7 +22,10 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### - +""" +Provide additional functionality required by OpenLP from the inherited +QDockWidget. +""" import logging from PyQt4 import QtGui diff --git a/openlp/core/lib/eventreceiver.py b/openlp/core/lib/eventreceiver.py index 76b19957c..e942fcfe6 100644 --- a/openlp/core/lib/eventreceiver.py +++ b/openlp/core/lib/eventreceiver.py @@ -22,7 +22,9 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### - +""" +Provide event handling code for OpenLP +""" import logging from PyQt4 import QtCore @@ -241,7 +243,11 @@ class Receiver(object): ``Receiver.send_message(u'<>', data)`` To receive a Message - ``QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'<>'), <>)`` + ``QtCore.QObject.connect( + Receiver.get_receiver(), + QtCore.SIGNAL(u'<>'), + <> + )`` """ eventreceiver = EventReceiver() diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index c0f016f94..94594c4f1 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -22,7 +22,9 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### - +""" +Provides the generic functions for interfacing plugins with the Media Manager. +""" import logging import os @@ -204,7 +206,9 @@ class MediaManagerItem(QtGui.QWidget): self.addListViewToToolBar() def addMiddleHeaderBar(self): - # Create buttons for the toolbar + """ + Create buttons for the media item toolbar + """ ## Import Button ## if self.hasImportIcon: self.addToolbarButton( @@ -267,6 +271,9 @@ class MediaManagerItem(QtGui.QWidget): u':/general/general_add.png', self.onAddClick) def addListViewToToolBar(self): + """ + Creates the main widget for listing items the media item is tracking + """ #Add the List widget self.ListView = self.ListViewWithDnD_class(self) self.ListView.uniformItemSizes = True @@ -357,6 +364,9 @@ class MediaManagerItem(QtGui.QWidget): return True def onFileClick(self): + """ + Add a file to the list widget to make it available for showing + """ files = QtGui.QFileDialog.getOpenFileNames( self, self.OnNewPrompt, SettingsManager.get_last_dir(self.settingsSection), @@ -370,6 +380,9 @@ class MediaManagerItem(QtGui.QWidget): self.settingsSection, self.getFileList()) def getFileList(self): + """ + Return the current list of files + """ count = 0 filelist = [] while count < self.ListView.count(): @@ -393,6 +406,15 @@ class MediaManagerItem(QtGui.QWidget): return False def IconFromFile(self, file, thumb): + """ + Create a thumbnail icon from a given file + + ``file`` + The file to create the icon from + + ``thumb`` + The filename to save the thumbnail to + """ icon = build_icon(unicode(file)) pixmap = icon.pixmap(QtCore.QSize(88, 50)) ext = os.path.splitext(thumb)[1].lower() @@ -420,6 +442,10 @@ class MediaManagerItem(QtGui.QWidget): u'to be defined by the plugin') def onPreviewClick(self): + """ + Preview an item by building a service item then adding that service + item to the preview slide controller. + """ if not self.ListView.selectedIndexes() and not self.remoteTriggered: QtGui.QMessageBox.information(self, translate('MediaManagerItem', 'No Items Selected'), @@ -433,6 +459,10 @@ class MediaManagerItem(QtGui.QWidget): self.parent.preview_controller.addServiceItem(service_item) def onLiveClick(self): + """ + Send an item live by building a service item then adding that service + item to the live slide controller. + """ if not self.ListView.selectedIndexes(): QtGui.QMessageBox.information(self, translate('MediaManagerItem', 'No Items Selected'), @@ -446,6 +476,9 @@ class MediaManagerItem(QtGui.QWidget): self.parent.live_controller.addServiceItem(service_item) def onAddClick(self): + """ + Add a selected item to the current service + """ if not self.ListView.selectedIndexes() and not self.remoteTriggered: QtGui.QMessageBox.information(self, translate('MediaManagerItem', 'No Items Selected'), @@ -470,6 +503,9 @@ class MediaManagerItem(QtGui.QWidget): self.parent.service_manager.addServiceItem(service_item) def onAddEditClick(self): + """ + Add a selected item to an existing item in the current service. + """ if not self.ListView.selectedIndexes() and not self.remoteTriggered: QtGui.QMessageBox.information(self, translate('MediaManagerItem', 'No items selected'), diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py index 0c22723a4..a5d712dfb 100644 --- a/openlp/core/lib/plugin.py +++ b/openlp/core/lib/plugin.py @@ -22,7 +22,9 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### - +""" +Provide the generic plugin functionality for OpenLP plugins. +""" import logging from PyQt4 import QtCore diff --git a/openlp/core/lib/settingsmanager.py b/openlp/core/lib/settingsmanager.py index b3d16595e..74a5d4866 100644 --- a/openlp/core/lib/settingsmanager.py +++ b/openlp/core/lib/settingsmanager.py @@ -22,7 +22,12 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### - +""" +Provide handling for persisting OpenLP settings. OpenLP uses QSettings to +manage settings persistence. QSettings provides a single API for saving and +retrieving settings from the application but writes to disk in an OS dependant +format. +""" import os from PyQt4 import QtCore @@ -56,6 +61,9 @@ class SettingsManager(object): u'user interface/preview panel', QtCore.QVariant(True)).toBool() def togglePreviewPanel(self, isVisible): + """ + Toggle the preview panel visibility. + """ QtCore.QSettings().setValue(u'user interface/preview panel', QtCore.QVariant(isVisible)) diff --git a/openlp/core/lib/themexmlhandler.py b/openlp/core/lib/themexmlhandler.py index b2850d6ec..55ddc2838 100644 --- a/openlp/core/lib/themexmlhandler.py +++ b/openlp/core/lib/themexmlhandler.py @@ -22,7 +22,9 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### - +""" +Provide the theme XML and handling functions for OpenLP v2 themes. +""" import os from xml.dom.minidom import Document diff --git a/openlp/core/lib/toolbar.py b/openlp/core/lib/toolbar.py index b2b05b8c0..a2979746e 100644 --- a/openlp/core/lib/toolbar.py +++ b/openlp/core/lib/toolbar.py @@ -22,7 +22,9 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### - +""" +Provide common toolbar handling for OpenLP +""" import logging from PyQt4 import QtCore, QtGui From a34957297c02b440f45bebdb77dc9779ea14b246 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Sat, 19 Jun 2010 18:56:21 +0100 Subject: [PATCH 10/83] Cleanups --- openlp/core/lib/themexmlhandler.py | 6 ++++-- openlp/core/theme/theme.py | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/openlp/core/lib/themexmlhandler.py b/openlp/core/lib/themexmlhandler.py index b2850d6ec..779dc3507 100644 --- a/openlp/core/lib/themexmlhandler.py +++ b/openlp/core/lib/themexmlhandler.py @@ -339,7 +339,8 @@ class ThemeXML(object): """ Pull out the XML string formatted for human consumption """ - return self.theme_xml.toprettyxml(indent=u' ', newl=u'\n', encoding=u'utf-8') + return self.theme_xml.toprettyxml(indent=u' ', newl=u'\n', + encoding=u'utf-8') def parse(self, xml): """ @@ -364,7 +365,8 @@ class ThemeXML(object): ``xml`` The XML string to parse. """ - theme_xml = ElementTree(element=XML(xml.encode(u'ascii', u'xmlcharrefreplace'))) + theme_xml = ElementTree(element=XML(xml.encode(u'ascii', + u'xmlcharrefreplace'))) xml_iter = theme_xml.getiterator() master = u'' for element in xml_iter: diff --git a/openlp/core/theme/theme.py b/openlp/core/theme/theme.py index b75b55a2e..2ea13d01b 100644 --- a/openlp/core/theme/theme.py +++ b/openlp/core/theme/theme.py @@ -175,7 +175,8 @@ class Theme(object): ``xml`` The data to apply to the theme """ - root = ElementTree(element=XML(xml.encode(u'ascii', u'xmlcharrefreplace'))) + root = ElementTree(element=XML(xml.encode(u'ascii', + u'xmlcharrefreplace'))) xml_iter = root.getiterator() for element in xml_iter: delphi_color_change = False From 1005a3c1b1b3e32e44a3683e64362f1ed6623ca9 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Sat, 19 Jun 2010 19:29:18 +0100 Subject: [PATCH 11/83] Cleanup unneeded trailing backslashes --- openlp/core/lib/mediamanageritem.py | 28 +++++++++---------- openlp/core/ui/servicemanager.py | 2 +- openlp/core/ui/thememanager.py | 2 +- openlp/plugins/alerts/lib/alertstab.py | 2 +- .../songusage/forms/songusagedetailform.py | 7 ++--- openlp/plugins/songusage/lib/manager.py | 2 +- 6 files changed, 21 insertions(+), 22 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index c0f016f94..a011a1c94 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -208,40 +208,40 @@ class MediaManagerItem(QtGui.QWidget): ## Import Button ## if self.hasImportIcon: self.addToolbarButton( - unicode(translate('MediaManagerItem', 'Import %s')) % \ + unicode(translate('MediaManagerItem', 'Import %s')) % self.PluginNameShort, - unicode(translate('MediaManagerItem', 'Import a %s')) % \ + unicode(translate('MediaManagerItem', 'Import a %s')) % self.PluginNameVisible, u':/general/general_import.png', self.onImportClick) ## File Button ## if self.hasFileIcon: self.addToolbarButton( - unicode(translate('MediaManagerItem', 'Load %s')) % \ + unicode(translate('MediaManagerItem', 'Load %s')) % self.PluginNameShort, - unicode(translate('MediaManagerItem', 'Load a new %s')) % \ + unicode(translate('MediaManagerItem', 'Load a new %s')) % self.PluginNameVisible, u':/general/general_open.png', self.onFileClick) ## New Button ## if self.hasNewIcon: self.addToolbarButton( - unicode(translate('MediaManagerItem', 'New %s')) % \ + unicode(translate('MediaManagerItem', 'New %s')) % self.PluginNameShort, - unicode(translate('MediaManagerItem', 'Add a new %s')) % \ + unicode(translate('MediaManagerItem', 'Add a new %s')) % self.PluginNameVisible, u':/general/general_new.png', self.onNewClick) ## Edit Button ## if self.hasEditIcon: self.addToolbarButton( - unicode(translate('MediaManagerItem', 'Edit %s')) % \ + unicode(translate('MediaManagerItem', 'Edit %s')) % self.PluginNameShort, unicode(translate( - 'MediaManagerItem', 'Edit the selected %s')) % \ + 'MediaManagerItem', 'Edit the selected %s')) % self.PluginNameVisible, u':/general/general_edit.png', self.onEditClick) ## Delete Button ## if self.hasDeleteIcon: self.addToolbarButton( - unicode(translate('MediaManagerItem', 'Delete %s')) % \ + unicode(translate('MediaManagerItem', 'Delete %s')) % self.PluginNameShort, translate('MediaManagerItem', 'Delete the selected item'), u':/general/general_delete.png', self.onDeleteClick) @@ -249,7 +249,7 @@ class MediaManagerItem(QtGui.QWidget): self.addToolbarSeparator() ## Preview ## self.addToolbarButton( - unicode(translate('MediaManagerItem', 'Preview %s')) % \ + unicode(translate('MediaManagerItem', 'Preview %s')) % self.PluginNameShort, translate('MediaManagerItem', 'Preview the selected item'), u':/general/general_preview.png', self.onPreviewClick) @@ -260,7 +260,7 @@ class MediaManagerItem(QtGui.QWidget): u':/general/general_live.png', self.onLiveClick) ## Add to service Button ## self.addToolbarButton( - unicode(translate('MediaManagerItem', 'Add %s to Service')) % \ + unicode(translate('MediaManagerItem', 'Add %s to Service')) % self.PluginNameShort, translate('MediaManagerItem', 'Add the selected item(s) to the service'), @@ -285,7 +285,7 @@ class MediaManagerItem(QtGui.QWidget): self.ListView.addAction( context_menu_action( self.ListView, u':/general/general_edit.png', - unicode(translate('MediaManagerItem', '&Edit %s')) % \ + unicode(translate('MediaManagerItem', '&Edit %s')) % self.PluginNameVisible, self.onEditClick)) self.ListView.addAction(context_menu_separator(self.ListView)) @@ -293,14 +293,14 @@ class MediaManagerItem(QtGui.QWidget): self.ListView.addAction( context_menu_action( self.ListView, u':/general/general_delete.png', - unicode(translate('MediaManagerItem', '&Delete %s')) % \ + unicode(translate('MediaManagerItem', '&Delete %s')) % self.PluginNameVisible, self.onDeleteClick)) self.ListView.addAction(context_menu_separator(self.ListView)) self.ListView.addAction( context_menu_action( self.ListView, u':/general/general_preview.png', - unicode(translate('MediaManagerItem', '&Preview %s')) % \ + unicode(translate('MediaManagerItem', '&Preview %s')) % self.PluginNameVisible, self.onPreviewClick)) self.ListView.addAction( diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index cccd34195..b317c6bf9 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -677,7 +677,7 @@ class ServiceManager(QtGui.QWidget): translate('ServiceManager', 'File is not a valid service.\n' 'The content encoding is not UTF-8.')) - log.exception(u'Filename "%s" is not valid UTF-8' % \ + log.exception(u'Filename "%s" is not valid UTF-8' % file.decode(u'utf-8', u'replace')) continue osfile = unicode(QtCore.QDir.toNativeSeparators(ucsfile)) diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 431b1d450..b645e541b 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -398,7 +398,7 @@ class ThemeManager(QtGui.QWidget): self, translate('ThemeManager', 'Error'), translate('ThemeManager', 'File is not a valid theme.\n' 'The content encoding is not UTF-8.')) - log.exception(u'Filename "%s" is not valid UTF-8' % \ + log.exception(u'Filename "%s" is not valid UTF-8' % file.decode(u'utf-8', u'replace')) continue osfile = unicode(QtCore.QDir.toNativeSeparators(ucsfile)) diff --git a/openlp/plugins/alerts/lib/alertstab.py b/openlp/plugins/alerts/lib/alertstab.py index 15f27df6d..fd8722ca9 100644 --- a/openlp/plugins/alerts/lib/alertstab.py +++ b/openlp/plugins/alerts/lib/alertstab.py @@ -294,5 +294,5 @@ class AlertsTab(SettingsTab): font.setBold(True) font.setPointSize(self.font_size) self.FontPreview.setFont(font) - self.FontPreview.setStyleSheet(u'background-color: %s; color: %s' % \ + self.FontPreview.setStyleSheet(u'background-color: %s; color: %s' % (self.bg_color, self.font_color)) diff --git a/openlp/plugins/songusage/forms/songusagedetailform.py b/openlp/plugins/songusage/forms/songusagedetailform.py index fb1d1c73d..50ea87abe 100644 --- a/openlp/plugins/songusage/forms/songusagedetailform.py +++ b/openlp/plugins/songusage/forms/songusagedetailform.py @@ -71,12 +71,11 @@ class SongUsageDetailForm(QtGui.QDialog, Ui_SongUsageDetailDialog): def accept(self): log.debug(u'Detailed report generated') - filename = u'usage_detail_%s_%s.txt' % \ + filename = u'usage_detail_%s_%s.txt' % (self.FromDate.selectedDate().toString(u'ddMMyyyy'), self.ToDate.selectedDate().toString(u'ddMMyyyy')) - usage = self.parent.songusagemanager.get_all_songusage(\ - self.FromDate.selectedDate(), \ - self.ToDate.selectedDate()) + usage = self.parent.songusagemanager.get_all_songusage( + self.FromDate.selectedDate(), self.ToDate.selectedDate()) outname = os.path.join(unicode(self.FileLineEdit.text()), filename) file = None try: diff --git a/openlp/plugins/songusage/lib/manager.py b/openlp/plugins/songusage/lib/manager.py index b830fdafd..2339136d0 100644 --- a/openlp/plugins/songusage/lib/manager.py +++ b/openlp/plugins/songusage/lib/manager.py @@ -53,7 +53,7 @@ class SongUsageManager(object): db_type = unicode( settings.value(u'db type', QtCore.QVariant(u'sqlite')).toString()) if db_type == u'sqlite': - self.db_url = u'sqlite:///%s/songusage.sqlite' % \ + self.db_url = u'sqlite:///%s/songusage.sqlite' % AppLocation.get_section_data_path(u'songusage') else: self.db_url = u'%s://%s:%s@%s/%s' % (db_type, From e3a07c1e57a0a2bdc2f181c12b9bcddfa7573133 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Sat, 19 Jun 2010 21:21:36 +0100 Subject: [PATCH 12/83] Cleanups --- openlp/core/ui/thememanager.py | 4 ++-- openlp/plugins/songusage/forms/songusagedetailform.py | 6 +++--- openlp/plugins/songusage/lib/manager.py | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index b645e541b..7849175a3 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -424,8 +424,8 @@ class ThemeManager(QtGui.QWidget): xml_data = xml_data.decode(u'utf-8') except UnicodeDecodeError: log.exception(u'Theme XML is not UTF-8 ' - 'encoded.') - break; + u'encoded.') + break if self.checkVersion1(xml_data): # upgrade theme xml filexml = self.migrateVersion122(xml_data) diff --git a/openlp/plugins/songusage/forms/songusagedetailform.py b/openlp/plugins/songusage/forms/songusagedetailform.py index 50ea87abe..80bb18d77 100644 --- a/openlp/plugins/songusage/forms/songusagedetailform.py +++ b/openlp/plugins/songusage/forms/songusagedetailform.py @@ -71,9 +71,9 @@ class SongUsageDetailForm(QtGui.QDialog, Ui_SongUsageDetailDialog): def accept(self): log.debug(u'Detailed report generated') - filename = u'usage_detail_%s_%s.txt' % - (self.FromDate.selectedDate().toString(u'ddMMyyyy'), - self.ToDate.selectedDate().toString(u'ddMMyyyy')) + filename = u'usage_detail_%s_%s.txt' % ( + self.FromDate.selectedDate().toString(u'ddMMyyyy'), + self.ToDate.selectedDate().toString(u'ddMMyyyy')) usage = self.parent.songusagemanager.get_all_songusage( self.FromDate.selectedDate(), self.ToDate.selectedDate()) outname = os.path.join(unicode(self.FileLineEdit.text()), filename) diff --git a/openlp/plugins/songusage/lib/manager.py b/openlp/plugins/songusage/lib/manager.py index 2339136d0..b830fdafd 100644 --- a/openlp/plugins/songusage/lib/manager.py +++ b/openlp/plugins/songusage/lib/manager.py @@ -53,7 +53,7 @@ class SongUsageManager(object): db_type = unicode( settings.value(u'db type', QtCore.QVariant(u'sqlite')).toString()) if db_type == u'sqlite': - self.db_url = u'sqlite:///%s/songusage.sqlite' % + self.db_url = u'sqlite:///%s/songusage.sqlite' % \ AppLocation.get_section_data_path(u'songusage') else: self.db_url = u'%s://%s:%s@%s/%s' % (db_type, From 28bb5e519d0cefd7ddf6b19749faf647166c78cc Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 20 Jun 2010 13:09:15 +0200 Subject: [PATCH 13/83] Fix bug #596506 --- openlp/core/lib/serviceitem.py | 15 ++++++++++----- openlp/core/ui/slidecontroller.py | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index b3464888e..d9c434987 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -90,7 +90,7 @@ class ServiceItem(object): self.from_plugin = False self.capabilities = [] self.is_valid = True - self.cache = [] + self.cache = {} self.icon = None def add_capability(self, capability): @@ -129,7 +129,7 @@ class ServiceItem(object): """ log.debug(u'Render called') self._display_frames = [] - self.cache = [] + self.clear_cache() if self.service_item_type == ServiceItemType.Text: log.debug(u'Formatting slides') if self.theme is None: @@ -149,7 +149,8 @@ class ServiceItem(object): self._display_frames.append({u'title': title, u'text': lines.rstrip(), u'verseTag': slide[u'verseTag'] }) - self.cache.insert(len(self._display_frames), None) + if len(self._display_frames) in self.cache.keys(): + del self.cache[len(self._display_frames)] log.log(15, u'Formatting took %4s' % (time.time() - before)) elif self.service_item_type == ServiceItemType.Image: for slide in self._raw_frames: @@ -172,8 +173,7 @@ class ServiceItem(object): else: self.render_manager.set_override_theme(self.theme) format = self._display_frames[row][u'text'].split(u'\n') - #if screen blank then do not display footer - if len(self.cache) > 0 and self.cache[row] is not None: + if self.cache.get(row): frame = self.cache[row] else: if format[0]: @@ -385,3 +385,8 @@ class ServiceItem(object): """ return self._raw_frames[row][u'path'] + def clear_cache(self): + """ + Clear's the service item's cache. + """ + self.cache = {} diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 10cd3cff0..e289e430d 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -537,7 +537,7 @@ class SlideController(QtGui.QWidget): before = time.time() #Clear the old serviceItem cache to release memory if self.serviceItem and self.serviceItem is not serviceItem: - self.serviceItem.cache = [] + self.serviceItem.clear_cache() self.serviceItem = serviceItem self.PreviewListWidget.clear() self.PreviewListWidget.setRowCount(0) From 054ec36e4a556cdff04fb3ff6773756bdf43c80f Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 20 Jun 2010 13:43:16 +0200 Subject: [PATCH 14/83] Fixed bug #596505 --- openlp/core/ui/servicemanager.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index cccd34195..93004cc64 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -662,8 +662,7 @@ class ServiceManager(QtGui.QWidget): name = filename.split(os.path.sep) if filename: SettingsManager.set_last_dir( - self.parent.serviceSettingsSection, - os.path.split(filename)[0]) + self.parent.serviceSettingsSection, name[0]) zip = None file_to = None try: @@ -697,7 +696,7 @@ class ServiceManager(QtGui.QWidget): self.onNewService() for item in items: serviceitem = ServiceItem() - serviceitem.RenderManager = self.parent.RenderManager + serviceitem.render_manager = self.parent.RenderManager serviceitem.set_from_service(item, self.servicePath) self.validateItem(serviceitem) self.addServiceItem(serviceitem) From ce79049868897169d123ce9e8040af51672b13a6 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 20 Jun 2010 14:12:49 +0200 Subject: [PATCH 15/83] Reverted a change that could introduce a bug! --- openlp/core/ui/servicemanager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 93004cc64..84c4f6d0b 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -661,8 +661,8 @@ class ServiceManager(QtGui.QWidget): filename = unicode(filename) name = filename.split(os.path.sep) if filename: - SettingsManager.set_last_dir( - self.parent.serviceSettingsSection, name[0]) + SettingsManager.set_last_dir(self.parent.serviceSettingsSection, + os.path.split(filename)[0]) zip = None file_to = None try: From e7b4e1640579ac5bea654391e3eb4542b2e2cbb3 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Sun, 20 Jun 2010 14:03:06 +0100 Subject: [PATCH 16/83] Couple o' Cleanups --- openlp/plugins/songs/forms/editsongform.py | 5 +++-- openlp/plugins/songs/lib/songimport.py | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index e3bec84c2..063fdd71f 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -649,12 +649,13 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): text = text + re.sub(r'\W+', u' ', unicode(self.VerseListWidget.item(i, 0).text())) + u' ' if (bits[1] > u'1') and (bits[0][0] not in multiple): - multiple.append(bits[0][0]) + multiple.append(bits[0][0]) self.song.search_lyrics = text self.song.lyrics = unicode(sxml.extract_xml(), u'utf-8') for verse in multiple: self.song.verse_order = re.sub(u'([' + verse.upper() + - verse.lower() + u'])(\W|$)', r'\g<1>1\2', self.song.verse_order) + verse.lower() + u'])(\W|$)', r'\g<1>1\2', + self.song.verse_order) except: log.exception(u'Problem processing song Lyrics \n%s', sxml.dump_xml()) diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index 479828ddd..dbc9fa08d 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -23,7 +23,6 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -import string import re from PyQt4 import QtGui From af5ae6047aa41ebc24f042a18af7e849216e989c Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Mon, 21 Jun 2010 17:20:41 +0100 Subject: [PATCH 17/83] Fix bug with Inactive not working --- openlp/core/ui/mediadockmanager.py | 2 +- openlp/plugins/songs/songsplugin.py | 28 ++++++++++++---------------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/openlp/core/ui/mediadockmanager.py b/openlp/core/ui/mediadockmanager.py index 7d81b5f23..f55dfa70c 100644 --- a/openlp/core/ui/mediadockmanager.py +++ b/openlp/core/ui/mediadockmanager.py @@ -76,6 +76,6 @@ class MediaDockManager(object): log.debug(u'remove %s dock' % name) for dock_index in range(0, self.media_dock.count()): if self.media_dock.widget(dock_index): - if self.media_dock.widget(dock_index).settingsSection == name: + if self.media_dock.widget(dock_index).settingsSection == name.lower(): self.media_dock.widget(dock_index).hide() self.media_dock.removeItem(dock_index) diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 21ec610b2..820706957 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -64,16 +64,12 @@ class SongsPlugin(Plugin): # self.songmanager = SongManager() Plugin.initialise(self) self.insert_toolbox_item() - #self.ImportSongMenu.menuAction().setVisible(True) - #self.ExportSongMenu.menuAction().setVisible(True) self.media_item.displayResultsSong(self.manager.get_songs()) def finalise(self): log.info(u'Plugin Finalise') Plugin.finalise(self) self.remove_toolbox_item() - #self.ImportSongMenu.menuAction().setVisible(False) - #self.ExportSongMenu.menuAction().setVisible(False) def get_media_manager_item(self): """ @@ -97,7 +93,7 @@ class SongsPlugin(Plugin): self.SongImportItem.setText(translate( u'SongsPlugin', u'&Song')) self.SongImportItem.setToolTip( - translate(u'SongsPlugin', + translate(u'SongsPlugin', u'Import songs using the import wizard.')) import_menu.addAction(self.SongImportItem) # Songs of Fellowship import menu item - will be removed and the @@ -105,14 +101,14 @@ class SongsPlugin(Plugin): self.ImportSofItem = QtGui.QAction(import_menu) self.ImportSofItem.setObjectName(u'ImportSofItem') self.ImportSofItem.setText( - translate(u'SongsPlugin', + translate(u'SongsPlugin', u'Songs of Fellowship (temp menu item)')) self.ImportSofItem.setToolTip( - translate(u'SongsPlugin', + translate(u'SongsPlugin', u'Import songs from the VOLS1_2.RTF, sof3words' \ + u'.rtf and sof4words.rtf supplied with the music books')) self.ImportSofItem.setStatusTip( - translate(u'SongsPlugin', + translate(u'SongsPlugin', u'Import songs from the VOLS1_2.RTF, sof3words' \ + u'.rtf and sof4words.rtf supplied with the music books')) import_menu.addAction(self.ImportSofItem) @@ -121,15 +117,15 @@ class SongsPlugin(Plugin): self.ImportOooItem = QtGui.QAction(import_menu) self.ImportOooItem.setObjectName(u'ImportOooItem') self.ImportOooItem.setText( - translate(u'SongsPlugin', + translate(u'SongsPlugin', u'Generic Document/Presentation Import ' u'(temp menu item)')) self.ImportOooItem.setToolTip( - translate(u'SongsPlugin', + translate(u'SongsPlugin', u'Import songs from ' u'Word/Writer/Powerpoint/Impress')) self.ImportOooItem.setStatusTip( - translate(u'SongsPlugin', + translate(u'SongsPlugin', u'Import songs from ' u'Word/Writer/Powerpoint/Impress')) import_menu.addAction(self.ImportOooItem) @@ -169,11 +165,11 @@ class SongsPlugin(Plugin): except: log.exception('Could not import SoF file') QtGui.QMessageBox.critical(None, - translate(u'SongsPlugin', + translate(u'SongsPlugin', u'Import Error'), - translate(u'SongsPlugin', - u'Error importing Songs of ' - u'Fellowship file.\nOpenOffice.org must be installed' + translate(u'SongsPlugin', + u'Error importing Songs of ' + u'Fellowship file.\nOpenOffice.org must be installed' u' and you must be using an unedited copy of the RTF' u' included with the Songs of Fellowship Music Editions'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok), @@ -185,7 +181,7 @@ class SongsPlugin(Plugin): None, translate(u'SongsPlugin', u'Open documents or presentations'), u'', u'All Files(*.*)') - oooimport = OooImport(self.manager) + oooimport = OooImport(self.manager) oooimport.import_docs(filenames) Receiver.send_message(u'songs_load_list') From 6c1b5a6fad3cb082472ef561d21e4231097cfa4b Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Mon, 21 Jun 2010 18:43:59 +0200 Subject: [PATCH 18/83] Updated the majority of the translate() functions. Removed .qm files. Ignore .qm files. --- .bzrignore | 1 + openlp/plugins/alerts/alertsplugin.py | 6 +- openlp/plugins/alerts/forms/alertdialog.py | 19 +- openlp/plugins/alerts/forms/alertform.py | 5 +- openlp/plugins/alerts/lib/alertstab.py | 30 +- openlp/plugins/bibles/bibleplugin.py | 4 +- .../plugins/bibles/forms/bibleimportwizard.py | 49 +- .../plugins/bibles/forms/importwizardform.py | 9 +- openlp/plugins/bibles/lib/biblestab.py | 28 +- openlp/plugins/bibles/lib/db.py | 4 +- openlp/plugins/bibles/lib/mediaitem.py | 57 +- openlp/plugins/bibles/lib/opensong.py | 3 +- openlp/plugins/custom/lib/customtab.py | 6 +- openlp/plugins/custom/lib/mediaitem.py | 4 +- openlp/plugins/presentations/lib/mediaitem.py | 4 +- .../presentations/lib/presentationtab.py | 4 +- openlp/plugins/remotes/lib/remotetab.py | 6 +- openlp/plugins/songs/forms/authorsdialog.py | 8 +- openlp/plugins/songs/forms/authorsform.py | 22 +- openlp/plugins/songs/forms/editsongdialog.py | 6 +- openlp/plugins/songs/forms/editsongform.py | 29 +- openlp/plugins/songs/forms/editversedialog.py | 6 +- openlp/plugins/songs/forms/songbookdialog.py | 6 +- openlp/plugins/songs/forms/songbookform.py | 6 +- openlp/plugins/songs/forms/songimportform.py | 46 +- .../plugins/songs/forms/songimportwizard.py | 66 +- .../songs/forms/songmaintenanceform.py | 8 +- openlp/plugins/songs/forms/topicsdialog.py | 4 +- openlp/plugins/songs/forms/topicsform.py | 4 +- openlp/plugins/songs/lib/__init__.py | 16 +- openlp/plugins/songs/lib/mediaitem.py | 26 +- openlp/plugins/songs/lib/songstab.py | 8 +- .../songusage/forms/songusagedeletedialog.py | 2 +- .../songusage/forms/songusagedetaildialog.py | 6 +- resources/i18n/openlp_af.qm | Bin 30886 -> 0 bytes resources/i18n/openlp_de.qm | Bin 31803 -> 0 bytes resources/i18n/openlp_en.qm | Bin 337 -> 0 bytes resources/i18n/openlp_en.ts | 3913 ++++++++--------- resources/i18n/openlp_en_GB.qm | Bin 29107 -> 0 bytes resources/i18n/openlp_en_ZA.qm | Bin 19540 -> 0 bytes resources/i18n/openlp_es.qm | Bin 14711 -> 0 bytes resources/i18n/openlp_et.ts | 3500 ++++++++------- resources/i18n/openlp_hu.qm | Bin 32687 -> 0 bytes resources/i18n/openlp_ko.qm | Bin 456 -> 0 bytes resources/i18n/openlp_nb.qm | Bin 17999 -> 0 bytes resources/i18n/openlp_pt_BR.qm | Bin 32861 -> 0 bytes resources/i18n/openlp_sv.qm | Bin 33820 -> 0 bytes 47 files changed, 3828 insertions(+), 4093 deletions(-) delete mode 100644 resources/i18n/openlp_af.qm delete mode 100644 resources/i18n/openlp_de.qm delete mode 100644 resources/i18n/openlp_en.qm delete mode 100644 resources/i18n/openlp_en_GB.qm delete mode 100644 resources/i18n/openlp_en_ZA.qm delete mode 100644 resources/i18n/openlp_es.qm delete mode 100644 resources/i18n/openlp_hu.qm delete mode 100644 resources/i18n/openlp_ko.qm delete mode 100644 resources/i18n/openlp_nb.qm delete mode 100644 resources/i18n/openlp_pt_BR.qm delete mode 100644 resources/i18n/openlp_sv.qm diff --git a/.bzrignore b/.bzrignore index 5d27a95a4..e63989097 100644 --- a/.bzrignore +++ b/.bzrignore @@ -16,3 +16,4 @@ build resources/innosetup/Output _eric4project .pylint.d +*.qm diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index eb6d1f116..567053014 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -64,9 +64,9 @@ class alertsPlugin(Plugin): self.toolsAlertItem.setIcon(AlertIcon) self.toolsAlertItem.setObjectName(u'toolsAlertItem') self.toolsAlertItem.setText( - translate(u'AlertsPlugin', u'&Alert')) + translate('AlertsPlugin', '&Alert')) self.toolsAlertItem.setStatusTip( - translate(u'AlertsPlugin', u'Show an alert message')) + translate('AlertsPlugin', 'Show an alert message')) self.toolsAlertItem.setShortcut(u'F7') self.service_manager.parent.ToolsMenu.addAction(self.toolsAlertItem) QtCore.QObject.connect(self.toolsAlertItem, @@ -97,4 +97,4 @@ class alertsPlugin(Plugin): about_text = translate(u'AlertsPlugin', u'Alerts Plugin
This plugin ' u'controls the displaying of alerts on the presentations screen') - return about_text + return about_text \ No newline at end of file diff --git a/openlp/plugins/alerts/forms/alertdialog.py b/openlp/plugins/alerts/forms/alertdialog.py index 6ac87e8e6..7e28cfba2 100644 --- a/openlp/plugins/alerts/forms/alertdialog.py +++ b/openlp/plugins/alerts/forms/alertdialog.py @@ -148,21 +148,20 @@ class Ui_AlertDialog(object): def retranslateUi(self, AlertDialog): AlertDialog.setWindowTitle( - translate(u'AlertsPlugin.AlertForm', u'Alert Message')) + translate('AlertsPlugin.AlertForm', 'Alert Message')) self.AlertEntryLabel.setText( - translate(u'AlertsPlugin.AlertForm', u'Alert &text:')) + translate('AlertsPlugin.AlertForm', 'Alert &text:')) self.AlertParameter.setText( - translate(u'AlertsPlugin.AlertForm', u'&Parameter(s):')) + translate('AlertsPlugin.AlertForm', '&Parameter(s):')) self.NewButton.setText( - translate(u'AlertsPlugin.AlertForm', u'&New')) + translate('AlertsPlugin.AlertForm', '&New')) self.SaveButton.setText( - translate(u'AlertsPlugin.AlertForm', u'&Save')) + translate('AlertsPlugin.AlertForm', '&Save')) self.DeleteButton.setText( - translate(u'AlertsPlugin.AlertForm', u'&Delete')) + translate('AlertsPlugin.AlertForm', '&Delete')) self.DisplayButton.setText( - translate(u'AlertsPlugin.AlertForm', u'Displ&ay')) + translate('AlertsPlugin.AlertForm', 'Displ&ay')) self.DisplayCloseButton.setText( - translate(u'AlertsPlugin.AlertForm', u'Display && Cl&ose')) + translate('AlertsPlugin.AlertForm', 'Display && Cl&ose')) self.CloseButton.setText( - translate(u'AlertsPlugin.AlertForm', u'&Close')) - + translate('AlertsPlugin.AlertForm', '&Close')) diff --git a/openlp/plugins/alerts/forms/alertform.py b/openlp/plugins/alerts/forms/alertform.py index 012f195d1..e783d718a 100644 --- a/openlp/plugins/alerts/forms/alertform.py +++ b/openlp/plugins/alerts/forms/alertform.py @@ -93,8 +93,8 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog): def onNewClick(self): if len(self.AlertTextEdit.text()) == 0: QtGui.QMessageBox.information(self, - translate(u'AlertsPlugin.AlertForm', u'Item selected to Add'), - translate(u'AlertsPlugin.AlertForm', u'Missing data')) + translate('AlertsPlugin.AlertForm', 'Item selected to Add'), + translate('AlertsPlugin.AlertForm', 'Missing data')) else: alert = AlertItem() alert.text = unicode(self.AlertTextEdit.text()) @@ -153,4 +153,3 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog): self.parent.alertsmanager.displayAlert(text) return True return False - diff --git a/openlp/plugins/alerts/lib/alertstab.py b/openlp/plugins/alerts/lib/alertstab.py index 15f27df6d..64ab304f0 100644 --- a/openlp/plugins/alerts/lib/alertstab.py +++ b/openlp/plugins/alerts/lib/alertstab.py @@ -38,7 +38,7 @@ class AlertsTab(SettingsTab): def setupUi(self): self.setObjectName(u'AlertsTab') - self.tabTitleVisible = translate(u'AlertsPlugin.AlertsTab', u'Alerts') + self.tabTitleVisible = translate('AlertsPlugin.AlertsTab', 'Alerts') self.AlertsLayout = QtGui.QHBoxLayout(self) self.AlertsLayout.setSpacing(8) self.AlertsLayout.setMargin(8) @@ -187,31 +187,31 @@ class AlertsTab(SettingsTab): def retranslateUi(self): self.FontGroupBox.setTitle( - translate(u'AlertsPlugin.AlertsTab', u'Font')) + translate('AlertsPlugin.AlertsTab', 'Font')) self.FontLabel.setText( - translate(u'AlertsPlugin.AlertsTab', u'Font Name:')) + translate('AlertsPlugin.AlertsTab', 'Font Name:')) self.FontColorLabel.setText( - translate(u'AlertsPlugin.AlertsTab', u'Font Color:')) + translate('AlertsPlugin.AlertsTab', 'Font Color:')) self.BackgroundColorLabel.setText( - translate(u'AlertsPlugin.AlertsTab', u'Background Color:')) + translate('AlertsPlugin.AlertsTab', 'Background Color:')) self.FontSizeLabel.setText( - translate(u'AlertsPlugin.AlertsTab', u'Font Size:')) + translate('AlertsPlugin.AlertsTab', 'Font Size:')) self.FontSizeSpinBox.setSuffix( - translate(u'AlertsPlugin.AlertsTab', u'pt')) + translate('AlertsPlugin.AlertsTab', 'pt')) self.TimeoutLabel.setText( - translate(u'AlertsPlugin.AlertsTab', u'Alert timeout:')) + translate('AlertsPlugin.AlertsTab', 'Alert timeout:')) self.TimeoutSpinBox.setSuffix( - translate(u'AlertsPlugin.AlertsTab', u's')) + translate('AlertsPlugin.AlertsTab', 's')) self.LocationLabel.setText( - translate(u'AlertsPlugin.AlertsTab', u'Location:')) + translate('AlertsPlugin.AlertsTab', 'Location:')) self.PreviewGroupBox.setTitle( - translate(u'AlertsPlugin.AlertsTab', u'Preview')) + translate('AlertsPlugin.AlertsTab', 'Preview')) self.FontPreview.setText( - translate(u'AlertsPlugin.AlertsTab', u'openlp.org')) + translate('AlertsPlugin.AlertsTab', 'openlp.org')) self.LocationComboBox.setItemText(0, - translate(u'AlertsPlugin.AlertsTab', u'Top')) + translate('AlertsPlugin.AlertsTab', 'Top')) self.LocationComboBox.setItemText(1, - translate(u'AlertsPlugin.AlertsTab', u'Bottom')) + translate('AlertsPlugin.AlertsTab', 'Bottom')) def onBackgroundColorButtonClicked(self): new_color = QtGui.QColorDialog.getColor( @@ -295,4 +295,4 @@ class AlertsTab(SettingsTab): font.setPointSize(self.font_size) self.FontPreview.setFont(font) self.FontPreview.setStyleSheet(u'background-color: %s; color: %s' % \ - (self.bg_color, self.font_color)) + (self.bg_color, self.font_color)) \ No newline at end of file diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index f3998e5a5..9dfc2df1c 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -71,7 +71,7 @@ class BiblePlugin(Plugin): self.ImportBibleItem.setObjectName(u'ImportBibleItem') import_menu.addAction(self.ImportBibleItem) self.ImportBibleItem.setText( - translate(u'BiblePlugin', u'&Bible')) + translate('BiblePlugin', '&Bible')) # Signals and slots QtCore.QObject.connect(self.ImportBibleItem, QtCore.SIGNAL(u'triggered()'), self.onBibleImportClick) @@ -99,4 +99,4 @@ class BiblePlugin(Plugin): def can_delete_theme(self, theme): if self.settings_tab.bible_theme == theme: return False - return True + return True \ No newline at end of file diff --git a/openlp/plugins/bibles/forms/bibleimportwizard.py b/openlp/plugins/bibles/forms/bibleimportwizard.py index 99fd703c8..ed7c175a7 100644 --- a/openlp/plugins/bibles/forms/bibleimportwizard.py +++ b/openlp/plugins/bibles/forms/bibleimportwizard.py @@ -309,7 +309,7 @@ class Ui_BibleImportWizard(object): def retranslateUi(self, BibleImportWizard): BibleImportWizard.setWindowTitle( - translate(u'BiblesPlugin.ImportWizardForm', u'Bible Import Wizard')) + translate('BiblesPlugin.ImportWizardForm', 'Bible Import Wizard')) self.TitleLabel.setText( u'%s' % \ translate(u'BiblesPlugin.ImportWizardForm', @@ -325,61 +325,60 @@ class Ui_BibleImportWizard(object): translate(u'BiblesPlugin.ImportWizardForm', u'Select the import format, and where to import from.')) self.FormatLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', u'Format:')) + translate('BiblesPlugin.ImportWizardForm', 'Format:')) self.FormatComboBox.setItemText(0, - translate(u'BiblesPlugin.ImportWizardForm', u'OSIS')) + translate('BiblesPlugin.ImportWizardForm', 'OSIS')) self.FormatComboBox.setItemText(1, - translate(u'BiblesPlugin.ImportWizardForm', u'CSV')) + translate('BiblesPlugin.ImportWizardForm', 'CSV')) self.FormatComboBox.setItemText(2, - translate(u'BiblesPlugin.ImportWizardForm', u'OpenSong')) + translate('BiblesPlugin.ImportWizardForm', 'OpenSong')) self.FormatComboBox.setItemText(3, - translate(u'BiblesPlugin.ImportWizardForm', u'Web Download')) + translate('BiblesPlugin.ImportWizardForm', 'Web Download')) self.OsisLocationLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', u'File Location:')) + translate('BiblesPlugin.ImportWizardForm', 'File Location:')) self.BooksLocationLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', u'Books Location:')) + translate('BiblesPlugin.ImportWizardForm', 'Books Location:')) self.VerseLocationLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', u'Verse Location:')) + translate('BiblesPlugin.ImportWizardForm', 'Verse Location:')) self.OpenSongFileLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', u'Bible Filename:')) + translate('BiblesPlugin.ImportWizardForm', 'Bible Filename:')) self.LocationLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', u'Location:')) + translate('BiblesPlugin.ImportWizardForm', 'Location:')) self.LocationComboBox.setItemText(0, - translate(u'BiblesPlugin.ImportWizardForm', u'Crosswalk')) + translate('BiblesPlugin.ImportWizardForm', 'Crosswalk')) self.LocationComboBox.setItemText(1, - translate(u'BiblesPlugin.ImportWizardForm', u'BibleGateway')) + translate('BiblesPlugin.ImportWizardForm', 'BibleGateway')) self.BibleLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', u'Bible:')) + translate('BiblesPlugin.ImportWizardForm', 'Bible:')) self.WebDownloadTabWidget.setTabText( self.WebDownloadTabWidget.indexOf(self.DownloadOptionsTab), - translate(u'BiblesPlugin.ImportWizardForm', u'Download Options')) + translate('BiblesPlugin.ImportWizardForm', 'Download Options')) self.AddressLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', u'Server:')) + translate('BiblesPlugin.ImportWizardForm', 'Server:')) self.UsernameLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', u'Username:')) + translate('BiblesPlugin.ImportWizardForm', 'Username:')) self.PasswordLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', u'Password:')) + translate('BiblesPlugin.ImportWizardForm', 'Password:')) self.WebDownloadTabWidget.setTabText( self.WebDownloadTabWidget.indexOf(self.ProxyServerTab), translate(u'BiblesPlugin.ImportWizardForm', u'Proxy Server (Optional)')) self.LicenseDetailsPage.setTitle( - translate(u'BiblesPlugin.ImportWizardForm', u'License Details')) + translate('BiblesPlugin.ImportWizardForm', 'License Details')) self.LicenseDetailsPage.setSubTitle( translate(u'BiblesPlugin.ImportWizardForm', u'Set up the Bible\'s license details.')) self.VersionNameLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', u'Version Name:')) + translate('BiblesPlugin.ImportWizardForm', 'Version Name:')) self.CopyrightLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', u'Copyright:')) + translate('BiblesPlugin.ImportWizardForm', 'Copyright:')) self.PermissionLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', u'Permission:')) + translate('BiblesPlugin.ImportWizardForm', 'Permission:')) self.ImportPage.setTitle( - translate(u'BiblesPlugin.ImportWizardForm', u'Importing')) + translate('BiblesPlugin.ImportWizardForm', 'Importing')) self.ImportPage.setSubTitle( translate(u'BiblesPlugin.ImportWizardForm', u'Please wait while your Bible is imported.')) self.ImportProgressLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', u'Ready.')) + translate('BiblesPlugin.ImportWizardForm', 'Ready.')) self.ImportProgressBar.setFormat(u'%p%') - diff --git a/openlp/plugins/bibles/forms/importwizardform.py b/openlp/plugins/bibles/forms/importwizardform.py index fbaa2ec14..0dbcbad5e 100644 --- a/openlp/plugins/bibles/forms/importwizardform.py +++ b/openlp/plugins/bibles/forms/importwizardform.py @@ -224,7 +224,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): Show the file open dialog for the OSIS file. """ self.getFileName( - translate(u'BiblesPlugin.ImportWizardForm', u'Open OSIS File'), + translate('BiblesPlugin.ImportWizardForm', 'Open OSIS File'), self.OSISLocationEdit) def onBooksFileButtonClicked(self): @@ -232,7 +232,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): Show the file open dialog for the books CSV file. """ self.getFileName( - translate(u'BiblesPlugin.ImportWizardForm', u'Open Books CSV File'), + translate('BiblesPlugin.ImportWizardForm', 'Open Books CSV File'), self.BooksLocationEdit) def onCsvVersesFileButtonClicked(self): @@ -249,7 +249,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): Show the file open dialog for the OpenSong file. """ self.getFileName( - translate(u'BiblesPlugin.ImportWizardForm', u'Open OpenSong Bible'), + translate('BiblesPlugin.ImportWizardForm', 'Open OpenSong Bible'), self.OpenSongFileEdit) def onCancelButtonClicked(self, checked): @@ -389,7 +389,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): self.ImportProgressBar.setMaximum(1188) self.ImportProgressBar.setValue(0) self.ImportProgressLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', u'Starting import...')) + translate('BiblesPlugin.ImportWizardForm', 'Starting import...')) Receiver.send_message(u'openlp_process_events') def performImport(self): @@ -458,4 +458,3 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): self.finishButton.setVisible(True) self.cancelButton.setVisible(False) Receiver.send_message(u'openlp_process_events') - diff --git a/openlp/plugins/bibles/lib/biblestab.py b/openlp/plugins/bibles/lib/biblestab.py index 763347784..2b693d797 100644 --- a/openlp/plugins/bibles/lib/biblestab.py +++ b/openlp/plugins/bibles/lib/biblestab.py @@ -45,7 +45,7 @@ class BiblesTab(SettingsTab): def setupUi(self): self.setObjectName(u'BiblesTab') - self.tabTitleVisible = translate(u'BiblesPlugin,BiblesTab', u'Bibles') + self.tabTitleVisible = translate('BiblesPlugin,BiblesTab', 'Bibles') self.BibleLayout = QtGui.QHBoxLayout(self) self.BibleLayout.setSpacing(8) self.BibleLayout.setMargin(8) @@ -150,34 +150,34 @@ class BiblesTab(SettingsTab): def retranslateUi(self): self.VerseDisplayGroupBox.setTitle( - translate(u'BiblesPlugin,BiblesTab', u'Verse Display')) + translate('BiblesPlugin,BiblesTab', 'Verse Display')) self.NewChaptersCheckBox.setText( translate(u'BiblesPlugin,BiblesTab', u'Only show new chapter numbers')) self.LayoutStyleLabel.setText( - translate(u'BiblesPlugin,BiblesTab', u'Layout Style:')) + translate('BiblesPlugin,BiblesTab', 'Layout Style:')) self.DisplayStyleLabel.setText( - translate(u'BiblesPlugin,BiblesTab', u'Display Style:')) + translate('BiblesPlugin,BiblesTab', 'Display Style:')) self.BibleThemeLabel.setText( - translate(u'BiblesPlugin,BiblesTab', u'Bible Theme:')) + translate('BiblesPlugin,BiblesTab', 'Bible Theme:')) self.LayoutStyleComboBox.setItemText(0, - translate(u'BiblesPlugin,BiblesTab', u'verse per slide')) + translate('BiblesPlugin,BiblesTab', 'verse per slide')) self.LayoutStyleComboBox.setItemText(1, - translate(u'BiblesPlugin,BiblesTab', u'verse per line')) + translate('BiblesPlugin,BiblesTab', 'verse per line')) self.LayoutStyleComboBox.setItemText(2, - translate(u'BiblesPlugin,BiblesTab', u'continuous')) + translate('BiblesPlugin,BiblesTab', 'continuous')) self.DisplayStyleComboBox.setItemText(0, - translate(u'BiblesPlugin,BiblesTab', u'No brackets')) + translate('BiblesPlugin,BiblesTab', 'No brackets')) self.DisplayStyleComboBox.setItemText(1, - translate(u'BiblesPlugin,BiblesTab', u'( and )')) + translate('BiblesPlugin,BiblesTab', '( and )')) self.DisplayStyleComboBox.setItemText(2, - translate(u'BiblesPlugin,BiblesTab', u'{ and }')) + translate('BiblesPlugin,BiblesTab', '{ and }')) self.DisplayStyleComboBox.setItemText(3, - translate(u'BiblesPlugin,BiblesTab', u'[ and ]')) + translate('BiblesPlugin,BiblesTab', '[ and ]')) self.ChangeNoteLabel.setText(translate(u'BiblesPlugin.BiblesTab', u'Note:\nChanges don\'t affect verses already in the service')) self.BibleDualCheckBox.setText( - translate(u'BiblesPlugin,BiblesTab', u'Display Dual Bible Verses')) + translate('BiblesPlugin,BiblesTab', 'Display Dual Bible Verses')) def onBibleThemeComboBoxChanged(self): self.bible_theme = self.BibleThemeComboBox.currentText() @@ -246,4 +246,4 @@ class BiblesTab(SettingsTab): # Not Found id = 0 self.bible_theme = u'' - self.BibleThemeComboBox.setCurrentIndex(id) + self.BibleThemeComboBox.setCurrentIndex(id) \ No newline at end of file diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 377803b19..93fe6a52f 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -316,7 +316,7 @@ class BibleDB(QtCore.QObject): else: log.debug(u'OpenLP failed to find book %s', book) QtGui.QMessageBox.information(self.bible_plugin.media_item, - translate(u'BibleDB', u'Book not found'), + translate('BibleDB', 'Book not found'), translate(u'BibleDB', u'The book you requested could not ' u'be found in this bible. Please check your spelling ' u'and that this is a complete bible not just one ' @@ -391,4 +391,4 @@ class BibleDB(QtCore.QObject): log.debug(books) log.debug(u'...............................Verses ') verses = self.session.query(Verse).all() - log.debug(verses) + log.debug(verses) \ No newline at end of file diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 1d8739346..07a7cdca9 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -70,7 +70,7 @@ class BibleMediaItem(MediaManagerItem): return unicode(obj) def initPluginNameVisible(self): - self.PluginNameVisible = translate(u'BiblesPlugin.MediaItem', u'Bible') + self.PluginNameVisible = translate('BiblesPlugin.MediaItem', 'Bible') def requiredIcons(self): MediaManagerItem.requiredIcons(self) @@ -147,7 +147,7 @@ class BibleMediaItem(MediaManagerItem): self.QuickMessage.setObjectName(u'QuickMessage') self.QuickLayout.addWidget(self.QuickMessage, 6, 0, 1, 3) self.SearchTabWidget.addTab(self.QuickTab, - translate(u'BiblesPlugin.MediaItem', u'Quick')) + translate('BiblesPlugin.MediaItem', 'Quick')) QuickSpacerItem = QtGui.QSpacerItem(20, 35, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.QuickLayout.addItem(QuickSpacerItem, 6, 2, 1, 1) @@ -232,7 +232,7 @@ class BibleMediaItem(MediaManagerItem): self.AdvancedMessage.setObjectName(u'AdvancedMessage') self.AdvancedLayout.addWidget(self.AdvancedMessage, 8, 0, 1, 3) self.SearchTabWidget.addTab(self.AdvancedTab, - translate(u'BiblesPlugin.MediaItem', u'Advanced')) + translate('BiblesPlugin.MediaItem', 'Advanced')) # Add the search tab widget to the page layout self.PageLayout.addWidget(self.SearchTabWidget) # Combo Boxes @@ -291,47 +291,47 @@ class BibleMediaItem(MediaManagerItem): def retranslateUi(self): log.debug(u'retranslateUi') self.QuickVersionLabel.setText( - translate(u'BiblesPlugin.MediaItem', u'Version:')) + translate('BiblesPlugin.MediaItem', 'Version:')) self.QuickSecondVersionLabel.setText( - translate(u'BiblesPlugin.MediaItem', u'Dual:')) + translate('BiblesPlugin.MediaItem', 'Dual:')) self.QuickSearchLabel.setText( - translate(u'BiblesPlugin.MediaItem', u'Search Type:')) + translate('BiblesPlugin.MediaItem', 'Search Type:')) self.QuickSearchLabel.setText( - translate(u'BiblesPlugin.MediaItem', u'Find:')) + translate('BiblesPlugin.MediaItem', 'Find:')) self.QuickSearchButton.setText( - translate(u'BiblesPlugin.MediaItem', u'Search')) + translate('BiblesPlugin.MediaItem', 'Search')) self.QuickClearLabel.setText( - translate(u'BiblesPlugin.MediaItem', u'Results:')) + translate('BiblesPlugin.MediaItem', 'Results:')) self.AdvancedVersionLabel.setText( - translate(u'BiblesPlugin.MediaItem', u'Version:')) + translate('BiblesPlugin.MediaItem', 'Version:')) self.AdvancedSecondBibleLabel.setText( - translate(u'BiblesPlugin.MediaItem', u'Dual:')) + translate('BiblesPlugin.MediaItem', 'Dual:')) self.AdvancedBookLabel.setText( - translate(u'BiblesPlugin.MediaItem', u'Book:')) + translate('BiblesPlugin.MediaItem', 'Book:')) self.AdvancedChapterLabel.setText( - translate(u'BiblesPlugin.MediaItem', u'Chapter:')) + translate('BiblesPlugin.MediaItem', 'Chapter:')) self.AdvancedVerseLabel.setText( - translate(u'BiblesPlugin.MediaItem', u'Verse:')) + translate('BiblesPlugin.MediaItem', 'Verse:')) self.AdvancedFromLabel.setText( - translate(u'BiblesPlugin.MediaItem', u'From:')) + translate('BiblesPlugin.MediaItem', 'From:')) self.AdvancedToLabel.setText( - translate(u'BiblesPlugin.MediaItem', u'To:')) + translate('BiblesPlugin.MediaItem', 'To:')) self.AdvancedClearLabel.setText( - translate(u'BiblesPlugin.MediaItem', u'Results:')) + translate('BiblesPlugin.MediaItem', 'Results:')) self.AdvancedSearchButton.setText( - translate(u'BiblesPlugin.MediaItem', u'Search')) + translate('BiblesPlugin.MediaItem', 'Search')) self.QuickSearchComboBox.addItem( - translate(u'BiblesPlugin.MediaItem', u'Verse Search')) + translate('BiblesPlugin.MediaItem', 'Verse Search')) self.QuickSearchComboBox.addItem( - translate(u'BiblesPlugin.MediaItem', u'Text Search')) + translate('BiblesPlugin.MediaItem', 'Text Search')) self.ClearQuickSearchComboBox.addItem( - translate(u'BiblesPlugin.MediaItem', u'Clear')) + translate('BiblesPlugin.MediaItem', 'Clear')) self.ClearQuickSearchComboBox.addItem( - translate(u'BiblesPlugin.MediaItem', u'Keep')) + translate('BiblesPlugin.MediaItem', 'Keep')) self.ClearAdvancedSearchComboBox.addItem( - translate(u'BiblesPlugin.MediaItem', u'Clear')) + translate('BiblesPlugin.MediaItem', 'Clear')) self.ClearAdvancedSearchComboBox.addItem( - translate(u'BiblesPlugin.MediaItem', u'Keep')) + translate('BiblesPlugin.MediaItem', 'Keep')) def initialise(self): log.debug(u'bible manager initialise') @@ -385,7 +385,7 @@ class BibleMediaItem(MediaManagerItem): def onNoBookFound(self): QtGui.QMessageBox.critical(self, - translate(u'BiblesPlugin.MediaItem', u'No Book Found'), + translate('BiblesPlugin.MediaItem', 'No Book Found'), translate(u'BiblesPlugin.MediaItem', u'No matching book could be found in this Bible.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok), @@ -556,9 +556,9 @@ class BibleMediaItem(MediaManagerItem): if not service_item.title: service_item.title = u'%s %s' % (book, verse_text) elif service_item.title.find( - translate(u'BiblesPlugin.MediaItem', u'etc')) == -1: + translate('BiblesPlugin.MediaItem', 'etc')) == -1: service_item.title = u'%s, %s' % (service_item.title, - translate(u'BiblesPlugin.MediaItem', u'etc')) + translate('BiblesPlugin.MediaItem', 'etc')) if len(self.parent.settings_tab.bible_theme) == 0: service_item.theme = None else: @@ -612,7 +612,7 @@ class BibleMediaItem(MediaManagerItem): if self.verses == 0: self.AdvancedSearchButton.setEnabled(False) self.AdvancedMessage.setText( - translate(u'BiblesPlugin.MediaItem', u'Bible not fully loaded')) + translate('BiblesPlugin.MediaItem', 'Bible not fully loaded')) else: self.AdvancedSearchButton.setEnabled(True) self.AdvancedMessage.setText(u'') @@ -660,4 +660,3 @@ class BibleMediaItem(MediaManagerItem): def searchByReference(self, bible, search): log.debug(u'searchByReference %s, %s', bible, search) self.search_results = self.parent.manager.get_verses(bible, search) - diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index b2df50257..d4458815f 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -88,7 +88,7 @@ class OpenSongBible(BibleDB): Receiver.send_message(u'openlp_process_events') self.wizard.incrementProgressBar( QtCore.QString('%s %s %s' % ( - translate(u'BiblesPlugin.Opensong', u'Importing'), \ + translate('BiblesPlugin.Opensong', 'Importing'), \ db_book.name, chapter.attrib[u'n']))) self.commit() except IOError: @@ -103,4 +103,3 @@ class OpenSongBible(BibleDB): else: return success - diff --git a/openlp/plugins/custom/lib/customtab.py b/openlp/plugins/custom/lib/customtab.py index a12fd8354..13260ac2a 100644 --- a/openlp/plugins/custom/lib/customtab.py +++ b/openlp/plugins/custom/lib/customtab.py @@ -36,7 +36,7 @@ class CustomTab(SettingsTab): def setupUi(self): self.setObjectName(u'CustomTab') - self.tabTitleVisible = translate(u'CustomPlugin.CustomTab', u'Custom') + self.tabTitleVisible = translate('CustomPlugin.CustomTab', 'Custom') self.CustomLayout = QtGui.QFormLayout(self) self.CustomLayout.setObjectName(u'CustomLayout') self.CustomModeGroupBox = QtGui.QGroupBox(self) @@ -58,7 +58,7 @@ class CustomTab(SettingsTab): self.CustomModeGroupBox.setTitle(translate(u'CustomPlugin.CustomTab', u'Custom Display')) self.DisplayFooterCheckBox.setText( - translate(u'CustomPlugin.CustomTab', u'Display Footer')) + translate('CustomPlugin.CustomTab', 'Display Footer')) def onDisplayFooterCheckBoxChanged(self, check_state): self.displayFooter = False @@ -74,4 +74,4 @@ class CustomTab(SettingsTab): def save(self): QtCore.QSettings().setValue(self.settingsSection + u'/display footer', - QtCore.QVariant(self.displayFooter)) + QtCore.QVariant(self.displayFooter)) \ No newline at end of file diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 4cbf25476..a347e3cd2 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -66,7 +66,7 @@ class CustomMediaItem(MediaManagerItem): QtCore.SIGNAL(u'custom_preview'), self.onPreviewClick) def initPluginNameVisible(self): - self.PluginNameVisible = translate(u'CustomPlugin.MediaItem', u'Custom') + self.PluginNameVisible = translate('CustomPlugin.MediaItem', 'Custom') def requiredIcons(self): MediaManagerItem.requiredIcons(self) @@ -176,4 +176,4 @@ class CustomMediaItem(MediaManagerItem): else: raw_footer.append(u'') service_item.raw_footer = raw_footer - return True + return True \ No newline at end of file diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index 51e2db23b..7dd1a8e04 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -106,7 +106,7 @@ class PresentationMediaItem(MediaManagerItem): self.DisplayTypeLabel.setObjectName(u'SearchTypeLabel') self.DisplayLayout.addWidget(self.DisplayTypeLabel, 0, 0, 1, 1) self.DisplayTypeLabel.setText( - translate(u'PresentationPlugin.MediaItem', u'Present using:')) + translate('PresentationPlugin.MediaItem', 'Present using:')) # Add the Presentation widget to the page layout self.PageLayout.addWidget(self.PresentationWidget) @@ -235,4 +235,4 @@ class PresentationMediaItem(MediaManagerItem): if self.controllers[controller].enabled: if filetype in self.controllers[controller].alsosupports: return controller - return None + return None \ No newline at end of file diff --git a/openlp/plugins/presentations/lib/presentationtab.py b/openlp/plugins/presentations/lib/presentationtab.py index 89546e039..a8f3036fc 100644 --- a/openlp/plugins/presentations/lib/presentationtab.py +++ b/openlp/plugins/presentations/lib/presentationtab.py @@ -97,7 +97,7 @@ class PresentationTab(SettingsTab): checkbox = self.PresenterCheckboxes[controller.name] checkbox.setText( u'%s %s' % (controller.name, - translate(u'PresentationPlugin.PresentationTab', u'available'))) + translate('PresentationPlugin.PresentationTab', 'available'))) def load(self): for key in self.controllers: @@ -114,4 +114,4 @@ class PresentationTab(SettingsTab): checkbox = self.PresenterCheckboxes[controller.name] QtCore.QSettings().setValue( self.settingsSection + u'/' + controller.name, - QtCore.QVariant(checkbox.checkState())) + QtCore.QVariant(checkbox.checkState())) \ No newline at end of file diff --git a/openlp/plugins/remotes/lib/remotetab.py b/openlp/plugins/remotes/lib/remotetab.py index 1f91002fb..83f335382 100644 --- a/openlp/plugins/remotes/lib/remotetab.py +++ b/openlp/plugins/remotes/lib/remotetab.py @@ -36,7 +36,7 @@ class RemoteTab(SettingsTab): def setupUi(self): self.setObjectName(u'RemoteTab') - self.tabTitleVisible = translate(u'RemotePlugin.RemoteTab', u'Remotes') + self.tabTitleVisible = translate('RemotePlugin.RemoteTab', 'Remotes') self.RemoteLayout = QtGui.QFormLayout(self) self.RemoteLayout.setObjectName(u'RemoteLayout') self.RemoteModeGroupBox = QtGui.QGroupBox(self) @@ -54,7 +54,7 @@ class RemoteTab(SettingsTab): def retranslateUi(self): self.RemoteModeGroupBox.setTitle( - translate(u'RemotePlugin.RemoteTab', u'Remotes Receiver Port')) + translate('RemotePlugin.RemoteTab', 'Remotes Receiver Port')) def load(self): self.RemotePortSpinBox.setValue( @@ -63,4 +63,4 @@ class RemoteTab(SettingsTab): def save(self): QtCore.QSettings().setValue(self.settingsSection + u'/remote port', - QtCore.QVariant(self.RemotePortSpinBox.value())) + QtCore.QVariant(self.RemotePortSpinBox.value())) \ No newline at end of file diff --git a/openlp/plugins/songs/forms/authorsdialog.py b/openlp/plugins/songs/forms/authorsdialog.py index 082b1133d..972cab053 100644 --- a/openlp/plugins/songs/forms/authorsdialog.py +++ b/openlp/plugins/songs/forms/authorsdialog.py @@ -75,10 +75,10 @@ class Ui_AuthorsDialog(object): def retranslateUi(self, AuthorsDialog): AuthorsDialog.setWindowTitle( - translate(u'SongsPlugin.AuthorsForm', u'Author Maintenance')) + translate('SongsPlugin.AuthorsForm', 'Author Maintenance')) self.DisplayLabel.setText( - translate(u'SongsPlugin.AuthorsForm', u'Display name:')) + translate('SongsPlugin.AuthorsForm', 'Display name:')) self.FirstNameLabel.setText( - translate(u'SongsPlugin.AuthorsForm', u'First name:')) + translate('SongsPlugin.AuthorsForm', 'First name:')) self.LastNameLabel.setText( - translate(u'SongsPlugin.AuthorsForm', u'Last name:')) + translate('SongsPlugin.AuthorsForm', 'Last name:')) diff --git a/openlp/plugins/songs/forms/authorsform.py b/openlp/plugins/songs/forms/authorsform.py index 4d7fcd4b6..5c5f019d9 100644 --- a/openlp/plugins/songs/forms/authorsform.py +++ b/openlp/plugins/songs/forms/authorsform.py @@ -80,27 +80,27 @@ class AuthorsForm(QtGui.QDialog, Ui_AuthorsDialog): def accept(self): if not self.FirstNameEdit.text(): QtGui.QMessageBox.critical( - self, translate(u'SongsPlugin.AuthorsForm', u'Error'), - translate(u'SongsPlugin.AuthorsForm', - u'You need to type in the first name of the author.'), + self, translate('SongsPlugin.AuthorsForm', 'Error'), + translate('SongsPlugin.AuthorsForm', + 'You need to type in the first name of the author.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.FirstNameEdit.setFocus() return False elif not self.LastNameEdit.text(): QtGui.QMessageBox.critical( - self, translate(u'SongsPlugin.AuthorsForm', u'Error'), - translate(u'SongsPlugin.AuthorsForm', - u'You need to type in the last name of the author.'), + self, translate('SongsPlugin.AuthorsForm', 'Error'), + translate('SongsPlugin.AuthorsForm', + 'You need to type in the last name of the author.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.LastNameEdit.setFocus() return False elif not self.DisplayEdit.text(): if QtGui.QMessageBox.critical( - self, translate(u'SongsPlugin.AuthorsForm', u'Error'), - translate(u'SongsPlugin.AuthorsForm', - u'You haven\'t set a display name for the ' - u'author, would you like me to combine the first and ' - u'last names for you?'), + self, translate('SongsPlugin.AuthorsForm', 'Error'), + translate('SongsPlugin.AuthorsForm', + 'You haven\'t set a display name for the ' + 'author, would you like me to combine the first and ' + 'last names for you?'), QtGui.QMessageBox.StandardButtons( QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) ) == QtGui.QMessageBox.Yes: diff --git a/openlp/plugins/songs/forms/editsongdialog.py b/openlp/plugins/songs/forms/editsongdialog.py index 8d145d8bf..34e15ce59 100644 --- a/openlp/plugins/songs/forms/editsongdialog.py +++ b/openlp/plugins/songs/forms/editsongdialog.py @@ -440,7 +440,7 @@ class Ui_EditSongDialog(object): self.TitleLabel.setText( translate('SongsPlugin.EditSongForm', '&Title:')) self.AlternativeTitleLabel.setText( - translate('SongsPlugin.EditSongForm', 'Alt&ernative Title:')) + translate('SongsPlugin.EditSongForm', 'Alt&ernate Title:')) self.LyricsLabel.setText( translate('SongsPlugin.EditSongForm', '&Lyrics:')) self.VerseOrderLabel.setText( @@ -478,11 +478,11 @@ class Ui_EditSongDialog(object): self.ThemeGroupBox.setTitle( translate('SongsPlugin.EditSongForm', 'Theme')) self.ThemeAddButton.setText( - translate('SongsPlugin.EditSongForm', 'Add a &Theme')) + translate('SongsPlugin.EditSongForm', 'New &Theme')) self.CopyrightGroupBox.setTitle( translate('SongsPlugin.EditSongForm', 'Copyright Information')) self.CopyrightInsertButton.setText( - translate('SongsPlugin.EditSongForm', u'\xa9')) + translate('SongsPlugin.EditSongForm', '\xa9')) self.CCLILabel.setText( translate('SongsPlugin.EditSongForm', 'CCLI Number:')) self.CommentsGroupBox.setTitle( diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index e3bec84c2..46c5e237c 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -96,7 +96,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.previewButton = QtGui.QPushButton() self.previewButton.setObjectName(u'previewButton') self.previewButton.setText( - translate(u'SongsPlugin.EditSongForm', u'Save && Preview')) + translate('SongsPlugin.EditSongForm', 'Save && Preview')) self.ButtonBox.addButton( self.previewButton, QtGui.QDialogButtonBox.ActionRole) QtCore.QObject.connect(self.ButtonBox, @@ -516,26 +516,26 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.SongTabWidget.setCurrentIndex(0) self.TitleEditItem.setFocus() QtGui.QMessageBox.critical(self, - translate(u'SongsPlugin.EditSongForm', u'Error'), - translate(u'SongsPlugin.EditSongForm', - u'You need to enter a song title.')) + translate('SongsPlugin.EditSongForm', 'Error'), + translate('SongsPlugin.EditSongForm', + 'You need to type in a song title.')) return False if self.VerseListWidget.rowCount() == 0: self.SongTabWidget.setCurrentIndex(0) self.VerseListWidget.setFocus() QtGui.QMessageBox.critical(self, - translate(u'SongsPlugin.EditSongForm', u'Error'), - translate('uSongsPlugin.EditSongForm', - u'You need to enter some verses.')) + translate('SongsPlugin.EditSongForm', 'Error'), + translate('SongsPlugin.EditSongForm', + 'You need to type in at least one verse.')) return False if self.AuthorsListView.count() == 0: self.SongTabWidget.setCurrentIndex(1) self.AuthorsListView.setFocus() answer = QtGui.QMessageBox.warning(self, - translate(u'SongsPlugin.EditSongForm', u'Warning'), + translate('SongsPlugin.EditSongForm', 'Warning'), translate('SongsPlugin.EditSongForm', - 'You have set no author.\n' - 'Do you want to add now a author?'), + 'You have not added any authors for this song. Do you ' + 'want to add an author now?'), QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) if answer == QtGui.QMessageBox.Yes: return False @@ -564,7 +564,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): for verse in verses: valid = valid + u', ' + verse QtGui.QMessageBox.critical(self, - translate(u'SongsPlugin.EditSongForm', u'Error'), + translate('SongsPlugin.EditSongForm', 'Error'), unicode(translate('SongsPlugin.EditSongForm', 'The verse order is invalid. There is no verse ' 'corresponding to %s. Valid entries are %s.')) % \ @@ -575,10 +575,11 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.SongTabWidget.setCurrentIndex(0) self.VerseOrderEdit.setFocus() answer = QtGui.QMessageBox.warning(self, - translate(u'SongsPlugin.EditSongForm', u'Warning'), + translate('SongsPlugin.EditSongForm', 'Warning'), unicode(translate('SongsPlugin.EditSongForm', - '%s is not addressed in the verse order.\n' - 'Do you want to save anyhow?')) % \ + 'You have not used %s anywhere in the verse ' + 'order. Are you sure you want to save the song ' + 'like this?')) % \ verse_names[count].replace(u':', u' '), QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) if answer == QtGui.QMessageBox.No: diff --git a/openlp/plugins/songs/forms/editversedialog.py b/openlp/plugins/songs/forms/editversedialog.py index 086f4c416..900606a82 100644 --- a/openlp/plugins/songs/forms/editversedialog.py +++ b/openlp/plugins/songs/forms/editversedialog.py @@ -87,9 +87,9 @@ class Ui_EditVerseDialog(object): def retranslateUi(self, EditVerseDialog): EditVerseDialog.setWindowTitle( - translate(u'SongsPlugin.EditVerseForm', u'Edit Verse')) + translate('SongsPlugin.EditVerseForm', 'Edit Verse')) self.VerseTypeLabel.setText( - translate(u'SongsPlugin.EditVerseForm', u'Verse Type:')) + translate('SongsPlugin.EditVerseForm', '&Verse type:')) self.VerseTypeComboBox.setItemText(0, VerseType.to_string(VerseType.Verse)) self.VerseTypeComboBox.setItemText(1, @@ -105,5 +105,5 @@ class Ui_EditVerseDialog(object): self.VerseTypeComboBox.setItemText(6, VerseType.to_string(VerseType.Other)) self.InsertButton.setText( - translate(u'SongsPlugin.EditVerseForm', u'Insert')) + translate('SongsPlugin.EditVerseForm', '&Insert')) diff --git a/openlp/plugins/songs/forms/songbookdialog.py b/openlp/plugins/songs/forms/songbookdialog.py index 06e27d04e..eb791cd69 100644 --- a/openlp/plugins/songs/forms/songbookdialog.py +++ b/openlp/plugins/songs/forms/songbookdialog.py @@ -67,7 +67,7 @@ class Ui_SongBookDialog(object): def retranslateUi(self, SongBookDialog): SongBookDialog.setWindowTitle( - translate(u'SongsPlugin.SongBookForm', u'Edit Book')) - self.NameLabel.setText(translate(u'SongsPlugin.SongBookForm', u'Name:')) + translate('SongsPlugin.SongBookForm', 'Edit Book')) + self.NameLabel.setText(translate('SongsPlugin.SongBookForm', '&Name:')) self.PublisherLabel.setText( - translate(u'SongsPlugin.SongBookForm', u'Publisher:')) + translate('SongsPlugin.SongBookForm', '&Publisher:')) diff --git a/openlp/plugins/songs/forms/songbookform.py b/openlp/plugins/songs/forms/songbookform.py index ad85990f0..fd447db22 100644 --- a/openlp/plugins/songs/forms/songbookform.py +++ b/openlp/plugins/songs/forms/songbookform.py @@ -50,9 +50,9 @@ class SongBookForm(QtGui.QDialog, Ui_SongBookDialog): def accept(self): if not self.NameEdit.text(): QtGui.QMessageBox.critical( - self, translate(u'SongsPlugin.SongBookForm', u'Error'), - translate(u'SongsPlugin.SongBookForm', - u'You need to type in a book name!'), + self, translate('SongsPlugin.SongBookForm', 'Error'), + translate('SongsPlugin.SongBookForm', + 'You need to type in a name for the book.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.NameEdit.setFocus() return False diff --git a/openlp/plugins/songs/forms/songimportform.py b/openlp/plugins/songs/forms/songimportform.py index b4bb9f4b0..8a830d720 100644 --- a/openlp/plugins/songs/forms/songimportform.py +++ b/openlp/plugins/songs/forms/songimportform.py @@ -104,43 +104,43 @@ class ImportWizardForm(QtGui.QWizard, Ui_SongImportWizard): if source_format == SongFormat.OpenLyrics: if self.OpenLyricsFileListWidget.count() == 0: QtGui.QMessageBox.critical(self, - translate(u'SongsPlugin.SongImportForm', - u'No OpenLyrics Files Selected'), - translate(u'SongsPlugin.SongImportForm', - u'You need to add at least one OpenLyrics ' - u'song file to import from.'), + translate('SongsPlugin.ImportWizardForm', + 'No OpenLyrics Files Selected'), + translate('SongsPlugin.ImportWizardForm', + 'You need to add at least one OpenLyrics ' + 'song file to import from.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.OpenLyricsAddButton.setFocus() return False elif source_format == SongFormat.OpenSong: if self.OpenSongFileListWidget.count() == 0: QtGui.QMessageBox.critical(self, - translate(u'SongsPlugin.SongImportForm', - u'No OpenSong Files Selected'), - translate(u'SongsPlugin.SongImportForm', - u'You need to add at least one OpenSong ' - u'song file to import from.'), + translate('SongsPlugin.ImportWizardForm', + 'No OpenSong Files Selected'), + translate('SongsPlugin.ImportWizardForm', + 'You need to add at least one OpenSong ' + 'song file to import from.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.OpenSongAddButton.setFocus() return False elif source_format == SongFormat.CCLI: if self.CCLIFileListWidget.count() == 0: QtGui.QMessageBox.critical(self, - translate(u'SongsPlugin.SongImportForm', - u'No CCLI Files Selected'), - translate(u'SongsPlugin.SongImportForm', - u'You need to add at least one CCLI file ' - u'to import from.'), + translate('SongsPlugin.ImportWizardForm', + 'No CCLI Files Selected'), + translate('SongsPlugin.ImportWizardForm', + 'You need to add at least one CCLI file ' + 'to import from.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.CCLIAddButton.setFocus() return False elif source_format == SongFormat.CSV: if self.CSVFilenameEdit.text().isEmpty(): QtGui.QMessageBox.critical(self, - translate(u'SongsPlugin.SongImportForm', - u'No CSV File Selected'), - translate(u'SongsPlugin.SongImportForm', - u'You need to specify a CSV file to import from.'), + translate('SongsPlugin.ImportWizardForm', + 'No CSV File Selected'), + translate('SongsPlugin.ImportWizardForm', + 'You need to specify a CSV file to import from.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.CSVFilenameEdit.setFocus() return False @@ -192,7 +192,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_SongImportWizard): self.ImportProgressBar.setMaximum(1188) self.ImportProgressBar.setValue(0) self.ImportProgressLabel.setText( - translate(u'SongsPlugin.SongImportForm', u'Starting import...')) + translate('SongsPlugin.ImportWizardForm', 'Starting import...')) Receiver.send_message(u'process_events') def performImport(self): @@ -243,14 +243,14 @@ class ImportWizardForm(QtGui.QWizard, Ui_SongImportWizard): # self.manager.save_meta_data(license_version, license_version, # license_copyright, license_permission) # self.manager.reload_bibles() -# self.ImportProgressLabel.setText(translate(u'SongsPlugin.SongImportForm', u'Finished import.')) +# self.ImportProgressLabel.setText(translate('SongsPlugin.SongImportForm', 'Finished import.')) # else: # self.ImportProgressLabel.setText( -# translate(u'SongsPlugin.SongImportForm', u'Your Bible import failed.')) +# translate('SongsPlugin.SongImportForm', 'Your Bible import failed.')) # importer.delete() def postImport(self): self.ImportProgressBar.setValue(self.ImportProgressBar.maximum()) self.finishButton.setVisible(True) self.cancelButton.setVisible(False) - Receiver.send_message(u'process_events') + Receiver.send_message(u'process_events') \ No newline at end of file diff --git a/openlp/plugins/songs/forms/songimportwizard.py b/openlp/plugins/songs/forms/songimportwizard.py index c684bd74b..34e298a3b 100644 --- a/openlp/plugins/songs/forms/songimportwizard.py +++ b/openlp/plugins/songs/forms/songimportwizard.py @@ -230,54 +230,54 @@ class Ui_SongImportWizard(object): def retranslateUi(self, SongImportWizard): SongImportWizard.setWindowTitle( - translate(u'SongsPlugin.SongImportWizard', u'Song Import Wizard')) + translate('SongsPlugin.ImportWizardForm', 'Song Import Wizard')) self.TitleLabel.setText( - '%s' % \ - translate(u'SongsPlugin.SongImportWizard', - u'Welcome to the Song Import Wizard')) + u'%s' % \ + translate('SongsPlugin.ImportWizardForm', + 'Welcome to the Song Import Wizard')) self.InformationLabel.setText( - translate(u'SongsPlugin.SongImportWizard', - u'This wizard will help you to import songs from a variety of ' - u'formats. Click the next button below to start the process by ' - u'selecting a format to import from.')) + translate('SongsPlugin.ImportWizardForm', + '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.')) self.SourcePage.setTitle( - translate(u'SongsPlugin.SongImportWizard', u'Select Import Source')) + translate('SongsPlugin.ImportWizardForm', 'Select Import Source')) self.SourcePage.setSubTitle( - translate(u'SongsPlugin.SongImportWizard', - u'Select the import format, and where to import from.')) + translate('SongsPlugin.ImportWizardForm', + 'Select the import format, and where to import from.')) self.FormatLabel.setText( - translate(u'SongsPlugin.SongImportWizard', u'Format:')) - self.FormatComboBox.setItemText(0, - translate(u'SongsPlugin.SongImportWizard', u'OpenLyrics')) - self.FormatComboBox.setItemText(1, - translate(u'SongsPlugin.SongImportWizard', u'OpenSong')) - self.FormatComboBox.setItemText(2, - translate(u'SongsPlugin.SongImportWizard', u'CCLI')) - self.FormatComboBox.setItemText(3, - translate(u'SongsPlugin.SongImportWizard', u'CSV')) + translate('SongsPlugin.ImportWizardForm', 'Format:')) + self.FormatComboBox.setItemText(0, + translate('SongsPlugin.ImportWizardForm', 'OpenLyrics')) + self.FormatComboBox.setItemText(1, + translate('SongsPlugin.ImportWizardForm', 'OpenSong')) + self.FormatComboBox.setItemText(2, + translate('SongsPlugin.ImportWizardForm', 'CCLI')) + self.FormatComboBox.setItemText(3, + translate('SongsPlugin.ImportWizardForm', 'CSV')) self.OpenLyricsAddButton.setText( - translate(u'SongsPlugin.SongImportWizard', u'Add Files...')) + translate('SongsPlugin.ImportWizardForm', 'Add Files...')) self.OpenLyricsRemoveButton.setText( - translate(u'SongsPlugin.SongImportWizard', u'Remove File(s)')) + translate('SongsPlugin.ImportWizardForm', 'Remove File(s)')) self.OpenSongAddButton.setText( - translate(u'SongsPlugin.SongImportWizard', u'Add Files...')) + translate('SongsPlugin.ImportWizardForm', 'Add Files...')) self.OpenSongRemoveButton.setText( - translate(u'SongsPlugin.SongImportWizard', u'Remove File(s)')) + translate('SongsPlugin.ImportWizardForm', 'Remove File(s)')) self.CCLIAddButton.setText( - translate(u'SongsPlugin.SongImportWizard', u'Add Files...')) + translate('SongsPlugin.ImportWizardForm', 'Add Files...')) self.CCLIRemoveButton.setText( - translate(u'SongsPlugin.SongImportWizard', u'Remove File(s)')) + translate('SongsPlugin.ImportWizardForm', 'Remove File(s)')) self.CSVFilenameLabel.setText( - translate(u'SongsPlugin.SongImportWizard', u'Filename:')) + translate('SongsPlugin.ImportWizardForm', 'Filename:')) self.CSVBrowseButton.setText( - translate(u'SongsPlugin.SongImportWizard', u'Browse...')) + translate('SongsPlugin.ImportWizardForm', 'Browse...')) self.ImportPage.setTitle( - translate(u'SongsPlugin.SongImportWizard', u'Importing')) + translate('SongsPlugin.ImportWizardForm', 'Importing')) self.ImportPage.setSubTitle( - translate(u'SongsPlugin.SongImportWizard', - u'Please wait while your songs are imported.')) + translate('SongsPlugin.ImportWizardForm', + 'Please wait while your songs are imported.')) self.ImportProgressLabel.setText( - translate(u'SongsPlugin.SongImportWizard', u'Ready.')) + translate('SongsPlugin.ImportWizardForm', 'Ready.')) self.ImportProgressBar.setFormat( - translate(u'SongsPlugin.SongImportWizard', u'%p%')) + translate('SongsPlugin.ImportWizardForm', '%p%')) diff --git a/openlp/plugins/songs/forms/songmaintenanceform.py b/openlp/plugins/songs/forms/songmaintenanceform.py index 89c4dcc41..1dfa76764 100644 --- a/openlp/plugins/songs/forms/songmaintenanceform.py +++ b/openlp/plugins/songs/forms/songmaintenanceform.py @@ -239,7 +239,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): self._deleteItem( self.AuthorsListWidget, self.songmanager.get_author, self.songmanager.delete_author, self.resetAuthors, - translate(u'SongsPlugin.SongMaintenanceForm', u'Delete Author'), + translate('SongsPlugin.SongMaintenanceForm', 'Delete Author'), translate(u'SongsPlugin.SongMaintenanceForm', u'Are you sure you want to delete the selected author?'), translate(u'SongsPlugin.SongMaintenanceForm', @@ -255,7 +255,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): self._deleteItem( self.TopicsListWidget, self.songmanager.get_topic, self.songmanager.delete_topic, self.resetTopics, - translate(u'SongsPlugin.SongMaintenanceForm', u'Delete Topic'), + translate('SongsPlugin.SongMaintenanceForm', 'Delete Topic'), translate(u'SongsPlugin.SongMaintenanceForm', u'Are you sure you want to delete the selected topic?'), translate(u'SongsPlugin.SongMaintenanceForm', @@ -271,10 +271,10 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): self._deleteItem( self.BooksListWidget, self.songmanager.get_book, self.songmanager.delete_book, self.resetBooks, - translate(u'SongsPlugin.SongMaintenanceForm', u'Delete Book'), + translate('SongsPlugin.SongMaintenanceForm', 'Delete Book'), translate(u'SongsPlugin.SongMaintenanceForm', u'Are you sure you want to delete the selected book?'), translate(u'SongsPlugin.SongMaintenanceForm', u'This book can\'t be deleted, it is currently ' u'assigned to at least one song.'), - translate(u'SongsPlugin.SongMaintenanceForm', u'No book selected!')) + translate('SongsPlugin.SongMaintenanceForm', 'No book selected!')) \ No newline at end of file diff --git a/openlp/plugins/songs/forms/topicsdialog.py b/openlp/plugins/songs/forms/topicsdialog.py index 3ed9da3c3..463367683 100644 --- a/openlp/plugins/songs/forms/topicsdialog.py +++ b/openlp/plugins/songs/forms/topicsdialog.py @@ -61,6 +61,6 @@ class Ui_TopicsDialog(object): def retranslateUi(self, TopicsDialog): TopicsDialog.setWindowTitle( - translate(u'SongsPlugin.TopicsForm', u'Topic Maintenance')) + translate('SongsPlugin.TopicsForm', 'Topic Maintenance')) self.NameLabel.setText( - translate(u'SongsPlugin.TopicsForm', u'Topic name:')) + translate('SongsPlugin.TopicsForm', 'Topic name:')) \ No newline at end of file diff --git a/openlp/plugins/songs/forms/topicsform.py b/openlp/plugins/songs/forms/topicsform.py index fc5efe38d..5c2b18e2d 100644 --- a/openlp/plugins/songs/forms/topicsform.py +++ b/openlp/plugins/songs/forms/topicsform.py @@ -49,11 +49,11 @@ class TopicsForm(QtGui.QDialog, Ui_TopicsDialog): def accept(self): if not self.NameEdit.text(): QtGui.QMessageBox.critical( - self, translate(u'SongsPlugin.TopicsForm', u'Error'), + self, translate('SongsPlugin.TopicsForm', 'Error'), translate(u'SongsPlugin.TopicsForm', u'You need to type in a topic name!'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.NameEdit.setFocus() return False else: - return QtGui.QDialog.accept(self) + return QtGui.QDialog.accept(self) \ No newline at end of file diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index 6c637ea9e..15303ccf7 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -47,19 +47,19 @@ class VerseType(object): The type to return a string for """ if verse_type == VerseType.Verse: - return translate(u'VerseType', u'Verse') + return translate('VerseType', 'Verse') elif verse_type == VerseType.Chorus: - return translate(u'VerseType', u'Chorus') + return translate('VerseType', 'Chorus') elif verse_type == VerseType.Bridge: - return translate(u'VerseType', u'Bridge') + return translate('VerseType', 'Bridge') elif verse_type == VerseType.PreChorus: - return translate(u'VerseType', u'Pre-Chorus') + return translate('VerseType', 'Pre-Chorus') elif verse_type == VerseType.Intro: - return translate(u'VerseType', u'Intro') + return translate('VerseType', 'Intro') elif verse_type == VerseType.Ending: - return translate(u'VerseType', u'Ending') + return translate('VerseType', 'Ending') elif verse_type == VerseType.Other: - return translate(u'VerseType', u'Other') + return translate('VerseType', 'Other') @staticmethod def from_string(verse_type): @@ -96,4 +96,4 @@ from songstab import SongsTab from mediaitem import SongMediaItem from sofimport import SofImport from oooimport import OooImport -from songimport import SongImport +from songimport import SongImport \ No newline at end of file diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index ab70c9659..9935fbd15 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -60,7 +60,7 @@ class SongMediaItem(MediaManagerItem): self.remoteSong = -1 def initPluginNameVisible(self): - self.PluginNameVisible = translate(u'SongsPlugin.MediaItem', u'Song') + self.PluginNameVisible = translate('SongsPlugin.MediaItem', 'Song') def requiredIcons(self): MediaManagerItem.requiredIcons(self) @@ -69,7 +69,7 @@ class SongMediaItem(MediaManagerItem): self.addToolbarSeparator() ## Song Maintenance Button ## self.addToolbarButton( - translate(u'SongsPlugin.MediaItem', u'Song Maintenance'), + translate('SongsPlugin.MediaItem', 'Song Maintenance'), translate(u'SongsPlugin.MediaItem', u'Maintain the lists of authors, topics and books'), ':/songs/song_maintenance.png', self.onSongMaintenanceClick) @@ -141,21 +141,21 @@ class SongMediaItem(MediaManagerItem): def retranslateUi(self): self.SearchTextLabel.setText( - translate(u'SongsPlugin.MediaItem', u'Search:')) + translate('SongsPlugin.MediaItem', 'Search:')) self.SearchTypeLabel.setText( - translate(u'SongsPlugin.MediaItem', u'Type:')) + translate('SongsPlugin.MediaItem', 'Type:')) self.ClearTextButton.setText( - translate(u'SongsPlugin.MediaItem', u'Clear')) + translate('SongsPlugin.MediaItem', 'Clear')) self.SearchTextButton.setText( - translate(u'SongsPlugin.MediaItem', u'Search')) + translate('SongsPlugin.MediaItem', 'Search')) def initialise(self): self.SearchTypeComboBox.addItem( - translate(u'SongsPlugin.MediaItem', u'Titles')) + translate('SongsPlugin.MediaItem', 'Titles')) self.SearchTypeComboBox.addItem( - translate(u'SongsPlugin.MediaItem', u'Lyrics')) + translate('SongsPlugin.MediaItem', 'Lyrics')) self.SearchTypeComboBox.addItem( - translate(u'SongsPlugin.MediaItem', u'Authors')) + translate('SongsPlugin.MediaItem', 'Authors')) self.configUpdated() def onSearchTextButtonClick(self): @@ -207,7 +207,7 @@ class SongMediaItem(MediaManagerItem): for author in searchresults: for song in author.songs: song_detail = unicode( - translate(u'SongsPlugin.MediaItem', u'%s (%s)')) % \ + translate('SongsPlugin.MediaItem', '%s (%s)')) % \ (author.display_name, song.title) song_name = QtGui.QListWidgetItem(song_detail) song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id)) @@ -301,7 +301,7 @@ class SongMediaItem(MediaManagerItem): translate(u'SongsPlugin.MediaItem', u'Delete %d songs?')) % len(items) ans = QtGui.QMessageBox.question(self, - translate(u'SongsPlugin.MediaItem', u'Delete Confirmation'), + translate('SongsPlugin.MediaItem', 'Delete Confirmation'), del_message, QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok| QtGui.QMessageBox.Cancel), @@ -374,9 +374,9 @@ class SongMediaItem(MediaManagerItem): raw_footer.append(author_list) raw_footer.append(song.copyright ) raw_footer.append(unicode( - translate(u'SongsPlugin.MediaItem', u'CCLI Licence: ') + ccli)) + translate('SongsPlugin.MediaItem', 'CCLI Licence: ') + ccli)) service_item.raw_footer = raw_footer service_item.audit = [ song.title, author_audit, song.copyright, song.ccli_number ] - return True + return True \ No newline at end of file diff --git a/openlp/plugins/songs/lib/songstab.py b/openlp/plugins/songs/lib/songstab.py index b69a98adb..0c8ee0f58 100644 --- a/openlp/plugins/songs/lib/songstab.py +++ b/openlp/plugins/songs/lib/songstab.py @@ -36,7 +36,7 @@ class SongsTab(SettingsTab): def setupUi(self): self.setObjectName(u'SongsTab') - self.tabTitleVisible = translate(u'SongsPlugin.SongsTab', u'Songs') + self.tabTitleVisible = translate('SongsPlugin.SongsTab', 'Songs') self.SongsLayout = QtGui.QFormLayout(self) self.SongsLayout.setObjectName(u'SongsLayout') self.SongsModeGroupBox = QtGui.QGroupBox(self) @@ -62,9 +62,9 @@ class SongsTab(SettingsTab): def retranslateUi(self): self.SongsModeGroupBox.setTitle( - translate(u'SongsPlugin.SongsTab', u'Songs Mode')) + translate('SongsPlugin.SongsTab', 'Songs Mode')) self.SearchAsTypeCheckBox.setText( - translate(u'SongsPlugin.SongsTab', u'Enable search as you type')) + translate('SongsPlugin.SongsTab', 'Enable search as you type')) self.SongBarActiveCheckBox.setText(translate(u'SongsPlugin.SongsTab', u'Display Verses on Live Tool bar')) @@ -96,4 +96,4 @@ class SongsTab(SettingsTab): settings.beginGroup(self.settingsSection) settings.setValue(u'search as type', QtCore.QVariant(self.song_search)) settings.setValue(u'display songbar', QtCore.QVariant(self.song_bar)) - settings.endGroup() + settings.endGroup() \ No newline at end of file diff --git a/openlp/plugins/songusage/forms/songusagedeletedialog.py b/openlp/plugins/songusage/forms/songusagedeletedialog.py index fc44a1c18..e7216d479 100644 --- a/openlp/plugins/songusage/forms/songusagedeletedialog.py +++ b/openlp/plugins/songusage/forms/songusagedeletedialog.py @@ -59,4 +59,4 @@ class Ui_SongUsageDeleteDialog(object): def retranslateUi(self, SongUsageDeleteDialog): SongUsageDeleteDialog.setWindowTitle( - translate(u'SongsPlugin.AuditDeleteDialog', u'Song Usage Delete')) + translate('SongsPlugin.AuditDeleteDialog', 'Song Usage Delete')) \ No newline at end of file diff --git a/openlp/plugins/songusage/forms/songusagedetaildialog.py b/openlp/plugins/songusage/forms/songusagedetaildialog.py index ecad1c707..cb1a6fec2 100644 --- a/openlp/plugins/songusage/forms/songusagedetaildialog.py +++ b/openlp/plugins/songusage/forms/songusagedetaildialog.py @@ -90,8 +90,8 @@ class Ui_SongUsageDetailDialog(object): translate(u'SongsPlugin.AuditDetailDialog', u'Song Usage Extraction')) self.DateRangeGroupBox.setTitle( - translate(u'SongsPlugin.AuditDetailDialog', u'Select Date Range')) + translate('SongsPlugin.AuditDetailDialog', 'Select Date Range')) self.ToLabel.setText( - translate(u'SongsPlugin.AuditDetailDialog', u'to')) + translate('SongsPlugin.AuditDetailDialog', 'to')) self.FileGroupBox.setTitle( - translate(u'SongsPlugin.AuditDetailDialog', u'Report Location')) + translate('SongsPlugin.AuditDetailDialog', 'Report Location')) \ No newline at end of file diff --git a/resources/i18n/openlp_af.qm b/resources/i18n/openlp_af.qm deleted file mode 100644 index 6048181b7aab574133e9e1dd1ee1a273dd0ae517..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30886 zcmb__34GPX_3zx|PI7Z|vk+57L>iDCjDRQ@EkX!{$SMhoAV?sW5D5t;0R^r9w$`1$ zwxU+8TB#e>wIbDub*a{^*5#@FwDqa2RG<4&t+rO{|NA{>=Kg+n3E1}@`H+)4b7nhp zwmGxhqwZ97B zlYpn-Gtvrg2Rs8=*8yJa;IE9CaTY$mU`)egz}Eq%0DcOH_9BJGEFB5h7jOmOC}TG5 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 diff --git a/resources/i18n/openlp_en.ts b/resources/i18n/openlp_en.ts index a00e05646..954ad5aff 100644 --- a/resources/i18n/openlp_en.ts +++ b/resources/i18n/openlp_en.ts @@ -1,5 +1,6 @@ - + + AboutForm @@ -24,7 +25,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - + Project Lead Raoul "superfly" Snyman @@ -57,14 +58,14 @@ Packagers - + Credits - - Copyright © 2004-2010 Raoul Snyman -Portions copyright © 2004-2010 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten Tinggaard + + Copyright © 2004-2010 Raoul Snyman +Portions copyright © 2004-2010 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten Tinggaard This program is 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. @@ -197,99 +198,102 @@ This General Public License does not permit incorporating your program into prop - + License - + Contribute - + Close - - build + + build %s - AlertForm + AlertsPlugin - + + &Alert + + + + + Show an alert message + + + + + AlertsPlugin.AlertForm + + Alert Message - + Alert &text: - + &Parameter(s): - + &New - + &Save - + &Delete - + &Delete - + Displ&ay - + Display && Cl&ose - + &Close - + Item selected to Add - + Missing data - AlertsTab + AlertsPlugin.AlertsTab - - pt - - - - - Location: - - - - - Font Color: + + Alerts @@ -298,650 +302,865 @@ This General Public License does not permit incorporating your program into prop - + Font Name: - - Preview - - - - - Alerts + + Font Color: - Alert timeout: - - - - - openlp.org - - - - Background Color: - - s + + Font Size: + + + + + pt - Bottom + Alert timeout: - + + s + + + + + Location: + + + + + Preview + + + + + openlp.org + + + + Top - - Font Size: + + Bottom AmendThemeForm - - Slide Height is %s rows - - - - - First Color: - - - - - Second Color: - - - - - Background Color: - - - - + Theme Maintenance - + Theme Name: - - Background: + + Visibility: - + Opaque - + Transparent - - Background Type: + + Type: - + Solid Color - + Gradient - + Image - - <Color1> - - - - - <Color2> - - - - + Image: - - Gradient : + + Gradient: - + Horizontal - + Vertical - + Circular - - Background + + &Background - + Main Font - + Font: - - Font Color: + + Color: - + Size: - + pt - - Wrap Indentation + + Wrap indentation: - - Adjust Line Spacing + + Adjust line spacing: - + Normal - + Bold - + Italics - + Bold/Italics - - Font Weight: + + Style: - + Display Location - - Use Default Location: + + Use default location: - - X Position: + + X position: - - Y Position: + + Y position: - + Width: - + Height: - + px - - Font Main + + &Main Font - + Footer Font - - Font Footer + + &Footer Font - + Outline - - Outline Size: + + Outline size: - - Outline Color: + + Outline color: - - Show Outline: + + Show outline: - + Shadow - - Shadow Size: + + Shadow size: - - Shadow Color: + + Shadow color: - - Show Shadow: + + Show shadow: - + Alignment - - Horizontal Align: + + Horizontal align: - + Left - + Right - + Center - - Vertical Align: + + Vertical align: - + Top - + Middle - + Bottom - + Slide Transition - - Transition Active: + + Transition active: - - Other Options + + &Other Options - + Preview - - - AuditDeleteDialog - - Song Usage Delete + + All Files + + + + + Select Image + + + + + First color: + + + + + Second color: + + + + + Slide height is %s rows. - AuditDetailDialog + BibleDB - - Song Usage Extraction - - - - - Select Date Range - - - - - to - - - - - Report Location - - - - - AuthorsForm - - - You need to type in the first name of the author. - - - - - You haven't set a display name for the author, would you like me to combine the first and last names for you? - - - - - Error - - - - - You need to type in the last name of the author. - - - - - Author Maintenance - - - - - Display name: - - - - - First name: - - - - - Last name: - - - - - BibleMediaItem - - - Quick - - - - - Bible - - - - - Clear - - - - - Search - - - - - To: - - - - - Text Search - - - - - Search Type: - - - - - No matching book could be found in this Bible. - - - - - Dual: - - - - - Chapter: - - - - - Bible not fully loaded - - - - - No Book Found - - - - - Keep - - - - - Results: - - - - - Verse Search - - - - - Version: - - - - - From: - - - - - Find: - - - - - Book: - - - - - Advanced - - - - - Verse: + + Book not found BiblePlugin - - <strong>Bible Plugin</strong><br />This plugin allows bible verses from different sources to be displayed on the screen during the service. + + &Bible - BiblesTab - - - ( and ) - - - - - verse per line - - - - - Display Style: - - - - - continuous - - - - - [ and ] - - - - - Display Dual Bible Verses - - + BiblesPlugin,BiblesTab Bibles - - - Only show new chapter numbers - - Verse Display - - - No brackets - - - - - { and } - - - - - Note: -Changes don't affect verses already in the service - - - - - verse per slide - - + Layout Style: + + + + + Display Style: + + + + Bible Theme: - - Layout Style: + + verse per slide + + + + + verse per line + + + + + continuous + + + + + No brackets + + + + + ( and ) + + + + + { and } + + + + + [ and ] + + + + + Display Dual Bible Verses - CustomMediaItem + BiblesPlugin.ImportWizardForm + + + Bible Import Wizard + + + + + Format: + + + + + OSIS + + + + + CSV + + + + + OpenSong + + + + + Web Download + + + + + File Location: + + + + + Books Location: + + + + + Verse Location: + + + + + Bible Filename: + + + + + Location: + + + + + Crosswalk + + + + + BibleGateway + + + + + Bible: + + + + + Download Options + + + + + Server: + + + + + Username: + + + + + Password: + + + + + License Details + + + + + Version Name: + + + + + Copyright: + + + + + Permission: + + + + + Importing + + + + + Ready. + + + + + Open OSIS File + + + + + Open Books CSV File + + + + + Open OpenSong Bible + + + + + Starting import... + + + + + BiblesPlugin.MediaItem + + + Bible + + + + + Quick + + + + + Advanced + + + + + Version: + + + + + Dual: + + + + + Search Type: + + + + + Find: + + + + + Search + + + + + Results: + + + + + Book: + + + + + Chapter: + + + + + Verse: + + + + + From: + + + + + To: + + + + + Verse Search + + + + + Text Search + + + + + Clear + + + + + Keep + + + + + No Book Found + + + + + etc + + + + + Bible not fully loaded + + + + + BiblesPlugin.Opensong + + + Importing + + + + + CustomPlugin.CustomTab + + + Custom + + + + + Display Footer + + + + + CustomPlugin.EditCustomForm + + + Edit Custom Slides + + + + + Move slide Up 1 + + + + + Move slide down 1 + + + + + Title: + + + + + Add New + + + + + Add new slide at bottom + + + + + Edit + + + + + Edit selected slide + + + + + Edit All + + + + + Edit all slides + + + + + Save + + + + + Replace edited slide + + + + + Delete + + + + + Delete selected slide + + + + + Clear + + + + + Clear edit area + + + + + Split Slide + + + + + Add slide split + + + + + Theme: + + + + + Credits: + + + + + Save && Preview + Save && Preview + + + + Error + Error + + + + You need to enter a title + + + + + You need to enter a slide + + + + + CustomPlugin.MediaItem Custom @@ -949,412 +1168,75 @@ Changes don't affect verses already in the service - CustomPlugin + CustomPlugin.editCustomForm - - <b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br> - - - - - CustomTab - - - Custom - - - - - Custom Display - - - - - Display Footer + + You have unsaved data, please save or clear DisplayTab - + Displays - - - EditCustomForm - - You need to enter a title + + Amend Display Settings - - Error + + Default Settings - - You need to enter a slide + + X - - Save && Preview + + Y - - Edit Custom Slides + + Height - - Move slide Up 1 + + Width - - Move slide down 1 + + Amend Settings - - Title: - - - - - Add New - - - - - Add new slide at bottom - - - - - Edit - - - - - Edit selected slide - - - - - Edit All - - - - - Edit all slides - - - - - Save - - - - - Replace edited slide - - - - - Delete - - - - - Delete selected slide - - - - - Clear - - - - - Clear edit area - - - - - Split Slide - - - - - Add slide split - - - - - Theme: - - - - - Credits: - - - - - You have unsaved data, please save or clear - - - - - EditSongForm - - - You need to enter a song title. - - - - - You need to enter some verses. - - - - - Save && Preview - - - - - Error - - - - - Song Editor - - - - - Title: - - - - - Alternative Title: - - - - - Lyrics: - - - - - Verse Order: - - - - - Add - - - - - Edit - - - - - Edit All - - - - - Delete - - - - - Title && Lyrics - - - - - Authors - - - - - &Add to Song - - - - - &Remove - - - - - &Manage Authors, Topics, Books - - - - - Topic - - - - - A&dd to Song - - - - - R&emove - - - - - Song Book - - - - - Authors, Topics && Book - - - - - Theme - - - - - Add a Theme - - - - - Copyright Information - - - - - CCLI Number: - - - - - Comments - - - - - Theme, Copyright Info && Comments - - - - - bitped - - - - - v - - - - - c - - - - - Invalid verse entry - Vx or Cx - - - - - Invalid verse entry, values must be I,B,T,P,E,O,Vx,Cx - - - - - EditVerseForm - - - Edit Verse - - - - - Verse Type - - - - - Intro - - - - - Verse - - - - - Pre-Chorus - - - - - Chorus - - - - - Bridge - - - - - Ending - - - - - Other - - - - - Number - - - - - Chrous + + Override Output Display GeneralTab - + CCLI Details - + SongSelect Password: - + primary @@ -1369,37 +1251,37 @@ Changes don't affect verses already in the service
- + Application Settings - + SongSelect Username: - + CCLI Number: - + CCLI number: - + Automatically open the last service - + Preview Next Song from Service Manager - + Show blank screen warning - + Prompt to save Service before starting New @@ -1409,12 +1291,12 @@ Changes don't affect verses already in the service
- + Show the splash screen - + Screen @@ -1429,57 +1311,19 @@ Changes don't affect verses already in the service
- - ImageMediaItem - - - Select Image(s) - - - - - Image(s) - - - - - Image - - - - - Images (*.jpg *.jpeg *.gif *.png *.bmp);; All files (*) - - - - - Replace Live Background - - - - - No item selected - - - - - You must select one item - - - ImagePlugin - <b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any songs which are rendered will use the selected image from the background instead of the one provied by the theme.<br> + <b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any songs which are rendered will use the selected image from the background instead of the one provied by the theme.<br> - ImageTab + ImagePlugin.ImageTab - - sec + + Images @@ -1488,288 +1332,68 @@ Changes don't affect verses already in the service - + Slide Loop Delay: - - Images + + sec - ImportWizardForm + ImagePlugin.MediaItem - - Bible Exists + + Image - - Invalid Bible Location + + Select Image(s) - - You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. + + All Files - - Empty Copyright + + Replace Live Background - - Empty Version Name + + You must select an item to delete. - - Invalid OpenSong Bible + + Image(s) - - Your Bible import failed. + + No item selected - - Finished import. - - - - - This Bible already exists! Please import a different Bible or first delete the existing one. - - - - - Starting import... - - - - - Invalid Books File - - - - - Invalid Verse File - - - - - Open OpenSong Bible - - - - - Bible Import Wizard - - - - - Welcome to the Bible Import Wizard - - - - - 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. - - - - - Select Import Source - - - - - Select the import format, and where to import from. - - - - - Format: - - - - - OSIS - - - - - CSV - - - - - OpenSong - - - - - Web Download - - - - - File Location: - - - - - Books Location: - - - - - Verse Location: - - - - - Bible Filename: - - - - - Location: - - - - - Crosswalk - - - - - BibleGateway - - - - - Bible: - - - - - Download Options - - - - - Server: - - - - - Username: - - - - - Password: - - - - - Proxy Server (Optional) - - - - - License Details - - - - - Set up the Bible's license details. - - - - - Version Name: - - - - - Copyright: - - - - - Permission: - - - - - Importing - - - - - Please wait while your Bible is imported. - - - - - Ready. - - - - - You need to specify a file to import your Bible from. - - - - - You need to specify a file with books of the Bible to use in the import. - - - - - You need to specify a file of Bible verses to import. - - - - - You need to specify an OpenSong Bible file to import. - - - - - You need to specify a version name for your Bible. - - - - - Open OSIS File - - - - - Open Books CSV File - - - - - Open Verses CSV File + + You must select one item LanguageManager - + Language - + After restart new Language settings will be used. @@ -1777,789 +1401,567 @@ Changes don't affect verses already in the service MainWindow - + The Main Display has been blanked out - + OpenLP Version Updated - + Save Changes to Service? - + OpenLP Main Display Blanked - + OpenLP 2.0 - + English - - Default Theme: - - - - + &File - + &Import - + &Export - + &Options - + &View - + M&ode - - &Tools - - - - - &Help - - - - - Media Manager - - - - - Service Manager - - - - - Theme Manager - - - - - &New - - - - - New Service - - - - - Create a new Service - - - - - Ctrl+N - - - - - &Open - - - - - Open Service - - - - - Open an existing service - - - - - Ctrl+O - - - - - &Save - - - - - Save Service - - - - - Save the current service to disk - - - - - Ctrl+S - - - - - Save &As... - - - - - Save Service As - - - - - Save the current service under a new name - - - - - F12 - - - - - E&xit - - - - - Quit OpenLP - - - - - Alt+F4 - - - - - &Theme - - - - + &Language - - Look && &Feel + + &Tools - - &Settings + + &Help + + + + + Media Manager + + + + + Service Manager + + + + + Theme Manager + + + + + &New + + + + + New Service + + + + + Create a new Service - &Media Manager + Ctrl+N - Toggle Media Manager + &Open + + + + + Open Service - Toggle the visibility of the Media Manager + Open an existing service - F8 + Ctrl+O - &Theme Manager + &Save - Toggle Theme Manager + Save Service - - Toggle the visibility of the Theme Manager + + Save the current service to disk + + + + + Ctrl+S - F10 + Save &As... - &Service Manager + Save Service As - - Toggle Service Manager + + Save the current service under a new name - - Toggle the visibility of the Service Manager + + F12 - F9 + E&xit - &Preview Panel + Quit OpenLP - Toggle Preview Panel + Alt+F4 - - Toggle the visibility of the Preview Panel - - - - - F11 + + &Theme - &Plugin List + Look && &Feel - List the Plugins + &Settings - Alt+F7 - - - - - &User Guide + &Media Manager - &About + Toggle Media Manager - - More information about OpenLP - - - - - Ctrl+F1 + + Toggle the visibility of the Media Manager - &Online Help + F8 - &Web Site + &Theme Manager - &Auto Detect + Toggle Theme Manager - - Choose System language, if available + + Toggle the visibility of the Theme Manager + + + + + F10 - Set the interface language to %1 + &Service Manager - Add &Tool... + Toggle Service Manager - - Add an application to the list of tools - - - - - &Preview Pane + + Toggle the visibility of the Service Manager + F9 + + + + + &Preview Panel + + + + + Toggle Preview Panel + + + + + Toggle the visibility of the Preview Panel + + + + + F11 + + + + + &Plugin List + + + + + List the Plugins + + + + + Alt+F7 + + + + + &User Guide + + + + + &About + + + + + More information about OpenLP + + + + + Ctrl+F1 + + + + + &Online Help + + + + + &Web Site + + + + + &Auto Detect + + + + + Choose System language, if available + + + + + Set the interface language to %s + + + + + Add &Tool... + + + + + Add an application to the list of tools + + + + + &Preview Pane + + + + &Live - - Version %s of OpenLP is now available for download (you are currently running version %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 - - Your service has changed. Do you want to save those changes? + + Your service has changed. Do you want to save those changes? + + + + + Default Theme: %s MediaManagerItem - - &Preview - - - - + You must select one or more items - - Load a new - - - - - &Edit - - - - + &Add to Service - + Send the selected item live - + Add the selected item(s) to the service - - Edit the selected - - - - + Delete the selected item - - Add a new - - - - + &Show Live - + Preview the selected item - - Import a + + Import %s - - &Delete + + Import a %s - + + Load %s + + + + + Load a new %s + + + + + New %s + + + + + Add a new %s + + + + + Edit %s + + + + + Edit the selected %s + + + + + Delete %s + + + + + Preview %s + + + + + Add %s to Service + + + + + &Edit %s + + + + + &Delete %s + + + + + &Preview %s + + + + &Add to selected Service Item - + No Items Selected - + + 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. - + No items selected - + No Service Item Selected - + You must select an existing service item to add to. - + Invalid Service Item - - MediaMediaItem - - - Select Media - - - - - Media - - - - - Videos (%s);;Audio (%s);;All files (*) - - - - - Replace Live Background - - - - - No item selected - - - - - You must select one item - - - MediaPlugin - + <b>Media Plugin</b><br>This plugin allows the playing of audio and video media - OpenLPExportForm + MediaPlugin.MediaItem - - openlp.org Song Exporter + + Media - - Select openlp.org export filename: + + Select Media - - Full Song List - - - - - Song Title - - - - - Author - - - - - Select All - - - - - Lyrics - - - - - Title - - - - - Song Export List - - - - - Remove Selected - - - - - Progress: - - - - - Ready to export - - - - - Export - - - - - Close + + You must select an item to delete. - OpenLPImportForm + OpenLP - - openlp.org Song Importer - - - - - Select openlp.org songfile to import: - - - - - Import File Song List - - - - - Song Title - - - - - Author - - - - - Select All - - - - - Lyrics - - - - - Title - - - - - Song Import List - - - - - Remove Selected - - - - - Progress: - - - - - Ready to import - - - - - Import - - - - - Close - - - - - OpenSongBible - - - Importing - - - - - OpenSongExportForm - - - OpenSong Song Exporter - - - - - Select OpenSong song folder: - - - - - Full Song List - - - - - Song Title - - - - - Author - - - - - Select All - - - - - Lyrics - - - - - Title - - - - - Song Export List - - - - - Remove Selected - - - - - Progress: - - - - - Ready to export - - - - - Export - - - - - Close - - - - - OpenSongImportForm - - - OpenSong Song Importer - - - - - OpenSong Folder: - - - - - Progress: - - - - - Ready to import - - - - - Import - - - - - Close + + Image Files @@ -2571,107 +1973,74 @@ You can download the latest version from http://openlp.org - + Plugin Details - + Version: - + TextLabel - + About: - + Status: - + Active - + Inactive - - - PresentationMediaItem - - Presentation + + %s (Inactive) - + + %s (Active) + + + + + %s (Disabled) + + + + + PresentationPlugin.MediaItem + + Present using: - - - Select Presentation(s) - - - - - A presentation with that filename already exists. - - - - - File exists - - - - - Automatic - - - - - Presentations (%s) - - - PresentationPlugin + PresentationPlugin.PresentationTab - - <b>Presentation Plugin</b> <br> Delivers 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. - - - - - PresentationTab - - - Available Controllers - - - - + available - - - Presentations - - - RemoteTab + RemotePlugin.RemoteTab Remotes @@ -2683,14 +2052,6 @@ You can download the latest version from http://openlp.org - - RemotesPlugin - - - <b>Remote Plugin</b><br>This plugin provides the ability to send messages to a running version of openlp on a different computer via a web browser or other app<br>The Primary use for this would be to send alerts from a creche - - - ServiceItemEditForm @@ -2699,17 +2060,17 @@ You can download the latest version from http://openlp.org - + Up - + Delete - + Down @@ -2717,147 +2078,178 @@ You can download the latest version from http://openlp.org ServiceManager - + Save Service - + Save Changes to Service? - + Open Service - + Move to top - + Create a new service - + Save this service - + Theme: - + Delete From Service - + + &Change Item Theme + + + + &Preview Verse - + &Live Verse - + New Service - + &Notes - + + Select a theme for the service + + + + Move up order - + Move down order - + Load an existing service - + Move to end - + &Edit Item - + Move to &top - + Move &up - + Move &down - + Move to &bottom - + &Delete From Service - + &Add New Item - + &Add to Selected Item - + &Maintain Item - + Your service is unsaved, do you want to save those changes before creating a new one? - + + OpenLP Service Files (*.osz) + + + + Your current service is unsaved, do you want to save the changes before opening a new one? - + + Error + Error + + + + 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 @@ -2865,7 +2257,7 @@ You can download the latest version from http://openlp.org ServiceNoteForm - + Service Item Notes @@ -2881,446 +2273,753 @@ You can download the latest version from http://openlp.org SlideController - + Move to previous - + Edit and re-preview Song - + Delay between slides in seconds - + Go to Verse - + Start continuous loop - + Live - + Start playing media - + Move to live - + Move to last - - Verse - - - - + Move to next - + Move to first - + Blank Screen - + Preview - + Stop continuous loop - + s - + Theme Screen - + Hide Screen + + + SongsPlugin.AuditDeleteDialog - - Chorus + + Song Usage Delete - SongBookForm + SongsPlugin.AuditDetailDialog - - Error + + Select Date Range - - You need to type in a book name! + + to - - Edit Book - - - - - Name: - - - - - Publisher: + + Report Location - SongMaintenanceForm + SongsPlugin.AuthorsForm - + + Author Maintenance + Author Maintenance + + + + Display name: + &Display name: + + + + First name: + &First name: + + + + Last name: + &Last name: + + + Error - + Error - - No author selected! - + + You need to type in the first name of the author. + You need to type in the first name of the author. - - Are you sure you want to delete the selected book? - + + You need to type in the last name of the author. + You need to type in the last name of the author. - - Delete Topic - + + You haven't set a display name for the author, would you like me to combine the first and last names for you? + You haven't set a display name for the author, would you like me to combine the first and last names for you? + + + + SongsPlugin.EditSongForm + + + Song Editor + Song Editor - - Delete Book - + + &Title: + &Title: - - No book selected! - + + &Lyrics: + &Lyrics: - - Are you sure you want to delete the selected author? - + + &Verse Order: + &Verse order: - - Delete Author - + + &Add + &Add - - No topic selected! - + + &Edit + &Edit - - Are you sure you want to delete the selected topic? - + + Ed&it All + Ed&it All - - Song Maintenance - + + &Delete + &Delete - + + Title && Lyrics + Title && Lyrics + + + Authors + Authors + + + + &Add to Song + &Add to Song + + + + &Remove + &Remove + + + + &Manage Authors, Topics, Books + &Manage Authors, Topics, Books + + + + Topic + Topic + + + + A&dd to Song + A&dd to Song + + + + R&emove + R&emove + + + + Song Book + Song Book + + + + Authors, Topics && Book + Authors, Topics && Book + + + + Theme + Theme + + + + Copyright Information + Copyright Information + + + + CCLI Number: + CCLI number: + + + + Comments + Comments + + + + Theme, Copyright Info && Comments + Theme, Copyright Info && Comments + + + + Add Author + Add Author + + + + This author does not exist, do you want to add them? + This author does not exist, do you want to add them? + + + + No Author Selected + No Author Selected + + + + 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. + 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. + + + + Add Topic + Add Topic + + + + This topic does not exist, do you want to add it? + This topic does not exist, do you want to add it? + + + + No Topic Selected + No Topic Selected + + + + 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. + 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. + + + + Add Book + Add Book + + + + This song book does not exist, do you want to add it? + This song book does not exist, do you want to add it? + + + + The verse order is invalid. There is no verse corresponding to %s. Valid entries are %s. + The verse order is invalid. There is no verse corresponding to %s. Valid entries are %s. + + + + Alt&ernate Title: + Alt&ernate Title: + + + + New &Theme + New &Theme + + + + © + © + + + + Save && Preview + Save && Preview + + + + Error + Error + + + + You need to type in a song title. + You need to type in a song title. + + + + You need to type in at least one verse. + You need to type in at least one verse. + + + + Warning + Warning + + + + You have not added any authors for this song. Do you want to add an author now? + You have not added any authors for this song. Do you want to add an author now? + + + + You have not used %s anywhere in the verse order. Are you sure you want to save the song like this? + You have not used %s anywhere in the verse order. Are you sure you want to save the song like this? + + + + SongsPlugin.EditVerseForm + + + Edit Verse + Edit Verse + + + + &Verse type: + &Verse type: + + + + &Insert + &Insert + + + + SongsPlugin.ImportWizardForm + + + No OpenLyrics Files Selected - - Topics + + You need to add at least one OpenLyrics song file to import from. - - Books/Hymnals + + No OpenSong Files Selected - - Add + + You need to add at least one OpenSong song file to import from. - - Edit + + No CCLI Files Selected - - Delete + + You need to add at least one CCLI file to import from. - - Couldn't add your author. + + No CSV File Selected - - Couldn't add your topic. + + You need to specify a CSV file to import from. - - Couldn't add your book. + + Song Import Wizard - - Couldn't save your author. + + Welcome to the Song Import Wizard - - Couldn't save your topic. + + 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. - - Couldn't save your book. + + Select Import Source - - This author can't be deleted, they are currently assigned to at least one song. + + Select the import format, and where to import from. - - This topic can't be deleted, it is currently assigned to at least one song. + + Format: - - This book can't be deleted, it is currently assigned to at least one song. + + OpenLyrics + + + + + OpenSong + + + + + CCLI + + + + + CSV + + + + + Add Files... + + + + + Remove File(s) + + + + + Filename: + + + + + Browse... + + + + + Importing + + + + + Please wait while your songs are imported. + + + + + Ready. + + + + + %p% + + + + + Starting import... - SongMediaItem + SongsPlugin.MediaItem - - CCLI Licence: - - - - + Song - - Maintain the lists of authors, topics and books - - - - - Titles - - - - - Lyrics - - - - - Type: - - - - - Clear - + + Song Maintenance + Song Maintenance - Search - - - - - Authors - - - - Search: - - Song Maintenance + + Type: - + + Clear + + + + + Search + + + + + Titles + + + + + Lyrics + + + + + Authors + Authors + + + %s (%s) - - Delete song? - - - - - Delete %d songs? - - - - + Delete Confirmation - - - SongUsageDeleteForm - - Delete Selected Song Usage Events? - - - - - Are you sure you want to delete selected Song Usage data? + + CCLI Licence: - SongUsageDetailForm + SongsPlugin.SongBookForm - - Output File Location + + Edit Book + Edit Book + + + + &Name: + &Name: + + + + &Publisher: + &Publisher: + + + + Error + Error + + + + You need to type in a name for the book. + You need to type in a name for the book. + + + + SongsPlugin.SongMaintenanceForm + + + Song Maintenance + Song Maintenance + + + + Authors + Authors + + + + Topics + Topics + + + + Books/Hymnals + Books/Hymnals + + + + &Add + &Add + + + + &Edit + &Edit + + + + &Delete + &Delete + + + + Delete Author + + + + + Delete Topic + + + + + Delete Book + + + + + No book selected! - SongUsagePlugin - - - <b>SongUsage Plugin</b><br>This plugin records the use of songs and when they have been used during a live service - - - - - SongsPlugin - - - <b>Song Plugin</b> <br>This plugin allows Songs to be managed and displayed.<br> - - - - - Open Songs of Fellowship file - - - - - Open documents or presentations - - - - - SongsTab - - - Songs Mode - - + SongsPlugin.SongsTab Songs - - Enable search as you type + + Songs Mode - - Display Verses on Live Tool bar + + Enable search as you type + + + + + SongsPlugin.TopicsForm + + + Topic Maintenance + + + + + Topic name: + + + + + Error + Error + + + + Splashscreen + + + Starting + + + + + Splash Screen ThemeManager - + Import Theme - - Create a new theme - - - - + Delete Theme - + Error - - - - - Make Global - - - - - Delete a theme - - - - - Edit a theme - + Error @@ -3328,371 +3027,225 @@ You can download the latest version from http://openlp.org - + Export Theme - + Theme Exists - - Delete theme - - - - + Save Theme - (%s) - - default - - - - + Select Theme Import File - + New Theme - - Import a theme + + Create a new theme. + + + + + Edit a theme. + + + + + Delete a theme. + + + + + Import a theme. + + + + + Export a theme. + + + + + &Edit Theme + + + + + &Delete Theme - Export theme + Set As &Global Default - - A theme with this name already exists, would you like to overwrite it? + + E&xport Theme - - Export a theme + + %s (default) - + You are unable to delete the default theme. - - Theme %s is use in %s plugin + + Theme %s is use in %s plugin. - - Theme %s is use by Service Manager + + Theme %s is use by the service manager. - + You have not selected a theme. - + + Theme Exported + + + + + Your theme has been successfully exported. + + + + + Theme Export Failed + + + + + Your theme could not be exported due to an error. + + + + + Theme (*.*) + + + + + File is not a valid theme. +The content encoding is not UTF-8. + + + + File is not a valid theme. + + + A theme with this name already exists. Would you like to overwrite it? + + ThemesTab - - Theme level - - - - - Global theme - - - - - Global level - - - - + 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. - - Service level - - - - + Use the global theme, overriding any themes associated with either the service or the songs. - - - Song level - - Themes - + 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. - - - TopicsForm - - You need to type in a topic name! + + Global Theme - - Error + + Theme Level - - Topic Maintenance + + S&ong Level - - Topic name: + + &Service Level + + + + + &Global Level - alertsPlugin + VerseType - - Show an alert message + + Verse - - <b>Alerts Plugin</b><br>This plugin controls the displaying of alerts on the presentations screen + + Chorus - - &Alert - - - - - export_menu - - - &Bible + + Bridge - - &Song + + Pre-Chorus - - OpenSong + + Intro - - openlp.org 1.0 + + Ending - - OpenLP 2.0 - - - - - import_menu - - - &Bible - - - - - &Song - - - - - OpenSong - - - - - openlp.org 1.0 - - - - - Import songs in openlp.org 1.0 format - - - - - OpenLP 2.0 - - - - - Import songs in OpenLP 2.0 format - - - - - Songs of Fellowship - - - - - Import songs from the VOLS1_2.RTF, sof3words.rtf and sof4words.rtf supplied with the music books - - - - - Generic Document/Presentation Import - - - - - Import songs from Word/Writer/Powerpoint/Impress - - - - - self - - - Amend Display Settings - - - - - Default Settings - - - - - X - - - - - 0 - - - - - Y - - - - - Height - - - - - Width - - - - - Amend Settings - - - - - Override Output Display - - - - - self.ImportSongMenu - - - Import Error - - - - - Error importing Songs of Fellowship file. -OpenOffice.org must be installed and you must be using an unedited copy of the RTF included with the Songs of Fellowship Music Editions - - - - - self.splash_screen - - - Starting - - - - - Splash Screen - - - - - tools_menu - - - &Song Usage - - - - - &Delete recorded data - - - - - Delete song usage to specified date - - - - - &Extract recorded data - - - - - Generate report on Song Usage - - - - - Song Usage Status - - - - - Start/Stop live song usage recording + + Other diff --git a/resources/i18n/openlp_en_GB.qm b/resources/i18n/openlp_en_GB.qm deleted file mode 100644 index 5a31382cf6d76e4b0ad2cc29f4110b0c77c2de18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29107 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 KB-n^h|GxqMJx3e> diff --git a/resources/i18n/openlp_en_ZA.qm b/resources/i18n/openlp_en_ZA.qm deleted file mode 100644 index 344aec034fd47537dbabafa9656a5f1229f64c09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19540 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 bStPQbxvzv(Y4AzBikkjq3FW~-g!=yrjl$pK diff --git a/resources/i18n/openlp_es.qm b/resources/i18n/openlp_es.qm deleted file mode 100644 index da03a2e0f0c8e6032763a3a0643b226baa14663b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14711 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 diff --git a/resources/i18n/openlp_et.ts b/resources/i18n/openlp_et.ts index 9ac4b8239..b84f4a108 100644 --- a/resources/i18n/openlp_et.ts +++ b/resources/i18n/openlp_et.ts @@ -1,15 +1,14 @@ - + + AboutForm - build - komplieering - - + About OpenLP OpenLP-st lähemalt + 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. @@ -26,10 +25,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 kaaluda annetamist, selleks klõpsa alumisele nupule. + About Programmist + Project Lead Raoul "superfly" Snyman @@ -89,10 +90,12 @@ Pakendajad Raoul "superfly" Snyman (Windows) + Credits Autorid + Copyright © 2004-2010 Raoul Snyman Portions copyright © 2004-2010 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten Tinggaard @@ -227,1302 +230,1202 @@ This General Public License does not permit incorporating your program into prop + License Litsents + Contribute Aita kaasa + Close Sulge + + + build %s + + - AlertForm + AlertsPlugin + + &Alert + + + + + Show an alert message + + + + + AlertsPlugin.AlertForm + + Alert Message - Teate sõnum + + Alert &text: - Teate &tekst: + + &Parameter(s): - &Parameetrid: + + &New - &Uus + &Uus + &Save - &Salvesta + &Salvesta + &Delete - &Kustuta + + Displ&ay - &Kuva + + Display && Cl&ose - Kuva && &sulge + + &Close - &Sulge + + Item selected to Add - Lisamiseks valitud kirje + + Missing data - Puuduvad andmed + - AlertsTab - - pt - pt - - - Location: - Asukoht: - - - Font Color: - Kirja värvus: - - - Font - Kirjastiil - - - Font Name: - Kirja nimi: - - - Preview - Eelvaade - + AlertsPlugin.AlertsTab + Alerts - Teated + - Alert timeout: - Teate aegumine: + + Font + - openlp.org - openlp.org + + Font Name: + + + Font Color: + + + + Background Color: - Tausta värvus: - - - s - s - - - Bottom - All - - - Top - Üleval + + Font Size: - Kirja suurus: + + + + + pt + pt + + + + Alert timeout: + + + + + s + s + + + + Location: + + + + + Preview + Eelvaade + + + + openlp.org + + + + + Top + Üleval + + + + Bottom + All AmendThemeForm - Background Color: - Tausta värvus: - - - Slide Height is %s rows - Slaidi kõrgus on %s rida - - - First Color: - Esimene värvus: - - - Second Color: - Teine värvus: - - + Theme Maintenance Kujunduste haldus + Theme Name: Kujunduse nimi: - Background: - Taust: - - + Opaque Läbipaistmatu + Transparent Läbipaistev - Background Type: - Tausta liik: - - + Solid Color Ühtlane värv + Gradient Üleminek + Image Pilt - <Color1> - <värv1> - - - <Color2> - <värv2> - - + Image: Pilt: - Gradient : - Üleminek: - - + Horizontal Horisontaalne + Vertical Vertikaalne + Circular Ümmargune - Background - Taust - - + Main Font Peamine kirjastiil + Font: Kirjastiil: - Font Color: - Kirja värvus: - - + Size: Suurus: + pt pt - Wrap Indentation - Murtud ridade taane - - - Adjust Line Spacing - Joone vahe seadmine - - + Normal Tavaline + Bold Rasvane + Italics Kursiiv + Bold/Italics Rasvane/kaldkiri - Font Weight: - Kirja jämedus: - - + Display Location Kuva asukoht - Use Default Location: - Kasutatakse vaikimisi asukohta: - - - X Position: - X-asukoht: - - - Y Position: - Y-asukoht: - - + Width: Laius: + Height: Kõrgus: + px px - Font Main - Peamine kirjastiil - - + Footer Font Jaluse kirjatüüp - Font Footer - Jaluse kirjatüüp - - + Outline Välisjoon - Outline Size: - Kontuurjoone suurus: - - - Outline Color: - Kontuurjoone värv: - - - Show Outline: - Kontuurjoon: - - + Shadow Vari - Shadow Size: - Varju suurus: - - - Shadow Color: - Varju värvus: - - - Show Shadow: - Taustal näidatakse: - - + Alignment Joondus - Horizontal Align: - Rõhtpaigutus: - - + Left Vasakul + Right Paremal + Center Keskel - Vertical Align: - Püstpaigutus: - - + Top Üleval + Middle Keskel + Bottom All + Slide Transition Slaidide üleminek - Transition Active: - Slaidisiire aktiivne: - - - Other Options - Muud valikud - - + Preview Eelvaade - - - AuditDeleteDialog - Song Usage Delete - Laulukasutuse kustutamine + + Visibility: + + + + + Type: + Liik: + + + + Gradient: + + + + + &Background + + + + + Color: + + + + + Wrap indentation: + + + + + Adjust line spacing: + + + + + Style: + + + + + Use default location: + + + + + X position: + + + + + Y position: + + + + + &Main Font + + + + + &Footer Font + + + + + Outline size: + + + + + Outline color: + + + + + Show outline: + + + + + Shadow size: + + + + + Shadow color: + + + + + Show shadow: + + + + + Horizontal align: + + + + + Vertical align: + + + + + Transition active: + + + + + &Other Options + + + + + All Files + + + + + Select Image + + + + + First color: + + + + + Second color: + + + + + Slide height is %s rows. + - AuditDetailDialog + BibleDB - Song Usage Extraction - Laulukasutuse salvestamine - - - Select Date Range - Vali kuupäevade vahemik - - - to - kuni - - - Report Location - Asukohast raporteerimine - - - - AuthorsForm - - You need to type in the first name of the author. - Pead sisestama autori eesnime. - - - You haven't set a display name for the author, would you like me to combine the first and last names for you? - Sa pole sisestanud autori kuvatavat nime. Kas see tuleks kombineerida ees- ja perekonnanimest? - - - Error - Viga - - - You need to type in the last name of the author. - Pead sisestama autori perekonnanime. - - - Author Maintenance - Autorite haldus - - - Display name: - Kuvatav nimi: - - - First name: - Eesnimi: - - - Last name: - Perekonnanimi: - - - - BibleMediaItem - - Quick - Kiire - - - Bible - Piibel - - - Clear - Puhasta - - - Search - Otsi - - - Book: - Raamat: - - - Text Search - Tekstiotsing - - - No matching book could be found in this Bible. - Sellest Piiblist ei leitud seda raamatut. - - - Dual: - Teine: - - - Chapter: - Peatükk: - - - No Book Found - Ühtegi raamatut ei leitud - - - Keep - Säilita - - - Results: - Tulemused: - - - Verse Search - Salmi otsing - - - Version: - Versioon: - - - From: - Algus: - - - Find: - Otsing: - - - Advanced - Täpsem - - - To: - Kuni: - - - Verse: - Salm: - - - Search Type: - Otsingu liik: - - - Bible not fully loaded - Piibel ei ole täielikult laaditud + + Book not found + BiblePlugin - <strong>Bible Plugin</strong><br />This plugin allows bible verses from different sources to be displayed on the screen during the service. - <strong>Piibli plugin</strong><br />See plugin võimaldab teenistuse ajal kuvada erinevatest allikatest pärinevaid piiblisalme. + + &Bible + - BiblesTab - - ( and ) - ( ja ) - - - verse per line - iga salm eraldi real - - - Display Style: - Kuvamise stiil: - + BiblesPlugin,BiblesTab + Bibles - Piiblid - - - continuous - jätkuv - - - [ and ] - [ ja ] - - - Bible Theme: - Piibli kujundus: - - - Display Dual Bible Verses - Piiblit kuvatakse kahes keeles - - - Only show new chapter numbers - Kuvatakse ainult uute peatükkide numbreid + + Verse Display - Salmi kuva - - - No brackets - Ilma sulgudeta - - - { and } - { ja } - - - Note: -Changes don't affect verses already in the service - Märkus: -Muudatused ei mõjuta juba teenistusse lisatud salme - - - verse per slide - üks salm slaidil + + Layout Style: - Kuvastiil: + + + + + Display Style: + + + + + Bible Theme: + + + + + verse per slide + + + + + verse per line + + + + + continuous + + + + + No brackets + + + + + ( and ) + + + + + { and } + + + + + [ and ] + + + + + Display Dual Bible Verses + - CustomMediaItem + BiblesPlugin.ImportWizardForm + + Bible Import Wizard + + + + + Format: + + + + + OSIS + + + + + CSV + + + + + OpenSong + + + + + Web Download + + + + + File Location: + + + + + Books Location: + + + + + Verse Location: + + + + + Bible Filename: + + + + + Location: + + + + + Crosswalk + + + + + BibleGateway + + + + + Bible: + + + + + Download Options + + + + + Server: + + + + + Username: + + + + + Password: + + + + + License Details + + + + + Version Name: + + + + + Copyright: + + + + + Permission: + + + + + Importing + + + + + Ready. + + + + + Open OSIS File + + + + + Open Books CSV File + + + + + Open OpenSong Bible + + + + + Starting import... + + + + + BiblesPlugin.MediaItem + + + Bible + + + + + Quick + + + + + Advanced + + + + + Version: + Versioon: + + + + Dual: + + + + + Search Type: + + + + + Find: + + + + + Search + + + + + Results: + + + + + Book: + + + + + Chapter: + + + + + Verse: + + + + + From: + + + + + To: + + + + + Verse Search + + + + + Text Search + + + + + Clear + + + + + Keep + + + + + No Book Found + + + + + etc + + + + + Bible not fully loaded + + + + + BiblesPlugin.Opensong + + + Importing + + + + + CustomPlugin.CustomTab + + Custom - Kohandatud - - - - CustomPlugin - - <b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br> - <b>Kohandatud plugin</b>Selle pluginaga saab näidata ekraanil lauludega sarnaseid kohandatud slaide. See pakub suuremat vabadust, kui laulude plugin.<br> - - - - CustomTab - - Custom - Kohandatud - - - Custom Display - Kohandatud kuva + + Display Footer - Jalust kuvatakse + + + + + CustomPlugin.EditCustomForm + + + Edit Custom Slides + Kohandatud slaidide muutmine + + + + Move slide Up 1 + Slaidi liigutamine 1 võrra üles + + + + Move slide down 1 + Slaidi liigutamine 1 võrra alla + + + + Title: + Pealkiri: + + + + Add New + Uue lisamine + + + + Add new slide at bottom + Uue slaidi lisamine lõppu + + + + Edit + Muuda + + + + Edit selected slide + Valitud slaidi muutmine + + + + Edit All + Kõigi muutmine + + + + Edit all slides + Kõigi slaidide muutmine + + + + Save + Salvesta + + + + Replace edited slide + Muudetud slaidi asendamine + + + + Delete + Kustuta + + + + Delete selected slide + Valitud slaidi kustutamine + + + + Clear + Puhasta + + + + Clear edit area + Muutmise ala puhastamine + + + + Split Slide + Tükelda slaid + + + + Add slide split + Lisa slaidide tükeldus + + + + Theme: + Kujundus: + + + + Credits: + Autorid: + + + + Save && Preview + Salvesta && eelvaatle + + + + Error + Viga + + + + You need to enter a title + Pead sisestama pealkirja + + + + You need to enter a slide + Pead sisenema slaidile + + + + CustomPlugin.MediaItem + + + Custom + + + + + CustomPlugin.editCustomForm + + + You have unsaved data, please save or clear + Sul on salvestamata andmeid, palun salvesta või tühjenda DisplayTab + Displays Kuva - - - EditCustomForm - You need to enter a title - Pead sisestama pealkirja + + Amend Display Settings + - Error - Viga + + Default Settings + - You need to enter a slide - Pead sisenema slaidile + + X + - Save && Preview - Salvesta && eelvaatle + + Y + - Edit Custom Slides - Kohandatud slaidide muutmine + + Height + - Move slide Up 1 - Slaidi liigutamine 1 võrra üles + + Width + - Move slide down 1 - Slaidi liigutamine 1 võrra alla + + Amend Settings + - Title: - Pealkiri: - - - Add New - Uue lisamine - - - Add new slide at bottom - Uue slaidi lisamine lõppu - - - Edit - Muuda - - - Edit selected slide - Valitud slaidi muutmine - - - Edit All - Kõigi muutmine - - - Edit all slides - Kõigi slaidide muutmine - - - Save - Salvesta - - - Replace edited slide - Muudetud slaidi asendamine - - - Delete - Kustuta - - - Delete selected slide - Valitud slaidi kustutamine - - - Clear - Puhasta - - - Clear edit area - Muutmise ala puhastamine - - - Split Slide - Tükelda slaid - - - Add slide split - Lisa slaidide tükeldus - - - Theme: - Kujundus: - - - Credits: - Autorid: - - - You have unsaved data, please save or clear - Sul on salvestamata andmeid, palun salvesta või tühjenda - - - - EditSongForm - - You need to enter a song title. - Pead sisestama laulu pealkirja. - - - Invalid verse entry - Vx or Cx - Vigane salmi kirje - Vx või Cx - - - v - s - - - c - ref - - - Invalid verse entry, values must be I,B,T,P,E,O,Vx,Cx - Sobimatu salmi sisend, väärtused peavad olema I,B,T,P,E,O,Vx,Cx - - - You need to enter some verses. - Pead sisestama mõned salmid. - - - Save && Preview - Salvesta && eelvaatle - - - bitped - - - - Error - Viga - - - Song Editor - Lauluredaktor - - - Title: - Pealkiri: - - - Alternative Title: - Alternatiivne pealkiri: - - - Lyrics: - Laulusõnad: - - - Verse Order: - Salmide järjekord: - - - Add - Lisa - - - Edit - Muuda - - - Edit All - Kõigi muutmine - - - Delete - Kustuta - - - Title && Lyrics - Pealkiri && laulusõnad - - - Authors - Autorid - - - &Add to Song - &Lisa laulule - - - &Remove - &Eemalda - - - &Manage Authors, Topics, Books - &Autorite, teemade, raamatute haldamine - - - Topic - Teema - - - A&dd to Song - L&isa laulule - - - R&emove - &Eemalda - - - Song Book - Laulik - - - Authors, Topics && Book - Autorid, teemad && laulik - - - Theme - Kujundus - - - Add a Theme - Lisa kujundus - - - Copyright Information - Autoriõiguse andmed - - - CCLI Number: - CCLI number: - - - Comments - Kommentaarid - - - Theme, Copyright Info && Comments - Kujundus, autoriõigus && kommentaarid - - - - EditVerseForm - - Verse - Salm - - - Edit Verse - Salmi muutmine - - - Verse Type: - Salmi liik: - - - Chorus - Refrään - - - Bridge - Vahemäng - - - Pre-Chorus - Eelrefrään - - - Intro - Intro - - - Ending - Lõpetus - - - Other - Muu - - - Insert - Sisesta + + Override Output Display + GeneralTab + CCLI Details CCLI andmed + SongSelect Password: SongSelecti parool: + primary peamine + Application Startup Rakenduse käivitumine + Select monitor for output display: Vali väljundkuva monitor: + Application Settings Rakenduse sätted + SongSelect Username: SongSelecti kasutajanimi: + CCLI Number: CCLI number: + Automatically open the last service Automaatselt avatakse viimane teenistus + Preview Next Song from Service Manager Teenistuse haldurist kuvatakse järgmise laulu eelvaade + Show blank screen warning Kuvatakse tühja ekraani hoiatust + Prompt to save Service before starting New Uue teenistuse loomise pakutakse vana salvestamist + General Üldine + Show the splash screen Käivitumisel kuvatakse logo + Screen Ekraan + Monitors Monitorid + Display if a single screen Kuvatakse, kui on ainult üks ekraan - - ImageMediaItem - - Select Image(s) - Pildi (piltide) valimine - - - You must select one item - Pead valima ühe kirje - - - No item selected - Ühtegi kirjet pole valitud - - - Replace Live Background - Ekraani tausta asendamine - - - Image(s) - Pilt(pildid) - - - Image - Pilt - - - Images (*.jpg *.jpeg *.gif *.png *.bmp);; All files (*) - Pildid (*.jpg *.jpeg *.gif *.png *.bmp);; Kõik failid (*) - - ImagePlugin - <b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any songs which are rendered will use the selected image from the background instead of the one provied by the theme.<br> - <b>Piltide plugin</b><br>Võimaldab igat tüüpi piltide kuvamise. Kui valitakse hulk pilte korraga ning näidatakse neid ekraanil, on võimalik panna need kordama.<br>Kui pluginas on valitud <i>Asenda taustapilt</i> ja mõni pilt on valitud, siis kujunduse taustapildi asemel näidatakse valitud pilti.<br> + + <b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any songs which are rendered will use the selected image from the background instead of the one provied by the theme.<br> + - ImageTab - - sec - s - - - Image Settings - Pildi sätted - - - Slide Loop Delay: - Slaidide vahetuse viivitus: - + ImagePlugin.ImageTab + Images - Pildid + Pildid + + + + Image Settings + Pildi sätted + + + + Slide Loop Delay: + Slaidide vahetuse viivitus: + + + + sec + s - ImportWizardForm + ImagePlugin.MediaItem - Invalid Bible Location - Ebakorrektne Piibli asukoht + + Image + Pilt - You need to specify a file with books of the Bible to use in the import. - Pead määrama faili, mis sisaldab piibliraamatuid, mida tahad importida. + + Select Image(s) + Pildi (piltide) valimine - You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. - Pead määrama Piiblitõlke autoriõiguse! Avalikkuse omandisse kuuluvad Piiblid tuleb vastavalt tähistada. + + All Files + - Empty Copyright - Autoriõigused määramata + + Replace Live Background + Ekraani tausta asendamine - Empty Version Name - Versiooni nimi määramata + + You must select an item to delete. + - Invalid OpenSong Bible - Mittekorrektne OpenSong Piibel + + Image(s) + Pilt(pildid) - Your Bible import failed. - Piibli importimine nurjus. + + No item selected + Ühtegi kirjet pole valitud - You need to specify a file to import your Bible from. - Pead määrama faili, millest Piibel importida. - - - Bible Exists - Piibel on olemas - - - Finished import. - Importimine lõpetatud. - - - You need to specify a file of Bible verses to import. - Pead ette andma piiblisalmide faili, mida importida. - - - Open Books CSV File - Open Books CSV fail - - - You need to specify a version name for your Bible. - Pead määrama Piibli versiooni nime. - - - This Bible already exists! Please import a different Bible or first delete the existing one. - See piibel on juba olemas! Palun impordi mingi muu piibel või kustuta enne olemasolev. - - - Starting import... - Importimise alustamine... - - - Invalid Books File - Vigane raamatute fail - - - You need to specify an OpenSong Bible file to import. - Pead määrama OpenSong piiblifaili, mida importida. - - - Invalid Verse File - Vigane salmide fail - - - Open Verses CSV File - Open Verses CSV fail - - - Open OSIS File - Open OSIS fail - - - Open OpenSong Bible - OpenSong piibli avamine - - - Bible Import Wizard - Piibli importimise nõustaja - - - Welcome to the Bible Import Wizard - Teretulemast Piibli importimise nõustajasse - - - 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. - See nõustaja aitab erinevatest vormingutest Piibleid importida. Klõpsa all asuvale edasi nupule, et alustada importimise vormingu valimisest. - - - Select Import Source - Importimise allika valimine - - - Select the import format, and where to import from. - Vali importimise vorming ning kust importida. - - - Format: - Vorming: - - - OSIS - OSIS - - - CSV - CSV - - - OpenSong - OpenSong - - - Web Download - Veebiallalaadimine - - - File Location: - Faili asukoht: - - - Books Location: - Raamatute asukoht: - - - Verse Location: - Salmide asukoht: - - - Bible Filename: - Piiblifaili nimi: - - - Location: - Asukoht: - - - Crosswalk - Crosswalk - - - BibleGateway - BibleGateway - - - Bible: - Piibel: - - - Download Options - Allalaadimise valikud - - - Server: - Server: - - - Username: - Kasutajanimi: - - - Password: - Parool: - - - Proxy Server (Optional) - Proksiserver (valikuline) - - - License Details - Litsentsist lähemalt - - - Set up the Bible's license details. - Määra Piibli litsentsi andmed. - - - Version Name: - Versiooninimi: - - - Copyright: - Autoriõigus: - - - Permission: - Õigus: - - - Importing - Importimine - - - Please wait while your Bible is imported. - Palun oota, kuni sinu Piiblit imporditakse. - - - Ready. - Valmis. - - - No OpenLyrics Files Selected - Ühtegi OpenLyrics faili pole valitud - - - You need to add at least one OpenLyrics song file to import from. - Sul peab olema vähemalt üks OpenLyrics laulufail, millest importida. - - - No OpenSong Files Selected - Ühtegi OpenSong faili pole valitud - - - You need to add at least one OpenSong song file to import from. - Pead lisama vähemalt ühe OpenSong faili, mida importida. - - - No CCLI Files Selected - Ühtegi CCLI faili pole valitud - - - You need to add at least one CCLI file to import from. - Tuleb lisada vähemalt üks CCLI fail, mida importida. - - - No CSV File Selected - Ühtegi CSV faili pole valitud - - - You need to specify a CSV file to import from. - Pead määrama CCLI faili, mida importida. + + You must select one item + Pead valima ühe kirje LanguageManager + Language Keel + After restart new Language settings will be used. Keele sätteid kasutatakse pärast taaskäivitust. @@ -1530,763 +1433,676 @@ Muudatused ei mõjuta juba teenistusse lisatud salme MainWindow + The Main Display has been blanked out Peakuva on tühi + OpenLP Version Updated OpenLP uuendus - 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 versioon %s on nüüd saadaval allalaadimiseks (praegu kasutad versiooni %s). - -Värskeima versiooni saad alla laadida aadressilt http://openlp.org - - + Save Changes to Service? Kas salvestada teenistusse tehtud muudatused? + OpenLP Main Display Blanked OpenLP peakuva on tühi + Open an existing service Olemasoleva teenistuse valimine + List the Plugins Pluginate loend + &Service Manager &Teenistuse haldur + Open Service Teenistuse avamine + Media Manager Meediahaldur + Alt+F4 Alt+F4 + Toggle the visibility of the Preview Panel Eelvaatluspaneeli nähtavuse muutmine + &User Guide &Kasutajajuhend + &Import &Impordi + Quit OpenLP Lahku OpenLPst + &Preview Panel &Eelvaatluspaneel + &New &Uus + Ctrl+N Ctrl+N - Default Theme: - Vaikimisi kujundus: - - + Toggle Preview Panel Eelvaatluspaneeli lüliti + &Live &Otse + F9 F9 + F8 F8 + Save the current service to disk Selle teenistuse salvestamine kettale + Add &Tool... Lisa &tööriist... + Create a new Service Uue teenistuse loomine + &View &Vaade + &Export &Ekspordi + &Open &Ava + Toggle Theme Manager Kujunduse halduri lüliti + &Settings &Sätted + &Options &Valikud + Ctrl+S Ctrl+S + Ctrl+O Ctrl+O + &File &Fail + E&xit &Välju + &Help A&bi + Toggle Service Manager Teenistuse halduri lüliti + Ctrl+F1 Ctrl+F1 + Save the current service under a new name Salvesta see teenistus uue nimega + &Web Site &Veebileht + M&ode &Režiim + Service Manager Teenistuse haldur + &Theme &Kujundus + &Language &Keel + &About &Lähemalt + &Plugin List &Pluginate loend + English Eesti + Save Service As Salvesta teenistus kui + New Service Uus teenistus + &Online Help &Abi veebis + Save Service Salvesta teenistus + Save &As... Salvesta &kui... + Toggle the visibility of the Media Manager Meediahalduri nähtavuse lüliti + F11 F11 + F10 F10 + F12 F12 + Alt+F7 Alt+F7 + Add an application to the list of tools Rakenduse lisamine tööriistade loendisse + Theme Manager Kujunduse haldur + Toggle the visibility of the Theme Manager Kujunduse halduri nähtavuse lüliti + &Preview Pane &Eelvaatluspaan + &Theme Manager &Kujunduse haldur + Toggle the visibility of the Service Manager Teenistuse halduri nähtavuse lüliti + More information about OpenLP Lähem teave OpenLP kohta + &Media Manager &Meediahaldur + &Tools &Tööriistad + Toggle Media Manager Meediahalduri lüliti + &Save &Salvesta + OpenLP 2.0 OpenLP 2.0 + Look && &Feel Välimus && &tunnetus + &Auto Detect &Isetuvastus + Choose System language, if available Võimalusel kasutatakse süsteemi keelt - Set the interface language to %1 - Määra kasutajaliidese keeleks %1 + + Set the interface language to %s + - Your service has changed. Do you want to save those changes? - Sinu teenistust on muudetud. Kas tahad need muudatused salvestada? + + 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 + + + + + Your service has changed. Do you want to save those changes? + + + + + Default Theme: %s + MediaManagerItem + Invalid Service Item Vigane teenistuse element + No Items Selected Ühtegi elementi pole valitud + You must select one or more items Pead valima vähemalt ühe elemendi + &Add to selected Service Item &Lisa valitud teenistuse elemendile - &Preview - &Eelvaatlus - - - Load a new - Laadi uus - - - &Edit - &Muuda - - + No items selected Ühtegi elementi pole valitud + &Add to Service &Lisa teenistusele + Send the selected item live Valitud kirje saatmine ekraanile + Add the selected item(s) to the service Valitud kirje(te) lisamine teenistusse - Edit the selected - Valitud kirje muutmine - - + Delete the selected item Valitud elemendi kustutamine + No Service Item Selected Ühtegi teenistuse elementi pole valitud - Import a - Impordi üks - - - &Delete - &Kustuta - - + &Show Live &Kuva ekraanil - Add a new - Lisa uus - - + Preview the selected item Valitud kirje eelvaatlus + 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. - - - MediaMediaItem - Select Media - Meedia valimine + + Import %s + - Media - Meedia + + Import a %s + - Videos (%s);;Audio (%s);;All files (*) - Videofailid (%s);;Helifailid (%s);;Kõik failid (*) + + Load %s + - Replace Live Background - Ekraani tausta asendamine + + Load a new %s + - No item selected - Ühtegi kirjet pole valitud + + New %s + - You must select one item - Pead valima ühe kirje + + Add a new %s + + + + + Edit %s + + + + + Edit the selected %s + + + + + Delete %s + + + + + Preview %s + + + + + Add %s to Service + + + + + &Edit %s + + + + + &Delete %s + + + + + &Preview %s + + + + + You must select one or more items to preview. + + + + + You must select one or more items to send live. + MediaPlugin + <b>Media Plugin</b><br>This plugin allows the playing of audio and video media <b>Meedia plugin</b><br>See plugin võimaldab audio ja video esitamise - OpenLPExportForm + MediaPlugin.MediaItem - openlp.org Song Exporter - openlp.org laulude eksportija + + Media + Meedia - Select openlp.org export filename: - Vali openlp.org eksportimise failinimi: + + Select Media + Meedia valimine - Full Song List - Täielik laulude loend - - - Song Title - Laulu pealkiri - - - Author - Autor - - - Select All - Vali kõik - - - Lyrics - Laulusõnad - - - Title - Pealkiri - - - Song Export List - Laulude eksportimise loend - - - Remove Selected - Valitute eemaldamine - - - Progress: - Edenemine: - - - Ready to export - Eksportimiseks valmis - - - Export - Ekspordi - - - Close - Sulge + + You must select an item to delete. + - OpenLPImportForm + OpenLP - openlp.org Song Importer - openlp.org lauluimportija - - - Select openlp.org songfile to import: - Openlp.org laulufaili valimine importimiseks: - - - Import File Song List - Laululoendi faili importimine - - - Song Title - Laulu pealkiri - - - Author - Autor - - - Select All - Vali kõik - - - Lyrics - Laulusõnad - - - Title - Pealkiri - - - Song Import List - Laulude importimise nimekiri - - - Remove Selected - Valitute eemaldamine - - - Progress: - Edenemine: - - - Ready to import - Importimiseks valmis - - - Import - Impordi - - - Close - Sulge - - - - OpenSongBible - - Importing - Importimine - - - - OpenSongExportForm - - OpenSong Song Exporter - OpenSong laulueksportija - - - Select OpenSong song folder: - Vali OpenSong laulude kataloog: - - - Full Song List - Täielik laulude loend - - - Song Title - Laulu pealkiri - - - Author - Autor - - - Select All - Vali kõik - - - Lyrics - Laulusõnad - - - Title - Pealkiri - - - Song Export List - Laulude eksportimise loend - - - Remove Selected - Valitute eemaldamine - - - Progress: - Edenemine: - - - Ready to export - Eksportimiseks valmis - - - Export - Ekspordi - - - Close - Sulge - - - - OpenSongImportForm - - OpenSong Song Importer - OpenSongi lauluimportija - - - OpenSong Folder: - OpenSongi kataloog: - - - Progress: - Edenemine: - - - Ready to import - Importimiseks valmis - - - Import - Impordi - - - Close - Sulge + + Image Files + PluginForm + Plugin List Pluginate loend + Plugin Details Plugina andmed + Version: Versioon: + TextLabel TekstiPealdis + About: Kirjeldus: + Status: Olek: + Active Aktiivne + Inactive Pole aktiivne - - - PresentationMediaItem - Presentation - Esitlus + + %s (Inactive) + + + %s (Active) + + + + + %s (Disabled) + + + + + PresentationPlugin.MediaItem + + Present using: - Esitluseks kasutatakse: - - - Automatic - Automaatne - - - A presentation with that filename already exists. - Sellise nimega esitluse fail on juba olemas. - - - Select Presentation(s) - Esitlus(t)e valimine - - - File exists - Fail on olemas - - - Presentations (%s) - Esitlused (%s) + - PresentationPlugin - - <b>Presentation Plugin</b> <br> Delivers 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. - <b>Esitluse plugin</b><br>Võimaldab kuvada esitlusi teistest programmidest. Saadaolevad esitlusrakendused on valikumenüüs. - - - - PresentationTab - - Available Controllers - Saadaolevad kontrollerid - + PresentationPlugin.PresentationTab + available - saadaval - - - Presentations - Esitlused + - RemoteTab + RemotePlugin.RemoteTab + Remotes - Kaugjuhtimispuldid + + Remotes Receiver Port - Puldi vastuvõtu port - - - - RemotesPlugin - - <b>Remote Plugin</b><br>This plugin provides the ability to send messages to a running version of openlp on a different computer via a web browser or other app<br>The Primary use for this would be to send alerts from a creche - <b>Kaugjuhtimisplugin</b><br>See plugin võimaldab töötavale openlp programmile teadete saatmise teisest arvutist veebilehitseja või mõne muu rakenduse kaudu.<br>Selle peamine rakendus on teadete saatmine lastehoiust + ServiceItemEditForm + Service Item Maintenance Teenistuse elementide haldus + Up Üles + Delete Kustuta + Down Alla @@ -2294,125 +2110,186 @@ Värskeima versiooni saad alla laadida aadressilt http://openlp.org ServiceManager + Save Changes to Service? Kas salvestada teenistusse tehtud muudatused? + Open Service Teenistuse avamine + Move to top Tõsta üles + Save Service Salvesta teenistus + Create a new service Uue teenistuse loomine + Save this service Selle teenistuse salvestamine + Theme: Kujundus: + Delete From Service Teenistusest kustutamine + &Preview Verse &Salmi eelvaatlus + &Live Verse &Otsesalm + Move to &top Liiguta ü&lemiseks + New Service Uus teenistus + &Notes &Märkmed + &Delete From Service &Kustuta teenistusest + Move up order Järjekorras üles liigutamine + Move down order Järjekorras alla liigutamine + Move &down Liiguta &alla + Load an existing service Välise teenistuse laadimine + Move to end Viimaseks tõstmine + &Maintain Item &Halda elementi + Move &up Liiguta &üles + &Edit Item &Muuda kirjet + Move to &bottom Liiguta &alumiseks + &Add New Item &Lisa uus element + &Add to Selected Item &Lisa valitud elemendile + Your service is unsaved, do you want to save those changes before creating a new one? See teenistus pole salvestatud, kas tahad selle uue avamist salvestada? + Your current service is unsaved, do you want to save the changes before opening a new one? See teenistus pole salvestatud, kas tahad enne uue avamist muudatused salvestada? + Missing Display Handler + 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 + + + Select a theme for the service + + + + + &Change Item Theme + + + + + OpenLP Service Files (*.osz) + + + + + Error + Viga + + + + File is not a valid service. +The content encoding is not UTF-8. + + + + + File is not a valid service. + + ServiceNoteForm + Service Item Notes Teenistuse elemendi märkmed @@ -2420,6 +2297,7 @@ Värskeima versiooni saad alla laadida aadressilt http://openlp.org SettingsForm + Settings Sätted @@ -2427,672 +2305,980 @@ Värskeima versiooni saad alla laadida aadressilt http://openlp.org SlideController + Move to previous Eelmisele liikumine + Theme Screen Kujunduse ekraan + Go to Verse Liikumine salmile + Start continuous loop Katkematu korduse alustamine + Live Ekraan + Start playing media Meediaesituse alustamine + Move to live Tõsta ekraanile + Hide Screen Peida ekraan + Move to last Liikumine viimasele - Verse - Salm - - + Move to next Liikumine järgmisele + Move to first Liikumine esimesele + Blank Screen Tühi ekraan + Delay between slides in seconds Viivitus slaidide vahel sekundites + Preview Eelvaade + Stop continuous loop Katkematu korduse lõpetamine + s s - Chorus - Refrään - - + Edit and re-preview Song Muuda ja kuva laulu eelvaade uuesti - SongBookForm + SongsPlugin.AuditDeleteDialog - Error - Viga - - - You need to type in a book name! - Pead sisestama laulikule nime! - - - Edit Book - Lauliku redigeerimine - - - Name: - Nimi: - - - Publisher: - Kirjastaja: + + Song Usage Delete + - SongMaintenanceForm + SongsPlugin.AuditDetailDialog - Are you sure you want to delete the selected book? - Kas oled kindel, et tahad valitud lauliku kustutada? + + Select Date Range + - Couldn't save your author. - Autorit ei suudetud salvestada. + + to + - This author can't be deleted, they are currently assigned to at least one song. - Seda autorit pole võimalik kustutada, see on seotud vähemalt ühe lauluga. + + Report Location + + + + + SongsPlugin.AuthorsForm + + + Author Maintenance + Autorite haldus - Couldn't add your book. - Laulikut ei suudetud lisada. + + Display name: + Kuvatav nimi: + + First name: + Eesnimi: + + + + Last name: + Perekonnanimi: + + + Error - Viga + Viga - No author selected! - Ühtegi autorit pole valitud! + + You need to type in the first name of the author. + Pead sisestama autori eesnime. - Couldn't add your topic. - Teemat ei suudetud lisada. + + You need to type in the last name of the author. + Pead sisestama autori perekonnanime. - This book can't be deleted, it is currently assigned to at least one song. - Seda laulikut pole võimalik kustutada, see on seotud vähemalt ühe lauluga. + + You haven't set a display name for the author, would you like me to combine the first and last names for you? + Sa pole sisestanud autori kuvatavat nime. Kas see tuleks kombineerida ees- ja perekonnanimest? + + + + SongsPlugin.EditSongForm + + + Song Editor + Lauluredaktor - Delete Book - Lauliku kustutamine + + &Title: + - No book selected! - Ühtegi laulikut pole valitud! + + &Lyrics: + - Are you sure you want to delete the selected author? - Kas oled kindel, et tahad kustutada valitud autori? + + &Verse Order: + - Couldn't add your author. - Autorit ei suudetud lisada. + + &Add + - Couldn't save your topic. - Teemat ei suudetud salvestada. + + &Edit + &Muuda - Couldn't save your book. - Laulikut ei suudetud salvestada. + + Ed&it All + - Delete Topic - Teema kustutamine + + &Delete + &Kustuta - Delete Author - Autori kustutamine - - - No topic selected! - Ühtegi teemat pole valitud! - - - This topic can't be deleted, it is currently assigned to at least one song. - Seda teemat pole võimalik kustutada, see on seotud vähemalt ühe lauluga. - - - Are you sure you want to delete the selected topic? - Kas oled kindel, et tahad valitud teema kustutada? - - - Song Maintenance - Laulude haldus + + Title && Lyrics + Pealkiri && laulusõnad + Authors - Autorid + Autorid - Topics - Teemad + + &Add to Song + &Lisa laulule - Books/Hymnals - Laulikud + + &Remove + &Eemalda - Add - Lisa + + &Manage Authors, Topics, Books + &Autorite, teemade, raamatute haldamine - Edit - Muuda + + Topic + Teema - Delete - Kustuta + + A&dd to Song + L&isa laulule + + + + R&emove + &Eemalda + + + + Song Book + Laulik + + + + Authors, Topics && Book + Autorid, teemad && laulik + + + + Theme + Kujundus + + + + Copyright Information + Autoriõiguse andmed + + + + CCLI Number: + CCLI number: + + + + Comments + Kommentaarid + + + + Theme, Copyright Info && Comments + Kujundus, autoriõigus && kommentaarid + + + + Add Author + + + + + This author does not exist, do you want to add them? + + + + + No Author Selected + + + + + 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. + + + + + Add Topic + + + + + This topic does not exist, do you want to add it? + + + + + No Topic Selected + + + + + 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. + + + + + Add Book + + + + + This song book does not exist, do you want to add it? + + + + + The verse order is invalid. There is no verse corresponding to %s. Valid entries are %s. + + + + + Alt&ernate Title: + + + + + New &Theme + + + + + © + + + + + Save && Preview + + + + + Error + Viga + + + + You need to type in a song title. + + + + + You need to type in at least one verse. + + + + + Warning + + + + + You have not added any authors for this song. Do you want to add an author now? + + + + + You have not used %s anywhere in the verse order. Are you sure you want to save the song like this? + - SongMediaItem + SongsPlugin.EditVerseForm - CCLI Licence: - CCLI litsents: + + Edit Verse + - Delete song? - Kas kustutada laul? + + &Verse type: + + + &Insert + + + + + SongsPlugin.ImportWizardForm + + + No OpenLyrics Files Selected + + + + + You need to add at least one OpenLyrics song file to import from. + + + + + No OpenSong Files Selected + + + + + You need to add at least one OpenSong song file to import from. + + + + + No CCLI Files Selected + + + + + You need to add at least one CCLI file to import from. + + + + + No CSV File Selected + + + + + You need to specify a CSV file to import from. + + + + + Song Import Wizard + + + + + Welcome to the Song Import Wizard + + + + + 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. + + + + + Select Import Source + + + + + Select the import format, and where to import from. + + + + + Format: + + + + + OpenLyrics + + + + + OpenSong + + + + + CCLI + + + + + CSV + + + + + Add Files... + + + + + Remove File(s) + + + + + Filename: + + + + + Browse... + + + + + Importing + + + + + Please wait while your songs are imported. + + + + + Ready. + + + + + %p% + + + + + Starting import... + + + + + SongsPlugin.MediaItem + + Song - Laul - - - Maintain the lists of authors, topics and books - Autorite, teemade ja raamatute loendi haldamine - - - Titles - Pealkirjad - - - Lyrics - Laulusõnad - - - Clear - Puhasta - - - Type: - Liik: - - - Search - Otsi - - - Authors - Autorid - - - Search: - Otsi: - - - Delete Confirmation - Kustutamise kinnitus + + Song Maintenance - Laulude haldus + + + Search: + + + + + Type: + + + + + Clear + + + + + Search + + + + + Titles + + + + + Lyrics + + + + + Authors + + + + %s (%s) - %s (%s) + - Delete %d songs? - Kas kustutada %d laulu? + + Delete Confirmation + + + + + CCLI Licence: + - SongUsageDeleteForm + SongsPlugin.SongBookForm - Delete Selected Song Usage Events? - Kas kustutada valitud laulude kasutamise sündmused? + + Edit Book + - Are you sure you want to delete selected Song Usage data? - Kas oled kindel, et tahad kustutada valitud laulude kasutuse andmed? + + &Name: + + + + + &Publisher: + + + + + Error + Viga + + + + You need to type in a name for the book. + - SongUsageDetailForm + SongsPlugin.SongMaintenanceForm - Output File Location - Väljundfaili asukoht + + Song Maintenance + Laulude haldus + + + + Authors + Autorid + + + + Topics + Teemad + + + + Books/Hymnals + Laulikud + + + + &Add + + + + + &Edit + &Muuda + + + + &Delete + &Kustuta + + + + Delete Author + + + + + Delete Topic + + + + + Delete Book + + + + + No book selected! + - SongUsagePlugin - - <b>SongUsage Plugin</b><br>This plugin records the use of songs and when they have been used during a live service - <b>Laulukasutuse plugin</b><br>See plugin salvestab laulude kasutuse koos nende suurele ekraanile näitamise kuupäevaga - - - - SongsPlugin - - Open Songs of Fellowship file - Open Songs of Fellowship fail - - - Open documents or presentations - Open document vormingus dokumendid või esitlused - - - <strong>Song Plugin</strong><br />This plugin allows songs to be managed and displayed. - <strong>Laulude plugin</strong><br />See plugin võimaldab laulude kuvamise ja haldamise. - - - - SongsTab - - Songs Mode - Laulurežiim - + SongsPlugin.SongsTab + Songs - Laulud + + + Songs Mode + + + + Enable search as you type - Otsing sisestamise ajal + + + + + SongsPlugin.TopicsForm + + + Topic Maintenance + - Display Verses on Live Tool bar - Salme kuvatakse ekraani tööriistaribal + + Topic name: + + + + + Error + Viga + + + + Splashscreen + + + Starting + Käivitumine + + + + Splash Screen + Käivitusekraan ThemeManager + Import Theme Teema importimine - Create a new theme - Uue teema loomine - - + Delete Theme Teema kustutamine + Error Viga - Delete a theme - Teema kustutamine - - - Edit a theme - Teema muutmine - - + Edit Theme Kujunduse muutmine + Export Theme Kujunduse eksportimine + You are unable to delete the default theme. Vaikimisi kujundust pole võimalik kustutada. + File is not a valid theme. See fail ei ole sobilik kujundus. + Theme Exists Kujundus on juba olemas - Delete theme - Kustuta kujundus - - + Save Theme - (%s) Salvesta kujundus - (%s) - default - vaikimisi - - + Select Theme Import File Importimiseks kujunduse faili valimine + New Theme Uus kujundus - Import a theme - Teema importimine - - - Export theme - Teema eksportimine - - - Make Global - Globaalseks tegemine - - + You have not selected a theme. Sa ei ole teemat valinud. - A theme with this name already exists, would you like to overwrite it? - Sellise nimega teema on juba olemas, kas kirjutada üle? + + Create a new theme. + - Export a theme - Ekspordi teema + + Edit a theme. + - Theme %s is use in %s plugin - Kujundust %s kasutatakse pluginas %s + + Delete a theme. + - Theme %s is use by Service Manager - Kujundust %s kasutab teenistuste haldur + + Import a theme. + + + + + Export a theme. + + + + + &Edit Theme + + + + + &Delete Theme + + + + + Set As &Global Default + + + + + E&xport Theme + + + + + %s (default) + + + + + Theme %s is use in %s plugin. + + + + + Theme %s is use by the service manager. + + + + + Theme Exported + + + + + Your theme has been successfully exported. + + + + + Theme Export Failed + + + + + Your theme could not be exported due to an error. + + + + + Theme (*.*) + + + + + File is not a valid theme. +The content encoding is not UTF-8. + + + + + A theme with this name already exists. Would you like to overwrite it? + ThemesTab - Theme level - Teema tase - - - Global theme - Üleüldine tase - - + Use the global theme, overriding any themes associated with either the service or the songs. Kasutatakse globaalset kujundust, eirates nii teenistuse kui laulu kujundust. + 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. Iga laulu jaoks kasutatakse andmebaasis sellele määratud kujundust. Kui laulul kujundus puudub, kasutatakse teenistuse teemat. Kui teenistusel kujundus puudub, siis kasutatakse üleüldist teemat. - Service level - Teenistuse tase - - - Global level - Üleüldine teema - - - Song level - Laulu tase - - + 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. Kasutatakse teenistuse kujundust, eirates laulude kujundusi. Kui teenistusel kujundust pole, kasutatakse globaalset. + Themes Kujundused - - - TopicsForm - You need to type in a topic name! - Pead sisestama teema nime! + + Global Theme + - Error - Viga + + Theme Level + - Topic Maintenance - Teemade haldus + + S&ong Level + - Topic name: - Teema nimi: + + &Service Level + + + + + &Global Level + - Ui_SongImportWizard + VerseType - Song Import Wizard - Laulude importimise nõustaja + + Verse + - Welcome to the Song Import Wizard - Tere tulemast laulude importimise nõustajasse + + Chorus + - 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. - See nõustaja aitab sul laule importida paljudest erinevatest formaatidest. Klõpsa all asuvat edasi nuppu, et jätkata tegevust importimise vormingu valimisega. + + Bridge + - Select Import Source - Importimise allika valimine + + Pre-Chorus + - Select the import format, and where to import from. - Vali importimise vorming ning kust importida. + + Intro + - Format: - Vorming: + + Ending + - OpenLyrics - OpenLyrics - - - OpenSong - OpenSong - - - CCLI - CCLI - - - CSV - CSV - - - Add Files... - Lisa faile... - - - Remove File(s) - Kaugfail(id) - - - Filename: - Failinimi: - - - Browse... - Lehitse... - - - Importing - Importimine - - - Please wait while your songs are imported. - Palun oota, kuni laule imporditakse. - - - Ready. - Valmis. - - - %p% - %p% - - - - alertsPlugin - - Show an alert message - Teate kuvamine - - - <b>Alerts Plugin</b><br>This plugin controls the displaying of alerts on the presentations screen - <b>Teadete plugin</b><br>See plugin juhib esitlusekraanile teadete kuvamist - - - &Alert - &Teade - - - - export_menu - - &Bible - &Piibel - - - - import_menu - - &Bible - &Piibel - - - &Song - &Laul - - - Import songs using the import wizard. - Laulude importimine importimise nõustajaga. - - - Songs of Fellowship (temp menu item) - Vennaskonna laulud (ajutine menüükirje) - - - Import songs from the VOLS1_2.RTF, sof3words.rtf and sof4words.rtf supplied with the music books - Laulude importimine laulikutega kaasa pandud failidest VOLS1_2.RTF, sof3words.rtf ja sof4words.rtf - - - Generic Document/Presentation Import (temp menu item) - Üldine dokumentide/esitluste importimine (ajutine menüükirje) - - - Import songs from Word/Writer/Powerpoint/Impress - Laulude importimine Wordist/Writerist/Powerpointist/Impressist - - - - self.ImportSongMenu - - Import Error - Viga importimisel - - - Error importing Songs of Fellowship file. -OpenOffice.org must be installed and you must be using an unedited copy of the RTF included with the Songs of Fellowship Music Editions - Tõrge laulude importimisel Songs of Fellowship lauliku failist. -OpenOffice.org peab olema paigaldatud ja sul peab olema muutmata koopia RTF-ist, mis on kaasa pandud Sonfs of Fellowship Music Editions laulikuga - - - - self.splash_screen - - Starting - Käivitumine - - - Splash Screen - Käivitusekraan - - - - tools_menu - - &Song Usage - &Laulude kasutus - - - &Delete recorded data - &Salvestatud andmete kustutamine - - - Delete song usage to specified date - Kustuta laulude kasutus määratud kuupäevani - - - &Extract recorded data - &Kogutud andmete salvestamine - - - Generate report on Song Usage - Laulude kasutusraporti koostamine - - - Song Usage Status - Laulude kasutuse teave - - - Start/Stop live song usage recording - Alusta/lõpeta ekraanile näidatud laulude salvestamine + + Other + diff --git a/resources/i18n/openlp_hu.qm b/resources/i18n/openlp_hu.qm deleted file mode 100644 index 4f2c11f7b907fec66b4f95bc9b7fe2bb9acc5f10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32687 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 diff --git a/resources/i18n/openlp_sv.qm b/resources/i18n/openlp_sv.qm deleted file mode 100644 index ae9d9fec046ede9221e918dc3627f03c775b508a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33820 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 Date: Mon, 21 Jun 2010 19:28:36 +0100 Subject: [PATCH 19/83] Final extermination of translate u"s --- openlp/plugins/alerts/alertsplugin.py | 8 +- openlp/plugins/alerts/lib/alertsmanager.py | 6 +- openlp/plugins/bibles/bibleplugin.py | 10 +- .../plugins/bibles/forms/bibleimportwizard.py | 42 ++++----- .../plugins/bibles/forms/importwizardform.py | 86 ++++++++--------- openlp/plugins/bibles/lib/biblestab.py | 22 ++--- openlp/plugins/bibles/lib/db.py | 10 +- openlp/plugins/bibles/lib/mediaitem.py | 4 +- openlp/plugins/custom/customplugin.py | 10 +- openlp/plugins/custom/lib/customtab.py | 6 +- openlp/plugins/custom/lib/mediaitem.py | 10 +- openlp/plugins/presentations/lib/mediaitem.py | 30 +++--- .../presentations/lib/presentationtab.py | 12 +-- .../presentations/presentationplugin.py | 10 +- openlp/plugins/remotes/remoteplugin.py | 12 +-- .../songs/forms/songmaintenanceform.py | 92 +++++++++---------- openlp/plugins/songs/forms/topicsform.py | 6 +- openlp/plugins/songs/lib/mediaitem.py | 22 ++--- openlp/plugins/songs/lib/songstab.py | 6 +- openlp/plugins/songs/songsplugin.py | 68 +++++++------- .../songusage/forms/songusagedeleteform.py | 8 +- .../songusage/forms/songusagedetaildialog.py | 6 +- .../songusage/forms/songusagedetailform.py | 4 +- openlp/plugins/songusage/songusageplugin.py | 30 +++--- 24 files changed, 260 insertions(+), 260 deletions(-) diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index 567053014..8ee84be8f 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -94,7 +94,7 @@ class alertsPlugin(Plugin): self.alertForm.exec_() def about(self): - about_text = translate(u'AlertsPlugin', - u'Alerts Plugin
This plugin ' - u'controls the displaying of alerts on the presentations screen') - return about_text \ No newline at end of file + about_text = translate('AlertsPlugin', + 'Alerts Plugin
This plugin ' + 'controls the displaying of alerts on the presentations screen') + return about_text diff --git a/openlp/plugins/alerts/lib/alertsmanager.py b/openlp/plugins/alerts/lib/alertsmanager.py index 6b5212d44..ecd41bbd1 100644 --- a/openlp/plugins/alerts/lib/alertsmanager.py +++ b/openlp/plugins/alerts/lib/alertsmanager.py @@ -79,7 +79,7 @@ class AlertsManager(QtCore.QObject): self.displayAlert(message[0]) else: self.displayAlert(u'') - + def displayAlert(self, text=u''): """ Called from the Alert Tab to display an alert @@ -93,8 +93,8 @@ class AlertsManager(QtCore.QObject): self.alertList.append(text) if self.timer_id != 0: Receiver.send_message(u'maindisplay_status_text', - translate(u'AlertsPlugin.AlertsManager', - u'Alert message created and delayed')) + translate('AlertsPlugin.AlertsManager', + 'Alert message created and delayed')) return Receiver.send_message(u'maindisplay_status_text', u'') self.generateAlert() diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index 9dfc2df1c..2c10e9c0d 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -90,13 +90,13 @@ class BiblePlugin(Plugin): self.media_item.onImportClick() def about(self): - about_text = translate(u'BiblePlugin', - u'Bible Plugin
This ' - u'plugin allows bible verses from different sources to be ' - u'displayed on the screen during the service.') + about_text = translate('BiblePlugin', + 'Bible Plugin
This ' + 'plugin allows bible verses from different sources to be ' + 'displayed on the screen during the service.') return about_text def can_delete_theme(self, theme): if self.settings_tab.bible_theme == theme: return False - return True \ No newline at end of file + return True diff --git a/openlp/plugins/bibles/forms/bibleimportwizard.py b/openlp/plugins/bibles/forms/bibleimportwizard.py index ed7c175a7..a2aa92fc0 100644 --- a/openlp/plugins/bibles/forms/bibleimportwizard.py +++ b/openlp/plugins/bibles/forms/bibleimportwizard.py @@ -312,25 +312,25 @@ class Ui_BibleImportWizard(object): translate('BiblesPlugin.ImportWizardForm', 'Bible Import Wizard')) self.TitleLabel.setText( u'%s' % \ - translate(u'BiblesPlugin.ImportWizardForm', - u'Welcome to the Bible Import Wizard')) + translate('BiblesPlugin.ImportWizardForm', + 'Welcome to the Bible Import Wizard')) self.InformationLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', - u'This wizard will help you to import Bibles from a ' - u'variety of formats. Click the next button below to start the ' - u'process by selecting a format to import from.')) - self.SelectPage.setTitle(translate(u'BiblesPlugin.ImportWizardForm', - u'Select Import Source')) + translate('BiblesPlugin.ImportWizardForm', + '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.')) + self.SelectPage.setTitle(translate('BiblesPlugin.ImportWizardForm', + 'Select Import Source')) self.SelectPage.setSubTitle( - translate(u'BiblesPlugin.ImportWizardForm', - u'Select the import format, and where to import from.')) + translate('BiblesPlugin.ImportWizardForm', + 'Select the import format, and where to import from.')) self.FormatLabel.setText( translate('BiblesPlugin.ImportWizardForm', 'Format:')) - self.FormatComboBox.setItemText(0, + self.FormatComboBox.setItemText(0, translate('BiblesPlugin.ImportWizardForm', 'OSIS')) - self.FormatComboBox.setItemText(1, + self.FormatComboBox.setItemText(1, translate('BiblesPlugin.ImportWizardForm', 'CSV')) - self.FormatComboBox.setItemText(2, + self.FormatComboBox.setItemText(2, translate('BiblesPlugin.ImportWizardForm', 'OpenSong')) self.FormatComboBox.setItemText(3, translate('BiblesPlugin.ImportWizardForm', 'Web Download')) @@ -344,9 +344,9 @@ class Ui_BibleImportWizard(object): translate('BiblesPlugin.ImportWizardForm', 'Bible Filename:')) self.LocationLabel.setText( translate('BiblesPlugin.ImportWizardForm', 'Location:')) - self.LocationComboBox.setItemText(0, + self.LocationComboBox.setItemText(0, translate('BiblesPlugin.ImportWizardForm', 'Crosswalk')) - self.LocationComboBox.setItemText(1, + self.LocationComboBox.setItemText(1, translate('BiblesPlugin.ImportWizardForm', 'BibleGateway')) self.BibleLabel.setText( translate('BiblesPlugin.ImportWizardForm', 'Bible:')) @@ -361,13 +361,13 @@ class Ui_BibleImportWizard(object): translate('BiblesPlugin.ImportWizardForm', 'Password:')) self.WebDownloadTabWidget.setTabText( self.WebDownloadTabWidget.indexOf(self.ProxyServerTab), - translate(u'BiblesPlugin.ImportWizardForm', - u'Proxy Server (Optional)')) + translate('BiblesPlugin.ImportWizardForm', + 'Proxy Server (Optional)')) self.LicenseDetailsPage.setTitle( translate('BiblesPlugin.ImportWizardForm', 'License Details')) self.LicenseDetailsPage.setSubTitle( - translate(u'BiblesPlugin.ImportWizardForm', - u'Set up the Bible\'s license details.')) + translate('BiblesPlugin.ImportWizardForm', + 'Set up the Bible\'s license details.')) self.VersionNameLabel.setText( translate('BiblesPlugin.ImportWizardForm', 'Version Name:')) self.CopyrightLabel.setText( @@ -377,8 +377,8 @@ class Ui_BibleImportWizard(object): self.ImportPage.setTitle( translate('BiblesPlugin.ImportWizardForm', 'Importing')) self.ImportPage.setSubTitle( - translate(u'BiblesPlugin.ImportWizardForm', - u'Please wait while your Bible is imported.')) + translate('BiblesPlugin.ImportWizardForm', + 'Please wait while your Bible is imported.')) self.ImportProgressLabel.setText( translate('BiblesPlugin.ImportWizardForm', 'Ready.')) self.ImportProgressBar.setFormat(u'%p%') diff --git a/openlp/plugins/bibles/forms/importwizardform.py b/openlp/plugins/bibles/forms/importwizardform.py index 0dbcbad5e..12b7bbaae 100644 --- a/openlp/plugins/bibles/forms/importwizardform.py +++ b/openlp/plugins/bibles/forms/importwizardform.py @@ -123,32 +123,32 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): if self.field(u'source_format').toInt()[0] == BibleFormat.OSIS: if self.field(u'osis_location').toString() == u'': QtGui.QMessageBox.critical(self, - translate(u'BiblesPlugin.ImportWizardForm', - u'Invalid Bible Location'), - translate(u'BiblesPlugin.ImportWizardForm', - u'You need to specify a file to import your ' - u'Bible from.'), + translate('BiblesPlugin.ImportWizardForm', + 'Invalid Bible Location'), + translate('BiblesPlugin.ImportWizardForm', + 'You need to specify a file to import your ' + 'Bible from.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.OSISLocationEdit.setFocus() return False elif self.field(u'source_format').toInt()[0] == BibleFormat.CSV: if self.field(u'csv_booksfile').toString() == u'': QtGui.QMessageBox.critical(self, - translate(u'BiblesPlugin.ImportWizardForm', - u'Invalid Books File'), - translate(u'BiblesPlugin.ImportWizardForm', - u'You need to specify a file with books of ' - u'the Bible to use in the import.'), + translate('BiblesPlugin.ImportWizardForm', + 'Invalid Books File'), + translate('BiblesPlugin.ImportWizardForm', + 'You need to specify a file with books of ' + 'the Bible to use in the import.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.BooksLocationEdit.setFocus() return False elif self.field(u'csv_versefile').toString() == u'': QtGui.QMessageBox.critical(self, - translate(u'BiblesPlugin.ImportWizardForm', - u'Invalid Verse File'), - translate(u'BiblesPlugin.ImportWizardForm', - u'You need to specify a file of Bible ' - u'verses to import.'), + translate('BiblesPlugin.ImportWizardForm', + 'Invalid Verse File'), + translate('BiblesPlugin.ImportWizardForm', + 'You need to specify a file of Bible ' + 'verses to import.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.CsvVerseLocationEdit.setFocus() return False @@ -156,11 +156,11 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): BibleFormat.OpenSong: if self.field(u'opensong_file').toString() == u'': QtGui.QMessageBox.critical(self, - translate(u'BiblesPlugin.ImportWizardForm', - u'Invalid OpenSong Bible'), - translate(u'BiblesPlugin.ImportWizardForm', - u'You need to specify an OpenSong Bible ' - u'file to import.'), + translate('BiblesPlugin.ImportWizardForm', + 'Invalid OpenSong Bible'), + translate('BiblesPlugin.ImportWizardForm', + 'You need to specify an OpenSong Bible ' + 'file to import.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.OpenSongFileEdit.setFocus() return False @@ -172,32 +172,32 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): unicode(self.field(u'license_copyright').toString()) if license_version == u'': QtGui.QMessageBox.critical(self, - translate(u'BiblesPlugin.ImportWizardForm', - u'Empty Version Name'), - translate(u'BiblesPlugin.ImportWizardForm', - u'You need to specify a version name for your ' - u'Bible.'), + translate('BiblesPlugin.ImportWizardForm', + 'Empty Version Name'), + translate('BiblesPlugin.ImportWizardForm', + 'You need to specify a version name for your ' + 'Bible.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.VersionNameEdit.setFocus() return False elif license_copyright == u'': QtGui.QMessageBox.critical(self, - translate(u'BiblesPlugin.ImportWizardForm', - u'Empty Copyright'), - translate(u'BiblesPlugin.ImportWizardForm', - u'You need to set a copyright for your Bible! ' - u'Bibles in the Public Domain need to be marked as ' - u'such.'), + translate('BiblesPlugin.ImportWizardForm', + 'Empty Copyright'), + translate('BiblesPlugin.ImportWizardForm', + 'You need to set a copyright for your Bible! ' + 'Bibles in the Public Domain need to be marked as ' + 'such.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.CopyrightEdit.setFocus() return False elif self.manager.exists(license_version): QtGui.QMessageBox.critical(self, - translate(u'BiblesPlugin.ImportWizardForm', - u'Bible Exists'), - translate(u'BiblesPlugin.ImportWizardForm', - u'This Bible already exists! Please import ' - u'a different Bible or first delete the existing one.'), + translate('BiblesPlugin.ImportWizardForm', + 'Bible Exists'), + translate('BiblesPlugin.ImportWizardForm', + 'This Bible already exists! Please import ' + 'a different Bible or first delete the existing one.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.VersionNameEdit.setFocus() return False @@ -217,7 +217,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): self.BibleComboBox.clear() for bible in self.web_bible_list[index].keys(): self.BibleComboBox.addItem(unicode( - translate(u'BiblesPlugin.ImportWizardForm', bible))) + translate('BiblesPlugin.ImportWizardForm', bible))) def onOsisFileButtonClicked(self): """ @@ -240,8 +240,8 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): Show the file open dialog for the verses CSV file. """ self.getFileName( - translate(u'BiblesPlugin.ImportWizardForm', - u'Open Verses CSV File'), + translate('BiblesPlugin.ImportWizardForm', + 'Open Verses CSV File'), self.CsvVerseLocationEdit) def onOpenSongBrowseButtonClicked(self): @@ -445,12 +445,12 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): license_copyright, license_permission) self.manager.reload_bibles() self.ImportProgressLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', - u'Finished import.')) + translate('BiblesPlugin.ImportWizardForm', + 'Finished import.')) else: self.ImportProgressLabel.setText( - translate(u'BiblesPlugin.ImportWizardForm', - u'Your Bible import failed.')) + translate('BiblesPlugin.ImportWizardForm', + 'Your Bible import failed.')) importer.delete() def postImport(self): diff --git a/openlp/plugins/bibles/lib/biblestab.py b/openlp/plugins/bibles/lib/biblestab.py index 2b693d797..3d3966777 100644 --- a/openlp/plugins/bibles/lib/biblestab.py +++ b/openlp/plugins/bibles/lib/biblestab.py @@ -152,30 +152,30 @@ class BiblesTab(SettingsTab): self.VerseDisplayGroupBox.setTitle( translate('BiblesPlugin,BiblesTab', 'Verse Display')) self.NewChaptersCheckBox.setText( - translate(u'BiblesPlugin,BiblesTab', - u'Only show new chapter numbers')) + translate('BiblesPlugin,BiblesTab', + 'Only show new chapter numbers')) self.LayoutStyleLabel.setText( translate('BiblesPlugin,BiblesTab', 'Layout Style:')) self.DisplayStyleLabel.setText( translate('BiblesPlugin,BiblesTab', 'Display Style:')) self.BibleThemeLabel.setText( translate('BiblesPlugin,BiblesTab', 'Bible Theme:')) - self.LayoutStyleComboBox.setItemText(0, + self.LayoutStyleComboBox.setItemText(0, translate('BiblesPlugin,BiblesTab', 'verse per slide')) - self.LayoutStyleComboBox.setItemText(1, + self.LayoutStyleComboBox.setItemText(1, translate('BiblesPlugin,BiblesTab', 'verse per line')) - self.LayoutStyleComboBox.setItemText(2, + self.LayoutStyleComboBox.setItemText(2, translate('BiblesPlugin,BiblesTab', 'continuous')) - self.DisplayStyleComboBox.setItemText(0, + self.DisplayStyleComboBox.setItemText(0, translate('BiblesPlugin,BiblesTab', 'No brackets')) - self.DisplayStyleComboBox.setItemText(1, + self.DisplayStyleComboBox.setItemText(1, translate('BiblesPlugin,BiblesTab', '( and )')) self.DisplayStyleComboBox.setItemText(2, translate('BiblesPlugin,BiblesTab', '{ and }')) - self.DisplayStyleComboBox.setItemText(3, + self.DisplayStyleComboBox.setItemText(3, translate('BiblesPlugin,BiblesTab', '[ and ]')) - self.ChangeNoteLabel.setText(translate(u'BiblesPlugin.BiblesTab', - u'Note:\nChanges don\'t affect verses already in the service')) + self.ChangeNoteLabel.setText(translate('BiblesPlugin.BiblesTab', + 'Note:\nChanges don\'t affect verses already in the service')) self.BibleDualCheckBox.setText( translate('BiblesPlugin,BiblesTab', 'Display Dual Bible Verses')) @@ -246,4 +246,4 @@ class BiblesTab(SettingsTab): # Not Found id = 0 self.bible_theme = u'' - self.BibleThemeComboBox.setCurrentIndex(id) \ No newline at end of file + self.BibleThemeComboBox.setCurrentIndex(id) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 93fe6a52f..863f7f40a 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -317,10 +317,10 @@ class BibleDB(QtCore.QObject): log.debug(u'OpenLP failed to find book %s', book) QtGui.QMessageBox.information(self.bible_plugin.media_item, translate('BibleDB', 'Book not found'), - translate(u'BibleDB', u'The book you requested could not ' - u'be found in this bible. Please check your spelling ' - u'and that this is a complete bible not just one ' - u'testament.')) + translate('BibleDB', u'The book you requested could not ' + 'be found in this bible. Please check your spelling ' + 'and that this is a complete bible not just one ' + 'testament.')) return verse_list def verse_search(self, text): @@ -391,4 +391,4 @@ class BibleDB(QtCore.QObject): log.debug(books) log.debug(u'...............................Verses ') verses = self.session.query(Verse).all() - log.debug(verses) \ No newline at end of file + log.debug(verses) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 07a7cdca9..d7633066d 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -386,8 +386,8 @@ class BibleMediaItem(MediaManagerItem): def onNoBookFound(self): QtGui.QMessageBox.critical(self, translate('BiblesPlugin.MediaItem', 'No Book Found'), - translate(u'BiblesPlugin.MediaItem', - u'No matching book could be found in this Bible.'), + translate('BiblesPlugin.MediaItem', + 'No matching book could be found in this Bible.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok), QtGui.QMessageBox.Ok ) diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py index 2ad95b026..da08e370a 100644 --- a/openlp/plugins/custom/customplugin.py +++ b/openlp/plugins/custom/customplugin.py @@ -67,11 +67,11 @@ class CustomPlugin(Plugin): self.remove_toolbox_item() def about(self): - about_text = translate(u'CustomPlugin', - u'Custom Plugin
This plugin ' - u'allows slides to be displayed on the screen in the same way ' - u'songs are. This plugin provides greater freedom over the ' - u'songs plugin.
') + about_text = translate('CustomPlugin', + 'Custom Plugin
This plugin ' + 'allows slides to be displayed on the screen in the same way ' + 'songs are. This plugin provides greater freedom over the ' + 'songs plugin.
') return about_text def can_delete_theme(self, theme): diff --git a/openlp/plugins/custom/lib/customtab.py b/openlp/plugins/custom/lib/customtab.py index 13260ac2a..ac0db035e 100644 --- a/openlp/plugins/custom/lib/customtab.py +++ b/openlp/plugins/custom/lib/customtab.py @@ -55,8 +55,8 @@ class CustomTab(SettingsTab): self.onDisplayFooterCheckBoxChanged) def retranslateUi(self): - self.CustomModeGroupBox.setTitle(translate(u'CustomPlugin.CustomTab', - u'Custom Display')) + self.CustomModeGroupBox.setTitle(translate('CustomPlugin.CustomTab', + 'Custom Display')) self.DisplayFooterCheckBox.setText( translate('CustomPlugin.CustomTab', 'Display Footer')) @@ -74,4 +74,4 @@ class CustomTab(SettingsTab): def save(self): QtCore.QSettings().setValue(self.settingsSection + u'/display footer', - QtCore.QVariant(self.displayFooter)) \ No newline at end of file + QtCore.QVariant(self.displayFooter)) diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index a347e3cd2..94ca4b33b 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -118,8 +118,8 @@ class CustomMediaItem(MediaManagerItem): """ Edit a custom item """ - if self.checkItemSelected(translate(u'CustomPlugin.MediaItem', - u'You must select an item to edit.')): + if self.checkItemSelected(translate('CustomPlugin.MediaItem', + 'You must select an item to edit.')): item = self.ListView.currentItem() item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] self.parent.edit_custom_form.loadCustom(item_id, False) @@ -130,8 +130,8 @@ class CustomMediaItem(MediaManagerItem): """ Remove a custom item from the list and database """ - if self.checkItemSelected(translate(u'CustomPlugin.MediaItem', - u'You must select an item to delete.')): + if self.checkItemSelected(translate('CustomPlugin.MediaItem', + 'You must select an item to delete.')): item = self.ListView.currentItem() item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] self.parent.custommanager.delete_custom(item_id) @@ -176,4 +176,4 @@ class CustomMediaItem(MediaManagerItem): else: raw_footer.append(u'') service_item.raw_footer = raw_footer - return True \ No newline at end of file + return True diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index 7dd1a8e04..aba137af7 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -61,14 +61,14 @@ class PresentationMediaItem(MediaManagerItem): self.message_listener = MessageListener(self) def initPluginNameVisible(self): - self.PluginNameVisible = translate(u'PresentationPlugin.MediaItem', - u'Presentation') + self.PluginNameVisible = translate('PresentationPlugin.MediaItem', + 'Presentation') def retranslateUi(self): - self.OnNewPrompt = translate(u'PresentationPlugin.MediaItem', - u'Select Presentation(s)') - self.Automatic = translate(u'PresentationPlugin.MediaItem', - u'Automatic') + self.OnNewPrompt = translate('PresentationPlugin.MediaItem', + 'Select Presentation(s)') + self.Automatic = translate('PresentationPlugin.MediaItem', + 'Automatic') fileType = u'' for controller in self.controllers: if self.controllers[controller].enabled: @@ -78,8 +78,8 @@ class PresentationMediaItem(MediaManagerItem): if fileType.find(type) == -1: fileType += u'*%s ' % type self.parent.service_manager.supportedSuffixes(type) - self.OnNewFileMasks = translate(u'PresentationPlugin.MediaItem', - u'Presentations (%s)' % fileType) + self.OnNewFileMasks = translate('PresentationPlugin.MediaItem', + 'Presentations (%s)' % fileType) def requiredIcons(self): MediaManagerItem.requiredIcons(self) @@ -139,10 +139,10 @@ class PresentationMediaItem(MediaManagerItem): filename = os.path.split(unicode(file))[1] if titles.count(filename) > 0: QtGui.QMessageBox.critical( - self, translate(u'PresentationPlugin.MediaItem', - u'File exists'), - translate(u'PresentationPlugin.MediaItem', - u'A presentation with that filename already exists.'), + self, translate('PresentationPlugin.MediaItem', + 'File exists'), + translate('PresentationPlugin.MediaItem', + 'A presentation with that filename already exists.'), QtGui.QMessageBox.Ok) else: icon = None @@ -177,8 +177,8 @@ class PresentationMediaItem(MediaManagerItem): """ Remove a presentation item from the list """ - if self.checkItemSelected(translate(u'PresentationPlugin.MediaItem', - u'You must select an item to delete.')): + if self.checkItemSelected(translate('PresentationPlugin.MediaItem', + 'You must select an item to delete.')): item = self.ListView.currentItem() row = self.ListView.row(item) self.ListView.takeItem(row) @@ -235,4 +235,4 @@ class PresentationMediaItem(MediaManagerItem): if self.controllers[controller].enabled: if filetype in self.controllers[controller].alsosupports: return controller - return None \ No newline at end of file + return None diff --git a/openlp/plugins/presentations/lib/presentationtab.py b/openlp/plugins/presentations/lib/presentationtab.py index a8f3036fc..099376ce9 100644 --- a/openlp/plugins/presentations/lib/presentationtab.py +++ b/openlp/plugins/presentations/lib/presentationtab.py @@ -37,8 +37,8 @@ class PresentationTab(SettingsTab): def setupUi(self): self.setObjectName(u'PresentationTab') - self.tabTitleVisible = translate(u'PresentationPlugin.PresentationTab', - u'Presentations') + self.tabTitleVisible = translate('PresentationPlugin.PresentationTab', + 'Presentations') self.PresentationLayout = QtGui.QHBoxLayout(self) self.PresentationLayout.setSpacing(8) self.PresentationLayout.setMargin(8) @@ -90,13 +90,13 @@ class PresentationTab(SettingsTab): def retranslateUi(self): self.VerseDisplayGroupBox.setTitle( - translate(u'PresentationPlugin.PresentationTab', - u'Available Controllers')) + translate('PresentationPlugin.PresentationTab', + 'Available Controllers')) for key in self.controllers: controller = self.controllers[key] checkbox = self.PresenterCheckboxes[controller.name] checkbox.setText( - u'%s %s' % (controller.name, + u'%s %s' % (controller.name, translate('PresentationPlugin.PresentationTab', 'available'))) def load(self): @@ -114,4 +114,4 @@ class PresentationTab(SettingsTab): checkbox = self.PresenterCheckboxes[controller.name] QtCore.QSettings().setValue( self.settingsSection + u'/' + controller.name, - QtCore.QVariant(checkbox.checkState())) \ No newline at end of file + QtCore.QVariant(checkbox.checkState())) diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index f59968287..68fcd28b4 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -108,10 +108,10 @@ class PresentationPlugin(Plugin): return False def about(self): - about_text = translate(u'PresentationPlugin', - u'Presentation Plugin
Delivers ' - u'the ability to show presentations using a number of different ' - u'programs. The choice of available presentation programs is ' - u'available to the user in a drop down box.') + about_text = translate('PresentationPlugin', + 'Presentation Plugin
Delivers ' + '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.') return about_text diff --git a/openlp/plugins/remotes/remoteplugin.py b/openlp/plugins/remotes/remoteplugin.py index c839f1595..897f9e644 100644 --- a/openlp/plugins/remotes/remoteplugin.py +++ b/openlp/plugins/remotes/remoteplugin.py @@ -64,14 +64,14 @@ class RemotesPlugin(Plugin): Create the settings Tab """ return RemoteTab(self.name) - + def about(self): """ Information about this plugin """ - about_text = translate(u'RemotePlugin', - u'Remote Plugin
This plugin ' - u'provides the ability to send messages to a running version of ' - u'openlp on a different computer via a web browser or other app
' - u'The Primary use for this would be to send alerts from a creche') + about_text = translate('RemotePlugin', + 'Remote Plugin
This plugin ' + 'provides the ability to send messages to a running version of ' + 'openlp on a different computer via a web browser or other app
' + 'The Primary use for this would be to send alerts from a creche') return about_text diff --git a/openlp/plugins/songs/forms/songmaintenanceform.py b/openlp/plugins/songs/forms/songmaintenanceform.py index 1dfa76764..4a666c3c5 100644 --- a/openlp/plugins/songs/forms/songmaintenanceform.py +++ b/openlp/plugins/songs/forms/songmaintenanceform.py @@ -137,10 +137,10 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): self.resetAuthors() else: QtGui.QMessageBox.critical( - self, translate(u'SongsPlugin.SongMaintenanceForm', - u'Error'), - translate(u'SongsPlugin.SongMaintenanceForm', - u'Couldn\'t add your author.')) + self, translate('SongsPlugin.SongMaintenanceForm', + 'Error'), + translate('SongsPlugin.SongMaintenanceForm', + 'Couldn\'t add your author.')) def onTopicAddButtonClick(self): if self.topicform.exec_(): @@ -149,10 +149,10 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): self.resetTopics() else: QtGui.QMessageBox.critical( - self, translate(u'SongsPlugin.SongMaintenanceForm', - u'Error'), - translate(u'SongsPlugin.SongMaintenanceForm', - u'Couldn\'t add your topic.')) + self, translate('SongsPlugin.SongMaintenanceForm', + 'Error'), + translate('SongsPlugin.SongMaintenanceForm', + 'Couldn\'t add your topic.')) def onBookAddButtonClick(self): if self.bookform.exec_(): @@ -163,10 +163,10 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): self.resetBooks() else: QtGui.QMessageBox.critical( - self, translate(u'SongsPlugin.SongMaintenanceForm', - u'Error'), - translate(u'SongsPlugin.SongMaintenanceForm', - u'Couldn\'t add your book.')) + self, translate('SongsPlugin.SongMaintenanceForm', + 'Error'), + translate('SongsPlugin.SongMaintenanceForm', + 'Couldn\'t add your book.')) def onAuthorEditButtonClick(self): author_id = self._getCurrentItemId(self.AuthorsListWidget) @@ -184,19 +184,19 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): self.authorform.LastNameEdit.setText(author.last_name) self.authorform.DisplayEdit.setText(author.display_name) if self.authorform.exec_(False): - author.first_name = unicode( + author.first_name = unicode( self.authorform.FirstNameEdit.text()) author.last_name = unicode(self.authorform.LastNameEdit.text()) - author.display_name = unicode( + author.display_name = unicode( self.authorform.DisplayEdit.text()) if self.songmanager.save_author(author): self.resetAuthors() else: QtGui.QMessageBox.critical( - self, translate(u'SongsPlugin.SongMaintenanceForm', - u'Error'), - translate(u'SongsPlugin.SongMaintenanceForm', - u'Couldn\'t save your author.')) + self, translate('SongsPlugin.SongMaintenanceForm', + 'Error'), + translate('SongsPlugin.SongMaintenanceForm', + 'Couldn\'t save your author.')) def onTopicEditButtonClick(self): topic_id = self._getCurrentItemId(self.TopicsListWidget) @@ -209,10 +209,10 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): self.resetTopics() else: QtGui.QMessageBox.critical( - self, translate(u'SongsPlugin.SongMaintenanceForm', - u'Error'), - translate(u'SongsPlugin.SongMaintenanceForm', - u'Couldn\'t save your topic.')) + self, translate('SongsPlugin.SongMaintenanceForm', + 'Error'), + translate('SongsPlugin.SongMaintenanceForm', + 'Couldn\'t save your topic.')) def onBookEditButtonClick(self): book_id = self._getCurrentItemId(self.BooksListWidget) @@ -227,10 +227,10 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): self.resetBooks() else: QtGui.QMessageBox.critical( - self, translate(u'SongsPlugin.SongMaintenanceForm', - u'Error'), - translate(u'SongsPlugin.SongMaintenanceForm', - u'Couldn\'t save your book.')) + self, translate('SongsPlugin.SongMaintenanceForm', + 'Error'), + translate('SongsPlugin.SongMaintenanceForm', + 'Couldn\'t save your book.')) def onAuthorDeleteButtonClick(self): """ @@ -240,13 +240,13 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): self.AuthorsListWidget, self.songmanager.get_author, self.songmanager.delete_author, self.resetAuthors, translate('SongsPlugin.SongMaintenanceForm', 'Delete Author'), - translate(u'SongsPlugin.SongMaintenanceForm', - u'Are you sure you want to delete the selected author?'), - translate(u'SongsPlugin.SongMaintenanceForm', - u'This author can\'t be deleted, they are currently ' - u'assigned to at least one song.'), - translate(u'SongsPlugin.SongMaintenanceForm', - u'No author selected!')) + translate('SongsPlugin.SongMaintenanceForm', + 'Are you sure you want to delete the selected author?'), + translate('SongsPlugin.SongMaintenanceForm', + 'This author can\'t be deleted, they are currently ' + 'assigned to at least one song.'), + translate('SongsPlugin.SongMaintenanceForm', + 'No author selected!')) def onTopicDeleteButtonClick(self): """ @@ -256,13 +256,13 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): self.TopicsListWidget, self.songmanager.get_topic, self.songmanager.delete_topic, self.resetTopics, translate('SongsPlugin.SongMaintenanceForm', 'Delete Topic'), - translate(u'SongsPlugin.SongMaintenanceForm', - u'Are you sure you want to delete the selected topic?'), - translate(u'SongsPlugin.SongMaintenanceForm', - u'This topic can\'t be deleted, it is currently ' - u'assigned to at least one song.'), - translate(u'SongsPlugin.SongMaintenanceForm', - u'No topic selected!')) + translate('SongsPlugin.SongMaintenanceForm', + 'Are you sure you want to delete the selected topic?'), + translate('SongsPlugin.SongMaintenanceForm', + 'This topic can\'t be deleted, it is currently ' + 'assigned to at least one song.'), + translate('SongsPlugin.SongMaintenanceForm', + 'No topic selected!')) def onBookDeleteButtonClick(self): """ @@ -272,9 +272,9 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): self.BooksListWidget, self.songmanager.get_book, self.songmanager.delete_book, self.resetBooks, translate('SongsPlugin.SongMaintenanceForm', 'Delete Book'), - translate(u'SongsPlugin.SongMaintenanceForm', - u'Are you sure you want to delete the selected book?'), - translate(u'SongsPlugin.SongMaintenanceForm', - u'This book can\'t be deleted, it is currently ' - u'assigned to at least one song.'), - translate('SongsPlugin.SongMaintenanceForm', 'No book selected!')) \ No newline at end of file + translate('SongsPlugin.SongMaintenanceForm', + 'Are you sure you want to delete the selected book?'), + translate('SongsPlugin.SongMaintenanceForm', + 'This book can\'t be deleted, it is currently ' + 'assigned to at least one song.'), + translate('SongsPlugin.SongMaintenanceForm', 'No book selected!')) diff --git a/openlp/plugins/songs/forms/topicsform.py b/openlp/plugins/songs/forms/topicsform.py index 5c2b18e2d..cf93ff0f2 100644 --- a/openlp/plugins/songs/forms/topicsform.py +++ b/openlp/plugins/songs/forms/topicsform.py @@ -50,10 +50,10 @@ class TopicsForm(QtGui.QDialog, Ui_TopicsDialog): if not self.NameEdit.text(): QtGui.QMessageBox.critical( self, translate('SongsPlugin.TopicsForm', 'Error'), - translate(u'SongsPlugin.TopicsForm', - u'You need to type in a topic name!'), + translate('SongsPlugin.TopicsForm', + 'You need to type in a topic name!'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.NameEdit.setFocus() return False else: - return QtGui.QDialog.accept(self) \ No newline at end of file + return QtGui.QDialog.accept(self) diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 9935fbd15..020c1ea71 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -70,8 +70,8 @@ class SongMediaItem(MediaManagerItem): ## Song Maintenance Button ## self.addToolbarButton( translate('SongsPlugin.MediaItem', 'Song Maintenance'), - translate(u'SongsPlugin.MediaItem', - u'Maintain the lists of authors, topics and books'), + translate('SongsPlugin.MediaItem', + 'Maintain the lists of authors, topics and books'), ':/songs/song_maintenance.png', self.onSongMaintenanceClick) self.PageLayout.setSpacing(4) self.SearchLayout = QtGui.QFormLayout() @@ -279,8 +279,8 @@ class SongMediaItem(MediaManagerItem): """ Edit a song """ - if self.checkItemSelected(translate(u'SongsPlugin.MediaItem', - u'You must select an item to edit.')): + if self.checkItemSelected(translate('SongsPlugin.MediaItem', + 'You must select an item to edit.')): item = self.ListView.currentItem() item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] self.edit_song_form.loadSong(item_id, False) @@ -290,16 +290,16 @@ class SongMediaItem(MediaManagerItem): """ Remove a song from the list and database """ - if self.checkItemSelected(translate(u'SongsPlugin.MediaItem', - u'You must select an item to delete.')): + if self.checkItemSelected(translate('SongsPlugin.MediaItem', + 'You must select an item to delete.')): items = self.ListView.selectedIndexes() if len(items) == 1: - del_message = translate(u'SongsPlugin.MediaItem', - u'Delete song?') + del_message = translate('SongsPlugin.MediaItem', + 'Delete song?') else: del_message = unicode( - translate(u'SongsPlugin.MediaItem', - u'Delete %d songs?')) % len(items) + translate('SongsPlugin.MediaItem', + 'Delete %d songs?')) % len(items) ans = QtGui.QMessageBox.question(self, translate('SongsPlugin.MediaItem', 'Delete Confirmation'), del_message, @@ -379,4 +379,4 @@ class SongMediaItem(MediaManagerItem): service_item.audit = [ song.title, author_audit, song.copyright, song.ccli_number ] - return True \ No newline at end of file + return True diff --git a/openlp/plugins/songs/lib/songstab.py b/openlp/plugins/songs/lib/songstab.py index 0c8ee0f58..13e497014 100644 --- a/openlp/plugins/songs/lib/songstab.py +++ b/openlp/plugins/songs/lib/songstab.py @@ -65,8 +65,8 @@ class SongsTab(SettingsTab): translate('SongsPlugin.SongsTab', 'Songs Mode')) self.SearchAsTypeCheckBox.setText( translate('SongsPlugin.SongsTab', 'Enable search as you type')) - self.SongBarActiveCheckBox.setText(translate(u'SongsPlugin.SongsTab', - u'Display Verses on Live Tool bar')) + self.SongBarActiveCheckBox.setText(translate('SongsPlugin.SongsTab', + 'Display Verses on Live Tool bar')) def onSearchAsTypeCheckBoxChanged(self, check_state): self.song_search = False @@ -96,4 +96,4 @@ class SongsTab(SettingsTab): settings.beginGroup(self.settingsSection) settings.setValue(u'search as type', QtCore.QVariant(self.song_search)) settings.setValue(u'display songbar', QtCore.QVariant(self.song_bar)) - settings.endGroup() \ No newline at end of file + settings.endGroup() diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 820706957..0e0c5b36d 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -93,41 +93,41 @@ class SongsPlugin(Plugin): self.SongImportItem.setText(translate( u'SongsPlugin', u'&Song')) self.SongImportItem.setToolTip( - translate(u'SongsPlugin', - u'Import songs using the import wizard.')) + translate('SongsPlugin', + 'Import songs using the import wizard.')) import_menu.addAction(self.SongImportItem) # Songs of Fellowship import menu item - will be removed and the # functionality will be contained within the import wizard self.ImportSofItem = QtGui.QAction(import_menu) self.ImportSofItem.setObjectName(u'ImportSofItem') self.ImportSofItem.setText( - translate(u'SongsPlugin', - u'Songs of Fellowship (temp menu item)')) + translate('SongsPlugin', + 'Songs of Fellowship (temp menu item)')) self.ImportSofItem.setToolTip( - translate(u'SongsPlugin', - u'Import songs from the VOLS1_2.RTF, sof3words' \ - + u'.rtf and sof4words.rtf supplied with the music books')) + translate('SongsPlugin', + 'Import songs from the VOLS1_2.RTF, sof3words' \ + + '.rtf and sof4words.rtf supplied with the music books')) self.ImportSofItem.setStatusTip( - translate(u'SongsPlugin', - u'Import songs from the VOLS1_2.RTF, sof3words' \ - + u'.rtf and sof4words.rtf supplied with the music books')) + translate('SongsPlugin', + 'Import songs from the VOLS1_2.RTF, sof3words' \ + + '.rtf and sof4words.rtf supplied with the music books')) import_menu.addAction(self.ImportSofItem) # OpenOffice.org import menu item - will be removed and the # functionality will be contained within the import wizard self.ImportOooItem = QtGui.QAction(import_menu) self.ImportOooItem.setObjectName(u'ImportOooItem') self.ImportOooItem.setText( - translate(u'SongsPlugin', - u'Generic Document/Presentation Import ' - u'(temp menu item)')) + translate('SongsPlugin', + 'Generic Document/Presentation Import ' + '(temp menu item)')) self.ImportOooItem.setToolTip( - translate(u'SongsPlugin', - u'Import songs from ' - u'Word/Writer/Powerpoint/Impress')) + translate('SongsPlugin', + 'Import songs from ' + 'Word/Writer/Powerpoint/Impress')) self.ImportOooItem.setStatusTip( - translate(u'SongsPlugin', - u'Import songs from ' - u'Word/Writer/Powerpoint/Impress')) + translate('SongsPlugin', + 'Import songs from ' + 'Word/Writer/Powerpoint/Impress')) import_menu.addAction(self.ImportOooItem) # Signals and slots QtCore.QObject.connect(self.SongImportItem, @@ -155,8 +155,8 @@ class SongsPlugin(Plugin): def onImportSofItemClick(self): filenames = QtGui.QFileDialog.getOpenFileNames( - None, translate(u'SongsPlugin', - u'Open Songs of Fellowship file'), + None, translate('SongsPlugin', + 'Open Songs of Fellowship file'), u'', u'Songs of Fellowship file (*.rtf *.RTF)') try: for filename in filenames: @@ -165,30 +165,30 @@ class SongsPlugin(Plugin): except: log.exception('Could not import SoF file') QtGui.QMessageBox.critical(None, - translate(u'SongsPlugin', - u'Import Error'), - translate(u'SongsPlugin', - u'Error importing Songs of ' - u'Fellowship file.\nOpenOffice.org must be installed' - u' and you must be using an unedited copy of the RTF' - u' included with the Songs of Fellowship Music Editions'), + translate('SongsPlugin', + 'Import Error'), + translate('SongsPlugin', + 'Error importing Songs of ' + 'Fellowship file.\nOpenOffice.org must be installed' + ' and you must be using an unedited copy of the RTF' + ' included with the Songs of Fellowship Music Editions'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok), QtGui.QMessageBox.Ok) Receiver.send_message(u'songs_load_list') def onImportOooItemClick(self): filenames = QtGui.QFileDialog.getOpenFileNames( - None, translate(u'SongsPlugin', - u'Open documents or presentations'), - u'', u'All Files(*.*)') + None, translate('SongsPlugin', + 'Open documents or presentations'), + '', u'All Files(*.*)') oooimport = OooImport(self.manager) oooimport.import_docs(filenames) Receiver.send_message(u'songs_load_list') def about(self): - about_text = translate(u'SongsPlugin', - u'Song Plugin
' - u'This plugin allows songs to be managed and displayed.') + about_text = translate('SongsPlugin', + 'Song Plugin
' + 'This plugin allows songs to be managed and displayed.') return about_text def can_delete_theme(self, theme): diff --git a/openlp/plugins/songusage/forms/songusagedeleteform.py b/openlp/plugins/songusage/forms/songusagedeleteform.py index 87bca1832..97e032413 100644 --- a/openlp/plugins/songusage/forms/songusagedeleteform.py +++ b/openlp/plugins/songusage/forms/songusagedeleteform.py @@ -42,10 +42,10 @@ class SongUsageDeleteForm(QtGui.QDialog, Ui_SongUsageDeleteDialog): def accept(self): ret = QtGui.QMessageBox.question(self, - translate(u'SongsPlugin.SongUsageDeleteForm', - u'Delete Selected Song Usage Events?'), - translate(u'SongsPlugin.SongUsageDeleteForm', - u'Are you sure you want to delete selected Song Usage data?'), + translate('SongsPlugin.SongUsageDeleteForm', + 'Delete Selected Song Usage Events?'), + translate('SongsPlugin.SongUsageDeleteForm', + 'Are you sure you want to delete selected Song Usage data?'), QtGui.QMessageBox.StandardButtons( QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel), diff --git a/openlp/plugins/songusage/forms/songusagedetaildialog.py b/openlp/plugins/songusage/forms/songusagedetaildialog.py index cb1a6fec2..4547cbe9f 100644 --- a/openlp/plugins/songusage/forms/songusagedetaildialog.py +++ b/openlp/plugins/songusage/forms/songusagedetaildialog.py @@ -87,11 +87,11 @@ class Ui_SongUsageDetailDialog(object): def retranslateUi(self, SongUsageDetailDialog): SongUsageDetailDialog.setWindowTitle( - translate(u'SongsPlugin.AuditDetailDialog', - u'Song Usage Extraction')) + translate('SongsPlugin.AuditDetailDialog', + 'Song Usage Extraction')) self.DateRangeGroupBox.setTitle( translate('SongsPlugin.AuditDetailDialog', 'Select Date Range')) self.ToLabel.setText( translate('SongsPlugin.AuditDetailDialog', 'to')) self.FileGroupBox.setTitle( - translate('SongsPlugin.AuditDetailDialog', 'Report Location')) \ No newline at end of file + translate('SongsPlugin.AuditDetailDialog', 'Report Location')) diff --git a/openlp/plugins/songusage/forms/songusagedetailform.py b/openlp/plugins/songusage/forms/songusagedetailform.py index 80bb18d77..1a0549251 100644 --- a/openlp/plugins/songusage/forms/songusagedetailform.py +++ b/openlp/plugins/songusage/forms/songusagedetailform.py @@ -61,8 +61,8 @@ class SongUsageDetailForm(QtGui.QDialog, Ui_SongUsageDetailDialog): def defineOutputLocation(self): path = QtGui.QFileDialog.getExistingDirectory(self, - translate(u'SongsPlugin.SongUsageDetailForm', - u'Output File Location'), + translate('SongsPlugin.SongUsageDetailForm', + 'Output File Location'), SettingsManager.get_last_dir(self.parent.settingsSection, 1)) path = unicode(path) if path != u'': diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py index 0b3d7971c..dc341791e 100644 --- a/openlp/plugins/songusage/songusageplugin.py +++ b/openlp/plugins/songusage/songusageplugin.py @@ -64,20 +64,20 @@ class SongUsagePlugin(Plugin): #SongUsage Delete self.SongUsageDelete = QtGui.QAction(tools_menu) self.SongUsageDelete.setText( - translate(u'SongUsagePlugin', - u'&Delete recorded data')) + translate('SongUsagePlugin', + '&Delete recorded data')) self.SongUsageDelete.setStatusTip( - translate(u'SongUsagePlugin', - u'Delete song usage to specified date')) + translate('SongUsagePlugin', + 'Delete song usage to specified date')) self.SongUsageDelete.setObjectName(u'SongUsageDelete') #SongUsage Report self.SongUsageReport = QtGui.QAction(tools_menu) self.SongUsageReport.setText( - translate(u'SongUsagePlugin', - u'&Extract recorded data')) + translate('SongUsagePlugin', + '&Extract recorded data')) self.SongUsageReport.setStatusTip( - translate(u'SongUsagePlugin', - u'Generate report on Song Usage')) + translate('SongUsagePlugin', + 'Generate report on Song Usage')) self.SongUsageReport.setObjectName(u'SongUsageReport') #SongUsage activation SongUsageIcon = build_icon(u':/tools/tools_alert.png') @@ -86,10 +86,10 @@ class SongUsagePlugin(Plugin): self.SongUsageStatus.setCheckable(True) self.SongUsageStatus.setChecked(False) self.SongUsageStatus.setText(translate( - u'SongUsagePlugin', u'Song Usage Status')) + 'SongUsagePlugin', 'Song Usage Status')) self.SongUsageStatus.setStatusTip( - translate(u'SongUsagePlugin', - u'Start/Stop live song usage recording')) + translate('SongUsagePlugin', + 'Start/Stop live song usage recording')) self.SongUsageStatus.setShortcut(u'F4') self.SongUsageStatus.setObjectName(u'SongUsageStatus') #Add Menus together @@ -163,8 +163,8 @@ class SongUsagePlugin(Plugin): self.SongUsagedetailform.exec_() def about(self): - about_text = translate(u'SongUsagePlugin', - u'SongUsage Plugin
This plugin ' - u'records the use of songs and when they have been used during ' - u'a live service') + about_text = translate('SongUsagePlugin', + 'SongUsage Plugin
This plugin ' + 'records the use of songs and when they have been used during ' + 'a live service') return about_text From d7bd2c507404ed5cc990129e3157b61b76acf86e Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Mon, 21 Jun 2010 22:06:36 +0200 Subject: [PATCH 20/83] Fix up Theme form parentage. Some new lines? --- openlp/core/ui/amendthemeform.py | 4 ++-- openlp/core/ui/thememanager.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/openlp/core/ui/amendthemeform.py b/openlp/core/ui/amendthemeform.py index 1439e711e..c85eff4b8 100644 --- a/openlp/core/ui/amendthemeform.py +++ b/openlp/core/ui/amendthemeform.py @@ -37,9 +37,9 @@ log = logging.getLogger(u'AmendThemeForm') class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): - def __init__(self, thememanager, parent=None): + def __init__(self, parent): QtGui.QDialog.__init__(self, parent) - self.thememanager = thememanager + self.thememanager = parent self.path = None self.theme = ThemeXML() self.setupUi(self) diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 7849175a3..6da526af0 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -66,7 +66,7 @@ class ThemeManager(QtGui.QWidget): translate('ThemeManager', 'Delete a theme.'), self.onDeleteTheme) self.Toolbar.addSeparator() self.Toolbar.addToolbarButton( - translate('ThemeManager', 'Import Theme'), + translate('ThemeManager', 'Import Theme'), u':/general/general_import.png', translate('ThemeManager', 'Import a theme.'), self.onImportTheme) self.Toolbar.addToolbarButton( @@ -211,7 +211,7 @@ class ThemeManager(QtGui.QWidget): else: for plugin in self.parent.plugin_manager.plugins: if not plugin.can_delete_theme(theme): - QtGui.QMessageBox.critical(self, + QtGui.QMessageBox.critical(self, translate('ThemeManager', 'Error'), unicode(translate('ThemeManager', 'Theme %s is use in %s plugin.')) % \ @@ -248,7 +248,7 @@ class ThemeManager(QtGui.QWidget): """ item = self.ThemeListWidget.currentItem() if item is None: - QtGui.QMessageBox.critical(self, + QtGui.QMessageBox.critical(self, translate('ThemeManager', 'Error'), translate('ThemeManager', 'You have not selected a theme.')) return From 75376730239ae4bd6f713a74755d3da01b2956af Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Mon, 21 Jun 2010 21:19:57 +0100 Subject: [PATCH 21/83] Fix [Bug 596995] Remotes Plugin does not work with PPA version --- MANIFEST.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MANIFEST.in b/MANIFEST.in index 73ff3c545..e8a5822e6 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,6 +1,8 @@ recursive-include openlp *.py recursive-include openlp *.sqlite recursive-include openlp *.csv +recursive-include openlp *.html +recursive-include openlp *.js recursive-include documentation * recursive-include resources/forms * recursive-include resources/i18n * From 2a7167014934d601630e26d3628d4fb4de474b96 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Mon, 21 Jun 2010 21:52:25 +0100 Subject: [PATCH 22/83] Stray trailing backslashes --- openlp/plugins/songs/lib/songimport.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index dbc9fa08d..454d7e3aa 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -63,9 +63,9 @@ class SongImport(object): self.verses = [] self.versecount = 0 self.choruscount = 0 - self.copyright_string = unicode(QtGui.QApplication.translate( \ + self.copyright_string = unicode(QtGui.QApplication.translate( u'SongsPlugin.SongImport', u'copyright')) - self.copyright_symbol = unicode(QtGui.QApplication.translate( \ + self.copyright_symbol = unicode(QtGui.QApplication.translate( u'SongsPlugin.SongImport', u'\xa9')) @staticmethod From 1cf85205cec2b63c92802fc0b42f40481044c193 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Mon, 21 Jun 2010 22:04:56 +0100 Subject: [PATCH 23/83] More translate() --- openlp/plugins/bibles/bibleplugin.py | 2 +- openlp/plugins/songs/songsplugin.py | 7 +++---- openlp/plugins/songusage/songusageplugin.py | 21 ++++++++------------- 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index 2c10e9c0d..8ebf551ab 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -82,7 +82,7 @@ class BiblePlugin(Plugin): self.ExportBibleItem.setObjectName(u'ExportBibleItem') export_menu.addAction(self.ExportBibleItem) self.ExportBibleItem.setText(translate( - u'BiblePlugin', u'&Bible')) + 'BiblePlugin', '&Bible')) self.ExportBibleItem.setVisible(False) def onBibleImportClick(self): diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 0e0c5b36d..a36c9b048 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -91,10 +91,9 @@ class SongsPlugin(Plugin): self.SongImportItem = QtGui.QAction(import_menu) self.SongImportItem.setObjectName(u'SongImportItem') self.SongImportItem.setText(translate( - u'SongsPlugin', u'&Song')) - self.SongImportItem.setToolTip( - translate('SongsPlugin', - 'Import songs using the import wizard.')) + 'SongsPlugin', '&Song')) + self.SongImportItem.setToolTip(translate('SongsPlugin', + 'Import songs using the import wizard.')) import_menu.addAction(self.SongImportItem) # Songs of Fellowship import menu item - will be removed and the # functionality will be contained within the import wizard diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py index dc341791e..83aa43785 100644 --- a/openlp/plugins/songusage/songusageplugin.py +++ b/openlp/plugins/songusage/songusageplugin.py @@ -60,24 +60,20 @@ class SongUsagePlugin(Plugin): self.SongUsageMenu = QtGui.QMenu(tools_menu) self.SongUsageMenu.setObjectName(u'SongUsageMenu') self.SongUsageMenu.setTitle(translate( - u'SongUsagePlugin', u'&Song Usage')) + 'SongUsagePlugin', '&Song Usage')) #SongUsage Delete self.SongUsageDelete = QtGui.QAction(tools_menu) - self.SongUsageDelete.setText( - translate('SongUsagePlugin', - '&Delete recorded data')) - self.SongUsageDelete.setStatusTip( - translate('SongUsagePlugin', - 'Delete song usage to specified date')) + self.SongUsageDelete.setText(translate('SongUsagePlugin', + '&Delete recorded data')) + self.SongUsageDelete.setStatusTip(translate('SongUsagePlugin', + 'Delete song usage to specified date')) self.SongUsageDelete.setObjectName(u'SongUsageDelete') #SongUsage Report self.SongUsageReport = QtGui.QAction(tools_menu) self.SongUsageReport.setText( - translate('SongUsagePlugin', - '&Extract recorded data')) + translate('SongUsagePlugin', '&Extract recorded data')) self.SongUsageReport.setStatusTip( - translate('SongUsagePlugin', - 'Generate report on Song Usage')) + translate('SongUsagePlugin', 'Generate report on Song Usage')) self.SongUsageReport.setObjectName(u'SongUsageReport') #SongUsage activation SongUsageIcon = build_icon(u':/tools/tools_alert.png') @@ -87,8 +83,7 @@ class SongUsagePlugin(Plugin): self.SongUsageStatus.setChecked(False) self.SongUsageStatus.setText(translate( 'SongUsagePlugin', 'Song Usage Status')) - self.SongUsageStatus.setStatusTip( - translate('SongUsagePlugin', + self.SongUsageStatus.setStatusTip(translate('SongUsagePlugin', 'Start/Stop live song usage recording')) self.SongUsageStatus.setShortcut(u'F4') self.SongUsageStatus.setObjectName(u'SongUsageStatus') From e18a8067c714990838031cab32f947fbcfe7b367 Mon Sep 17 00:00:00 2001 From: Frode Woldsund Date: Mon, 21 Jun 2010 23:57:01 +0200 Subject: [PATCH 24/83] switched place on function that did not make sense: translate(unicode -> unicode(translate --- openlp/core/lib/mediamanageritem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index a011a1c94..5e2566704 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -491,7 +491,7 @@ class MediaManagerItem(QtGui.QWidget): #Turn off the remote edit update message indicator QtGui.QMessageBox.information(self, translate('MediaManagerItem', 'Invalid Service Item'), - translate(unicode('MediaManagerItem', + unicode(translate('MediaManagerItem', 'You must select a %s service item.')) % self.title) def buildServiceItem(self, item=None): From 979129ebe75f7a241d2297023389476354217813 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Tue, 22 Jun 2010 00:26:35 +0100 Subject: [PATCH 25/83] Script resource generation --- .bzrignore | 1 + scripts/generate_resources.sh | 54 ++++++++++++++++++++++++++++++++ scripts/resources.patch | 59 +++++++++++++++++++++++++++++++++++ 3 files changed, 114 insertions(+) create mode 100644 scripts/generate_resources.sh create mode 100644 scripts/resources.patch diff --git a/.bzrignore b/.bzrignore index e63989097..191ba49fd 100644 --- a/.bzrignore +++ b/.bzrignore @@ -17,3 +17,4 @@ resources/innosetup/Output _eric4project .pylint.d *.qm +openlp/core/resources.py.old diff --git a/scripts/generate_resources.sh b/scripts/generate_resources.sh new file mode 100644 index 000000000..c2039a5b6 --- /dev/null +++ b/scripts/generate_resources.sh @@ -0,0 +1,54 @@ +#!/bin/sh +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is 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 # +############################################################################### +# +# This script automates the generation of resources.py for OpenLP saving a +# backup of the old resources, inserting the coding and copyright header and +# conforming it to the project coding standards. +# +# To make use of the script: +# 1 - Add the new image files in resources/images/ +# 2 - Modify resources/images/openlp-2.qrc as appropriate +# 3 - run sh scripts/generate_resources.sh +# +# Once you have confirmed the resources are correctly modified to an updated, +# working state you may optionally remove openlp/core/resources.py.old +# +############################################################################### +# Backup the existing resources +mv openlp/core/resources.py openlp/core/resources.py.old + +# Create the new data from the updated qrc +pyrcc4 -o openlp/core/resources.py.new resources/images/openlp-2.qrc + +# Remove patch breaking lines +cat openlp/core/resources.py.new | sed '/# Created: /d;/# by: /d' \ + > openlp/core/resources.py + +# Patch resources.py to OpenLP coding style +patch --posix -s openlp/core/resources.py scripts/resources.patch + +# Remove temporary file +rm openlp/core/resources.py.new + diff --git a/scripts/resources.patch b/scripts/resources.patch new file mode 100644 index 000000000..ba85a157c --- /dev/null +++ b/scripts/resources.patch @@ -0,0 +1,59 @@ +--- 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,31 @@ + # -*- coding: utf-8 -*- ++# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +-# Resource object code +-# +-# +-# WARNING! All changes made in this file will be lost! +- ++############################################################################### ++# OpenLP - Open Source Lyrics Projection # ++# --------------------------------------------------------------------------- # ++# Copyright (c) 2008-2010 Raoul Snyman # ++# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # ++# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # ++# Thompson, Jon Tibble, Carsten Tinggaard # ++# --------------------------------------------------------------------------- # ++# This program is 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 :mod:`resources` module provides application images and icons in a central ++store for use by OpenLP. ++""" + from PyQt4 import QtCore + + qt_resource_data = "\ +@@ -48643,9 +48664,16 @@ + " + + def qInitResources(): +- QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) ++ """ ++ Initialise OpenLP resources at application startup. ++ """ ++ QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, ++ qt_resource_data) + + def qCleanupResources(): +- QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) ++ """ ++ Cleanup OpenLP resources when the application shuts down. ++ """ ++ QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, ++ qt_resource_data) + +-qInitResources() From 70df49476d4dd7c6f6b1d165d53cee8f50dee5b1 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Tue, 22 Jun 2010 00:38:54 +0100 Subject: [PATCH 26/83] Long lines --- openlp/core/ui/mediadockmanager.py | 3 ++- openlp/plugins/custom/forms/editcustomform.py | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/openlp/core/ui/mediadockmanager.py b/openlp/core/ui/mediadockmanager.py index f55dfa70c..932c1b024 100644 --- a/openlp/core/ui/mediadockmanager.py +++ b/openlp/core/ui/mediadockmanager.py @@ -76,6 +76,7 @@ class MediaDockManager(object): log.debug(u'remove %s dock' % name) for dock_index in range(0, self.media_dock.count()): if self.media_dock.widget(dock_index): - if self.media_dock.widget(dock_index).settingsSection == name.lower(): + if self.media_dock.widget(dock_index).settingsSection == \ + name.lower(): self.media_dock.widget(dock_index).hide() self.media_dock.removeItem(dock_index) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index d3e460beb..d387e7543 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -85,9 +85,8 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog): def onPreview(self, button): log.debug(u'onPreview') - if button.text() == \ - unicode(translate('CustomPlugin.EditCustomForm', 'Save && Preview')) \ - and self.saveCustom(): + if button.text() == unicode(translate('CustomPlugin.EditCustomForm', + 'Save && Preview')) and self.saveCustom(): Receiver.send_message(u'custom_preview') def initialise(self): From a9e9f334e26bdfc14eeabc01199c0a340fa1aad2 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Tue, 22 Jun 2010 13:32:15 +0100 Subject: [PATCH 27/83] Fix log file location --- openlp.pyw | 2 +- openlp/core/utils/__init__.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/openlp.pyw b/openlp.pyw index 5ec730e22..fd8bfb41e 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -163,7 +163,7 @@ def main(): parser.add_option("-s", "--style", dest="style", help="Set the Qt4 style (passed directly to Qt4).") # Set up logging - log_path = AppLocation.get_directory(AppLocation.ConfigDir) + log_path = AppLocation.get_directory(AppLocation.CacheDir) if not os.path.exists(log_path): os.makedirs(log_path) filename = os.path.join(log_path, u'openlp.log') diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 78c16e26a..4fb1e613e 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -50,6 +50,7 @@ class AppLocation(object): DataDir = 3 PluginsDir = 4 VersionDir = 5 + CacheDir = 6 @staticmethod def get_directory(dir_type=1): @@ -103,6 +104,20 @@ class AppLocation(object): else: plugin_path = os.path.split(openlp.__file__)[0] return plugin_path + elif dir_type == AppLocation.CacheDir: + if sys.platform == u'win32': + path = os.path.join(os.getenv(u'APPDATA'), u'openlp') + elif sys.platform == u'darwin': + path = os.path.join(os.getenv(u'HOME'), u'Library', + u'Application Support', u'openlp') + else: + try: + from xdg import BaseDirectory + path = os.path.join( + BaseDirectory.xdg_cache_home, u'openlp') + except ImportError: + path = os.path.join(os.getenv(u'HOME'), u'.openlp') + return path @staticmethod def get_data_path(): From d9d976d64bfd05d6417d31197c509e5306a70743 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Tue, 22 Jun 2010 16:09:49 +0100 Subject: [PATCH 28/83] Cleanup and import fix --- openlp/plugins/bibles/lib/db.py | 3 ++- openlp/plugins/custom/lib/mediaitem.py | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index d7f59307e..d2a62ec59 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -32,7 +32,8 @@ 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.db import BaseModel, init_db, Manager, translate +from openlp.core.lib import translate +from openlp.core.lib.db import BaseModel, init_db, Manager log = logging.getLogger(__name__) diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 00ba3561c..b94da35d5 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -86,10 +86,10 @@ class CustomMediaItem(MediaManagerItem): def loadCustomListView(self, list): self.ListView.clear() - for CustomSlide in list: - custom_name = QtGui.QListWidgetItem(CustomSlide.title) + for customSlide in list: + custom_name = QtGui.QListWidgetItem(customSlide.title) custom_name.setData( - QtCore.Qt.UserRole, QtCore.QVariant(CustomSlide.id)) + QtCore.Qt.UserRole, QtCore.QVariant(customSlide.id)) self.ListView.addItem(custom_name) def onNewClick(self): From 912668c6195573c52ff0d2287add9eb5abaaa03e Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Tue, 22 Jun 2010 17:17:15 +0100 Subject: [PATCH 29/83] Fix version check (Bug #597121) --- openlp/core/utils/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 4fb1e613e..475fcdbcb 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -153,7 +153,6 @@ def check_latest_version(current_version): settings.setValue(u'last version test', QtCore.QVariant(this_test)) settings.endGroup() if last_test != this_test: - version_string = u'' if current_version[u'build']: req = urllib2.Request( u'http://www.openlp.org/files/dev_version.txt') From dc1479e830fbd095a3ddf5389be8c94cbc69cfdc Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 22 Jun 2010 18:12:47 +0100 Subject: [PATCH 30/83] Stop screen blanking on 1 display as startup --- openlp/core/ui/slidecontroller.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index e289e430d..87f6f20fe 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -655,7 +655,8 @@ class SlideController(QtGui.QWidget): """ Allow the main display to blank the main display at startup time """ - self.blankButton.setChecked(True) + if not self.mainDisplay.primary: + self.blankButton.setChecked(True) def onSlideBlank(self): """ From edce9a6117a78d53f781c97b2489419aabced481 Mon Sep 17 00:00:00 2001 From: rimach Date: Tue, 22 Jun 2010 19:16:39 +0200 Subject: [PATCH 31/83] improve translation_utils script --- resources/i18n/openlp_en.ts | 920 ++++++++++++++++++++++++++--------- resources/i18n/openlp_et.ts | 493 ++++++++++++++++++- scripts/translation_utils.py | 295 ++++++----- 3 files changed, 1366 insertions(+), 342 deletions(-) diff --git a/resources/i18n/openlp_en.ts b/resources/i18n/openlp_en.ts index 954ad5aff..446cb286a 100644 --- a/resources/i18n/openlp_en.ts +++ b/resources/i18n/openlp_en.ts @@ -1,6 +1,5 @@ - - + AboutForm @@ -64,8 +63,8 @@ Packagers - Copyright © 2004-2010 Raoul Snyman -Portions copyright © 2004-2010 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten Tinggaard + Copyright © 2004-2010 Raoul Snyman +Portions copyright © 2004-2010 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten Tinggaard This program is 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. @@ -230,6 +229,11 @@ This General Public License does not permit incorporating your program into prop Show an alert message + + + <b>Alerts Plugin</b><br>This plugin controls the displaying of alerts on the presentations screen + + AlertsPlugin.AlertForm @@ -261,7 +265,7 @@ This General Public License does not permit incorporating your program into prop &Delete - &Delete + @@ -289,6 +293,14 @@ This General Public License does not permit incorporating your program into prop + + AlertsPlugin.AlertsManager + + + Alert message created and delayed + + + AlertsPlugin.AlertsTab @@ -691,7 +703,12 @@ This General Public License does not permit incorporating your program into prop BiblePlugin - + + <strong>Bible Plugin</strong><br />This plugin allows bible verses from different sources to be displayed on the screen during the service. + + + + &Bible @@ -708,6 +725,11 @@ This General Public License does not permit incorporating your program into prop Verse Display + + + Only show new chapter numbers + + Layout Style: @@ -764,6 +786,15 @@ This General Public License does not permit incorporating your program into prop + + BiblesPlugin.BiblesTab + + + Note: +Changes don't affect verses already in the service + + + BiblesPlugin.ImportWizardForm @@ -771,6 +802,26 @@ This General Public License does not permit incorporating your program into prop Bible Import Wizard + + + Welcome to the Bible Import Wizard + + + + + 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. + + + + + Select Import Source + + + + + Select the import format, and where to import from. + + Format: @@ -856,11 +907,21 @@ This General Public License does not permit incorporating your program into prop Password: + + + Proxy Server (Optional) + + License Details + + + Set up the Bible's license details. + + Version Name: @@ -881,11 +942,86 @@ This General Public License does not permit incorporating your program into prop Importing + + + Please wait while your Bible is imported. + + Ready. + + + Invalid Bible Location + + + + + You need to specify a file to import your Bible from. + + + + + Invalid Books File + + + + + You need to specify a file with books of the Bible to use in the import. + + + + + Invalid Verse File + + + + + You need to specify a file of Bible verses to import. + + + + + Invalid OpenSong Bible + + + + + You need to specify an OpenSong Bible file to import. + + + + + Empty Version Name + + + + + You need to specify a version name for your Bible. + + + + + Empty Copyright + + + + + You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. + + + + + Bible Exists + + + + + This Bible already exists! Please import a different Bible or first delete the existing one. + + Open OSIS File @@ -896,6 +1032,11 @@ This General Public License does not permit incorporating your program into prop Open Books CSV File + + + Open Verses CSV File + + Open OpenSong Bible @@ -906,6 +1047,16 @@ This General Public License does not permit incorporating your program into prop Starting import... + + + Finished import. + + + + + Your Bible import failed. + + BiblesPlugin.MediaItem @@ -1004,6 +1155,11 @@ This General Public License does not permit incorporating your program into prop No Book Found + + + No matching book could be found in this Bible. + + etc @@ -1023,6 +1179,14 @@ This General Public License does not permit incorporating your program into prop + + CustomPlugin + + + <b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br> + + + CustomPlugin.CustomTab @@ -1030,6 +1194,11 @@ This General Public License does not permit incorporating your program into prop Custom + + + Custom Display + + Display Footer @@ -1139,22 +1308,22 @@ This General Public License does not permit incorporating your program into prop - + Save && Preview - Save && Preview + - + Error - Error + - + You need to enter a title - + You need to enter a slide @@ -1166,11 +1335,21 @@ This General Public License does not permit incorporating your program into prop Custom + + + You must select an item to edit. + + + + + You must select an item to delete. + + CustomPlugin.editCustomForm - + You have unsaved data, please save or clear @@ -1263,7 +1442,7 @@ This General Public License does not permit incorporating your program into prop CCLI Number: - CCLI number: + @@ -1930,6 +2109,11 @@ You can download the latest version from http://openlp.org Invalid Service Item + + + You must select a %s service item. + + MediaPlugin @@ -1960,7 +2144,7 @@ You can download the latest version from http://openlp.org OpenLP - + Image Files @@ -2023,22 +2207,78 @@ You can download the latest version from http://openlp.org + + PresentationPlugin + + + <b>Presentation Plugin</b> <br> Delivers 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. + + + PresentationPlugin.MediaItem + + + Presentation + + + + + Select Presentation(s) + + + + + Automatic + + Present using: + + + File exists + + + + + A presentation with that filename already exists. + + + + + You must select an item to delete. + + PresentationPlugin.PresentationTab + + + Presentations + + + + + Available Controllers + + available + + RemotePlugin + + + <b>Remote Plugin</b><br>This plugin provides the ability to send messages to a running version of openlp on a different computer via a web browser or other app<br>The Primary use for this would be to send alerts from a creche + + + RemotePlugin.RemoteTab @@ -2230,7 +2470,7 @@ You can download the latest version from http://openlp.org Error - Error + @@ -2358,6 +2598,108 @@ The content encoding is not UTF-8. + + SongUsagePlugin + + + &Delete recorded data + + + + + Start/Stop live song usage recording + + + + + <b>SongUsage Plugin</b><br>This plugin records the use of songs and when they have been used during a live service + + + + + Delete song usage to specified date + + + + + Generate report on Song Usage + + + + + Song Usage Status + + + + + &Extract recorded data + + + + + &Song Usage + + + + + SongsPlugin + + + &Song + + + + + Import songs using the import wizard. + + + + + Songs of Fellowship (temp menu item) + + + + + Import songs from the VOLS1_2.RTF, sof3words.rtf and sof4words.rtf supplied with the music books + + + + + Generic Document/Presentation Import (temp menu item) + + + + + Import songs from Word/Writer/Powerpoint/Impress + + + + + Open Songs of Fellowship file + + + + + Import Error + + + + + Error importing Songs of Fellowship file. +OpenOffice.org must be installed and you must be using an unedited copy of the RTF included with the Songs of Fellowship Music Editions + + + + + Open documents or presentations + + + + + <strong>Song Plugin</strong><br />This plugin allows songs to be managed and displayed. + + + SongsPlugin.AuditDeleteDialog @@ -2368,6 +2710,11 @@ The content encoding is not UTF-8. SongsPlugin.AuditDetailDialog + + + Song Usage Extraction + + Select Date Range @@ -2389,42 +2736,42 @@ The content encoding is not UTF-8. Author Maintenance - Author Maintenance + Display name: - &Display name: + First name: - &First name: + Last name: - &Last name: + Error - Error + You need to type in the first name of the author. - You need to type in the first name of the author. + You need to type in the last name of the author. - You need to type in the last name of the author. + You haven't set a display name for the author, would you like me to combine the first and last names for you? - You haven't set a display name for the author, would you like me to combine the first and last names for you? + @@ -2432,222 +2779,222 @@ The content encoding is not UTF-8. Song Editor - Song Editor + &Title: - &Title: - - - - &Lyrics: - &Lyrics: - - - - &Verse Order: - &Verse order: - - - - &Add - &Add - - - - &Edit - &Edit - - - - Ed&it All - Ed&it All - - - - &Delete - &Delete - - - - Title && Lyrics - Title && Lyrics - - - - Authors - Authors - - - - &Add to Song - &Add to Song - - - - &Remove - &Remove - - - - &Manage Authors, Topics, Books - &Manage Authors, Topics, Books - - - - Topic - Topic - - - - A&dd to Song - A&dd to Song - - - - R&emove - R&emove - - - - Song Book - Song Book - - - - Authors, Topics && Book - Authors, Topics && Book - - - - Theme - Theme - - - - Copyright Information - Copyright Information - - - - CCLI Number: - CCLI number: - - - - Comments - Comments - - - - Theme, Copyright Info && Comments - Theme, Copyright Info && Comments - - - - Add Author - Add Author - - - - This author does not exist, do you want to add them? - This author does not exist, do you want to add them? - - - - No Author Selected - No Author Selected - - - - 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. - 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. - - - - Add Topic - Add Topic - - - - This topic does not exist, do you want to add it? - This topic does not exist, do you want to add it? - - - - No Topic Selected - No Topic Selected - - - - 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. - 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. - - - - Add Book - Add Book - - - - This song book does not exist, do you want to add it? - This song book does not exist, do you want to add it? - - - - The verse order is invalid. There is no verse corresponding to %s. Valid entries are %s. - The verse order is invalid. There is no verse corresponding to %s. Valid entries are %s. + Alt&ernate Title: - Alt&ernate Title: + + + + + &Lyrics: + + + + + &Verse Order: + + + + + &Add + + + + + &Edit + + + + + Ed&it All + + + + + &Delete + + + + + Title && Lyrics + + + + + Authors + + + + + &Add to Song + + + + + &Remove + + + + + &Manage Authors, Topics, Books + + + + + Topic + + + + + A&dd to Song + + + + + R&emove + + + + + Song Book + + + + + Authors, Topics && Book + + + + + Theme + New &Theme - New &Theme + + + + + Copyright Information + - © - © + © + + + + + CCLI Number: + + + + + Comments + + + + + Theme, Copyright Info && Comments + Save && Preview - Save && Preview + + + + + Add Author + + + + + This author does not exist, do you want to add them? + + + + + No Author Selected + + + + + 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. + + + + + Add Topic + + + + + This topic does not exist, do you want to add it? + + + + + No Topic Selected + + + + + 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. + + + + + Add Book + + + + + This song book does not exist, do you want to add it? + Error - Error + You need to type in a song title. - You need to type in a song title. + You need to type in at least one verse. - You need to type in at least one verse. + Warning - Warning + You have not added any authors for this song. Do you want to add an author now? - You have not added any authors for this song. Do you want to add an author now? + + + + + The verse order is invalid. There is no verse corresponding to %s. Valid entries are %s. + You have not used %s anywhere in the verse order. Are you sure you want to save the song like this? - You have not used %s anywhere in the verse order. Are you sure you want to save the song like this? + @@ -2655,17 +3002,17 @@ The content encoding is not UTF-8. Edit Verse - Edit Verse + &Verse type: - &Verse type: + &Insert - &Insert + @@ -2710,6 +3057,11 @@ The content encoding is not UTF-8. You need to specify a CSV file to import from. + + + Starting import... + + Song Import Wizard @@ -2800,11 +3152,6 @@ The content encoding is not UTF-8. %p% - - - Starting import... - - SongsPlugin.MediaItem @@ -2816,7 +3163,12 @@ The content encoding is not UTF-8. Song Maintenance - Song Maintenance + + + + + Maintain the lists of authors, topics and books + @@ -2851,13 +3203,33 @@ The content encoding is not UTF-8. Authors - Authors + %s (%s) + + + You must select an item to edit. + + + + + You must select an item to delete. + + + + + Delete song? + + + + + Delete %d songs? + + Delete Confirmation @@ -2874,27 +3246,27 @@ The content encoding is not UTF-8. Edit Book - Edit Book + &Name: - &Name: + &Publisher: - &Publisher: + Error - Error + You need to type in a name for the book. - You need to type in a name for the book. + @@ -2902,59 +3274,155 @@ The content encoding is not UTF-8. Song Maintenance - Song Maintenance + Authors - Authors + Topics - Topics + Books/Hymnals - Books/Hymnals + &Add - &Add + &Edit - &Edit + &Delete - &Delete + + + + + Error + + + + + Couldn't add your author. + + + + + Couldn't add your topic. + + + + + Couldn't add your book. + + + + + Couldn't save your author. + + + + + Couldn't save your topic. + + + + + Couldn't save your book. + Delete Author + + + Are you sure you want to delete the selected author? + + + + + This author can't be deleted, they are currently assigned to at least one song. + + + + + No author selected! + + Delete Topic + + + Are you sure you want to delete the selected topic? + + + + + This topic can't be deleted, it is currently assigned to at least one song. + + + + + No topic selected! + + Delete Book + + + Are you sure you want to delete the selected book? + + + + + This book can't be deleted, it is currently assigned to at least one song. + + No book selected! + + SongsPlugin.SongUsageDeleteForm + + + Delete Selected Song Usage Events? + + + + + Are you sure you want to delete selected Song Usage data? + + + + + SongsPlugin.SongUsageDetailForm + + + Output File Location + + + SongsPlugin.SongsTab @@ -2972,6 +3440,11 @@ The content encoding is not UTF-8. Enable search as you type + + + Display Verses on Live Tool bar + + SongsPlugin.TopicsForm @@ -2988,7 +3461,12 @@ The content encoding is not UTF-8. Error - Error + + + + + You need to type in a topic name! + @@ -3019,7 +3497,7 @@ The content encoding is not UTF-8. Error - Error + diff --git a/resources/i18n/openlp_et.ts b/resources/i18n/openlp_et.ts index b84f4a108..5af0470e8 100644 --- a/resources/i18n/openlp_et.ts +++ b/resources/i18n/openlp_et.ts @@ -262,6 +262,11 @@ This General Public License does not permit incorporating your program into prop Show an alert message + + + <b>Alerts Plugin</b><br>This plugin controls the displaying of alerts on the presentations screen + + AlertsPlugin.AlertForm @@ -321,6 +326,14 @@ This General Public License does not permit incorporating your program into prop + + AlertsPlugin.AlertsManager + + + Alert message created and delayed + + + AlertsPlugin.AlertsTab @@ -723,10 +736,15 @@ This General Public License does not permit incorporating your program into prop BiblePlugin - + &Bible + + + <strong>Bible Plugin</strong><br />This plugin allows bible verses from different sources to be displayed on the screen during the service. + + BiblesPlugin,BiblesTab @@ -795,6 +813,20 @@ This General Public License does not permit incorporating your program into prop Display Dual Bible Verses + + + Only show new chapter numbers + + + + + BiblesPlugin.BiblesTab + + + Note: +Changes don't affect verses already in the service + + BiblesPlugin.ImportWizardForm @@ -938,6 +970,126 @@ This General Public License does not permit incorporating your program into prop Starting import... + + + Welcome to the Bible Import Wizard + + + + + 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. + + + + + Select Import Source + + + + + Select the import format, and where to import from. + + + + + Proxy Server (Optional) + + + + + Set up the Bible's license details. + + + + + Please wait while your Bible is imported. + + + + + Invalid Bible Location + + + + + You need to specify a file to import your Bible from. + + + + + Invalid Books File + + + + + You need to specify a file with books of the Bible to use in the import. + + + + + Invalid Verse File + + + + + You need to specify a file of Bible verses to import. + + + + + Invalid OpenSong Bible + + + + + You need to specify an OpenSong Bible file to import. + + + + + Empty Version Name + + + + + You need to specify a version name for your Bible. + + + + + Empty Copyright + + + + + You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. + + + + + Bible Exists + + + + + This Bible already exists! Please import a different Bible or first delete the existing one. + + + + + Open Verses CSV File + + + + + Finished import. + + + + + Your Bible import failed. + + BiblesPlugin.MediaItem @@ -1046,6 +1198,11 @@ This General Public License does not permit incorporating your program into prop Bible not fully loaded + + + No matching book could be found in this Bible. + + BiblesPlugin.Opensong @@ -1055,6 +1212,14 @@ This General Public License does not permit incorporating your program into prop + + CustomPlugin + + + <b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br> + + + CustomPlugin.CustomTab @@ -1067,6 +1232,11 @@ This General Public License does not permit incorporating your program into prop Display Footer + + + Custom Display + + CustomPlugin.EditCustomForm @@ -1171,22 +1341,22 @@ This General Public License does not permit incorporating your program into prop Autorid: - + Save && Preview Salvesta && eelvaatle - + Error Viga - + You need to enter a title Pead sisestama pealkirja - + You need to enter a slide Pead sisenema slaidile @@ -1198,11 +1368,21 @@ This General Public License does not permit incorporating your program into prop Custom + + + You must select an item to edit. + + + + + You must select an item to delete. + + CustomPlugin.editCustomForm - + You have unsaved data, please save or clear Sul on salvestamata andmeid, palun salvesta või tühjenda @@ -1962,6 +2142,11 @@ You can download the latest version from http://openlp.org You must select one or more items to send live. + + + You must select a %s service item. + + MediaPlugin @@ -1992,7 +2177,7 @@ You can download the latest version from http://openlp.org OpenLP - + Image Files @@ -2055,6 +2240,14 @@ You can download the latest version from http://openlp.org + + PresentationPlugin + + + <b>Presentation Plugin</b> <br> Delivers 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. + + + PresentationPlugin.MediaItem @@ -2062,6 +2255,36 @@ You can download the latest version from http://openlp.org Present using: + + + Presentation + + + + + Select Presentation(s) + + + + + Automatic + + + + + File exists + + + + + A presentation with that filename already exists. + + + + + You must select an item to delete. + + PresentationPlugin.PresentationTab @@ -2070,6 +2293,24 @@ You can download the latest version from http://openlp.org available + + + Presentations + + + + + Available Controllers + + + + + RemotePlugin + + + <b>Remote Plugin</b><br>This plugin provides the ability to send messages to a running version of openlp on a different computer via a web browser or other app<br>The Primary use for this would be to send alerts from a creche + + RemotePlugin.RemoteTab @@ -2390,6 +2631,108 @@ The content encoding is not UTF-8. Muuda ja kuva laulu eelvaade uuesti + + SongUsagePlugin + + + &Song Usage + + + + + &Delete recorded data + + + + + Delete song usage to specified date + + + + + &Extract recorded data + + + + + Generate report on Song Usage + + + + + Song Usage Status + + + + + Start/Stop live song usage recording + + + + + <b>SongUsage Plugin</b><br>This plugin records the use of songs and when they have been used during a live service + + + + + SongsPlugin + + + &Song + + + + + Import songs using the import wizard. + + + + + Songs of Fellowship (temp menu item) + + + + + Import songs from the VOLS1_2.RTF, sof3words.rtf and sof4words.rtf supplied with the music books + + + + + Generic Document/Presentation Import (temp menu item) + + + + + Import songs from Word/Writer/Powerpoint/Impress + + + + + Open Songs of Fellowship file + + + + + Import Error + + + + + Error importing Songs of Fellowship file. +OpenOffice.org must be installed and you must be using an unedited copy of the RTF included with the Songs of Fellowship Music Editions + + + + + Open documents or presentations + + + + + <strong>Song Plugin</strong><br />This plugin allows songs to be managed and displayed. + + + SongsPlugin.AuditDeleteDialog @@ -2415,6 +2758,11 @@ The content encoding is not UTF-8. Report Location + + + Song Usage Extraction + + SongsPlugin.AuthorsForm @@ -2900,6 +3248,31 @@ The content encoding is not UTF-8. CCLI Licence: + + + Maintain the lists of authors, topics and books + + + + + You must select an item to edit. + + + + + You must select an item to delete. + + + + + Delete song? + + + + + Delete %d songs? + + SongsPlugin.SongBookForm @@ -2986,6 +3359,102 @@ The content encoding is not UTF-8. No book selected! + + + Error + Viga + + + + Couldn't add your author. + + + + + Couldn't add your topic. + + + + + Couldn't add your book. + + + + + Couldn't save your author. + + + + + Couldn't save your topic. + + + + + Couldn't save your book. + + + + + Are you sure you want to delete the selected author? + + + + + This author can't be deleted, they are currently assigned to at least one song. + + + + + No author selected! + + + + + Are you sure you want to delete the selected topic? + + + + + This topic can't be deleted, it is currently assigned to at least one song. + + + + + No topic selected! + + + + + Are you sure you want to delete the selected book? + + + + + This book can't be deleted, it is currently assigned to at least one song. + + + + + SongsPlugin.SongUsageDeleteForm + + + Delete Selected Song Usage Events? + + + + + Are you sure you want to delete selected Song Usage data? + + + + + SongsPlugin.SongUsageDetailForm + + + Output File Location + + SongsPlugin.SongsTab @@ -3004,6 +3473,11 @@ The content encoding is not UTF-8. Enable search as you type + + + Display Verses on Live Tool bar + + SongsPlugin.TopicsForm @@ -3022,6 +3496,11 @@ The content encoding is not UTF-8. Error Viga + + + You need to type in a topic name! + + Splashscreen diff --git a/scripts/translation_utils.py b/scripts/translation_utils.py index ee5baead9..14c4ba6fc 100755 --- a/scripts/translation_utils.py +++ b/scripts/translation_utils.py @@ -25,143 +25,210 @@ ############################################################################### # Short description # Steps for creating languages: -# 1. make shure that the openlp_en.ts file exist +# 1. make sure that the openlp_en.ts file exist # 2. go to scripts folder and start: # python translation_utils.py -a ############################################################################### import os import urllib +import re from optparse import OptionParser from PyQt4 import QtCore +from BeautifulSoup import BeautifulSoup -ignore_pathes = [u"./scripts", u"./openlp/core/test"] -ignore_files = [u"setup.py"] -translation_path = u"http://pootle.projecthq.biz/export/openlp/" -translations = [ u"en" - , u"af" - , u"en_ZA" - , u"en_GB" - , u"de" - , u"hu" - , u"ko" - , u"nb" - , u"pt_BR" - , u"es" - , u"sv"] +class TranslationUtils(object): + def __init__(self): + self.ignore_paths = [u'./scripts'] + self.ignore_files = [u'setup.py'] + self.server_url = u'http://pootle.projecthq.biz/export/openlp/' + self.cmd_stack = [] + self.stack_count = 0 + self.verbose = False + -def write_file(filename, stringlist): - content = u'' - for line in stringlist: - content = u'%s%s\n' % (content, line) - file = open(filename, u'w') - file.write(content.encode('utf8')) - file.close() + def process_stack(self): + if len(self.cmd_stack) > 0: + if len(self.cmd_stack) == self.stack_count: + print u'Process %d commands' % self.stack_count + print u'%d. ' % (self.stack_count-len(self.cmd_stack)+1), + command = self.cmd_stack.pop(0) + if len(command) > 1: + command[0](command[1]) + else: + command[0]() + else: + print "Finished all commands" -def main(): - # Set up command line options. - usage = u'Usage: %prog [options]' - parser = OptionParser(usage=usage) - parser.add_option("-d", "--download-ts", action="store_true", - dest="download", help="Load languages from Pootle Server") - parser.add_option("-p", "--prepare", action="store_true", dest="prepare", - help="preparation (generate pro file)") - parser.add_option("-u", "--update", action="store_true", dest="update", - help="update translation files") - parser.add_option("-g", "--generate", action="store_true", dest="generate", - help="generate qm files") - parser.add_option("-a", "--all", action="store_true", dest="all", - help="proceed all options") - (options, args) = parser.parse_args() - if options.download: - downloadTranslations() - elif options.prepare: - preparation() - elif options.update: - update() - elif options.generate: - generate() - elif options.all: - all() - else: - pass + def downloadTranslations(self): + print 'Download Translation files from HQ-Server' + page = urllib.urlopen(u'%s' % (self.server_url)) + soup = BeautifulSoup(page) + languages = soup.findAll(text=re.compile(".*\.ts")) + for language in languages: + filename = os.path.join(u'..', u'resources', u'i18n', + u'openlp_%s' % language) + self.printVerbose(u'Get Translation File: %s' % filename) + self.get_and_write_file(language, filename) + print u' done' + self.process_stack() -def downloadTranslations(): - print "download()" - for language in translations: - filename = os.path.join(u'..', u'resources', u'i18n', - u"openlp_%s.ts" % language) - print filename - page = urllib.urlopen(u"%s%s.ts" % (translation_path, language)) - content = page.read().decode("utf8") + def get_and_write_file(self, language, filename): + page = urllib.urlopen(u'%s%s' % (self.server_url, language)) + content = page.read().decode('utf8') page.close() file = open(filename, u'w') file.write(content.encode('utf8')) file.close() - -def preparation(): - stringlist = [] - start_dir = os.path.join(u'..') - for root, dirs, files in os.walk(start_dir): - for file in files: - path = u"%s" % root - path = path.replace("\\","/") - path = path.replace("..",".") - if file.startswith(u'hook-') or file.startswith(u'test_'): - continue + def creation(self, language): + print "Create new Translation File" + """ + Use this option to create a new translation file + this function: + * create the new *.ts file + """ + filename = os.path.join(u'..', u'resources', u'i18n', + u'openlp_%s.ts' % language) + self.get_and_write_file(u'en.ts', filename) + self.printVerbose(""" + Please remind: For permanent providing this language: + this language name have to append to the global list + variable "translations" in this file + and this file have to be uploaded to the Pootle Server + Please contact the developers! + """) + print u' done' + self.process_stack() + + + def preparation(self): + print u'Generating the openlp.pro file' + stringlist = [] + start_dir = os.path.join(u'..') + for root, dirs, files in os.walk(start_dir): + for file in files: + path = u'%s' % root + path = path.replace('\\','/') + path = path.replace('..','.') + + if file.startswith(u'hook-') or file.startswith(u'test_'): + continue - cond = False - for search in ignore_pathes: - if path.startswith(search): - cond = True - if cond: - continue - cond = False - for search in ignore_files: - if search == file: - cond = True - if cond: - continue - - if file.endswith(u'.py'): - line = u"%s/%s" % (path, file) - print u'Parsing "%s"' % line - stringlist.append(u"SOURCES += %s" % line) - elif file.endswith(u'.pyw'): - line = u"%s/%s" % (path, file) - print u'Parsing "%s"' % line - stringlist.append(u"SOURCES += %s" % line) - elif file.endswith(u'.ts'): - line = u"%s/%s" % (path, file) - print u'Parsing "%s"' % line - stringlist.append(u"TRANSLATIONS += %s" % line) - - print u'Generating PRO file...', - stringlist.sort() - write_file(os.path.join(start_dir, u'openlp.pro'), stringlist) - print u'done.' + cond = False + for search in self.ignore_paths: + if path.startswith(search): + cond = True + if cond: + continue + cond = False + for search in self.ignore_files: + if search == file: + cond = True + if cond: + continue + + if file.endswith(u'.py'): + line = u'%s/%s' % (path, file) + self.printVerbose(u'Parsing "%s"' % line) + stringlist.append(u'SOURCES += %s' % line) + elif file.endswith(u'.pyw'): + line = u'%s/%s' % (path, file) + self.printVerbose(u'Parsing "%s"' % line) + stringlist.append(u'SOURCES += %s' % line) + elif file.endswith(u'.ts'): + line = u'%s/%s' % (path, file) + self.printVerbose(u'Parsing "%s"' % line) + stringlist.append(u'TRANSLATIONS += %s' % line) + + stringlist.sort() + self.write_file(os.path.join(start_dir, u'openlp.pro'), stringlist) + print u' done' + self.process_stack() -def update(): - print "update()" - updateProcess = QtCore.QProcess() - updateProcess.start(u"pylupdate4 -noobsolete ../openlp.pro") - updateProcess.waitForFinished(60000) + def update(self): + print u'Update the translation files' + cmd = u'pylupdate4 -verbose -noobsolete ../openlp.pro' + self.start_cmd(cmd) -def generate(): - print "generate()" - generateProcess = QtCore.QProcess() - generateProcess.start(u"lrelease ../openlp.pro") - generateProcess.waitForFinished(60000) + def generate(self): + print u'Generate the related *.qm files' + cmd = u'lrelease ../openlp.pro' + self.start_cmd(cmd) + + def write_file(self, filename, stringlist): + content = u'' + for line in stringlist: + content = u'%s%s\n' % (content, line) + file = open(filename, u'w') + file.write(content.encode('utf8')) + file.close() -def all(): - print "all()" - downloadTranslations() - preparation() - update() - generate() + def printVerbose(self, data): + if self.verbose: + print u' %s' % data + + def start_cmd(self, command): + self.printVerbose(command) + self.process = QtCore.QProcess() + self.process.start(command) + while (self.process.waitForReadyRead()): + self.printVerbose(u'ReadyRead: %s' % QtCore.QString(self.process.readAll())) + self.printVerbose(self.process.readAllStandardError()) + self.printVerbose(self.process.readAllStandardOutput()) + print u' done' + self.process_stack() + + +def main(): + # start Main Class + Util = TranslationUtils() + + # Set up command line options. + usage = u''' + This script handle the translation files for OpenLP. + Usage: %prog [options] + If no option will be used, options "-d -p -u -g" will be set automatically + ''' + parser = OptionParser(usage=usage) + parser.add_option('-d', '--download-ts', action='store_true', + dest='download', help='Load languages from Pootle Server') + parser.add_option('-c', '--create', metavar='lang', + help='creation of new translation file, Parameter: language (e.g. "en_GB"') + parser.add_option('-p', '--prepare', action='store_true', dest='prepare', + help='preparation (generate pro file)') + parser.add_option('-u', '--update', action='store_true', dest='update', + help='update translation files') + parser.add_option('-g', '--generate', action='store_true', dest='generate', + help='generate qm files') + parser.add_option('-v', '--verbose', action='store_true', dest='verbose', + help='Give more informations while processing') + + (options, args) = parser.parse_args() + if options.download: + Util.cmd_stack.append([Util.downloadTranslations]) + if options.create: + Util.cmd_stack.append([Util.creation, u'%s' % options.create]) + if options.prepare: + Util.cmd_stack.append([Util.preparation]) + if options.update: + Util.cmd_stack.append([Util.update]) + if options.generate: + Util.cmd_stack.append([Util.generate]) + if options.verbose: + Util.verbose = True + + if len(Util.cmd_stack) == 0: + Util.cmd_stack.append([Util.downloadTranslations]) + Util.cmd_stack.append([Util.preparation]) + Util.cmd_stack.append([Util.update]) + Util.cmd_stack.append([Util.generate]) + + Util.stack_count = len(Util.cmd_stack) + Util.process_stack() + if __name__ == u'__main__': From 683a53c594706e98a85dcf31e8558e3966b80200 Mon Sep 17 00:00:00 2001 From: Frode Woldsund Date: Tue, 22 Jun 2010 23:53:18 +0200 Subject: [PATCH 32/83] Fixed 2 translate() functions in songplugin --- openlp/plugins/songs/lib/songimport.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index 454d7e3aa..85dbe6710 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -63,9 +63,9 @@ class SongImport(object): self.verses = [] self.versecount = 0 self.choruscount = 0 - self.copyright_string = unicode(QtGui.QApplication.translate( + self.copyright_string = unicode(translate( u'SongsPlugin.SongImport', u'copyright')) - self.copyright_symbol = unicode(QtGui.QApplication.translate( + self.copyright_symbol = unicode(translate( u'SongsPlugin.SongImport', u'\xa9')) @staticmethod From d2af535c709a35967a6951ce9084cca0d9d63b3d Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 23 Jun 2010 06:13:32 +0100 Subject: [PATCH 33/83] Start to clean up display code. Make Video Hide / Reappear Add Audio player to play audio with no display Replace Labels with QGraphicXXXXItems --- openlp/core/ui/maindisplay.py | 210 +++++++++++++++++++++++++++------- 1 file changed, 169 insertions(+), 41 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index a3c444097..8e996a147 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -45,6 +45,7 @@ class DisplayManager(QtGui.QWidget): QtGui.QWidget.__init__(self) self.screens = screens self.videoDisplay = VideoDisplay(self, screens) + self.audioPlayer = AudioPlayer(self) self.mainDisplay = MainDisplay(self, screens) def setup(self): @@ -53,10 +54,11 @@ class DisplayManager(QtGui.QWidget): def close(self): self.videoDisplay.close() + self.audioPlayer.close() self.mainDisplay.close() -class DisplayWidget(QtGui.QWidget): +class DisplayWidget(QtGui.QGraphicsView): """ Customised version of QTableWidget which can respond to keyboard events. @@ -116,22 +118,23 @@ class MainDisplay(DisplayWidget): """ log.debug(u'Initialisation started') DisplayWidget.__init__(self, parent) - self.setWindowFlags(QtCore.Qt.Window | QtCore.Qt.FramelessWindowHint) - self.setWindowState(QtCore.Qt.WindowFullScreen) +# self.setWindowFlags(QtCore.Qt.Window | QtCore.Qt.FramelessWindowHint) +# self.setWindowState(QtCore.Qt.WindowFullScreen) + self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.parent = parent - self.setWindowTitle(u'OpenLP Display') + #self.setWindowTitle(u'OpenLP Display') # WA_TranslucentBackground is not available in QT4.4 try: self.setAttribute(QtCore.Qt.WA_TranslucentBackground) except AttributeError: pass self.screens = screens - self.display_image = QtGui.QLabel(self) - self.display_image.setScaledContents(True) - self.display_text = QtGui.QLabel(self) - self.display_text.setScaledContents(True) - self.display_alert = QtGui.QLabel(self) - self.display_alert.setScaledContents(True) + self.setupScene() + self.setupImage() + self.setupText() + self.setupAlert() + self.setupBlank() self.primary = True self.blankFrame = None self.frame = None @@ -153,11 +156,11 @@ class MainDisplay(DisplayWidget): self.setVisible(False) self.screen = self.screens.current #Sort out screen locations and sizes - self.display_alert.setGeometry(self.screen[u'size']) - self.display_image.resize( - self.screen[u'size'].width(), self.screen[u'size'].height()) - self.display_text.resize( - self.screen[u'size'].width(), self.screen[u'size'].height()) +# self.display_alert.setGeometry(self.screen[u'size']) +# self.display_image.resize( +# self.screen[u'size'].width(), self.screen[u'size'].height()) +# self.display_text.resize( +# self.screen[u'size'].width(), self.screen[u'size'].height()) self.setGeometry(self.screen[u'size']) #Build a custom splash screen self.InitialFrame = QtGui.QImage( @@ -186,8 +189,8 @@ class MainDisplay(DisplayWidget): self.transparent = QtGui.QPixmap( self.screen[u'size'].width(), self.screen[u'size'].height()) self.transparent.fill(QtCore.Qt.transparent) - self.display_alert.setPixmap(self.transparent) - self.display_text.setPixmap(self.transparent) +# self.display_alert.setPixmap(self.transparent) +# self.display_text.setPixmap(self.transparent) self.frameView(self.transparent) # To display or not to display? if not self.screen[u'primary']: @@ -197,6 +200,37 @@ class MainDisplay(DisplayWidget): self.setVisible(False) self.primary = True + def setupScene(self): + self.scene = QtGui.QGraphicsScene(self) + self.scene.setSceneRect(0,0,self.size().width()-2, self.size().height()-2) + self.setScene(self.scene) + + def setupImage(self): + self.display_image = QtGui.QGraphicsPixmapItem() + self.display_image.setZValue(2) + self.scene.addItem(self.display_image) + + def setupText(self): + #self.display_text = QtGui.QGraphicsTextItem() + self.display_text = QtGui.QGraphicsPixmapItem() + self.display_text.setPos(0,self.size().height()/2) + #self.display_text.setTextWidth(self.size().width()) + self.display_text.setZValue(4) + self.scene.addItem(self.display_text) + + def setupAlert(self): + self.alertText = QtGui.QGraphicsTextItem() + self.alertText.setPos(0,self.size().height()/2) + self.alertText.setPos(0,self.size().height() - 76) + self.alertText.setTextWidth(self.size().width()) + self.alertText.setZValue(8) + self.scene.addItem(self.alertText) + + def setupBlank(self): + self.display_blank = QtGui.QGraphicsPixmapItem() + self.display_blank.setZValue(10) + self.scene.addItem(self.display_blank) + def resetDisplay(self): log.debug(u'resetDisplay') Receiver.send_message(u'slidecontroller_live_stop_loop') @@ -219,27 +253,21 @@ class MainDisplay(DisplayWidget): log.debug(u'hideDisplay mode = %d', mode) self.storeImage = QtGui.QPixmap(self.display_image.pixmap()) self.storeText = QtGui.QPixmap(self.display_text.pixmap()) - self.display_alert.setPixmap(self.transparent) - self.display_text.setPixmap(self.transparent) + #self.display_alert.setPixmap(self.transparent) + #self.display_text.setPixmap(self.transparent) if mode == HideMode.Screen: - self.display_image.setPixmap(self.transparent) + #self.display_image.setPixmap(self.transparent) + self.setVisible(False) elif mode == HideMode.Blank: - self.display_image.setPixmap( + self.display_blank.setPixmap( QtGui.QPixmap.fromImage(self.blankFrame)) else: if self.parent.renderManager.renderer.bg_frame: - self.display_image.setPixmap(QtGui.QPixmap.fromImage( + self.display_blank.setPixmap(QtGui.QPixmap.fromImage( self.parent.renderManager.renderer.bg_frame)) else: - self.display_image.setPixmap( + self.display_blank.setPixmap( QtGui.QPixmap.fromImage(self.blankFrame)) - self.moveToTop() - - def moveToTop(self): - log.debug(u'moveToTop') - self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint | - QtCore.Qt.FramelessWindowHint | QtCore.Qt.Dialog) - self.show() def showDisplay(self): """ @@ -255,7 +283,6 @@ class MainDisplay(DisplayWidget): self.display_text.setPixmap(self.storeText) self.storeImage = None self.store = None - self.moveToTop() Receiver.send_message(u'maindisplay_active') def addImageWithText(self, frame): @@ -263,7 +290,6 @@ class MainDisplay(DisplayWidget): frame = resize_image( frame, self.screen[u'size'].width(), self.screen[u'size'].height()) self.display_image.setPixmap(QtGui.QPixmap.fromImage(frame)) - self.moveToTop() def setAlertSize(self, top, height): log.debug(u'setAlertSize') @@ -277,7 +303,6 @@ class MainDisplay(DisplayWidget): self.display_alert.setPixmap(self.transparent) else: self.display_alert.setPixmap(frame) - self.moveToTop() def frameView(self, frame, transition=False, display=True): """ @@ -345,11 +370,11 @@ class VideoDisplay(Phonon.VideoWidget): Phonon.createPath(self.mediaObject, self) Phonon.createPath(self.mediaObject, self.audioObject) flags = QtCore.Qt.FramelessWindowHint | QtCore.Qt.Dialog - # WindowsStaysOnBottomHint is not available in QT4.4 - try: - flags = flags | QtCore.Qt.WindowStaysOnBottomHint - except AttributeError: - pass +# # WindowsStaysOnBottomHint is not available in QT4.4 +# try: +# flags = flags | QtCore.Qt.WindowStaysOnBottomHint +# except AttributeError: +# pass self.setWindowFlags(flags) QtCore.QObject.connect(Receiver.get_receiver(), @@ -392,13 +417,22 @@ class VideoDisplay(Phonon.VideoWidget): #Sort out screen locations and sizes self.setGeometry(self.screen[u'size']) # To display or not to display? - if not self.screen[u'primary'] and self.isVisible(): - self.showFullScreen() + if not self.screen[u'primary']: # and self.isVisible(): + #self.showFullScreen() + self.setVisible(True) self.primary = False else: self.setVisible(False) self.primary = True + def closeEvent(self, event): + """ + Shutting down so clean up connections + """ + self.onMediaStop() + for pth in self.outputPaths(): + disconnected = pth.disconnect() + def onMediaBackground(self, message=None): """ Play a video triggered from the video plugin with the @@ -442,7 +476,7 @@ class VideoDisplay(Phonon.VideoWidget): log.debug(u'VideoDisplay _play called') self.mediaObject.play() self.setVisible(True) - self.showFullScreen() + #self.showFullScreen() def onMediaPause(self): """ @@ -484,3 +518,97 @@ class VideoDisplay(Phonon.VideoWidget): if self.hidden: self.hidden = False self._play() + +class AudioPlayer(QtCore.QObject): + """ + This Class will play audio only allowing components to work witn a + soundtrack which does not take over the user interface. + """ + log.info(u'AudioPlayer Loaded') + + def __init__(self, parent): + """ + The constructor for the display form. + + ``parent`` + The parent widget. + + ``screens`` + The list of screens. + """ + log.debug(u'AudioPlayer Initialisation started') + QtCore.QObject.__init__(self) + self.parent = parent + self.message = None + self.mediaObject = Phonon.MediaObject() + self.audioObject = Phonon.AudioOutput(Phonon.VideoCategory) + Phonon.createPath(self.mediaObject, self.audioObject) + +# QtCore.QObject.connect(Receiver.get_receiver(), +# QtCore.SIGNAL(u'videodisplay_start'), self.onMediaQueue) +# QtCore.QObject.connect(Receiver.get_receiver(), +# QtCore.SIGNAL(u'videodisplay_play'), self.onMediaPlay) +# QtCore.QObject.connect(Receiver.get_receiver(), +# QtCore.SIGNAL(u'videodisplay_pause'), self.onMediaPause) +# QtCore.QObject.connect(Receiver.get_receiver(), +# QtCore.SIGNAL(u'videodisplay_stop'), self.onMediaStop) +# QtCore.QObject.connect(Receiver.get_receiver(), +# QtCore.SIGNAL(u'videodisplay_background'), self.onMediaBackground) +# QtCore.QObject.connect(Receiver.get_receiver(), +# QtCore.SIGNAL(u'config_updated'), self.setup) +# QtCore.QObject.connect(self.mediaObject, +# QtCore.SIGNAL(u'finished()'), self.onMediaBackground) + + def setup(self): + """ + Sets up the Audio Player for use + """ + log.debug(u'AudioPlayer Setup') + + def close(self): + """ + Shutting down so clean up connections + """ + self.onMediaStop() + for pth in self.mediaObject.outputPaths(): + disconnected = pth.disconnect() + + def onMediaQueue(self, message): + """ + Set up a video to play from the serviceitem. + """ + log.debug(u'AudioPlayer Queue new media message %s' % message) + file = os.path.join(message[0].get_frame_path(), + message[0].get_frame_title()) + self.mediaObject.setCurrentSource(Phonon.MediaSource(file)) + self.onMediaPlay() + + def onMediaPlay(self): + """ + We want to play the play so start it + """ + log.debug(u'AudioPlayer _play called') + self.mediaObject.play() + + def onMediaPause(self): + """ + Pause the Audio + """ + log.debug(u'AudioPlayer Media paused by user') + self.mediaObject.pause() + + def onMediaStop(self): + """ + Stop the Audio and clean up + """ + log.debug(u'AudioPlayer Media stopped by user') + self.message = None + self.mediaObject.stop() + self.onMediaFinish() + + def onMediaFinish(self): + """ + Clean up the Object queue + """ + log.debug(u'AudioPlayer Reached end of media playlist') + self.mediaObject.clearQueue() From b95b5983407872b8a82e066b9e28d216e44ac9b2 Mon Sep 17 00:00:00 2001 From: Frode Woldsund Date: Wed, 23 Jun 2010 08:54:11 +0200 Subject: [PATCH 34/83] Forgot to import translate from openlp.core.lib :( --- openlp/plugins/songs/lib/songimport.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index 85dbe6710..3ecb7a542 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -27,7 +27,7 @@ import re from PyQt4 import QtGui -from openlp.core.lib import SongXMLBuilder +from openlp.core.lib import SongXMLBuilder, translate from openlp.plugins.songs.lib import VerseType from openlp.plugins.songs.lib.models import Song, Author, Topic, Book From 482640853677dbf18e448da7474c020e72f5c454 Mon Sep 17 00:00:00 2001 From: Frode Woldsund Date: Wed, 23 Jun 2010 09:05:43 +0200 Subject: [PATCH 35/83] stupid whitespace ... --- openlp/plugins/songs/lib/songimport.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index 3ecb7a542..cc7b16b66 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -27,7 +27,7 @@ import re from PyQt4 import QtGui -from openlp.core.lib import SongXMLBuilder, translate +from openlp.core.lib import SongXMLBuilder, translate from openlp.plugins.songs.lib import VerseType from openlp.plugins.songs.lib.models import Song, Author, Topic, Book From 07db3c4c21f545127ecf274ae7ad9346e18b28a6 Mon Sep 17 00:00:00 2001 From: Frode Woldsund Date: Wed, 23 Jun 2010 09:22:05 +0200 Subject: [PATCH 36/83] removed u' --- openlp/plugins/songs/lib/songimport.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index cc7b16b66..ede946dc7 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -64,9 +64,9 @@ class SongImport(object): self.versecount = 0 self.choruscount = 0 self.copyright_string = unicode(translate( - u'SongsPlugin.SongImport', u'copyright')) + 'SongsPlugin.SongImport', 'copyright')) self.copyright_symbol = unicode(translate( - u'SongsPlugin.SongImport', u'\xa9')) + 'SongsPlugin.SongImport', '\xa9')) @staticmethod def process_songs_text(manager, text): From 56f87c3a350d3c7160b53970e9dda01f27bacc17 Mon Sep 17 00:00:00 2001 From: Frode Woldsund Date: Wed, 23 Jun 2010 15:39:36 +0200 Subject: [PATCH 37/83] Fixed (c) symbol --- openlp/core/ui/aboutdialog.py | 5 +++-- openlp/plugins/songs/forms/editsongdialog.py | 2 +- openlp/plugins/songs/forms/editsongform.py | 2 +- openlp/plugins/songs/lib/songimport.py | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/openlp/core/ui/aboutdialog.py b/openlp/core/ui/aboutdialog.py index c6866c8d7..da818d658 100644 --- a/openlp/core/ui/aboutdialog.py +++ b/openlp/core/ui/aboutdialog.py @@ -169,8 +169,9 @@ class Ui_AboutDialog(object): self.AboutNotebook.indexOf(self.CreditsTab), translate('AboutForm', 'Credits')) self.LicenseTextEdit.setPlainText(translate('AboutForm', - 'Copyright \xa9 2004-2010 Raoul Snyman\n' - 'Portions copyright \xa9 2004-2010 ' + 'Copyright ' + u'\u00a9'.encode('utf8') + + ' 2004-2010 Raoul Snyman\n' + 'Portions copyright ' + u'\u00a9'.encode('utf8') + '2004-2010 ' 'Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, ' 'Christian Richter, Maikel Stuivenberg, Martin Thompson, Jon ' 'Tibble, Carsten Tinggaard\n' diff --git a/openlp/plugins/songs/forms/editsongdialog.py b/openlp/plugins/songs/forms/editsongdialog.py index 34e15ce59..3087334d0 100644 --- a/openlp/plugins/songs/forms/editsongdialog.py +++ b/openlp/plugins/songs/forms/editsongdialog.py @@ -482,7 +482,7 @@ class Ui_EditSongDialog(object): self.CopyrightGroupBox.setTitle( translate('SongsPlugin.EditSongForm', 'Copyright Information')) self.CopyrightInsertButton.setText( - translate('SongsPlugin.EditSongForm', '\xa9')) + translate('SongsPlugin.EditSongForm', u'\u00a9'.encode('utf8'))) self.CCLILabel.setText( translate('SongsPlugin.EditSongForm', 'CCLI Number:')) self.CommentsGroupBox.setTitle( diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index fd731b821..95125fabf 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -589,7 +589,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): def onCopyrightInsertButtonTriggered(self): text = self.CopyrightEditItem.text() pos = self.CopyrightEditItem.cursorPosition() - text = text[:pos] + u'\xa9' + text[pos:] + text = text[:pos] + u'\u00a9'.encode('utf8') + text[pos:] self.CopyrightEditItem.setText(text) self.CopyrightEditItem.setFocus() self.CopyrightEditItem.setCursorPosition(pos + 1) diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index ede946dc7..6dd9572ee 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -66,7 +66,7 @@ class SongImport(object): self.copyright_string = unicode(translate( 'SongsPlugin.SongImport', 'copyright')) self.copyright_symbol = unicode(translate( - 'SongsPlugin.SongImport', '\xa9')) + 'SongsPlugin.SongImport', u'\u00a9'.encode('utf8'))) @staticmethod def process_songs_text(manager, text): From da5ff6c3db94f7578aa8065d6bc1a9cf981d3025 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 23 Jun 2010 18:37:01 +0100 Subject: [PATCH 38/83] Update version numbers and white space --- openlp/core/ui/slidecontroller.py | 6 ++++-- openlp/plugins/alerts/alertsplugin.py | 4 ++-- openlp/plugins/bibles/bibleplugin.py | 4 ++-- openlp/plugins/custom/customplugin.py | 4 ++-- openlp/plugins/images/imageplugin.py | 4 ++-- openlp/plugins/media/mediaplugin.py | 3 +-- openlp/plugins/presentations/presentationplugin.py | 3 +-- openlp/plugins/remotes/remoteplugin.py | 4 ++-- openlp/plugins/songs/songsplugin.py | 3 +-- openlp/plugins/songusage/songusageplugin.py | 4 ++-- 10 files changed, 19 insertions(+), 20 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 87f6f20fe..08c231cd5 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -655,6 +655,7 @@ class SlideController(QtGui.QWidget): """ Allow the main display to blank the main display at startup time """ + log.debug(u'mainDisplaySetBackground') if not self.mainDisplay.primary: self.blankButton.setChecked(True) @@ -672,12 +673,12 @@ class SlideController(QtGui.QWidget): def onBlankDisplay(self, checked): """ - Handle the blank screen button + Handle the blank screen button actions """ log.debug(u'onBlankDisplay %d' % checked) self.hideButton.setChecked(False) self.themeButton.setChecked(False) - self.canDisplay = not checked + self.canDisplay = not checked QtCore.QSettings().setValue( self.parent.generalSettingsSection + u'/screen blank', QtCore.QVariant(checked)) @@ -722,6 +723,7 @@ class SlideController(QtGui.QWidget): """ Blank the display screen within a plugin if required. """ + log.debug(u'blankPlugin %d ', blank) if self.serviceItem is not None: if blank: Receiver.send_message(u'%s_blank' diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index 8ee84be8f..4127afaac 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -37,7 +37,7 @@ class alertsPlugin(Plugin): log.info(u'Alerts Plugin loaded') def __init__(self, plugin_helpers): - Plugin.__init__(self, u'Alerts', u'1.9.1', plugin_helpers) + Plugin.__init__(self, u'Alerts', u'1.9.2', plugin_helpers) self.weight = -3 self.icon = build_icon(u':/media/media_image.png') self.alertsmanager = AlertsManager(self) @@ -97,4 +97,4 @@ class alertsPlugin(Plugin): about_text = translate('AlertsPlugin', 'Alerts Plugin
This plugin ' 'controls the displaying of alerts on the presentations screen') - return about_text + return about_text \ No newline at end of file diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index 8ebf551ab..2398ead9c 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -36,7 +36,7 @@ class BiblePlugin(Plugin): log.info(u'Bible Plugin loaded') def __init__(self, plugin_helpers): - Plugin.__init__(self, u'Bibles', u'1.9.1', plugin_helpers) + Plugin.__init__(self, u'Bibles', u'1.9.2', plugin_helpers) self.weight = -9 self.icon = build_icon(u':/media/media_bible.png') #Register the bible Manager @@ -99,4 +99,4 @@ class BiblePlugin(Plugin): def can_delete_theme(self, theme): if self.settings_tab.bible_theme == theme: return False - return True + return True \ No newline at end of file diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py index da08e370a..d4f18058e 100644 --- a/openlp/plugins/custom/customplugin.py +++ b/openlp/plugins/custom/customplugin.py @@ -43,7 +43,7 @@ class CustomPlugin(Plugin): log.info(u'Custom Plugin loaded') def __init__(self, plugin_helpers): - Plugin.__init__(self, u'Custom', u'1.9.1', plugin_helpers) + Plugin.__init__(self, u'Custom', u'1.9.2', plugin_helpers) self.weight = -5 self.custommanager = CustomManager() self.edit_custom_form = EditCustomForm(self.custommanager) @@ -77,4 +77,4 @@ class CustomPlugin(Plugin): def can_delete_theme(self, theme): if len(self.custommanager.get_customs_for_theme(theme)) == 0: return True - return False + return False \ No newline at end of file diff --git a/openlp/plugins/images/imageplugin.py b/openlp/plugins/images/imageplugin.py index 061eaf5c3..8e9f9e220 100644 --- a/openlp/plugins/images/imageplugin.py +++ b/openlp/plugins/images/imageplugin.py @@ -34,7 +34,7 @@ class ImagePlugin(Plugin): log.info(u'Image Plugin loaded') def __init__(self, plugin_helpers): - Plugin.__init__(self, u'Images', u'1.9.1', plugin_helpers) + Plugin.__init__(self, u'Images', u'1.9.2', plugin_helpers) self.weight = -7 self.icon = build_icon(u':/media/media_image.png') self.status = PluginStatus.Active @@ -64,4 +64,4 @@ class ImagePlugin(Plugin): 'an image is selected any songs which are rendered will use the ' 'selected image from the background instead of the one provied by ' 'the theme.
') - return about_text + return about_text \ No newline at end of file diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index f8ea3fd1a..f7c2c998f 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -36,7 +36,7 @@ class MediaPlugin(Plugin): log.info(u'%s MediaPlugin loaded', __name__) def __init__(self, plugin_helpers): - Plugin.__init__(self, u'Media', u'1.9.1', plugin_helpers) + Plugin.__init__(self, u'Media', u'1.9.2', plugin_helpers) self.weight = -6 self.icon = build_icon(u':/media/media_video.png') # passed with drag and drop messages @@ -85,4 +85,3 @@ class MediaPlugin(Plugin): 'Media Plugin
This plugin ' 'allows the playing of audio and video media') return about_text - diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index 68fcd28b4..9303d5921 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -38,7 +38,7 @@ class PresentationPlugin(Plugin): def __init__(self, plugin_helpers): log.debug(u'Initialised') self.controllers = {} - Plugin.__init__(self, u'Presentations', u'1.9.1', plugin_helpers) + Plugin.__init__(self, u'Presentations', u'1.9.2', plugin_helpers) self.weight = -8 self.icon = build_icon(u':/media/media_presentation.png') self.status = PluginStatus.Active @@ -114,4 +114,3 @@ class PresentationPlugin(Plugin): 'programs. The choice of available presentation programs is ' 'available to the user in a drop down box.') return about_text - diff --git a/openlp/plugins/remotes/remoteplugin.py b/openlp/plugins/remotes/remoteplugin.py index 897f9e644..7004207e4 100644 --- a/openlp/plugins/remotes/remoteplugin.py +++ b/openlp/plugins/remotes/remoteplugin.py @@ -37,7 +37,7 @@ class RemotesPlugin(Plugin): """ remotes constructor """ - Plugin.__init__(self, u'Remotes', u'1.9.1', plugin_helpers) + Plugin.__init__(self, u'Remotes', u'1.9.2', plugin_helpers) self.weight = -1 self.server = None @@ -74,4 +74,4 @@ class RemotesPlugin(Plugin): 'provides the ability to send messages to a running version of ' 'openlp on a different computer via a web browser or other app
' 'The Primary use for this would be to send alerts from a creche') - return about_text + return about_text \ No newline at end of file diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index a36c9b048..57c0ee844 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -49,7 +49,7 @@ class SongsPlugin(Plugin): """ Create and set up the Songs plugin. """ - Plugin.__init__(self, u'Songs', u'1.9.1', plugin_helpers) + Plugin.__init__(self, u'Songs', u'1.9.2', plugin_helpers) self.weight = -10 self.manager = SongManager() self.icon = build_icon(u':/media/media_song.png') @@ -194,4 +194,3 @@ class SongsPlugin(Plugin): if len(self.manager.get_songs_for_theme(theme)) == 0: return True return False - diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py index 83aa43785..743a333d3 100644 --- a/openlp/plugins/songusage/songusageplugin.py +++ b/openlp/plugins/songusage/songusageplugin.py @@ -40,7 +40,7 @@ class SongUsagePlugin(Plugin): log.info(u'SongUsage Plugin loaded') def __init__(self, plugin_helpers): - Plugin.__init__(self, u'SongUsage', u'1.9.1', plugin_helpers) + Plugin.__init__(self, u'SongUsage', u'1.9.2', plugin_helpers) self.weight = -4 self.icon = build_icon(u':/media/media_image.png') self.songusagemanager = None @@ -162,4 +162,4 @@ class SongUsagePlugin(Plugin): 'SongUsage Plugin
This plugin ' 'records the use of songs and when they have been used during ' 'a live service') - return about_text + return about_text \ No newline at end of file From fe01718d46021b73750a45220ba15d208f29712c Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Wed, 23 Jun 2010 23:26:54 +0100 Subject: [PATCH 39/83] Presentation tidyups --- .../presentations/lib/impresscontroller.py | 5 +- .../presentations/lib/messagelistener.py | 149 +++++++++--------- .../presentations/lib/powerpointcontroller.py | 27 ++-- .../presentations/lib/pptviewcontroller.py | 23 +-- .../presentations/lib/pptviewlib/README.TXT | 2 + .../lib/pptviewlib/pptviewlib.cpp | 4 +- 6 files changed, 111 insertions(+), 99 deletions(-) diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index 10add26b4..6cb8c349c 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -331,7 +331,10 @@ class ImpressDocument(PresentationDocument): def stop_presentation(self): log.debug(u'stop presentation OpenOffice') - self.control.deactivate() + # deactivate should hide the screen according to docs, but doesn't + #self.control.deactivate() + self.presentation.end() + self.control = None def start_presentation(self): log.debug(u'start presentation OpenOffice') diff --git a/openlp/plugins/presentations/lib/messagelistener.py b/openlp/plugins/presentations/lib/messagelistener.py index c6ab1e921..13a589ec3 100644 --- a/openlp/plugins/presentations/lib/messagelistener.py +++ b/openlp/plugins/presentations/lib/messagelistener.py @@ -41,31 +41,31 @@ class Controller(object): log.info(u'Controller loaded') def __init__(self, live): - self.isLive = live + self.is_live = live self.doc = None log.info(u'%s controller loaded' % live) - def addHandler(self, controller, file, isBlank): - log.debug(u'Live = %s, addHandler %s' % (self.isLive, file)) + def add_handler(self, controller, file, is_blank): + log.debug(u'Live = %s, add_handler %s' % (self.is_live, file)) self.controller = controller if self.doc is not None: self.shutdown() self.doc = self.controller.add_doc(file) self.doc.load_presentation() - if self.isLive: + if self.is_live: self.doc.start_presentation() - if isBlank: + if is_blank: self.blank() Receiver.send_message(u'maindisplay_hide', HideMode.Screen) self.doc.slidenumber = 0 def activate(self): - log.debug(u'Live = %s, activate' % self.isLive) + log.debug(u'Live = %s, activate' % self.is_live) if self.doc.is_active(): return if not self.doc.is_loaded(): self.doc.load_presentation() - if self.isLive: + if self.is_live: self.doc.start_presentation() if self.doc.slidenumber > 1: self.doc.goto_slide(self.doc.slidenumber) @@ -85,36 +85,36 @@ class Controller(object): """ Based on the handler passed at startup triggers the first slide """ - log.debug(u'Live = %s, first' % self.isLive) - if not self.isLive: + log.debug(u'Live = %s, first' % self.is_live) + if not self.is_live: return if self.doc.is_blank(): self.doc.slidenumber = 1 return self.activate() self.doc.start_presentation() - self.doc.poll_slidenumber(self.isLive) + self.doc.poll_slidenumber(self.is_live) def last(self): """ Based on the handler passed at startup triggers the first slide """ - log.debug(u'Live = %s, last' % self.isLive) - if not self.isLive: + log.debug(u'Live = %s, last' % self.is_live) + if not self.is_live: return if self.doc.is_blank(): self.doc.slidenumber = self.doc.get_slide_count() return self.activate() self.doc.goto_slide(self.doc.get_slide_count()) - self.doc.poll_slidenumber(self.isLive) + self.doc.poll_slidenumber(self.is_live) def next(self): """ Based on the handler passed at startup triggers the next slide event """ - log.debug(u'Live = %s, next' % self.isLive) - if not self.isLive: + log.debug(u'Live = %s, next' % self.is_live) + if not self.is_live: return if self.doc.is_blank(): if self.doc.slidenumber < self.doc.get_slide_count(): @@ -122,14 +122,14 @@ class Controller(object): return self.activate() self.doc.next_step() - self.doc.poll_slidenumber(self.isLive) + self.doc.poll_slidenumber(self.is_live) def previous(self): """ Based on the handler passed at startup triggers the previous slide event """ - log.debug(u'Live = %s, previous' % self.isLive) - if not self.isLive: + log.debug(u'Live = %s, previous' % self.is_live) + if not self.is_live: return if self.doc.is_blank(): if self.doc.slidenumber > 1: @@ -137,14 +137,14 @@ class Controller(object): return self.activate() self.doc.previous_step() - self.doc.poll_slidenumber(self.isLive) + self.doc.poll_slidenumber(self.is_live) def shutdown(self): """ Based on the handler passed at startup triggers slide show to shut down """ - log.debug(u'Live = %s, shutdown' % self.isLive) - if self.isLive: + log.debug(u'Live = %s, shutdown' % self.is_live) + if self.is_live: Receiver.send_message(u'maindisplay_show') self.doc.close_presentation() self.doc = None @@ -152,8 +152,8 @@ class Controller(object): #self.timer.stop() def blank(self): - log.debug(u'Live = %s, blank' % self.isLive) - if not self.isLive: + log.debug(u'Live = %s, blank' % self.is_live) + if not self.is_live: return if not self.doc.is_loaded(): return @@ -162,8 +162,8 @@ class Controller(object): self.doc.blank_screen() def stop(self): - log.debug(u'Live = %s, stop' % self.isLive) - if not self.isLive: + log.debug(u'Live = %s, stop' % self.is_live) + if not self.is_live: return if not self.doc.is_loaded(): return @@ -172,8 +172,8 @@ class Controller(object): self.doc.stop_presentation() def unblank(self): - log.debug(u'Live = %s, unblank' % self.isLive) - if not self.isLive: + log.debug(u'Live = %s, unblank' % self.is_live) + if not self.is_live: return self.activate() if self.doc.slidenumber and \ @@ -183,7 +183,7 @@ class Controller(object): Receiver.send_message(u'maindisplay_hide', HideMode.Screen) def poll(self): - self.doc.poll_slidenumber(self.isLive) + self.doc.poll_slidenumber(self.is_live) class MessageListener(object): """ @@ -195,8 +195,8 @@ class MessageListener(object): def __init__(self, mediaitem): self.controllers = mediaitem.controllers self.mediaitem = mediaitem - self.previewHandler = Controller(False) - self.liveHandler = Controller(True) + self.preview_handler = Controller(False) + self.live_handler = Controller(True) # messages are sent from core.ui.slidecontroller QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'presentations_start'), self.startup) @@ -228,9 +228,10 @@ class MessageListener(object): Start of new presentation Save the handler as any new presentations start here """ - isLive, item = self.decode_message(message) + is_live = message[1] + item = message[0] log.debug(u'Startup called with message %s' % message) - isBlank = message[2] + is_blank = message[2] file = os.path.join(item.get_frame_path(), item.get_frame_title()) self.handler = item.title @@ -238,75 +239,71 @@ class MessageListener(object): self.handler = self.mediaitem.findControllerByType(file) if not self.handler: return - if isLive: - controller = self.liveHandler + if is_live: + controller = self.live_handler else: - controller = self.previewHandler - controller.addHandler(self.controllers[self.handler], file, isBlank) - - def decode_message(self, message): - if len(message) == 3: - return message[1], message[0], message[2] - else: - return message[1], message[0] + controller = self.preview_handler + controller.add_handler(self.controllers[self.handler], file, is_blank) def slide(self, message): - isLive, item, slide = self.decode_message(message) - if isLive: - self.liveHandler.slide(slide, isLive) + is_live = message[1] + slide = message[2] + item = message[0] + if is_live: + self.live_handler.slide(slide, item) else: - self.previewHandler.slide(slide, isLive) + self.preview_handler.slide(slide, item) def first(self, message): - isLive = self.decode_message(message)[0] - if isLive: - self.liveHandler.first() + is_live = message[1] + if is_live: + self.live_handler.first() else: - self.previewHandler.first() + self.preview_handler.first() def last(self, message): - isLive = self.decode_message(message)[0] - if isLive: - self.liveHandler.last() + is_live = message[1] + if is_live: + self.live_handler.last() else: - self.previewHandler.last() + self.preview_handler.last() def next(self, message): - isLive = self.decode_message(message)[0] - if isLive: - self.liveHandler.next() + is_live = message[1] + if is_live: + self.live_handler.next() else: - self.previewHandler.next() + self.preview_handler.next() def previous(self, message): - isLive = self.decode_message(message)[0] - if isLive: - self.liveHandler.previous() + is_live = message[1] + if is_live: + self.live_handler.previous() else: - self.previewHandler.previous() + self.preview_handler.previous() def shutdown(self, message): - isLive = self.decode_message(message)[0] - if isLive: + is_live = message[1] + if is_live: Receiver.send_message(u'maindisplay_show') - self.liveHandler.shutdown() + self.live_handler.shutdown() else: - self.previewHandler.shutdown() + self.preview_handler.shutdown() def hide(self, message): - isLive = self.decode_message(message)[0] - if isLive: - self.liveHandler.stop() + is_live = message[1] + if is_live: + self.live_handler.stop() def blank(self, message): - isLive = self.decode_message(message)[0] - if isLive: - self.liveHandler.blank() + is_live = message[1] + if is_live: + self.live_handler.blank() def unblank(self, message): - isLive = self.decode_message(message)[0] - if isLive: - self.liveHandler.unblank() + is_live = message[1] + if is_live: + self.live_handler.unblank() def timeout(self): - self.liveHandler.poll() + self.live_handler.poll() diff --git a/openlp/plugins/presentations/lib/powerpointcontroller.py b/openlp/plugins/presentations/lib/powerpointcontroller.py index 93c48e86c..f5a6c1120 100644 --- a/openlp/plugins/presentations/lib/powerpointcontroller.py +++ b/openlp/plugins/presentations/lib/powerpointcontroller.py @@ -30,6 +30,7 @@ if os.name == u'nt': from win32com.client import Dispatch import _winreg import win32ui + import pywintypes from presentationcontroller import PresentationController, PresentationDocument @@ -65,7 +66,7 @@ class PowerpointController(PresentationController): _winreg.OpenKey(_winreg.HKEY_CLASSES_ROOT, u'PowerPoint.Application').Close() return True - except: + except WindowsError: pass return False @@ -91,7 +92,7 @@ class PowerpointController(PresentationController): return try: self.process.Quit() - except: + except pywintypes.com_error: pass self.process = None @@ -121,11 +122,8 @@ class PowerpointDocument(PresentationDocument): log.debug(u'LoadPresentation') if not self.controller.process.Visible: self.controller.start_process() - #try: self.controller.process.Presentations.Open(self.filepath, False, False, True) - #except: - # return self.presentation = self.controller.process.Presentations( self.controller.process.Presentations.Count) self.create_thumbnails() @@ -154,7 +152,7 @@ class PowerpointDocument(PresentationDocument): if self.presentation: try: self.presentation.Close() - except: + except pywintypes.com_error: pass self.presentation = None self.controller.remove_doc(self) @@ -170,7 +168,9 @@ class PowerpointDocument(PresentationDocument): return False if self.controller.process.Presentations.Count == 0: return False - except: + except AttributeError: + return False + except pywintypes.com_error: return False return True @@ -186,7 +186,9 @@ class PowerpointDocument(PresentationDocument): return False if self.presentation.SlideShowWindow.View is None: return False - except: + except AttributeError: + return False + except pywintypes.com_error: return False return True @@ -208,7 +210,10 @@ class PowerpointDocument(PresentationDocument): """ Returns true if screen is blank """ - return self.presentation.SlideShowWindow.View.State == 3 + try: + return self.presentation.SlideShowWindow.View.State == 3 + except pywintypes.com_error: + return False def stop_presentation(self): """ @@ -224,11 +229,11 @@ class PowerpointDocument(PresentationDocument): #SlideShowWindow measures its size/position by points, not pixels try: dpi = win32ui.GetActiveWindow().GetDC().GetDeviceCaps(88) - except: + except win32ui.error: try: dpi = \ win32ui.GetForegroundWindow().GetDC().GetDeviceCaps(88) - except: + except win32ui.error: dpi = 96 self.presentation.SlideShowSettings.Run() self.presentation.SlideShowWindow.View.GotoSlide(1) diff --git a/openlp/plugins/presentations/lib/pptviewcontroller.py b/openlp/plugins/presentations/lib/pptviewcontroller.py index 42a12be1d..bcda545ee 100644 --- a/openlp/plugins/presentations/lib/pptviewcontroller.py +++ b/openlp/plugins/presentations/lib/pptviewcontroller.py @@ -72,7 +72,7 @@ class PptviewController(PresentationController): try: self.start_process() return self.process.CheckInstalled() - except: + except WindowsError: return False def start_process(self): @@ -84,6 +84,7 @@ class PptviewController(PresentationController): log.debug(u'start PPTView') self.process = cdll.LoadLibrary( r'openlp\plugins\presentations\lib\pptviewlib\pptviewlib.dll') + #self.process.SetDebug(1) def kill(self): """ @@ -106,6 +107,7 @@ class PptviewDocument(PresentationDocument): self.presentation = None self.pptid = None self.blanked = False + self.hidden = False def load_presentation(self): """ @@ -123,13 +125,11 @@ class PptviewDocument(PresentationDocument): rect = rendermanager.screens.current[u'size'] rect = RECT(rect.x(), rect.y(), rect.right(), rect.bottom()) filepath = str(self.filepath.replace(u'/', u'\\')) - try: - self.pptid = self.controller.process.OpenPPT(filepath, None, rect, - str(os.path.join(self.thumbnailpath, - self.controller.thumbnailprefix))) + self.pptid = self.controller.process.OpenPPT(filepath, None, rect, + str(os.path.join(self.thumbnailpath, + self.controller.thumbnailprefix))) + if self.pptid: self.stop_presentation() - except: - log.exception(u'Failed to load presentation') def close_presentation(self): """ @@ -156,7 +156,7 @@ class PptviewDocument(PresentationDocument): """ Returns true if a presentation is currently active """ - return self.is_loaded() + return self.is_loaded() and not self.hidden def blank_screen(self): """ @@ -183,13 +183,18 @@ class PptviewDocument(PresentationDocument): """ Stops the current presentation and hides the output """ + self.hidden = True self.controller.process.Stop(self.pptid) def start_presentation(self): """ Starts a presentation from the beginning """ - self.controller.process.RestartShow(self.pptid) + if self.hidden: + self.hidden = False + self.controller.process.Resume(self.pptid) + else: + self.controller.process.RestartShow(self.pptid) def get_slide_number(self): """ diff --git a/openlp/plugins/presentations/lib/pptviewlib/README.TXT b/openlp/plugins/presentations/lib/pptviewlib/README.TXT index 5afcfd3f4..686278729 100644 --- a/openlp/plugins/presentations/lib/pptviewlib/README.TXT +++ b/openlp/plugins/presentations/lib/pptviewlib/README.TXT @@ -23,6 +23,8 @@ This README.TXT must be distributed with the pptviewlib.dll This library has a limit of 50 PowerPoints which can be opened simultaneously. +This project can be built with the free Microsoft Visual C++ 2008 Express Edition. + USAGE ----- BOOL CheckInstalled(void); diff --git a/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.cpp b/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.cpp index abba3088b..86876a836 100644 --- a/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.cpp +++ b/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.cpp @@ -150,7 +150,7 @@ DllExport int OpenPPT(char *filename, HWND hParentWnd, RECT rect, char *previewp pptviewobj[id].rect.bottom = rect.bottom; pptviewobj[id].rect.right = rect.right; } - strcat_s(cmdline, MAX_PATH * 2, "/S \""); + strcat_s(cmdline, MAX_PATH * 2, "/F /S \""); strcat_s(cmdline, MAX_PATH * 2, filename); strcat_s(cmdline, MAX_PATH * 2, "\""); memset(&si, 0, sizeof(si)); @@ -211,7 +211,7 @@ DllExport int OpenPPT(char *filename, HWND hParentWnd, RECT rect, char *previewp } DEBUG("OpenPPT: Steps %d, first slide steps %d\n",pptviewobj[id].steps,pptviewobj[id].firstSlideSteps); SavePPTInfo(id); - if(pptviewobj[id].state==PPT_CLOSING){ + if(pptviewobj[id].state==PPT_CLOSING||pptviewobj[id].slideCount<=0){ ClosePPT(id); id=-1; } From ca7f3eb599af85aa29799fad7f6605a05ee2d1d1 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Thu, 24 Jun 2010 16:28:42 +0100 Subject: [PATCH 40/83] Fix and add some ampersands --- openlp/core/ui/amendthemedialog.py | 6 ++++-- openlp/plugins/custom/forms/editcustomdialog.py | 9 ++++++--- openlp/plugins/songs/forms/editsongdialog.py | 4 ++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/openlp/core/ui/amendthemedialog.py b/openlp/core/ui/amendthemedialog.py index b736a740c..a75f5e686 100644 --- a/openlp/core/ui/amendthemedialog.py +++ b/openlp/core/ui/amendthemedialog.py @@ -50,6 +50,7 @@ class Ui_AmendThemeDialog(object): self.ThemeNameLayout.addWidget(self.ThemeNameLabel) self.ThemeNameEdit = QtGui.QLineEdit(self.ThemeNameWidget) self.ThemeNameEdit.setObjectName(u'ThemeNameEdit') + self.ThemeNameLabel.setBuddy(self.ThemeNameEdit) self.ThemeNameLayout.addWidget(self.ThemeNameEdit) self.AmendThemeLayout.addWidget(self.ThemeNameWidget) self.ContentWidget = QtGui.QWidget(AmendThemeDialog) @@ -72,6 +73,7 @@ class Ui_AmendThemeDialog(object): self.BackgroundLabel) self.BackgroundComboBox = QtGui.QComboBox(self.BackgroundTab) self.BackgroundComboBox.setObjectName(u'BackgroundComboBox') + self.BackgroundLabel.setBuddy(self.BackgroundComboBox) self.BackgroundComboBox.addItem(QtCore.QString()) self.BackgroundComboBox.addItem(QtCore.QString()) self.BackgroundLayout.setWidget(0, QtGui.QFormLayout.FieldRole, @@ -752,9 +754,9 @@ class Ui_AmendThemeDialog(object): AmendThemeDialog.setWindowTitle( translate('AmendThemeForm', 'Theme Maintenance')) self.ThemeNameLabel.setText( - translate('AmendThemeForm', 'Theme Name:')) + translate('AmendThemeForm', 'Theme &Name:')) self.BackgroundLabel.setText( - translate('AmendThemeForm', 'Visibility:')) + translate('AmendThemeForm', '&Visibility:')) self.BackgroundComboBox.setItemText(0, translate('AmendThemeForm', 'Opaque')) self.BackgroundComboBox.setItemText(1, diff --git a/openlp/plugins/custom/forms/editcustomdialog.py b/openlp/plugins/custom/forms/editcustomdialog.py index f16b85610..6e6ef08f7 100644 --- a/openlp/plugins/custom/forms/editcustomdialog.py +++ b/openlp/plugins/custom/forms/editcustomdialog.py @@ -43,6 +43,7 @@ class Ui_customEditDialog(object): self.TitleLabel.setObjectName(u'TitleLabel') self.horizontalLayout.addWidget(self.TitleLabel) self.TitleEdit = QtGui.QLineEdit(customEditDialog) + self.TitleLabel.setBuddy(self.TitleEdit) self.TitleEdit.setObjectName(u'TitleEdit') self.horizontalLayout.addWidget(self.TitleEdit) self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1) @@ -118,6 +119,7 @@ class Ui_customEditDialog(object): self.ThemeLabel.setObjectName(u'ThemeLabel') self.horizontalLayout_3.addWidget(self.ThemeLabel) self.ThemeComboBox = QtGui.QComboBox(customEditDialog) + self.ThemeLabel.setBuddy(self.ThemeComboBox) self.ThemeComboBox.setObjectName(u'ThemeComboBox') self.horizontalLayout_3.addWidget(self.ThemeComboBox) self.gridLayout.addLayout(self.horizontalLayout_3, 3, 0, 1, 1) @@ -127,6 +129,7 @@ class Ui_customEditDialog(object): self.CreditLabel.setObjectName(u'CreditLabel') self.horizontalLayout_2.addWidget(self.CreditLabel) self.CreditEdit = QtGui.QLineEdit(customEditDialog) + self.CreditLabel.setBuddy(self.CreditEdit) self.CreditEdit.setObjectName(u'CreditEdit') self.horizontalLayout_2.addWidget(self.CreditEdit) self.gridLayout.addLayout(self.horizontalLayout_2, 4, 0, 1, 1) @@ -162,7 +165,7 @@ class Ui_customEditDialog(object): self.DownButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Move slide down 1')) self.TitleLabel.setText( - translate('CustomPlugin.EditCustomForm', 'Title:')) + translate('CustomPlugin.EditCustomForm', '&Title:')) self.AddButton.setText( translate('CustomPlugin.EditCustomForm', 'Add New')) self.AddButton.setToolTip( @@ -192,7 +195,7 @@ class Ui_customEditDialog(object): self.SplitButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Add slide split')) self.ThemeLabel.setText( - translate('CustomPlugin.EditCustomForm', 'Theme:')) + translate('CustomPlugin.EditCustomForm', 'The&me:')) self.CreditLabel.setText( - translate('CustomPlugin.EditCustomForm', 'Credits:')) + translate('CustomPlugin.EditCustomForm', '&Credits:')) diff --git a/openlp/plugins/songs/forms/editsongdialog.py b/openlp/plugins/songs/forms/editsongdialog.py index 34e15ce59..1d23a4df9 100644 --- a/openlp/plugins/songs/forms/editsongdialog.py +++ b/openlp/plugins/songs/forms/editsongdialog.py @@ -50,6 +50,7 @@ class Ui_EditSongDialog(object): self.TitleLabel.setObjectName(u'TitleLabel') self.LyricsTabLayout.addWidget(self.TitleLabel, 0, 0, 1, 1) self.TitleEditItem = QtGui.QLineEdit(self.LyricsTab) + self.TitleLabel.setBuddy(self.TitleEditItem) sizePolicy = QtGui.QSizePolicy( QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) @@ -63,6 +64,7 @@ class Ui_EditSongDialog(object): self.AlternativeTitleLabel.setObjectName(u'AlternativeTitleLabel') self.LyricsTabLayout.addWidget(self.AlternativeTitleLabel, 1, 0, 1, 1) self.AlternativeEdit = QtGui.QLineEdit(self.LyricsTab) + self.AlternativeTitleLabel.setBuddy(self.AlternativeEdit) self.AlternativeEdit.setObjectName(u'AlternativeEdit') self.LyricsTabLayout.addWidget(self.AlternativeEdit, 1, 1, 1, 2) self.LyricsLabel = QtGui.QLabel(self.LyricsTab) @@ -71,6 +73,7 @@ class Ui_EditSongDialog(object): self.LyricsLabel.setObjectName(u'LyricsLabel') self.LyricsTabLayout.addWidget(self.LyricsLabel, 2, 0, 1, 1) self.VerseListWidget = QtGui.QTableWidget(self.LyricsTab) + self.LyricsLabel.setBuddy(self.VerseListWidget) self.VerseListWidget.setColumnCount(1) self.VerseListWidget.horizontalHeader().setVisible(False) self.VerseListWidget.setSelectionBehavior(1) @@ -83,6 +86,7 @@ class Ui_EditSongDialog(object): self.VerseOrderLabel.setObjectName(u'VerseOrderLabel') self.LyricsTabLayout.addWidget(self.VerseOrderLabel, 4, 0, 1, 1) self.VerseOrderEdit = QtGui.QLineEdit(self.LyricsTab) + self.VerseOrderLabel.setBuddy(self.VerseOrderEdit) self.VerseOrderEdit.setObjectName(u'VerseOrderEdit') self.LyricsTabLayout.addWidget(self.VerseOrderEdit, 4, 1, 1, 2) self.VerseButtonWidget = QtGui.QWidget(self.LyricsTab) From c7939ea03c39a4cab53b89aff36b935f52385306 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Thu, 24 Jun 2010 17:30:35 +0200 Subject: [PATCH 41/83] Add source languages from Pootle. --- resources/i18n/openlp_af.ts | 4254 +++++++++++++++++++++++++++ resources/i18n/openlp_de.ts | 4259 +++++++++++++++++++++++++++ resources/i18n/openlp_en_GB.ts | 4287 +++++++++++++++++++++++++++ resources/i18n/openlp_en_ZA.ts | 4457 ++++++++++++++++++++++++++++ resources/i18n/openlp_es.ts | 4253 +++++++++++++++++++++++++++ resources/i18n/openlp_hu.ts | 3904 +++++++++++++++++++++++++ resources/i18n/openlp_ko.ts | 4960 ++++++++++++++++++++++++++++++++ resources/i18n/openlp_nb.ts | 4491 +++++++++++++++++++++++++++++ resources/i18n/openlp_pt_BR.ts | 4254 +++++++++++++++++++++++++++ resources/i18n/openlp_sv.ts | 4262 +++++++++++++++++++++++++++ 10 files changed, 43381 insertions(+) create mode 100644 resources/i18n/openlp_af.ts create mode 100644 resources/i18n/openlp_de.ts create mode 100644 resources/i18n/openlp_en_GB.ts create mode 100644 resources/i18n/openlp_en_ZA.ts create mode 100644 resources/i18n/openlp_es.ts create mode 100644 resources/i18n/openlp_hu.ts create mode 100644 resources/i18n/openlp_ko.ts create mode 100644 resources/i18n/openlp_nb.ts create mode 100644 resources/i18n/openlp_pt_BR.ts create mode 100644 resources/i18n/openlp_sv.ts diff --git a/resources/i18n/openlp_af.ts b/resources/i18n/openlp_af.ts new file mode 100644 index 000000000..f3370fed9 --- /dev/null +++ b/resources/i18n/openlp_af.ts @@ -0,0 +1,4254 @@ + + + + BibleMediaItem + + + Quick + Vinnig + + + Ui_customEditDialog + + + Delete selected slide + Wis die geselekteerde skyfie uit + + + BiblesTab + + + ( and ) + ( en ) + + + RemoteTab + + + Remotes + Afstandbehere + + + Ui_EditSongDialog + + + &Remove + &Verwyder + + + Ui_AmendThemeDialog + + + Shadow Size: + Skaduwee Grote: + + + Ui_OpenSongExportDialog + + + Close + Maak toe + + + ThemeManager + + + Import Theme + Tema Invoer + + + Ui_AmendThemeDialog + + + Slide Transition + Skyfie Verandering + + + SongMaintenanceForm + + + Are you sure you want to delete the selected book? + Is jy seker jy wil die geselekteerde boek uitwis? + + + ThemesTab + + + Theme level + Tema vlak + + + BibleMediaItem + + + Bible + Bybel + + + ServiceManager + + + Save Changes to Service? + Stoor Veranderinge aan Diens? + + + SongUsagePlugin + + + &Delete recorded data + &Wis opname data uit + + + Ui_OpenLPExportDialog + + + Song Title + Lied Titel + + + Ui_customEditDialog + + + Edit selected slide + Redigeer geselekteerde skyfie + + + SongMediaItem + + + CCLI Licence: + CCLI Lisensie: + + + Ui_SongUsageDeleteDialog + + + Audit Delete + Wis Oudit Uit + + + Ui_BibleImportWizard + + + Bible Import Wizard + Bybel Invoer Gids + + + Ui_customEditDialog + + + Edit All + Redigeer Alles + + + Ui_ServiceNoteEdit + + + Service Item Notes + Diens Item Notas + + + SongMaintenanceForm + + + Couldn't save your author! + Kon nie u skrywer stoor nie! + + + Ui_customEditDialog + + + Clear + Skoon + + + ThemesTab + + + Global theme + Globale tema + + + SongUsagePlugin + + + Start/Stop live song usage recording + Begin/Stop regstreekse lied-gebruik opname + + + MainWindow + + + The Main Display has been blanked out + Die Hoof Skerm is blanko + + + Ui_OpenSongExportDialog + + + Lyrics + Lerieke + + + Ui_AlertDialog + + + Display + Vertoon + + + Ui_customEditDialog + + + Delete + Wis uit + + + Ui_EditVerseDialog + + + Verse + Vers + + + SongMaintenanceForm + + + This author can't be deleted, they are currently assigned to at least one song! + Die skrywer kan nie uitgewis word nie want die skrywer is aan minstens een lied toegeken! + + + ThemeManager + + + Create a new theme + Skep 'n nuwe tema + + + Ui_MainWindow + + + Open an existing service + Maak 'n bestaande diens oop + + + SlideController + + + Move to previous + Beweeg na vorige + + + SongsPlugin + + + &Song + &Lied + + + Ui_PluginViewDialog + + + Plugin Details + Inprop Besonderhede + + + AlertsTab + + + pt + pt + + + Edit History: + Redigeer Geskiedenis: + + + Ui_MainWindow + + + &File + &Lêer + + + SongMaintenanceForm + + + Couldn't add your book! + Kan nie die boek byvoeg nie! + + + BiblesTab + + + verse per line + vers per lyn + + + Ui_customEditDialog + + + Theme: + Tema: + + + SongMaintenanceForm + + + Error + Fout + + + Ui_BibleImportWizard + + + Bible: + Bybel: + + + ImportWizardForm + + + You need to specify a file with books of the Bible to use in the import! + Spesifiseer 'n lêer met die boeke van die Bybel vir gebruik tydens die invoer! + + + ThemeManager + + + Delete Theme + Wis Tema Uit + + + SplashScreen + + + Splash Screen + Spatsel Skerm + + + SongMediaItem + + + Song + Lied + + + SongUsageDeleteForm + + + Delete Selected Audit Events? + Wis Geselekteerde Oudit Aksies uit? + + + Ui_OpenSongExportDialog + + + Song Title + Lied Titel + + + Ui_AmendThemeDialog + + + Bottom + Onder + + + Ui_MainWindow + + + List the Plugins + Lys die Inproppe + + + SongMaintenanceForm + + + No author selected! + Geen skrywer geselekteer nie! + + + SongUsagePlugin + + + <b>SongUsage Plugin</b><br>This plugin records the use of songs and when they have been used during a live service + <b>SongUsage Inprop</b><br>Hierdie inprop stoor die gebruik van liedere en wanneer dit gebruik was gedurende 'n regstreekse diens. + + + Ui_customEditDialog + + + Move slide Up 1 + Beweeg skyfie 1 plek Op + + + SongsPlugin + + + OpenSong + OpenSong + + + AlertsManager + + + Alert message created and delayed + Waarskuwings boodskap geskep en vertraag + + + Ui_EditSongDialog + + + Alternative Title: + Alternatiewe Titel: + + + ServiceManager + + + Open Service + Maak Diens Oop + + + BiblesTab + + + Display Style: + Vertoon Styl: + + + Ui_AmendThemeDialog + + + Image + Beeld + + + EditSongForm + + + You need to enter a song title. + U moet 'n lied titel invoer. + + + ThemeManager + + + Error + Fout + + + ImportWizardForm + + + Invalid Bible Location + Ongeldige Bybel Ligging + + + ThemesTab + + + Global level + Globale vlak + + + ThemeManager + + + Make Global + Maak Globaal + + + Ui_MainWindow + + + &Service Manager + &Diens Bestuurder + + + Ui_OpenLPImportDialog + + + Author + Skrywer + + + Ui_AmendThemeDialog + + + Height: + Hoogte: + + + ThemeManager + + + Delete a theme + Wis 'n tema uit + + + Ui_BibleImportWizard + + + Crosswalk + CosswalkSover ek verstaan is Crosswalk sagteware. Verwysings na sagteware, akronieme en so meer bly in die oorspronklike vorm. + + + SongBookForm + + + Error + Fout + + + Ui_AuthorsDialog + + + Last name: + Van: + + + Ui_customEditDialog + + + Title: + Titel: + + + ImportWizardForm + + + You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. + Stel Kopiereg op vir die spesifieke Bybel! Bybels in die Publieke Omgewing moet so gemerk word. + + + SongMediaItem + + + Maintain the lists of authors, topics and books + Handhaaf die lys van skrywers, onderwerpe en boeke + + + Ui_AlertEditDialog + + + Save + Stoor + + + EditCustomForm + + + You have unsaved data + U het data wat nie gestoor is nie + + + Ui_AmendThemeDialog + + + Outline + Buitelyn + + + BibleMediaItem + + + Text Search + Teks Soektog + + + Ui_BibleImportWizard + + + CSV + KGW + + + SongUsagePlugin + + + Delete song usage to specified date + Wis lied-gebruik uit tot gespesifiseerde datum + + + Ui_SongUsageDetailDialog + + + Report Location + Rapporteer Ligging + + + Ui_BibleImportWizard + + + OpenSong + OpenSong + + + Ui_MainWindow + + + Open Service + Maak Diens Oop + + + BibleMediaItem + + + Find: + Vind: + + + ImageMediaItem + + + Select Image(s) + Selekteer beeld(e) + + + BibleMediaItem + + + Search Type: + Soek Tipe: + + + Ui_MainWindow + + + Media Manager + Media Bestuurder + + + Alt+F4 + Alt+F4 + + + MediaManagerItem + + + &Preview + &Voorskou + + + GeneralTab + + + CCLI Details + CCLI Inligting + + + BibleMediaItem + + + Bible not fully loaded + Bybel nie tenvolle gelaai nie + + + Ui_MainWindow + + + Toggle the visibility of the Preview Panel + Wissel die sigbaarheid van die Voorskou Paneel + + + ImportWizardForm + + + Bible Exists + Bybel Bestaan + + + Ui_MainWindow + + + &User Guide + &Gebruikers Gids + + + SongUsageDeleteForm + + + Are you sure you want to delete selected Audit Data? + Is u seker dat u die Oudit Data wil uitwis? + + + Ui_MainWindow + + + Set the interface language to English + Verstel die koppelvlak taal na Engels + + + Ui_AmendThemeDialog + + + Main Font + Hoof Skrif + + + ImportWizardForm + + + Empty Copyright + Leë Kopiereg + + + CustomPlugin + + + <b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br> + <b>Aanpas Inprop</b><br/>Hierdie inprop vertoon skyfies op dieselfde manier as wat liedere vertoon word. Hierdie inprop beskik oor meer vryheid as die liedere inprop.<br/> + + + AuthorsForm + + + You need to type in the first name of the author. + U moet die naam van die skrywer invul. + + + SongsTab + + + Display Verses on Live Tool bar: + Vertoon Verse op Regstreekse Gereedskap-balk: + + + ServiceManager + + + Move to top + Skuif na bo + + + ImageMediaItem + + + Override background + Oorskryf agtergrond + + + Ui_SongMaintenanceDialog + + + Edit + Redigeer + + + Ui_OpenSongExportDialog + + + Select All + Selekteer Almal + + + ThemesTab + + + 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. + Gebruik die tema van elke lied in die lied-databasis. As 'n lied nie 'n geassosieërde tema het nie, gebruik die diens se tema. As die diens nie 'n tema het nie, gebruik dan die globale tema. + + + PresentationMediaItem + + + Presentation + Aanbieding + + + Ui_AmendThemeDialog + + + Solid Color + Soliede Kleur + + + CustomTab + + + Custom + Aangepas + + + Ui_OpenLPImportDialog + + + Ready to import + Gereed vir invoer + + + MainWindow + + + OpenLP version %s has been updated to version %s + +You can obtain the latest version from http://openlp.org + OpenLP weergawe %s is opdateer na weergawe %s + +U kan die nuutste weergawe verkry van http://openlp.org + + + Ui_BibleImportWizard + + + File Location: + Lêer Ligging: + + + SlideController + + + Go to Verse + Gaan na Vers + + + Ui_MainWindow + + + &Import + &Invoer + + + Quit OpenLP + Sluit OpenLP Af + + + Ui_BibleImportWizard + + + 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. + Hierdie gids sal u help om Bybels van 'n verskeidenheid vormate in te voer. Kliek die volgende knoppie hieronder om die proses te begin en 'n formaat te kies om in te voer. + + + SongMaintenanceForm + + + Couldn't add your topic! + Kon nie u onderwerp byvoeg nie! + + + ImportWizardForm + + + Empty Version Name + Weergawe Naam is Leeg + + + Ui_MainWindow + + + &Preview Panel + &Voorskou Paneel + + + SlideController + + + Start continuous loop + Begin aaneenlopende lus + + + ServiceManager + + + Move down + Beweeg af + + + GeneralTab + + + primary + primêre + + + Ui_EditSongDialog + + + Add a Theme + Voeg 'n Tema by + + + Ui_MainWindow + + + &New + &Nuwe + + + Ui_customEditDialog + + + Credits: + Krediete: + + + SlideController + + + Live + Regstreeks + + + GeneralTab + + + Show blank screen warning + Vertoon leë skerm waarskuwing + + + BiblesTab + + + continuous + aaneenlopend + + + Ui_EditVerseDialog + + + Number + Nommer + + + GeneralTab + + + Application Startup + Program Aanskakel + + + Ui_AmendThemeDialog + + + Use Default Location: + Gebruik Verstek Ligging: + + + Ui_OpenSongImportDialog + + + Import + Invoer + + + Ui_AmendThemeDialog + + + Other Options + Ander Opsies + + + Ui_EditSongDialog + + + Verse Order: + Vers Orde: + + + Ui_SongUsageDetailDialog + + + ASelect Date Range + Selekteer Datum Reeks + + + Ui_MainWindow + + + Default Theme: + Verstek Tema: + + + Toggle Preview Panel + Wissel Voorskou Paneel + + + SongMediaItem + + + Lyrics + Lerieke + + + Ui_OpenLPImportDialog + + + Progress: + Vordering: + + + Ui_AmendThemeDialog + + + Shadow + Skaduwee + + + GeneralTab + + + Select monitor for output display: + Selekteer monitor vir uitgaande vertoning: + + + Ui_MainWindow + + + &Settings + Ver&stellings + + + Ui_AmendThemeDialog + + + Italics + Kursief + + + ServiceManager + + + Create a new service + Skep 'n nuwe diens + + + Ui_AmendThemeDialog + + + Background: + Agtergrond: + + + Ui_OpenLPImportDialog + + + openlp.org Song Importer + openlp.org Lied Invoerder + + + Ui_BibleImportWizard + + + Copyright: + Kopiereg: + + + ThemesTab + + + Service level + Diens vlak + + + BiblesTab + + + [ and ] + [ en ] + + + Ui_BibleImportWizard + + + Verse Location: + Vers Ligging: + + + MediaManagerItem + + + You must select one or more items + P moet meer as een item selekteer + + + GeneralTab + + + Application Settings + Program Verstellings + + + ServiceManager + + + Save this service + Stoor hierdie diens + + + ImportWizardForm + + + Open Books CSV file + Maak Boeke CSV lêer oop + + + GeneralTab + + + SongSelect Username: + SongSelect Gebruikers naam: + + + Ui_AmendThemeDialog + + + X Position: + X Posisie: + + + BibleMediaItem + + + No matching book could be found in this Bible. + Geen bypassende boek kon in dié Bybel gevind word nie. + + + Ui_BibleImportWizard + + + Server: + Bediener: + + + SongMaintenanceForm + + + Couldn't save your book! + Kon nie u boek stoor nie! + + + Ui_EditVerseDialog + + + Ending + Slot + + + CustomTab + + + Display Footer: + Vertoon Voetnota: + + + ImportWizardForm + + + Invalid OpenSong Bible + Ongeldige OpenSong Bybel + + + GeneralTab + + + CCLI Number: + CCLI Nommer: + + + Ui_AmendThemeDialog + + + Center + Middel + + + ServiceManager + + + Theme: + Tema: + + + Ui_MainWindow + + + &Live + &Regstreeks + + + Ui_AmendThemeDialog + + + <Color2> + <Color2> + + + Ui_MainWindow + + + English + Engels + + + ImageMediaItem + + + You must select one or more items + U moet een of meer items selekteer + + + Ui_AuthorsDialog + + + First name: + Voornaam: + + + Ui_OpenLPExportDialog + + + Select openlp.org export filename: + Selekteer openlp.org uitvoer lêer-naam: + + + Ui_BibleImportWizard + + + Permission: + Toestemming: + + + Ui_OpenSongImportDialog + + + Close + Maak toe + + + Ui_AmendThemeDialog + + + Opaque + Deursigtigheid + + + SongMaintenanceForm + + + This book can't be deleted, it is currently assigned to at least one song! + Die boek kan nie uitgewis word nie, dit is toegeken aan ten minste een lied! + + + ImportWizardForm + + + Your Bible import failed. + U Bybel invoer het misluk. + + + SlideController + + + Start playing media + Begin media speel + + + SongMediaItem + + + Type: + Tipe: + + + Ui_AboutDialog + + + Close + Maak toe + + + TopicsForm + + + You need to type in a topic name! + U moet 'n onderwerp naam invoer! + + + Ui_OpenSongExportDialog + + + Song Export List + Lied Uitvoer Lys + + + BibleMediaItem + + + Dual: + Dubbel: + + + ImageTab + + + sec + sec + + + ServiceManager + + + Delete From Service + Verwyder Van Diens + + + GeneralTab + + + Automatically open the last service + Maak vanself die laaste diens oop + + + Ui_OpenLPImportDialog + + + Song Import List + Lied Invoer Lys + + + Ui_OpenSongExportDialog + + + Author + Skrywer + + + Ui_AmendThemeDialog + + + Outline Color: + Buitelyn Kleur: + + + Ui_BibleImportWizard + + + Select Import Source + Selekteer Invoer Bron + + + Ui_MainWindow + + + F9 + F9 + + + F8 + F8 + + + ServiceManager + + + &Change Item Theme + &Verander Item Tema + + + Ui_OpenSongImportDialog + + + OpenSong Folder: + OpenSong Gids: + + + Ui_OpenLPImportDialog + + + Import File Song List + Voer Lêer Lied Lys in + + + Ui_customEditDialog + + + Edit Custom Slides + Redigeer Aangepaste Skyfies + + + Ui_BibleImportWizard + + + Set up the Bible's license details. + Stel hierdie Bybel se lisensie besonderhede op. + + + Ui_AmendThemeDialog + + + Alignment + Belyning + + + SongMaintenanceForm + + + Delete Book + Wis Boek Uit + + + ThemeManager + + + Edit a theme + Redigeer 'n tema + + + Ui_BibleImportWizard + + + BibleGateway + BibleGateway + + + GeneralTab + + + Preview Next Song from Service Manager + Sien Voorskou van Volgende Lied vanaf Diens Bestuurder + + + Ui_EditSongDialog + + + Title && Lyrics + Titel && Lirieke + + + SongMaintenanceForm + + + No book selected! + Geen boek geselekteer nie! + + + SlideController + + + Move to live + Verskuif na regstreekse skerm + + + Ui_EditVerseDialog + + + Other + Ander + + + Ui_EditSongDialog + + + Theme + Tema + + + ServiceManager + + + Save Service + Stoor Diens + + + Ui_MainWindow + + + Save the current service to disk + Stoor die huidige diens na skyf + + + BibleMediaItem + + + Chapter: + Hoofstuk: + + + Search + Soek + + + PresentationTab + + + Available Controllers + Beskikbare Beheerders + + + ImportWizardForm + + + Open Verses CSV file + Maak Verse CSV lêer oop + + + TopicsForm + + + Error + Fout + + + RemoteTab + + + Remotes Receiver Port + Afstandbeheer Ontvanger Poort + + + Ui_MainWindow + + + &View + &Bekyk + + + Ui_AmendThemeDialog + + + Normal + Normaal + + + Ui_OpenLPExportDialog + + + Close + Maak toe + + + Ui_BibleImportWizard + + + Username: + Gebruikersnaam: + + + ThemeManager + + + Edit Theme + Wysig Tema + + + SlideController + + + Preview + Voorskou + + + Ui_AlertDialog + + + Alert Message + Waarskuwing Boodskap + + + ImportWizardForm + + + Finished import. + Invoer voltooi. + + + You need to specify a file of Bible verses to import! + Spesifiseer 'n lêer van Bybel verse om in te voer! + + + AlertsTab + + + Location: + Ligging: + + + Ui_EditSongDialog + + + Authors, Topics && Book + Skrywer, Onderwerpe && Boek + + + EditSongForm + + + You need to enter some verses. + U moet 'n paar verse invoer. + + + Ui_BibleImportWizard + + + Download Options + Aflaai Opsies + + + BiblePlugin + + + <strong>Bible Plugin</strong><br />This plugin allows bible verses from different sources to be displayed on the screen during the service. + <strong>Bybel Miniprogram</strong><br/>Dié miniprogram laat toe dat Bybel verse van verskillende bronne op die skerm vertoon kan word gedurende die diens. + + + Ui_EditSongDialog + + + Copyright Information + Kopiereg Informasie + + + Ui_MainWindow + + + &Export + &Uitvoer + + + Ui_AmendThemeDialog + + + Bold + Vetgedruk + + + SongsPlugin + + + Export songs in OpenLP 2.0 format + Voer liedere uit in OpenLP 2.0 formaat + + + MediaManagerItem + + + Load a new + Laai 'n nuwe + + + AlertEditForm + + + Missing data + Verlore data + + + SongsPlugin + + + <b>Song Plugin</b> <br>This plugin allows Songs to be managed and displayed.<br> + <b>Song Miniprogram</b> <br/>Hierdie miniprogram laat toe dat Liedere bestuur en vertoon kan word.<br/> + + + Ui_AmendThemeDialog + + + Footer Font + Voetnota Skriftipe + + + EditSongForm + + + Invalid verse entry - vX + Ongeldige vers inskrywing - vX + + + MediaManagerItem + + + Delete the selected item + Wis geselekteerde item uit + + + Ui_OpenLPExportDialog + + + Export + Voer uit + + + Ui_BibleImportWizard + + + Location: + Ligging: + + + BibleMediaItem + + + Keep + Behou + + + SongUsagePlugin + + + Generate report on Song Usage + Genereer verslag van Lied Gebruik + + + Ui_EditSongDialog + + + Topic + Onderwerp + + + Ui_MainWindow + + + &Open + Maak &Oop + + + AuthorsForm + + + You haven't set a display name for the author, would you like me to combine the first and last names for you? + U het nie 'n vertoon naam vir die skrywer gegee nie, moet ek die voornaam en van kombineer? + + + AmendThemeForm + + + Slide Height is %s rows + Skyfie Hoogte is %s rye + + + Ui_EditVerseDialog + + + Pre-Chorus + Voor-Refrein + + + Ui_EditSongDialog + + + Lyrics: + Lirieke: + + + Ui_AboutDialog + + + Project Lead + Raoul "superfly" Snyman + +Developers + Tim "TRB143" Bentley + Jonathan "gushie" Corwin + Michael "cocooncrash" Gorven + Scott "sguerrieri" Guerrieri + Raoul "superfly" Snyman + Maikel Stuivenberg + Martin "mijiti" Thompson + Jon "Meths" Tibble + Carsten "catini" Tingaard + +Testers + Wesley "wrst" Stout + Projek Leier +Raoul "superfly" Snyman + +Onwikkelaars +Tim "TRB143" Bentley +Jonathan "gushie" Corwin +Michael "cocooncrash" Gorven +Scott "sguerrieri" Guerrieri +Raoul "superfly" Snyman +Maikel Stuivenberg +Martin "mijiti" Thompson +Jon "Meths" Tibble +Carsten "catini" Tingaard + +Testers +Wesley "wrst" Stout + + + SongMediaItem + + + Titles + Titels + + + Ui_OpenLPExportDialog + + + Lyrics + Lirieke + + + PresentationMediaItem + + + Present using: + Bied aan met: + + + SongMediaItem + + + Clear + Maak skoon + + + ServiceManager + + + &Live Verse + &Lewendige Vers + + + Ui_OpenSongImportDialog + + + Progress: + Vordering: + + + Ui_MainWindow + + + Toggle Theme Manager + Wissel Tema Bestuurder + + + Ui_AlertDialog + + + Alert Text: + Waarskuwing Teks: + + + Ui_EditSongDialog + + + Edit + Redigeer + + + AlertsTab + + + Font Color: + Skrif Kleur: + + + Ui_AmendThemeDialog + + + Theme Maintenance + Tema Onderhoud + + + CustomTab + + + Custom Display + Aangepasde Vertoning + + + Ui_OpenSongExportDialog + + + Title + Titel + + + Ui_AmendThemeDialog + + + <Color1> + <Color1> + + + Ui_EditSongDialog + + + Authors + Skrywers + + + ThemeManager + + + Export Theme + Voer Tema Uit + + + ServiceManager + + + (N) + (N) + + + Ui_SongBookDialog + + + Name: + Naam: + + + Ui_AuthorsDialog + + + Author Maintenance + Skrywer Onderhoud + + + Ui_AmendThemeDialog + + + Font Footer + Skrif Voetnota + + + BiblesTab + + + Verse Display + Vers Vertoning + + + Ui_MainWindow + + + &Options + &Opsies + + + BibleMediaItem + + + Results: + &Resultate: + + + Ui_OpenLPExportDialog + + + Full Song List + Volle Liedere Lys + + + SlideController + + + Move to last + Verskuif na laaste posisie + + + Ui_OpenLPExportDialog + + + Progress: + Vordering: + + + Ui_SongMaintenanceDialog + + + Add + Byvoeg + + + SongMaintenanceForm + + + Are you sure you want to delete the selected author? + Is u seker u wil die geselekteerde skrywer uitwis? + + + SongUsagePlugin + + + Song Usage Status + Lied Gebruik Status + + + BibleMediaItem + + + Verse Search + Soek Vers + + + Ui_SongBookDialog + + + Edit Book + Redigeer Boek + + + EditSongForm + + + Save && Preview + Stoor && Voorskou + + + Ui_SongBookDialog + + + Publisher: + Uitgewer: + + + Ui_AmendThemeDialog + + + Font Weight: + Skrif Donkerheid: + + + Ui_BibleImportWizard + + + Bible Filename: + Bybel Lêernaam: + + + Ui_AmendThemeDialog + + + Transparent + Deursigtig + + + SongMediaItem + + + Search + Soek + + + Ui_BibleImportWizard + + + Format: + Formaat: + + + Ui_AmendThemeDialog + + + Background + Agtergrond + + + Ui_BibleImportWizard + + + Importing + Invoer + + + Ui_customEditDialog + + + Edit all slides + Redigeer alle skyfies + + + SongsTab + + + Enable search as you type: + Stel soek soos u tik in staat: + + + Ui_MainWindow + + + Ctrl+S + Ctrl+S + + + SongMediaItem + + + Authors + Skrywers + + + Ui_PluginViewDialog + + + Active + Aktief + + + SongMaintenanceForm + + + Couldn't save your topic! + Kon nie u onderwerp stoor nie! + + + Ui_MainWindow + + + Ctrl+O + Ctrl+O + + + Ctrl+N + Ctrl+N + + + SongMaintenanceForm + + + Couldn't add your author! + Kon nie u skrywer byvoeg nie! + + + Ui_AlertEditDialog + + + Edit + Redigeer + + + Ui_EditSongDialog + + + Song Editor + Lied Redigeerder + + + AlertsTab + + + Font + Skrif + + + SlideController + + + Edit and re-preview Song + Redigeer en sien weer 'n voorskou van die Lied + + + Delay between slides in seconds + Vertraging in sekondes tussen skyfies + + + MediaManagerItem + + + &Edit + R&edigeer + + + Ui_AmendThemeDialog + + + Vertical + Vertikaal + + + Width: + Wydte: + + + ThemeManager + + + You are unable to delete the default theme! + U is nie in staat om die verstek tema uit te wis nie! + + + ThemesTab + + + Use the global theme, overriding any themes associated with either the service or the songs. + Gebruik die globale tema om enige temas wat met die diens of liedere geassosieer is te vervang. + + + BibleMediaItem + + + Version: + Weergawe: + + + Ui_AboutDialog + + + OpenLP <version> build <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> bou <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. + + + SongsPlugin + + + OpenLP 2.0 + OpenLP 2.0 + + + ServiceManager + + + New Service + Nuwe Diens + + + Ui_TopicsDialog + + + Topic name: + Onderwerp naam: + + + ThemeManager + + + File is not a valid theme! + Lêer is nie 'n geldige tema nie! + + + Ui_BibleImportWizard + + + License Details + Lisensie Besonderhede + + + Ui_AboutDialog + + + License + Lisensie + + + Ui_EditSongDialog + + + R&emove + V&erwyder + + + Ui_AmendThemeDialog + + + Middle + Middel + + + Ui_customEditDialog + + + Save + Stoor + + + AlertEditForm + + + Item selected to Edit + Item geselekteer vir Redigering + + + BibleMediaItem + + + From: + Vanaf: + + + Ui_AmendThemeDialog + + + Shadow Color: + Skaduwee Kleur: + + + ServiceManager + + + &Notes + &Notas + + + Ui_MainWindow + + + E&xit + &Uitgang + + + Ui_OpenLPImportDialog + + + Close + Maak toe + + + MainWindow + + + OpenLP Version Updated + OpenLP Weergawe is Opdateer + + + Ui_customEditDialog + + + Replace edited slide + Vervang geredigeerde skyfie + + + Add new slide at bottom + Voeg nuwe skyfie aan die onderkant by + + + EditCustomForm + + + You need to enter a title + U moet 'n titel invoer + + + ThemeManager + + + Theme Exists + Tema Bestaan + + + Ui_MainWindow + + + &Help + &Hulp + + + Ui_EditVerseDialog + + + Bridge + Brug + + + Ui_OpenSongExportDialog + + + OpenSong Song Exporter + OpenSong Lied Uitvoerder + + + Ui_AmendThemeDialog + + + Vertical Align: + Vertikale Belyning: + + + TestMediaManager + + + Item2 + Item2 + + + Item1 + Item1 + + + Ui_AmendThemeDialog + + + Top + Bokant + + + BiblesTab + + + Display Dual Bible Verses + Vertoon Dubbel Bybel Verse + + + Ui_MainWindow + + + Toggle Service Manager + Wissel Diens Bestuurder + + + MediaManagerItem + + + &Add to Service + &Voeg by Diens + + + AmendThemeForm + + + First Color: + Eerste Kleur: + + + ThemesTab + + + Song level + Lied vlak + + + alertsPlugin + + + Show an alert message + Vertoon 'n waarskuwing boodskap + + + Ui_MainWindow + + + Ctrl+F1 + Ctrl+F1 + + + Save the current service under a new name + Stoor die huidige diens onder 'n nuwe naam + + + Ui_OpenLPExportDialog + + + Remove Selected + Verwyder Geselekteerde + + + ThemeManager + + + Delete theme + Wis tema uit + + + ImageTab + + + Image Settings + Beeld Verstellings + + + Ui_OpenSongImportDialog + + + OpenSong Song Importer + OpenSong Lied Invoerder + + + SongUsagePlugin + + + &Extract recorded data + V&erkry aangetekende data + + + AlertsTab + + + Font Name: + Skrif Naam: + + + Ui_MainWindow + + + &Web Site + &Web Tuiste + + + MediaManagerItem + + + Send the selected item live + Stuur die geselekteerde item na regstreekse vertoning + + + Ui_MainWindow + + + M&ode + M&odus + + + Translate the interface to your language + Vertaal die koppelvlak na u taal + + + Service Manager + Diens Bestuurder + + + CustomMediaItem + + + Custom + Pas aan + + + ImageMediaItem + + + No items selected... + Geen items geselekteer nie... + + + Ui_BibleImportWizard + + + OSIS + OSIS + + + SongsPlugin + + + openlp.org 1.0 + openlp.org 1.0 + + + Ui_MainWindow + + + &Theme + &Tema + + + Ui_EditVerseDialog + + + Edit Verse + Redigeer Vers + + + Ui_MainWindow + + + &Language + Taa&l + + + ServiceManager + + + Move to end + Verskuif na einde + + + Your service is unsaved, do you want to save those changes before creating a new one ? + U diens is nie gestoor nie. Wil u daardie veranderinge stoor voordat 'n nuwe een geskep word? + + + Ui_OpenSongExportDialog + + + Remove Selected + Verwyder Geselekteerde + + + SongMediaItem + + + Search: + Soek: + + + MainWindow + + + Save Changes to Service? + Stoor Veranderinge na die Diens? + + + Your service has changed, do you want to save those changes? + U diens het verander. Wil u daardie veranderinge stoor? + + + EditSongForm + + + Invalid verse entry - values must be Numeric, I,B,C,T,P,E,O + Ongeldige vers invoer - waardes moet Numeries, I,B,C,T,P,E,O wees + + + Ui_EditSongDialog + + + &Add to Song + &Voeg by Lied + + + Ui_MainWindow + + + &About + &Aangaande + + + BiblesTab + + + Only show new chapter numbers + Vertoon net nuwe hoofstuk nommers + + + ImportWizardForm + + + You need to specify a version name for your Bible! + U moet 'n weergawe naam spesifiseer vir die Bybel! + + + Ui_AlertEditDialog + + + Delete + Wis uit + + + EditCustomForm + + + Error + Fout + + + ThemesTab + + + 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. + Gebruik die tema van die diens en verplaas enige van die individuele liedere se temas. As die diens nie 'n tema het nie, gebruik dan die globale tema. + + + SongMaintenanceForm + + + This topic can't be deleted, it is currently assigned to at least one song! + Hierdie onderwerp kan nie uitgewis word nie want dit is aan ten minste een lied toegeken! + + + AlertEditForm + + + Item selected to Add + Item geselekteer vir Byvoegging + + + Ui_AmendThemeDialog + + + Right + Regs + + + ThemeManager + + + Save Theme - (%s) + Stoor Tema - (%s) + + + ImageMediaItem + + + Allow background of live slide to be overridden + Laat toe dat die agtergrond van die regstreekse skyfie verplaas kan word. + + + MediaManagerItem + + + Add the selected item(s) to the service + Voeg die geselekteerde item(s) by die diens + + + AuthorsForm + + + Error + Fout + + + BibleMediaItem + + + Book: + Boek: + + + Ui_AmendThemeDialog + + + Font Color: + Skrif Kleur: + + + Ui_OpenLPImportDialog + + + Select openlp.org songfile to import: + Kies openlp.org liedlêer om in te voer: + + + Ui_SettingsDialog + + + Settings + Verstellings + + + BiblesTab + + + Layout Style: + Uitleg Styl: + + + MediaManagerItem + + + Edit the selected + Redigeer die geselekteerde + + + SlideController + + + Move to next + Verskuif na volgende + + + Ui_MainWindow + + + &Plugin List + In&prop Lys + + + BiblePlugin + + + &Bible + &Bybel + + + Ui_BibleImportWizard + + + Web Download + Web Aflaai + + + Ui_AmendThemeDialog + + + Horizontal + Horisontaal + + + ImportWizardForm + + + Open OSIS file + Waak OSIS lêer oop + + + Ui_AmendThemeDialog + + + Circular + Sirkelvormig + + + pt + pt + + + Ui_MainWindow + + + &Add Tool... + Voeg Gereedsk&ap By + + + SongMaintenanceForm + + + Delete Topic + Wis Onderwerp Uit + + + ServiceManager + + + Move up + Beweeg Op + + + Ui_OpenLPImportDialog + + + Lyrics + Lerieke + + + BiblesTab + + + No brackets + Geen hakkies + + + Ui_AlertEditDialog + + + Maintain Alerts + Onderhou Waarskuwings + + + Ui_AmendThemeDialog + + + px + px + + + ServiceManager + + + Select a theme for the service + Selekteer 'n tema vir die diens + + + ThemesTab + + + Themes + Temas + + + ServiceManager + + + Move to bottom + Verskuif na onder + + + Ui_PluginViewDialog + + + Status: + Status: + + + Ui_EditSongDialog + + + CCLI Number: + CCLI Nommer: + + + ImportWizardForm + + + This Bible already exists! Please import a different Bible or first delete the existing one. + Dié Bybel bestaan reeds! Voer asseblief 'n ander Bybel in of wis die eerste een uit. + + + Ui_MainWindow + + + &Translate + Ver&taal + + + AlertEditForm + + + Please Save or Clear seletced item + Stoor of wis asseblief die geselekteerde item uit + + + BiblesTab + + + Bibles + Bybels + + + Ui_SongMaintenanceDialog + + + Authors + Skrywers + + + SongUsageDetailForm + + + Output File Location + Uitvoer Lêer Ligging + + + BiblesTab + + + { and } + { en } + + + GeneralTab + + + Prompt to save Service before starting New + Bevestig om Diens te stoor voor 'n Nuwe een begin word + + + ImportWizardForm + + + Starting import... + Invoer begin... + + + BiblesTab + + + Note: +Changes don't affect verses already in the service + Nota: +Verstellings affekteer nie verse wat alreeds in die diens is nie + + + Ui_EditVerseDialog + + + Intro + Inleiding + + + ServiceManager + + + Move up order + Verskuif orde op + + + PresentationTab + + + available + beskikbaar + + + ThemeManager + + + default + verstek + + + SongMaintenanceForm + + + Delete Author + Wis Skrywer Uit + + + Ui_AmendThemeDialog + + + Display Location + Vertoon Ligging + + + Ui_PluginViewDialog + + + Version: + Weergawe: + + + Ui_AlertEditDialog + + + Add + Byvoeg + + + GeneralTab + + + General + Algemeen + + + Ui_AmendThemeDialog + + + Y Position: + Y Posisie: + + + ServiceManager + + + Move down order + Verskuif orde af + + + BiblesTab + + + verse per slide + verse per skyfie + + + Ui_AmendThemeDialog + + + Show Shadow: + Vertoon Skaduwee: + + + AlertsTab + + + Preview + Voorskou + + + alertsPlugin + + + <b>Alerts Plugin</b><br>This plugin controls the displaying of alerts on the presentations screen + <b>Waarskuwing Inprop</b><br/>Hierdie inprop beheer die vertoning van waarskuwings op die aanbieding skerm + + + GeneralTab + + + Show the splash screen + Wys die spatsel skerm + + + Ui_MainWindow + + + New Service + Nuwe Diens + + + SlideController + + + Move to first + Verskuif na eerste + + + Ui_MainWindow + + + &Online Help + &Aanlyn Hulp + + + SlideController + + + Blank Screen + Blanko Skerm + + + Ui_MainWindow + + + Save Service + Stoor Diens + + + Save &As... + Stoor &As... + + + Toggle the visibility of the Media Manager + Wissel sigbaarheid van die Media Bestuurder + + + BibleMediaItem + + + No Book Found + Geeb Boek Gevind nie + + + Ui_EditSongDialog + + + Add + Byvoeg + + + alertsPlugin + + + &Alert + W&aarskuwing + + + BibleMediaItem + + + Advanced + Gevorderd + + + ImageMediaItem + + + Image(s) + Beeld(e) + + + Ui_MainWindow + + + F11 + F11 + + + F10 + F10 + + + F12 + F12 + + + Ui_BibleImportWizard + + + Select the import format, and where to import from. + Selekteer die invoer formaat en van waar af om in te voer. + + + Ui_MainWindow + + + Alt+F7 + Alt+F7 + + + Add an application to the list of tools + Voeg 'n program by die lys van gereedskap + + + MediaPlugin + + + <b>Media Plugin</b><br>This plugin allows the playing of audio and video media + <b>Media Inprop</b><br/>Hierdie inprop verskaf die vermoë om audio of video media te speel + + + BiblesTab + + + Bible Theme: + Bybel Tema: + + + SongsPlugin + + + Export songs in openlp.org 1.0 format + Voer liedere uit in openlp.org 1.0 formaat + + + Ui_MainWindow + + + Theme Manager + Tema Bestuurder + + + AlertsTab + + + Alerts + Waarskuwings + + + Ui_customEditDialog + + + Move slide down 1 + Verskuif skyfie 1 af + + + Ui_AmendThemeDialog + + + Font: + Skrif: + + + ServiceManager + + + Load an existing service + Laai 'n bestaande diens + + + Ui_MainWindow + + + Toggle the visibility of the Theme Manager + Wissel die sigbaarheid van die Tema Bestuurder + + + PresentationTab + + + Presentations + Aanbiedinge + + + SplashScreen + + + Starting + Begin + + + ImageTab + + + Slide Loop Delay: + Skyfie Lus Vertraging: + + + SlideController + + + Verse + Vers + + + AlertsTab + + + Alert timeout: + Waarskuwing tydgrens: + + + Ui_MainWindow + + + &Preview Pane + Voorskou &Paneel + + + MediaManagerItem + + + Add a new + Voeg 'n nuwe by + + + ThemeManager + + + Select Theme Import File + Kies Tema Invoer Lêer + + + New Theme + Nuwe Tema + + + MediaMediaItem + + + Media + Media + + + Ui_AmendThemeDialog + + + Preview + Voorskou + + + Outline Size: + Buitelyn Grootte: + + + Ui_OpenSongExportDialog + + + Progress: + Vordering: + + + AmendThemeForm + + + Second Color: + Tweede Kleur: + + + Ui_EditSongDialog + + + Theme, Copyright Info && Comments + Tema, Kopiereg Informasie && Kommentaar + + + Ui_AboutDialog + + + Credits + Krediete + + + BibleMediaItem + + + To: + Aan: + + + Ui_EditSongDialog + + + Song Book + Lied Boek + + + alertsPlugin + + + F7 + F7 + + + Ui_OpenLPExportDialog + + + Author + Skrywer + + + Ui_AmendThemeDialog + + + Wrap Indentation + Omvou Inkeping + + + ThemeManager + + + Import a theme + Voer 'n tema in + + + PresentationPlugin + + + <b>Presentation Plugin</b> <br> Delivers 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. + <b>Aanbieding Inprop</b><br/>Verskaf die vermoë om aanbiedings te vertoon deur 'n verskeidenheid programme. Die keuse van beskikbare aanbieding programme is aan die gebruiker beskikbaar in 'n laat val boks. + + + ImageMediaItem + + + Image + Beeld + + + BibleMediaItem + + + Clear + Maak skoon + + + Ui_MainWindow + + + Save Service As + Stoor Diens As + + + Ui_AlertDialog + + + Cancel + Kanselleer + + + Ui_OpenLPImportDialog + + + Import + Invoer + + + Ui_EditVerseDialog + + + Chorus + Koor + + + Ui_EditSongDialog + + + Edit All + Redigeer Alles + + + AuthorsForm + + + You need to type in the last name of the author. + U moet ten minste die skrywer se naam invoer. + + + SongsTab + + + Songs Mode + Liedere Modus + + + Ui_AmendThemeDialog + + + Left + Links + + + RemotesPlugin + + + <b>Remote Plugin</b><br>This plugin provides the ability to send messages to a running version of openlp on a different computer.<br>The Primary use for this would be to send alerts from a creche + <b>Afstandbeheer Inprop</b><br/>Hierdie inprop verskaf die vermoë om boodskappe na 'n lewendige weergawe van openlp op 'n ander rekenaar te stuur.<br/>Die Hoof gebruik vir hierdie sal wees om waarskuwings vanaf 'n moederskamer te stuur. + + + ImageTab + + + Images + Beelde + + + BibleMediaItem + + + Verse: + Vers: + + + Ui_OpenLPExportDialog + + + openlp.org Song Exporter + openlp.org Lied Uitvoerder + + + Song Export List + Lied Uitvoer Lys + + + ThemeManager + + + Export theme + Tema Uitvoer + + + Ui_SongMaintenanceDialog + + + Delete + Wis Uit + + + Ui_AmendThemeDialog + + + Theme Name: + Tema Naam: + + + Ui_AboutDialog + + + About OpenLP + Aangaande OpenLP + + + Ui_MainWindow + + + Toggle the visibility of the Service Manager + Wissel die sigbaarheid van die Diens Bestuurder + + + PresentationMediaItem + + + A presentation with that filename already exists. + 'n Voorstelling met daardie lêernaam bestaan reeds. + + + AlertsTab + + + openlp.org + openlp.org + + + ImportWizardForm + + + Invalid Books File + Ongeldige Boeke Lêer + + + Ui_OpenLPImportDialog + + + Song Title + Lied Titel + + + MediaManagerItem + + + &Show Live + &Vertoon Regstreeks + + + AlertsTab + + + Keep History: + Behou Geskiedenis: + + + Ui_AmendThemeDialog + + + Image: + Beeld: + + + Ui_customEditDialog + + + Set Theme for Slides + Verstel Tema vir Skyfies + + + Ui_MainWindow + + + More information about OpenLP + Meer inligting aangaande OpenLP + + + AlertsTab + + + Background Color: + Agtergrond Kleur: + + + SongMaintenanceForm + + + No topic selected! + Geen onderwerp geselekteer nie! + + + Ui_MainWindow + + + &Media Manager + &Media Bestuurder + + + &Tools + &Gereedskap + + + AmendThemeForm + + + Background Color: + Agtergrond Kleur: + + + Ui_EditSongDialog + + + A&dd to Song + Voeg by Lie&d + + + Title: + Titel: + + + GeneralTab + + + Screen + Skerm + + + AlertsTab + + + s + s + + + ImagePlugin + + + <b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any somgs which are rendered will use the selected image from the background instead of the one provied by the theme.<br> + <b>Beeld Inprop</b><br/>Laat toe om enige tipe beeld te vertoon. As 'n aantal beelde geselekteer word en op die regstreekse beheerder aangebied word, is dit moontlik om hullle in 'n tydsame lus te plaas.<br/><br/>As die <i>Vervang agtergrond</i> opsie gekies is by die inprop en 'n beeld word geselekteer, sal enige lied wat vertoon word die voorkeur beeld gebruik in plaas van die lied se verstek agtergrond vanaf die tema.<br/> + + + Ui_AlertEditDialog + + + Clear + Maak skoon + + + Ui_BibleImportWizard + + + Please wait while your Bible is imported. + Wag asseblief terwyl u Bybel ingevoer word. + + + MediaManagerItem + + + No items selected... + Geet items geselekteer nie... + + + Ui_OpenLPImportDialog + + + Select All + Selekteer Alles + + + Ui_AmendThemeDialog + + + Font Main + Skrif Hoof + + + ImageMediaItem + + + Images (*.jpg *jpeg *.gif *.png *.bmp) + Beelde (*.jpg *jpeg *.gif *.png *.bmp) + + + Ui_OpenLPImportDialog + + + Title + Titel + + + Ui_OpenSongExportDialog + + + Select OpenSong song folder: + Selekteer OpenSong lied gids: + + + Ui_MainWindow + + + Toggle Media Manager + Wissel Media Bestuurder + + + SongUsagePlugin + + + &Song Usage + &Lied Gebruik + + + GeneralTab + + + Monitors + Monitors + + + EditCustomForm + + + You need to enter a slide + U moet 'n skyfie nommer invoer + + + Ui_SongMaintenanceDialog + + + Topics + Onderwerpe + + + ImportWizardForm + + + You need to specify a file to import your Bible from! + U moet 'n lêer spesifiseer om u Bybel vanaf in te voer! + + + Ui_EditVerseDialog + + + Verse Type + Vers Tipe + + + OpenSongBible + + + Importing + Invoer + + + Ui_EditSongDialog + + + Comments + Kommentaar + + + AlertsTab + + + Bottom + Onder + + + Ui_MainWindow + + + Create a new Service + Skep 'n nuwe Diens + + + AlertsTab + + + Top + Bo + + + ServiceManager + + + &Preview Verse + Vers V&oorsig + + + Ui_PluginViewDialog + + + TextLabel + TeksEtiket + + + AlertsTab + + + Font Size: + Skrif Grootte: + + + Ui_PluginViewDialog + + + About: + Aangaande: + + + Inactive + Onaktief + + + Ui_OpenSongExportDialog + + + Ready to export + Gereed om uit te voer + + + Export + Voer uit + + + Ui_PluginViewDialog + + + Plugin List + Inprop Lys + + + Ui_AmendThemeDialog + + + Transition Active: + Verandering Aktief: + + + Ui_BibleImportWizard + + + Proxy Server (Optional) + Tussenganger Bediener (Opsioneel) + + + Ui_EditSongDialog + + + &Manage Authors, Topics, Books + &Bestuur Skrywers, Onderwerpe en Boeke + + + Ui_SongUsageDetailDialog + + + Audit Detail Extraction + Oudit Besonderhede Inwinning + + + Ui_OpenLPExportDialog + + + Ready to export + Gereed vir Uitvoer + + + EditCustomForm + + + Save && Preview + Stoor && Voorskou + + + Ui_OpenLPExportDialog + + + Select All + Selekteer Alles + + + Ui_SongUsageDetailDialog + + + to + aan + + + Ui_AmendThemeDialog + + + Size: + Grootte: + + + MainWindow + + + OpenLP Main Display Blanked + OpenLP Hoof Vertoning Blanko + + + Ui_OpenLPImportDialog + + + Remove Selected + Verwyder Geselekteerde + + + Ui_EditSongDialog + + + Delete + Wis uit + + + ImportWizardForm + + + You need to specify an OpenSong Bible file to import! + U moet 'n OpenSong Bybel lêer spesifiseer om in te voer! + + + PresentationMediaItem + + + File exists + Lêer bestaan + + + Ui_OpenLPExportDialog + + + Title + Titel + + + Ui_OpenSongImportDialog + + + Ready to import + Gereed vir invoer + + + SlideController + + + Stop continuous loop + Stop deurlopende lus + + + s + s + + + SongMediaItem + + + Song Maintenance + Lied Onderhoud + + + Ui_customEditDialog + + + Edit + Redigeer + + + Ui_AmendThemeDialog + + + Gradient : + Gradiënt : + + + ImportWizardForm + + + Invalid Verse File + Ongeldige Vers Lêer + + + EditSongForm + + + Error + Fout + + + Ui_customEditDialog + + + Add New + Voeg Nuwe By + + + Ui_AuthorsDialog + + + Display name: + Vertoon naam: + + + SongMaintenanceForm + + + Are you sure you want to delete the selected topic? + Is u seker u wil die geselekteerde onderwerp uitwis? + + + Ui_AmendThemeDialog + + + Bold/Italics + Bold/Italics + + + Ui_SongMaintenanceDialog + + + Song Maintenance + Lied Onderhoud + + + Ui_BibleImportWizard + + + Welcome to the Bible Import Wizard + Welkom by die Bybel Invoer Gids + + + SongsTab + + + Songs + Liedere + + + Ui_BibleImportWizard + + + Password: + Wagwoord: + + + Ui_MainWindow + + + &Theme Manager + &Tema Bestuurder + + + MediaManagerItem + + + Preview the selected item + Voorskou die geselekteerde item + + + Ui_BibleImportWizard + + + Version Name: + Weergawe Naam: + + + Ui_AboutDialog + + + About + Aangaande + + + MediaMediaItem + + + Select Media + Selekteer Media + + + Ui_AmendThemeDialog + + + Horizontal Align: + Horisontale Belyning: + + + ServiceManager + + + &Edit Item + R&edigeer Item + + + Ui_AmendThemeDialog + + + Background Type: + Agtergrond Tipe: + + + Ui_MainWindow + + + &Save + &Stoor + + + OpenLP 2.0 + OpenLP 2.0 + + + ThemeManager + + + A theme with this name already exists, would you like to overwrite it? + 'n Tema met hierdie naam bestaan alreeds, wil u daaroor skryf? + + + PresentationMediaItem + + + Select Presentation(s) + Selekteer Aanbieding(e) + + + ThemeManager + + + Export a theme + Voer 'n tema uit + + + AmendThemeForm + + + Open file + Maak lêer oop + + + Ui_TopicsDialog + + + Topic Maintenance + Onderwerp Onderhoud + + + Ui_customEditDialog + + + Clear edit area + Maak skoon die redigeer area + + + Ui_AmendThemeDialog + + + Show Outline: + Vertoon Buitelyn: + + + SongBookForm + + + You need to type in a book name! + U moet 'n boek naam invoer! + + + ImportWizardForm + + + Open OpenSong Bible + Maak OpenSong Bybel Oop + + + Ui_MainWindow + + + Look && &Feel + Vertoning && &Gevoel + + + Ui_BibleImportWizard + + + Ready. + Gereed. + + + ThemeManager + + + You have not selected a theme! + U het nie 'n tema geselekteer nie! + + + Ui_SongMaintenanceDialog + + + Books/Hymnals + Boeke/Liedboeke + + + Ui_AboutDialog + + + Contribute + Dra By + + + Ui_AmendThemeDialog + + + Gradient + Gradiënt + + + Ui_BibleImportWizard + + + Books Location: + Boeke Ligging: + + + Ui_OpenSongExportDialog + + + Full Song List + Volle Lied Lys + + + GeneralTab + + + SongSelect Password: + SongSelect Wagwoord: + + +Delete Selected Song Usage Events?Couldn't save your book.AutomaticMove to &bottomThis author can't be deleted, they are currently assigned to at least one song.Couldn't save your topic.Move to &topYou need to specify a file to import your Bible from.Song Usage ExtractionAllow the background of live slide to be overriddenYou are unable to delete the default theme.Couldn't save your author.<b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any songs which are rendered will use the selected image from the background instead of the one provied by the theme.<br>&Delete From ServiceImages (*.jpg *.jpeg *.gif *.png *.bmp);; All files (*)You need to specify a version name for your Bible.Couldn't add your topic.You need to specify a file of Bible verses to import.File is not a valid theme.This book can't be deleted, it is currently assigned to at least one song.<b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br>Please save or clear selected itemOpenLP Service Files (*.osz)Couldn't add your author.This topic can't be deleted, it is currently assigned to at least one song.Move &downAre you sure you want to delete selected Song Usage data?Add &Tool...Song Usage DeleteMove &upYou need to specify a file with books of the Bible to use in the import.<b>Presentation Plugin</b> <br> Delivers 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.Couldn't add your book.You have not selected a theme.Select Date RangeYou need to specify an OpenSong Bible file to import. diff --git a/resources/i18n/openlp_de.ts b/resources/i18n/openlp_de.ts new file mode 100644 index 000000000..922c3b27b --- /dev/null +++ b/resources/i18n/openlp_de.ts @@ -0,0 +1,4259 @@ + + + + BibleMediaItem + + + Quick + Schnellsuche + + + Ui_customEditDialog + + + Delete selected slide + Lösche ausgewählte Folie + + + BiblesTab + + + ( and ) + ( und ) + + + RemoteTab + + + Remotes + Fernprojektion + + + Ui_EditSongDialog + + + &Remove + Entfe&rnen + + + Ui_AmendThemeDialog + + + Shadow Size: + Schattengröße: + + + Ui_OpenSongExportDialog + + + Close + Schließen + + + ThemeManager + + + Import Theme + Design importieren + + + Ui_AmendThemeDialog + + + Slide Transition + FolienübergangBei mir im OOo3 ist es Folienübergang (vgl. Impress) +>(wie in OpenOffice 3) + + + SongMaintenanceForm + + + Are you sure you want to delete the selected book? + Sind Sie sicher, dass das markierte Buch wirklich gelöscht werden soll? + + + ThemesTab + + + Theme level + Design-EbeneJetzt einheitlich (Gotttesdienst-Ebene, Lied-Ebene, Global-Ebene) + + + BibleMediaItem + + + Bible + Bibel + + + ServiceManager + + + Save Changes to Service? + Änderungen am Ablauf speichern? + + + SongUsagePlugin + + + &Delete recorded data + Aufgezeichnete &Daten löschen + + + Ui_OpenLPExportDialog + + + Song Title + Liedtitel + + + Ui_customEditDialog + + + Edit selected slide + Markierte Folie bearbeiten + + + SongMediaItem + + + CCLI Licence: + CCLI-Lizenz: + + + Ui_SongUsageDeleteDialog + + + Audit Delete + Statistik löschenAudit = Aufzeichnung, welche Lieder während eines Gottesdienstes benutzt wurden, keine Prüfung! + + + Ui_BibleImportWizard + + + Bible Import Wizard + Bibel Import Assistent + + + Ui_customEditDialog + + + Edit All + Alle bearbeiten + + + Ui_ServiceNoteEdit + + + Service Item Notes + Elementnotiz + + + SongMaintenanceForm + + + Couldn't save your author! + Der Autor konnte nicht gespeichert werden! + + + Ui_customEditDialog + + + Clear + Löschen + + + ThemesTab + + + Global theme + Standarddesign + + + SongUsagePlugin + + + Start/Stop live song usage recording + Liederstatistik unterbrechen/weiterführen + + + MainWindow + + + The Main Display has been blanked out + Die Projektion ist momentan nicht aktiv + + + Ui_OpenSongExportDialog + + + Lyrics + Liedtext + + + Ui_AlertDialog + + + Display + Anzeige + + + Ui_customEditDialog + + + Delete + Löschen + + + Ui_EditVerseDialog + + + Verse + Vers + + + SongMaintenanceForm + + + This author can't be deleted, they are currently assigned to at least one song! + Dieser Autor kann nicht gelöscht werden, da er mindestens einem Lied zugeordnet ist! + + + ThemeManager + + + Create a new theme + Erstelle neues DesignAuf Design geeinigt + + + Ui_MainWindow + + + Open an existing service + Ablauf öffnen + + + SlideController + + + Move to previous + Vorherige Folie anzeigen + + + SongsPlugin + + + &Song + &Lied + + + Ui_PluginViewDialog + + + Plugin Details + Plugin-Details + + + AlertsTab + + + pt + pt + + + Edit History: + Verlauf bearbeiten: + + + Ui_MainWindow + + + &File + &Datei + + + SongMaintenanceForm + + + Couldn't add your book! + Das Buch konnte nicht hinzugefügt werden! + + + BiblesTab + + + verse per line + Ein Vers pro Zeile + + + Ui_customEditDialog + + + Theme: + Design: + + + SongMaintenanceForm + + + Error + Fehler + + + Ui_BibleImportWizard + + + Bible: + Bibel: + + + ImportWizardForm + + + You need to specify a file with books of the Bible to use in the import! + Sie müssen eine Datei mit der Liste der Bibelbücher auswählen! + + + ThemeManager + + + Delete Theme + Design löschen + + + SplashScreen + + + Splash Screen + Startbildschirm + + + SongMediaItem + + + Song + Lied + + + SongUsageDeleteForm + + + Delete Selected Audit Events? + Sollen die ausgewählten Einträge aus der Statistik entfernt werden? + + + Ui_OpenSongExportDialog + + + Song Title + Liedtitel + + + Ui_AmendThemeDialog + + + Bottom + Unten + + + Ui_MainWindow + + + List the Plugins + Plugins auflisten + + + SongMaintenanceForm + + + No author selected! + Sie haben keinen Autor ausgewählt! + + + SongUsagePlugin + + + <b>SongUsage Plugin</b><br>This plugin records the use of songs and when they have been used during a live service + <b>SongUsage-Plugin</b><br>Dieses Plugin zeichnet auf, welche Lieder Sie wie oft und wann benutzt haben und erstellt daraus eine Statistik + + + Ui_customEditDialog + + + Move slide Up 1 + Folie nach oben verschieben + + + SongsPlugin + + + OpenSong + OpenSong + + + AlertsManager + + + Alert message created and delayed + Hinweis erzeugt und verzögertMit "Hinweis" übersetzt: a) es geht nur eine Übersetzung (Hinweis oder Alarm). b) in 1.2 heißt es auch "Hinweis" + + + Ui_EditSongDialog + + + Alternative Title: + Alternativer Titel: + + + ServiceManager + + + Open Service + Öffnen Ablauf + + + BiblesTab + + + Display Style: + Anzeige: + + + Ui_AmendThemeDialog + + + Image + Bild + + + EditSongForm + + + You need to enter a song title. + Sie müssen einen Liedtitel angeben! + + + ThemeManager + + + Error + Fehler + + + ImportWizardForm + + + Invalid Bible Location + Ungültige Bibelstelle + + + ThemesTab + + + Global level + Global-EbeneÜberseztung darf nicht zu lang sein. Jetzt einheitlich (Gotttesdienst-Ebene, Lied-Ebene, Global-Ebene) + + + ThemeManager + + + Make Global + Als Standarddesign festlegen + + + Ui_MainWindow + + + &Service Manager + Ablauf&sverwaltung + + + Ui_OpenLPImportDialog + + + Author + Autor + + + Ui_AmendThemeDialog + + + Height: + Höhe: + + + ThemeManager + + + Delete a theme + Design löschenDa engl. design = dt. Design und engl. theme = dt. Theme bin ich der Meinung es muss mit Theme übersetzt werden! + + + Ui_BibleImportWizard + + + Crosswalk + Crosswalk + + + SongBookForm + + + Error + Fehler + + + Ui_AuthorsDialog + + + Last name: + Nachname: + + + Ui_customEditDialog + + + Title: + Titel: + + + ImportWizardForm + + + You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. + Sie müssen das Copyright der Bibel angeben. Bei Bibeln, die keinem Copyright mehr unterlegen, geben Sie bitte "Public Domain" ein. + + + SongMediaItem + + + Maintain the lists of authors, topics and books + Autoren, Designs und Bücher verwalten + + + Ui_AlertEditDialog + + + Save + Speichern + + + EditCustomForm + + + You have unsaved data + Nicht alle Änderungen wurden gespeichert + + + Ui_AmendThemeDialog + + + Outline + RandHier ist definitiv ein Rand gemeint. + + + BibleMediaItem + + + Text Search + Textsuche + + + Ui_BibleImportWizard + + + CSV + CSV + + + SongUsagePlugin + + + Delete song usage to specified date + Liedstatistik bis zu einem bestimmten Termin löschen + + + Ui_SongUsageDetailDialog + + + Report Location + Speicherort für die Statistiken + + + Ui_BibleImportWizard + + + OpenSong + OpenSong + + + Ui_MainWindow + + + Open Service + Öffne Ablauf + + + BibleMediaItem + + + Find: + Suchen: + + + ImageMediaItem + + + Select Image(s) + Bild(er) auswählen + + + BibleMediaItem + + + Search Type: + Suchmodus: + + + Ui_MainWindow + + + Media Manager + Medienmanager + + + Alt+F4 + Alt+F4 + + + MediaManagerItem + + + &Preview + &Vorschau + + + GeneralTab + + + CCLI Details + CCLI-Details + + + BibleMediaItem + + + Bible not fully loaded + Die Bibel wurde nicht vollständig geladen + + + Ui_MainWindow + + + Toggle the visibility of the Preview Panel + Vorschaubereich ein/ausblenden + + + ImportWizardForm + + + Bible Exists + Diese Bibelübersetzung ist bereits vorhanden + + + Ui_MainWindow + + + &User Guide + Ben&utzerhandbuch + + + SongUsageDeleteForm + + + Are you sure you want to delete selected Audit Data? + Sind Sie sicher, dass Sie die markierten Einträge aus der Statistik löschen wollen? + + + Ui_MainWindow + + + Set the interface language to English + Oberfläche auf Englisch anzeigen + + + Ui_AmendThemeDialog + + + Main Font + Hauptschriftart + + + ImportWizardForm + + + Empty Copyright + Das Copyright wurde nicht angegeben + + + CustomPlugin + + + <b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br> + <b>Sonderfolien-Plugin</b><br>Diese Plugin ermöglicht es Folien anzulegen, die wie die Liedfolien dargestellt werden, bietet aber mehr Freiheit.<br> + + + AuthorsForm + + + You need to type in the first name of the author. + Sie müssen den Vornamen des Autors angeben. + + + SongsTab + + + Display Verses on Live Tool bar: + Verse in der Liveansicht anzeigen: + + + ServiceManager + + + Move to top + Nach oben verschieben + + + ImageMediaItem + + + Override background + Hintergrund ignorieren + + + Ui_SongMaintenanceDialog + + + Edit + Bearbeiten + + + Ui_OpenSongExportDialog + + + Select All + Alle markieren + + + ThemesTab + + + 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. + Das im jeweiligen Lied eingestellte Design verwenden. Wenn für ein Lied kein Design festgelegt ist, wird das Ablaufdesign verwendet. Wenn dort auch kein Design festgelegt wurde, wird das Standarddesign benutzt. + + + PresentationMediaItem + + + Presentation + Präsentation + + + Ui_AmendThemeDialog + + + Solid Color + Füllfarbe + + + CustomTab + + + Custom + Sonderfolien + + + Ui_OpenLPImportDialog + + + Ready to import + Bereit für den Importvorgang + + + MainWindow + + + OpenLP version %s has been updated to version %s + +You can obtain the latest version from http://openlp.org + OpenLP Version %s in der Version %s vor. + +Sie können die aktuelle Version von http://de.openlp.org herunterladen"OpenLP Version %s liegt in der Version %s vor.\n +\n +Sie können die aktuelle Version von http://de.openlp.org herunterladen" ist vielleicht das gemeint? + + + Ui_BibleImportWizard + + + File Location: + Speicherort: + + + SlideController + + + Go to Verse + Zum Vers springen + + + Ui_MainWindow + + + &Import + &Importieren + + + Quit OpenLP + OpenLP beenden + + + Ui_BibleImportWizard + + + 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. + Dieser Assistent hilft ihnen beim Importieren von Bibeln aus verschiedenen Formaten. Klicken Sie auf Weiter, um den Assistenten zu starten. + + + SongMaintenanceForm + + + Couldn't add your topic! + Das Thema konnte nicht hinzugefügt werden! + + + ImportWizardForm + + + Empty Version Name + Leerer Übersetzungsname + + + Ui_MainWindow + + + &Preview Panel + &Vorschaubereich + + + SlideController + + + Start continuous loop + Endlosschleife startenAlso mir gefällt ja nur "Schleife starten" besser (vgl. Stop continuous loop) + + + ServiceManager + + + Move down + Nach unten verschieben + + + GeneralTab + + + primary + Hauptbildschirm + + + Ui_EditSongDialog + + + Add a Theme + Design hinzufügen + + + Ui_MainWindow + + + &New + &Neu + + + Ui_customEditDialog + + + Credits: + Fußzeile: + + + SlideController + + + Live + Live + + + GeneralTab + + + Show blank screen warning + Warnung anzeigen, wenn die Projektion deaktiviert wurde + + + BiblesTab + + + continuous + unendlich + + + Ui_EditVerseDialog + + + Number + Nummer + + + GeneralTab + + + Application Startup + Programmstart + + + Ui_AmendThemeDialog + + + Use Default Location: + Vorgabewerte verwenden: + + + Ui_OpenSongImportDialog + + + Import + Importieren + + + Ui_AmendThemeDialog + + + Other Options + Weitere Optionen + + + Ui_EditSongDialog + + + Verse Order: + Reihenfolge: + + + Ui_SongUsageDetailDialog + + + ASelect Date Range + Zeitfenster auswählen + + + Ui_MainWindow + + + Default Theme: + Standarddesign: + + + Toggle Preview Panel + Vorschaubereich ein/ausblenden + + + SongMediaItem + + + Lyrics + Liedtext + + + Ui_OpenLPImportDialog + + + Progress: + Fortschritt: + + + Ui_AmendThemeDialog + + + Shadow + Schatten + + + GeneralTab + + + Select monitor for output display: + Projektionsbildschirm: + + + Ui_MainWindow + + + &Settings + Ein&stellungen + + + Ui_AmendThemeDialog + + + Italics + Kursiv + + + ServiceManager + + + Create a new service + Erstelle neuen Ablauf + + + Ui_AmendThemeDialog + + + Background: + Hintergrund: + + + Ui_OpenLPImportDialog + + + openlp.org Song Importer + openlp.org Lieder importieren + + + Ui_BibleImportWizard + + + Copyright: + Copyright: + + + ThemesTab + + + Service level + Gottesdienst-EbeneÜberseztung darf nicht zu lang sein. Jetzt einheitlich (Gotttesdienst-Ebene, Lied-Ebene, Global-Ebene) + + + BiblesTab + + + [ and ] + [ und ] + + + Ui_BibleImportWizard + + + Verse Location: + Versangabe: + + + MediaManagerItem + + + You must select one or more items + Sie müssen mindestens ein Element markieren + + + GeneralTab + + + Application Settings + Anwendungseinstellungen + + + ServiceManager + + + Save this service + Ablauf speichern + + + ImportWizardForm + + + Open Books CSV file + CSV-Datei mit Bücherliste + + + GeneralTab + + + SongSelect Username: + SongSelect-Benutzername: + + + Ui_AmendThemeDialog + + + X Position: + X-Position: + + + BibleMediaItem + + + No matching book could be found in this Bible. + Das Buch wurde in dieser Bibelausgabe nicht gefunden. + + + Ui_BibleImportWizard + + + Server: + Server: + + + SongMaintenanceForm + + + Couldn't save your book! + Das Buch konnte nicht gespeichert werden! + + + Ui_EditVerseDialog + + + Ending + Coda (Schluss) + + + CustomTab + + + Display Footer: + Infobereich anzeigen: + + + ImportWizardForm + + + Invalid OpenSong Bible + Ungültige OpenSong-Bibel + + + GeneralTab + + + CCLI Number: + CCLI-Nummer: + + + Ui_AmendThemeDialog + + + Center + Mitte + + + ServiceManager + + + Theme: + Design: + + + Ui_MainWindow + + + &Live + &Live + + + Ui_AmendThemeDialog + + + <Color2> + <Farbe 2> + + + Ui_MainWindow + + + English + Englisch + + + ImageMediaItem + + + You must select one or more items + Sie müssen mindestens ein Element markieren + + + Ui_AuthorsDialog + + + First name: + Vorname: + + + Ui_OpenLPExportDialog + + + Select openlp.org export filename: + Dateiname für den openlp.org Export auswählen: + + + Ui_BibleImportWizard + + + Permission: + Berechtigung: + + + Ui_OpenSongImportDialog + + + Close + Schließen + + + Ui_AmendThemeDialog + + + Opaque + Fest + + + SongMaintenanceForm + + + This book can't be deleted, it is currently assigned to at least one song! + Dieses Buch kann nicht gelöscht werden, da es mindestens einem Lied zugeordnet ist! + + + ImportWizardForm + + + Your Bible import failed. + Der Bibelimportvorgang ist fehlgeschlagen. + + + SlideController + + + Start playing media + Abspielen + + + SongMediaItem + + + Type: + Art: + + + Ui_AboutDialog + + + Close + Schließen + + + TopicsForm + + + You need to type in a topic name! + Sie müssen dem Thema einen Namen geben! + + + Ui_OpenSongExportDialog + + + Song Export List + Lieder exportieren + + + BibleMediaItem + + + Dual: + Parallel: + + + ImageTab + + + sec + sek + + + ServiceManager + + + Delete From Service + Aus dem Ablauf entfernen + + + GeneralTab + + + Automatically open the last service + Zuletzt benutzten Ablauf beim Start laden + + + Ui_OpenLPImportDialog + + + Song Import List + Lieder importieren + + + Ui_OpenSongExportDialog + + + Author + Autor + + + Ui_AmendThemeDialog + + + Outline Color: + Randfarbe:Hier ist der Rang gemeint... und Kontur passt m. E. nicht so gut. Sry... wenn ihr nicht zustimmt bitte melden + + + Ui_BibleImportWizard + + + Select Import Source + Importquelle auswählen + + + Ui_MainWindow + + + F9 + F9 + + + F8 + F8 + + + ServiceManager + + + &Change Item Theme + &Design des Elements ändern + + + Ui_OpenSongImportDialog + + + OpenSong Folder: + OpenSong-Ordner: + + + Ui_OpenLPImportDialog + + + Import File Song List + Lieder importieren + + + Ui_customEditDialog + + + Edit Custom Slides + Sonderfolien bearbeiten + + + Ui_BibleImportWizard + + + Set up the Bible's license details. + Die Lizenzinformationen der Bibelübersetzung angeben. + + + Ui_AmendThemeDialog + + + Alignment + Ausrichtung + + + SongMaintenanceForm + + + Delete Book + Buch löschen + + + ThemeManager + + + Edit a theme + Design bearbeiten + + + Ui_BibleImportWizard + + + BibleGateway + BibleGateway + + + GeneralTab + + + Preview Next Song from Service Manager + Vorschau des nächsten Lieds + + + Ui_EditSongDialog + + + Title && Lyrics + Titel && Liedtext + + + SongMaintenanceForm + + + No book selected! + Kein Buch ausgewählt! + + + SlideController + + + Move to live + Verschieben zur Live Ansicht + + + Ui_EditVerseDialog + + + Other + Weitere + + + Ui_EditSongDialog + + + Theme + Design + + + ServiceManager + + + Save Service + Ablauf speichern + + + Ui_MainWindow + + + Save the current service to disk + Aktuellen Ablauf speichern + + + BibleMediaItem + + + Chapter: + Kapitel: + + + Search + Suche + + + PresentationTab + + + Available Controllers + Verfügbare Präsentationsprogramme: + + + ImportWizardForm + + + Open Verses CSV file + CSV-Datei mit dem Bibeltext öffnen + + + TopicsForm + + + Error + Fehler + + + RemoteTab + + + Remotes Receiver Port + Fernprojektionsport + + + Ui_MainWindow + + + &View + &Ansicht + + + Ui_AmendThemeDialog + + + Normal + Normal + + + Ui_OpenLPExportDialog + + + Close + Schließen + + + Ui_BibleImportWizard + + + Username: + Benutzername: + + + ThemeManager + + + Edit Theme + Design bearbeiten + + + SlideController + + + Preview + Vorschau + + + Ui_AlertDialog + + + Alert Message + Hinweis + + + ImportWizardForm + + + Finished import. + Importvorgang abgeschlossen. + + + You need to specify a file of Bible verses to import! + Sie müssen die Datei mit dem Bibeltext angeben! + + + AlertsTab + + + Location: + Speicherort: + + + Ui_EditSongDialog + + + Authors, Topics && Book + Autoren, Designs && Bücher + + + EditSongForm + + + You need to enter some verses. + Sie müssen etwas Liedtext angeben. + + + Ui_BibleImportWizard + + + Download Options + Download Optionen + + + BiblePlugin + + + <strong>Bible Plugin</strong><br />This plugin allows bible verses from different sources to be displayed on the screen during the service. + <strong>Bibel-Plugin</strong><br />Mit diesem Plugin können Sie Bibeltexte aus verschiedenen Quellen während des Gottesdienstes anzeigen lassen. + + + Ui_EditSongDialog + + + Copyright Information + Copyright Angaben + + + Ui_MainWindow + + + &Export + &Exportieren + + + Ui_AmendThemeDialog + + + Bold + Fett + + + SongsPlugin + + + Export songs in OpenLP 2.0 format + Lieder als OpenLP 2.0 Datei exportieren + + + MediaManagerItem + + + Load a new + Hinzufügen + + + AlertEditForm + + + Missing data + Datei fehlt + + + SongsPlugin + + + <b>Song Plugin</b> <br>This plugin allows Songs to be managed and displayed.<br> + <b>Lieder-Plugin</b><br>Mit diesem Plugin können Sie Lieder verwalten und anzeigen.<br> + + + Ui_AmendThemeDialog + + + Footer Font + Schriftart der Fußzeile + + + EditSongForm + + + Invalid verse entry - vX + Ungültige Versangabe - vX + + + MediaManagerItem + + + Delete the selected item + Markiertes Element löschen + + + Ui_OpenLPExportDialog + + + Export + Exportieren + + + Ui_BibleImportWizard + + + Location: + Ort: + + + BibleMediaItem + + + Keep + Behalten + + + SongUsagePlugin + + + Generate report on Song Usage + Liederstatistik generieren + + + Ui_EditSongDialog + + + Topic + Thema + + + Ui_MainWindow + + + &Open + &Öffnen + + + AuthorsForm + + + You haven't set a display name for the author, would you like me to combine the first and last names for you? + Sie haben keinen Anzeigenamen für den Autor angegeben. Soll der Vor- mit dem Nachnamen kombiniert dafür verwendet werden? + + + AmendThemeForm + + + Slide Height is %s rows + Folienhöhe beträgt %s Zeilen + + + Ui_EditVerseDialog + + + Pre-Chorus + Vor-Refrain + + + Ui_EditSongDialog + + + Lyrics: + Liedtext: + + + Ui_AboutDialog + + + Project Lead + Raoul "superfly" Snyman + +Developers + Tim "TRB143" Bentley + Jonathan "gushie" Corwin + Michael "cocooncrash" Gorven + Scott "sguerrieri" Guerrieri + Raoul "superfly" Snyman + Maikel Stuivenberg + Martin "mijiti" Thompson + Jon "Meths" Tibble + Carsten "catini" Tingaard + +Testers + Wesley "wrst" Stout + Projektleiter + Raoul "superfly" Snyman + +Entwickler + Tim "TRB143" Bentley + Jonathan "gushie" Corwin + Michael "cocooncrash" Gorven + Scott "sguerrieri" Guerrieri + Raoul "superfly" Snyman + Maikel Stuivenberg + Martin "mijiti" Thompson + Jon "Meths" Tibble + Carsten "catini" Tingaard + +Tester + Wesley "wrst" Stout + + + SongMediaItem + + + Titles + Titel + + + Ui_OpenLPExportDialog + + + Lyrics + Liedtext + + + PresentationMediaItem + + + Present using: + Anzeigen mit: + + + SongMediaItem + + + Clear + AbbrechenIn V1 mit "Abbrechen" übersetzt + + + ServiceManager + + + &Live Verse + Vers &Live zeigenhm... + + + Ui_OpenSongImportDialog + + + Progress: + Fortschritt: + + + Ui_MainWindow + + + Toggle Theme Manager + Designverwaltung ein/ausblendenDesignverwaltung oder Designmanager? + + + Ui_AlertDialog + + + Alert Text: + Hinweistext: + + + Ui_EditSongDialog + + + Edit + Bearbeiten + + + AlertsTab + + + Font Color: + Schriftfarbe: + + + Ui_AmendThemeDialog + + + Theme Maintenance + Designverwaltung + + + CustomTab + + + Custom Display + Sonderfolie Anzeige + + + Ui_OpenSongExportDialog + + + Title + Titel + + + Ui_AmendThemeDialog + + + <Color1> + <Farbe 1> + + + Ui_EditSongDialog + + + Authors + Autoren + + + ThemeManager + + + Export Theme + Design exportieren + + + ServiceManager + + + (N) + (N) + + + Ui_SongBookDialog + + + Name: + Name: + + + Ui_AuthorsDialog + + + Author Maintenance + Autorenverwaltung + + + Ui_AmendThemeDialog + + + Font Footer + Schrift Fußzeile + + + BiblesTab + + + Verse Display + Bibelstellenanzeige + + + Ui_MainWindow + + + &Options + &Einstellungen + + + BibleMediaItem + + + Results: + Ergebnisse: + + + Ui_OpenLPExportDialog + + + Full Song List + Komplette Liedliste + + + SlideController + + + Move to last + Zur letzten Folie + + + Ui_OpenLPExportDialog + + + Progress: + Fortschritt: + + + Ui_SongMaintenanceDialog + + + Add + Hinzufügen + + + SongMaintenanceForm + + + Are you sure you want to delete the selected author? + Sind Sie sicher, dass Sie den ausgewählten Autor löschen wollen? + + + SongUsagePlugin + + + Song Usage Status + Liedstatistik + + + BibleMediaItem + + + Verse Search + Stelle suchen + + + Ui_SongBookDialog + + + Edit Book + Buch bearbeiten + + + EditSongForm + + + Save && Preview + Speichern && Vorschau + + + Ui_SongBookDialog + + + Publisher: + Verlag: + + + Ui_AmendThemeDialog + + + Font Weight: + Schriftschnitt:(aus OO3) + + + Ui_BibleImportWizard + + + Bible Filename: + Bibel Dateiname: + + + Ui_AmendThemeDialog + + + Transparent + Durchsichtig + + + SongMediaItem + + + Search + Suche + + + Ui_BibleImportWizard + + + Format: + Format: + + + Ui_AmendThemeDialog + + + Background + Hintergrund: + + + Ui_BibleImportWizard + + + Importing + Importiere + + + Ui_customEditDialog + + + Edit all slides + Alle bearbeiten + + + SongsTab + + + Enable search as you type: + Während dem Tippen suchen: + + + Ui_MainWindow + + + Ctrl+S + Strg+S + + + SongMediaItem + + + Authors + Autoren + + + Ui_PluginViewDialog + + + Active + Aktiv + + + SongMaintenanceForm + + + Couldn't save your topic! + Thema konnte nicht gespeichert werden! + + + Ui_MainWindow + + + Ctrl+O + Strg+O + + + Ctrl+N + Strg+N + + + SongMaintenanceForm + + + Couldn't add your author! + Der Autor wurde nicht gefunden! + + + Ui_AlertEditDialog + + + Edit + Bearbeiten + + + Ui_EditSongDialog + + + Song Editor + Lied bearbeiten + + + AlertsTab + + + Font + Schrift + + + SlideController + + + Edit and re-preview Song + Lied bearbeiten und wieder anzeigen + + + Delay between slides in seconds + Pause zwischen den Folien in Sekunden + + + MediaManagerItem + + + &Edit + &Bearbeiten + + + Ui_AmendThemeDialog + + + Vertical + Vertikal + + + Width: + Breite: + + + ThemeManager + + + You are unable to delete the default theme! + Sie können das Standarddesign nicht löschen! + + + ThemesTab + + + Use the global theme, overriding any themes associated with either the service or the songs. + Das Standarddesign immer verwenden, unabhängig vom Lieddesign oder Ablaufdesign + + + BibleMediaItem + + + Version: + Version: + + + Ui_AboutDialog + + + OpenLP <version> build <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> build <revision> - Open Source Liedprojekt + +OpenLP ist eine kostenlose Präsentationssoftware für Kirchen, mit der Lieder, Bibeltexte, Videos, bilder und sogar Präsentationen (falls OpenOffice.org, PowerPoint oder PowerPoint Viewer installiert ist) für die man nur einen Computer und einen Beamer braucht. + +Mehr Informationen über OpenLP: http://de.openlp.org/ + +OpenLP wird von Freiwilligen entwickelt und verwaltet. Wenn Sie christliche Software fördern wollen, freuen wir uns über Ihre Spende. + + + SongsPlugin + + + OpenLP 2.0 + OpenLP 2.0 + + + ServiceManager + + + New Service + Neuer Ablauf + + + Ui_TopicsDialog + + + Topic name: + Thema: + + + ThemeManager + + + File is not a valid theme! + Diese Datei ist kein gültiges Design! + + + Ui_BibleImportWizard + + + License Details + Lizenz-Details + + + Ui_AboutDialog + + + License + Lizenz + + + Ui_EditSongDialog + + + R&emove + &Entfernen + + + Ui_AmendThemeDialog + + + Middle + Mittig + + + Ui_customEditDialog + + + Save + Speichern + + + AlertEditForm + + + Item selected to Edit + Element zum bearbeiten ausgewählt + + + BibleMediaItem + + + From: + Von: + + + Ui_AmendThemeDialog + + + Shadow Color: + Schatten Farbe + + + ServiceManager + + + &Notes + &Notizen + + + Ui_MainWindow + + + E&xit + &Beenden + + + Ui_OpenLPImportDialog + + + Close + Schließen + + + MainWindow + + + OpenLP Version Updated + OpenLP-Version aktualisiert + + + Ui_customEditDialog + + + Replace edited slide + Geänderte Folie ersetzen + + + Add new slide at bottom + Neue Folie am Ende + + + EditCustomForm + + + You need to enter a title + Sie müssen eine Titel eingeben + + + ThemeManager + + + Theme Exists + Design existiertich weiß nicht, wo dieser Dialog auftaucht. Aber vielleicht kann hier auch "design existiert bereits" genommen werden?! + + + Ui_MainWindow + + + &Help + &Hilfe + + + Ui_EditVerseDialog + + + Bridge + Bridge + + + Ui_OpenSongExportDialog + + + OpenSong Song Exporter + OpenSong Lied Export + + + Ui_AmendThemeDialog + + + Vertical Align: + Vertikale Ausrichtung: + + + TestMediaManager + + + Item2 + Element2 + + + Item1 + Element1 + + + Ui_AmendThemeDialog + + + Top + Oben + + + BiblesTab + + + Display Dual Bible Verses + Anzeige von dualen Bibelversen + + + Ui_MainWindow + + + Toggle Service Manager + Ablaufmanager ein/ausblendenAblaufverwaltung oder Ablaufmanager? + + + MediaManagerItem + + + &Add to Service + &Zum Ablauf hinzufügen + + + AmendThemeForm + + + First Color: + Erste Farbe: + + + ThemesTab + + + Song level + Lied-EbeneJetzt einheitlich (Gotttesdienst-Ebene, Lied-Ebene, Global-Ebene) + + + alertsPlugin + + + Show an alert message + Zeige einen Hinweis + + + Ui_MainWindow + + + Ctrl+F1 + Strg+F1 + + + Save the current service under a new name + Aktuellen Ablauf unter neuem Namen speichern + + + Ui_OpenLPExportDialog + + + Remove Selected + Ausgewählten Entfernen + + + ThemeManager + + + Delete theme + Design löschen + + + ImageTab + + + Image Settings + Bildeinstellungen + + + Ui_OpenSongImportDialog + + + OpenSong Song Importer + OpenSong Lied Importer + + + SongUsagePlugin + + + &Extract recorded data + &Entpacke aufgezeichnete Daten + + + AlertsTab + + + Font Name: + Schriftart: + + + Ui_MainWindow + + + &Web Site + &Webseite + + + MediaManagerItem + + + Send the selected item live + Ausgewähltes Element Live anzeigen + + + Ui_MainWindow + + + M&ode + M&odus + + + Translate the interface to your language + Übersetzen Sie die Oberfläche in Ihre Sprache + + + Service Manager + Ablaufverwaltung + + + CustomMediaItem + + + Custom + Sonderfolien + + + ImageMediaItem + + + No items selected... + Kein Element ausgewählt... + + + Ui_BibleImportWizard + + + OSIS + OSIS + + + SongsPlugin + + + openlp.org 1.0 + openlp.org 1.0 + + + Ui_MainWindow + + + &Theme + &Design + + + Ui_EditVerseDialog + + + Edit Verse + Bearbeite Vers + + + Ui_MainWindow + + + &Language + &Sprache + + + ServiceManager + + + Move to end + Zum Ende schieben + + + Your service is unsaved, do you want to save those changes before creating a new one ? + Ihr Abllauf ist nicht gespeichert, wollen Sie die Änderungen speichern, bevor Sie einen neuen erstellen? + + + Ui_OpenSongExportDialog + + + Remove Selected + Ausgewählte entfernen + + + SongMediaItem + + + Search: + Suche: + + + MainWindow + + + Save Changes to Service? + Änderungen am Ablauf speichern? + + + Your service has changed, do you want to save those changes? + Ihr Ablauf würde verändert, möchten Sie die Änderungen speichern? + + + EditSongForm + + + Invalid verse entry - values must be Numeric, I,B,C,T,P,E,O + Ingültige Versangabe: Verse müssen numerisch sein, I,B,C,T,P,E,O + + + Ui_EditSongDialog + + + &Add to Song + Zum Lied &hinzufügen + + + Ui_MainWindow + + + &About + &Über + + + BiblesTab + + + Only show new chapter numbers + Zeige nur neue Kapitelnummern + + + ImportWizardForm + + + You need to specify a version name for your Bible! + Sie müssen den Namen der Bibelübersetzung angeben! + + + Ui_AlertEditDialog + + + Delete + Löschen + + + EditCustomForm + + + Error + Fehler + + + ThemesTab + + + 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. + Nutze das dem Ablauf zugewiesene Design, das im Lied eingestellte Design wird ignoriert. Wenn dem Ablauf kein Design zugeordnet ist, dann wird das Standarddesign verwendet. + + + SongMaintenanceForm + + + This topic can't be deleted, it is currently assigned to at least one song! + Dieses Thema kann nicht gelöscht werden, da es momentan mindestens einem Lied zugeordnet ist! + + + AlertEditForm + + + Item selected to Add + Ausgewähltes Element hinzufügen + + + Ui_AmendThemeDialog + + + Right + Rechts + + + ThemeManager + + + Save Theme - (%s) + Speichere Design - (%s) + + + ImageMediaItem + + + Allow background of live slide to be overridden + Erlaubt den Hintergrund einer Live-Folie zu überschreiben + + + MediaManagerItem + + + Add the selected item(s) to the service + Füge Element(e) zum Ablauf hinzu + + + AuthorsForm + + + Error + Fehler + + + BibleMediaItem + + + Book: + Buch: + + + Ui_AmendThemeDialog + + + Font Color: + Schriftfarbe: + + + Ui_OpenLPImportDialog + + + Select openlp.org songfile to import: + Openlp.org Lieddatei für den Import auswählen: + + + Ui_SettingsDialog + + + Settings + Einstellungen + + + BiblesTab + + + Layout Style: + Versdarstellung: + + + MediaManagerItem + + + Edit the selected + Auswahl bearbeiten + + + SlideController + + + Move to next + Verschiebe zum Nächsten + + + Ui_MainWindow + + + &Plugin List + &Plugin-Liste + + + BiblePlugin + + + &Bible + &Bibel + + + Ui_BibleImportWizard + + + Web Download + Internetdownload + + + Ui_AmendThemeDialog + + + Horizontal + Horizontal + + + ImportWizardForm + + + Open OSIS file + Öffne OSIS-Datei + + + Ui_AmendThemeDialog + + + Circular + Radial + + + pt + pt + + + Ui_MainWindow + + + &Add Tool... + &Werkzeug hinzufügen... + + + SongMaintenanceForm + + + Delete Topic + Lösche Thema + + + ServiceManager + + + Move up + Nach oben verschieben + + + Ui_OpenLPImportDialog + + + Lyrics + Liedtext + + + BiblesTab + + + No brackets + Keine Klammern + + + Ui_AlertEditDialog + + + Maintain Alerts + Hinweise verwaltenMit "Hinweis" übersetzt: a) es geht nur eine Übersetzung (Hinweis oder Alarm). b) in 1.2 heißt es auch "Hinweis" + + + Ui_AmendThemeDialog + + + px + px + + + ServiceManager + + + Select a theme for the service + Design für den Ablauf auswählen + + + ThemesTab + + + Themes + Designs + + + ServiceManager + + + Move to bottom + Nach ganz unten verschieben + + + Ui_PluginViewDialog + + + Status: + Status: + + + Ui_EditSongDialog + + + CCLI Number: + CCLI-Nummer: + + + ImportWizardForm + + + This Bible already exists! Please import a different Bible or first delete the existing one. + Diese Bibel ist bereits vorhanden! Bitte importieren Sie eine andere Bibel oder löschen Sie die bereits vorhandene. + + + Ui_MainWindow + + + &Translate + &Übersetzte + + + AlertEditForm + + + Please Save or Clear seletced item + Bitte Ausgewähltes Element speichern oder aufräumen + + + BiblesTab + + + Bibles + Bibeln + + + Ui_SongMaintenanceDialog + + + Authors + Autoren + + + SongUsageDetailForm + + + Output File Location + Ablageort für Aufnahme wählen + + + BiblesTab + + + { and } + { und } + + + GeneralTab + + + Prompt to save Service before starting New + Auffordern den Ablauf zu speichern, bevor ein neuer gestartet wird"Auffordern den Ablauf zu speichern, bevor ein neuer gestartet wird" ist zu lang. Mein Vorschlag gefällt mir leider auch nicht hundertprozentig. Andere Ideen? + + + ImportWizardForm + + + Starting import... + Starte import ... + + + BiblesTab + + + Note: +Changes don't affect verses already in the service + Notiz: +Änderungen werden nicht für bereits im Ablauf vorhandene Verse berücksichtigt. + + + Ui_EditVerseDialog + + + Intro + Intro + + + ServiceManager + + + Move up order + Verschiebe Reihenfolge nach oben + + + PresentationTab + + + available + verfügbar + + + ThemeManager + + + default + Standard + + + SongMaintenanceForm + + + Delete Author + Lösche Autor + + + Ui_AmendThemeDialog + + + Display Location + Anzeige Ort + + + Ui_PluginViewDialog + + + Version: + Version: + + + Ui_AlertEditDialog + + + Add + Füge hinzu ... + + + GeneralTab + + + General + Allgemein + + + Ui_AmendThemeDialog + + + Y Position: + Y-Position: + + + ServiceManager + + + Move down order + Verschiebe Reihenfolge nach unten + + + BiblesTab + + + verse per slide + Verszahl pro Folie + + + Ui_AmendThemeDialog + + + Show Shadow: + Schatten anzeigen + + + AlertsTab + + + Preview + Vorschau + + + alertsPlugin + + + <b>Alerts Plugin</b><br>This plugin controls the displaying of alerts on the presentations screen + <b>Hinweis-Plugin</b><br>Dieses Plugin ermöglicht Hinweise auf dem Projektionsbildschirm anzuzeigen + + + GeneralTab + + + Show the splash screen + Zeige den Startbildschirm + + + Ui_MainWindow + + + New Service + Neuer Ablauf + + + SlideController + + + Move to first + Ganz nach vorn verschieben + + + Ui_MainWindow + + + &Online Help + &Online Hilfe + + + SlideController + + + Blank Screen + Live Bild abschalten + + + Ui_MainWindow + + + Save Service + Ablauf speichern + + + Save &As... + Speichern &als... + + + Toggle the visibility of the Media Manager + Medien Verwaltung ein/ausschalten + + + BibleMediaItem + + + No Book Found + Kein Buch gefunden + + + Ui_EditSongDialog + + + Add + Hinzufügen + + + alertsPlugin + + + &Alert + &Hinweis + + + BibleMediaItem + + + Advanced + Erweitert + + + ImageMediaItem + + + Image(s) + Bild(er) + + + Ui_MainWindow + + + F11 + F11 + + + F10 + F10 + + + F12 + F12 + + + Ui_BibleImportWizard + + + Select the import format, and where to import from. + Wähle das Import Format und woher der Import erfolgen soll. + + + Ui_MainWindow + + + Alt+F7 + Alt+F7 + + + Add an application to the list of tools + Füge eine Anwendung zur Liste der Werkzeuge hinzu + + + MediaPlugin + + + <b>Media Plugin</b><br>This plugin allows the playing of audio and video media + <b>Medien Plugin</b><br>Dieses Plugin ermöglicht das Abspielen von Audio und Video Material + + + BiblesTab + + + Bible Theme: + Bibeldesign: + + + SongsPlugin + + + Export songs in openlp.org 1.0 format + Exportiere Lieder in das openlp.org 1.0 Format + + + Ui_MainWindow + + + Theme Manager + Designmanager + + + AlertsTab + + + Alerts + Hinweise + + + Ui_customEditDialog + + + Move slide down 1 + Folie um 1 nach unten verschieben + + + Ui_AmendThemeDialog + + + Font: + Schriftart: + + + ServiceManager + + + Load an existing service + Öffne Ablauf + + + Ui_MainWindow + + + Toggle the visibility of the Theme Manager + Design Manager ein/ausschalten + + + PresentationTab + + + Presentations + Präsentationen + + + SplashScreen + + + Starting + Starte ... + + + ImageTab + + + Slide Loop Delay: + Zeitverzögerung bis zur nächsten Folie: + + + SlideController + + + Verse + Vers + + + AlertsTab + + + Alert timeout: + Anzeigedauer:Frei übersetzt + + + Ui_MainWindow + + + &Preview Pane + &VorschaubereichHabe es mit "&Vorschaubreich" (und nicht Vorschau Fenster) übersetzt (vereinheitlicht) + + + MediaManagerItem + + + Add a new + Neues anfügen + + + ThemeManager + + + Select Theme Import File + Wähle Datei für Design Import + + + New Theme + Neues Design + + + MediaMediaItem + + + Media + Medien + + + Ui_AmendThemeDialog + + + Preview + Vorschau + + + Outline Size: + Randbreite:Habe ich mal von Randgröße zu Randbreite geändert. Ein Rand ist breit, aber nicht groß. + + + Ui_OpenSongExportDialog + + + Progress: + Fortschritt: + + + AmendThemeForm + + + Second Color: + Zweite Farbe: + + + Ui_EditSongDialog + + + Theme, Copyright Info && Comments + Design, Copyrightinformationen && Kommentare + + + Ui_AboutDialog + + + Credits + Credits + + + BibleMediaItem + + + To: + Bis: + + + Ui_EditSongDialog + + + Song Book + Liederbuch + + + alertsPlugin + + + F7 + F7 + + + Ui_OpenLPExportDialog + + + Author + Autor + + + Ui_AmendThemeDialog + + + Wrap Indentation + Einzug nach Zeilenumbruch:this option shifts the text after the 1st line to the right +>what exactly does this option do? + + + ThemeManager + + + Import a theme + Design importieren + + + PresentationPlugin + + + <b>Presentation Plugin</b> <br> Delivers 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. + <b>Präsentations-Plugin</b> <br>Ermöglicht es, Präsentationen vieler verschiedener Programme in OpenLP einzubinden. Die verfügbaren Programme sind in der Drop-Down-Liste zu finden. + + + ImageMediaItem + + + Image + Bild + + + BibleMediaItem + + + Clear + AbbrechenIn V1 mit "Abbrechen" übersetzt + + + Ui_MainWindow + + + Save Service As + Speicher Gottesdienst unter + + + Ui_AlertDialog + + + Cancel + Abbrechen + + + Ui_OpenLPImportDialog + + + Import + Importieren + + + Ui_EditVerseDialog + + + Chorus + Refrain + + + Ui_EditSongDialog + + + Edit All + Alles Bearbeiten + + + AuthorsForm + + + You need to type in the last name of the author. + Sie müssen den Nachnamen des Autors eingeben. + + + SongsTab + + + Songs Mode + Liedermodus + + + Ui_AmendThemeDialog + + + Left + Links + + + RemotesPlugin + + + <b>Remote Plugin</b><br>This plugin provides the ability to send messages to a running version of openlp on a different computer.<br>The Primary use for this would be to send alerts from a creche + <b>Fernsteuerungs-Plugin</b><br>Dieses Plugin ermöglicht es Nachrichten zu einer laufenden OpenLP Anwendung auf einem anderen Computer zu senden.<br>Eine Anwendung kann kann z. B. das Senden von Hinweisen aus der Sonntagsschule sein. + + + ImageTab + + + Images + Bilder + + + BibleMediaItem + + + Verse: + Vers: + + + Ui_OpenLPExportDialog + + + openlp.org Song Exporter + openlp.org-Song-Exporter + + + Song Export List + Lied Export Liste + + + ThemeManager + + + Export theme + Design exportieren + + + Ui_SongMaintenanceDialog + + + Delete + Löschen + + + Ui_AmendThemeDialog + + + Theme Name: + Designname: + + + Ui_AboutDialog + + + About OpenLP + Über OpenLP + + + Ui_MainWindow + + + Toggle the visibility of the Service Manager + Ablaufverwaltung ein/ausblenden + + + PresentationMediaItem + + + A presentation with that filename already exists. + Eine Präsentation mit diesem Dateinamen existiert bereits.entweder "schon" oder "bereits" + + + AlertsTab + + + openlp.org + openlp.org + + + ImportWizardForm + + + Invalid Books File + Ungültige Bücherdatei + + + Ui_OpenLPImportDialog + + + Song Title + LiedtitelWird zusammen geschrieben + + + MediaManagerItem + + + &Show Live + &Zeige Live + + + AlertsTab + + + Keep History: + Verlauf erhalten: + + + Ui_AmendThemeDialog + + + Image: + Bild: + + + Ui_customEditDialog + + + Set Theme for Slides + Setze Design für Folien + + + Ui_MainWindow + + + More information about OpenLP + Mehr Informationen über OpenLP + + + AlertsTab + + + Background Color: + Hintergrundfarbe: + + + SongMaintenanceForm + + + No topic selected! + Kein Thema ausgewählt! + + + Ui_MainWindow + + + &Media Manager + &Medienmanager + + + &Tools + &Extras + + + AmendThemeForm + + + Background Color: + Hintergrundfarbe: + + + Ui_EditSongDialog + + + A&dd to Song + Zum Lied &hinzufügen + + + Title: + Titel: + + + GeneralTab + + + Screen + Bildschirm + + + AlertsTab + + + s + s + + + ImagePlugin + + + <b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any somgs which are rendered will use the selected image from the background instead of the one provied by the theme.<br> + <b>Bilder Plugin</b><br>Dieses Plugin ermöglicht die Anzeige von Bildern. Wenn mehrere Bilder gemeinsam ausgewählt und präsentiert werden, ist es möglich sie als Dia Show zu zeigen.<br><br>Wird die Option <i>Hintergrund ersetzen</i> ausgewählt, wird für alle Lieder das ausgewählte Bild als Hintergrund gewählt.<br> + + + Ui_AlertEditDialog + + + Clear + AbbrechenIn V1 mit "Abbrechen" übersetzt + + + Ui_BibleImportWizard + + + Please wait while your Bible is imported. + Bitte warten Sie während Ihre Bibel importiert wird. + + + MediaManagerItem + + + No items selected... + Kein Element ausgewählt... + + + Ui_OpenLPImportDialog + + + Select All + Alles auswählen + + + Ui_AmendThemeDialog + + + Font Main + Hauptschriftart + + + ImageMediaItem + + + Images (*.jpg *jpeg *.gif *.png *.bmp) + Bilder (*.jpg *.jpeg *.gif *.png *.bmp) + + + Ui_OpenLPImportDialog + + + Title + Titel + + + Ui_OpenSongExportDialog + + + Select OpenSong song folder: + Wählen Sie einen OpenSong-Liederordner: + + + Ui_MainWindow + + + Toggle Media Manager + Medienmanager ein/ausblenden + + + SongUsagePlugin + + + &Song Usage + Lieder Statistik + + + GeneralTab + + + Monitors + Monitore + + + EditCustomForm + + + You need to enter a slide + Sie müssen eine Folie eingeben + + + Ui_SongMaintenanceDialog + + + Topics + Themen + + + ImportWizardForm + + + You need to specify a file to import your Bible from! + Es muss eine Datei ausgewählt werden, von der die Bibel importiert werden soll! + + + Ui_EditVerseDialog + + + Verse Type + Vers Art + + + OpenSongBible + + + Importing + Importiere... + + + Ui_EditSongDialog + + + Comments + Kommentare + + + AlertsTab + + + Bottom + Unten + + + Ui_MainWindow + + + Create a new Service + Erstelle neuen Ablauf + + + AlertsTab + + + Top + Oben + + + ServiceManager + + + &Preview Verse + Vers in der &Vorschau zeigen + + + Ui_PluginViewDialog + + + TextLabel + Text Beschriftung + + + AlertsTab + + + Font Size: + Schriftgröße: + + + Ui_PluginViewDialog + + + About: + Über: + + + Inactive + Inaktiv + + + Ui_OpenSongExportDialog + + + Ready to export + Bereit zum Exportieren + + + Export + Exportieren + + + Ui_PluginViewDialog + + + Plugin List + Plugin-Liste + + + Ui_AmendThemeDialog + + + Transition Active: + Übergang aktivieren:bewusst so übersetzt (also nicht "Übergang aktiv") + + + Ui_BibleImportWizard + + + Proxy Server (Optional) + Proxy-Server (optional) + + + Ui_EditSongDialog + + + &Manage Authors, Topics, Books + Verwalte Autoren, Themen, Bücher + + + Ui_SongUsageDetailDialog + + + Audit Detail Extraction + + Muss nicht übersetzt werden! + + + Ui_OpenLPExportDialog + + + Ready to export + Bereit zum Exportieren + + + EditCustomForm + + + Save && Preview + Speichern && Vorschau + + + Ui_OpenLPExportDialog + + + Select All + Alle auswählen + + + Ui_SongUsageDetailDialog + + + to + zu + + + Ui_AmendThemeDialog + + + Size: + Größe: + + + MainWindow + + + OpenLP Main Display Blanked + Hauptbildschirm abgedunkelt + + + Ui_OpenLPImportDialog + + + Remove Selected + Ausgewählte Einträgel entfernen + + + Ui_EditSongDialog + + + Delete + Löschen + + + ImportWizardForm + + + You need to specify an OpenSong Bible file to import! + Es muss eine OpenSong Bibel-Datei ausgewählt werden, die importiert werden soll! + + + PresentationMediaItem + + + File exists + Datei existiert bereits + + + Ui_OpenLPExportDialog + + + Title + Titel + + + Ui_OpenSongImportDialog + + + Ready to import + Bereit zum Importieren + + + SlideController + + + Stop continuous loop + Endlosschleife beendenAlso mir gefällt ja nur "Schleife beenden" besser (vgl. Start continuous loop) + + + s + s + + + SongMediaItem + + + Song Maintenance + Liedverwaltung + + + Ui_customEditDialog + + + Edit + Bearbeiten + + + Ui_AmendThemeDialog + + + Gradient : + Farbverlauf : + + + ImportWizardForm + + + Invalid Verse File + Ungültige Liedtext Datei + + + EditSongForm + + + Error + Fehler + + + Ui_customEditDialog + + + Add New + Neues anfügen + + + Ui_AuthorsDialog + + + Display name: + Anzeige Name: + + + SongMaintenanceForm + + + Are you sure you want to delete the selected topic? + Soll der gewählte Eintrag wirklich gelöscht werden? + + + Ui_AmendThemeDialog + + + Bold/Italics + Fett/Kursiv + + + Ui_SongMaintenanceDialog + + + Song Maintenance + Liedverwaltung + + + Ui_BibleImportWizard + + + Welcome to the Bible Import Wizard + Willkommen beim Bibel Import Assistenten + + + SongsTab + + + Songs + Lieder + + + Ui_BibleImportWizard + + + Password: + Passwort: + + + Ui_MainWindow + + + &Theme Manager + &Designmanager + + + MediaManagerItem + + + Preview the selected item + Zeige das auswählte Element in der Vorschau an + + + Ui_BibleImportWizard + + + Version Name: + Bibelübersetzung:Meint wohl die "Bibelübersetzung" + + + Ui_AboutDialog + + + About + Über + + + MediaMediaItem + + + Select Media + Medien auswählen + + + Ui_AmendThemeDialog + + + Horizontal Align: + Horizontale Ausrichtung: + + + ServiceManager + + + &Edit Item + &Bearbeite Element + + + Ui_AmendThemeDialog + + + Background Type: + Hintergrundtyp + + + Ui_MainWindow + + + &Save + &Speichern + + + OpenLP 2.0 + OpenLP 2.0 + + + ThemeManager + + + A theme with this name already exists, would you like to overwrite it? + Ein Design mit diesem Namen existiert bereits, soll es überschrieben werden? + + + PresentationMediaItem + + + Select Presentation(s) + Präsentation(en) auswählen + + + ThemeManager + + + Export a theme + Design exportieren + + + AmendThemeForm + + + Open file + Datei öffnen + + + Ui_TopicsDialog + + + Topic Maintenance + Themenverwaltung + + + Ui_customEditDialog + + + Clear edit area + Aufräumen des Bearbeiten Bereiches + + + Ui_AmendThemeDialog + + + Show Outline: + Rand anzeigen: + + + SongBookForm + + + You need to type in a book name! + Sie müssen ein Buchnamen eingeben! + + + ImportWizardForm + + + Open OpenSong Bible + Öffne OpenSong-Bibel + + + Ui_MainWindow + + + Look && &Feel + Aussehen + + + Ui_BibleImportWizard + + + Ready. + Fertig. + + + ThemeManager + + + You have not selected a theme! + Sie haben kein Design ausgewählt! + + + Ui_SongMaintenanceDialog + + + Books/Hymnals + Bücher/Lieder + + + Ui_AboutDialog + + + Contribute + Mitwirken + + + Ui_AmendThemeDialog + + + Gradient + Farbverlauf + + + Ui_BibleImportWizard + + + Books Location: + Bücher Ablage: + + + Ui_OpenSongExportDialog + + + Full Song List + Lieder Gesamtliste + + + GeneralTab + + + SongSelect Password: + SongSelect-Passwort: + + + diff --git a/resources/i18n/openlp_en_GB.ts b/resources/i18n/openlp_en_GB.ts new file mode 100644 index 000000000..0f994c2e1 --- /dev/null +++ b/resources/i18n/openlp_en_GB.ts @@ -0,0 +1,4287 @@ + + + + BibleMediaItem + + + Quick + Quick + + + Ui_customEditDialog + + + Delete selected slide + Delete selected slide + + + BiblesTab + + + ( and ) + ( and ) + + + RemoteTab + + + Remotes + Remotes + + + Ui_EditSongDialog + + + &Remove + &Remove + + + Ui_AmendThemeDialog + + + Shadow Size: + Shadow Size: + + + Ui_OpenSongExportDialog + + + Close + Close + + + ThemeManager + + + Import Theme + Import Theme + + + Ui_AmendThemeDialog + + + Slide Transition + Slide Transition + + + SongMaintenanceForm + + + Are you sure you want to delete the selected book? + Are you sure you want to delete the selected book? + + + ThemesTab + + + Theme level + Theme level + + + BibleMediaItem + + + Bible + Bible + + + ServiceManager + + + Save Changes to Service? + Save Changes to Service? + + + SongUsagePlugin + + + &Delete recorded data + &Delete recorded data + + + Ui_OpenLPExportDialog + + + Song Title + Song Title + + + Ui_customEditDialog + + + Edit selected slide + Edit selected slide + + + SongMediaItem + + + CCLI Licence: + CCLI Licence: + + + Ui_SongUsageDeleteDialog + + + Audit Delete + Audit Delete + + + Ui_BibleImportWizard + + + Bible Import Wizard + Bible Import Wizard + + + Ui_customEditDialog + + + Edit All + Edit All + + + Ui_ServiceNoteEdit + + + Service Item Notes + Service Item Notes + + + SongMaintenanceForm + + + Couldn't save your author! + + + + + Ui_customEditDialog + + + Clear + Clear + + + ThemesTab + + + Global theme + Global theme + + + SongUsagePlugin + + + Start/Stop live song usage recording + Start/Stop live song usage recording + + + MainWindow + + + The Main Display has been blanked out + The Main Display has been blanked out + + + Ui_OpenSongExportDialog + + + Lyrics + Lyrics + + + Ui_AlertDialog + + + Display + Display + + + Ui_customEditDialog + + + Delete + Delete + + + Ui_EditVerseDialog + + + Verse + Verse + + + SongMaintenanceForm + + + This author can't be deleted, they are currently assigned to at least one song! + + + + + ThemeManager + + + Create a new theme + Create a new theme + + + Ui_MainWindow + + + Open an existing service + Open an existing service + + + SlideController + + + Move to previous + Move to previous + + + SongsPlugin + + + &Song + &Song + + + Ui_PluginViewDialog + + + Plugin Details + Plugin Details + + + AlertsTab + + + pt + pt + + + Edit History: + Edit History: + + + Ui_MainWindow + + + &File + &File + + + SongMaintenanceForm + + + Couldn't add your book! + + + + + BiblesTab + + + verse per line + verse per line + + + Ui_customEditDialog + + + Theme: + Theme: + + + SongMaintenanceForm + + + Error + Error + + + Ui_BibleImportWizard + + + Bible: + Bible: + + + ImportWizardForm + + + You need to specify a file with books of the Bible to use in the import! + + + + + ThemeManager + + + Delete Theme + Delete Theme + + + SplashScreen + + + Splash Screen + Splash Screen + + + SongMediaItem + + + Song + Song + + + SongUsageDeleteForm + + + Delete Selected Audit Events? + + + + + Ui_OpenSongExportDialog + + + Song Title + Song Title + + + Ui_AmendThemeDialog + + + Bottom + Bottom + + + Ui_MainWindow + + + List the Plugins + List the Plugins + + + SongMaintenanceForm + + + No author selected! + + + + + SongUsagePlugin + + + <b>SongUsage Plugin</b><br>This plugin records the use of songs and when they have been used during a live service + <b>SongUsage Plugin</b><br>This plugin records the use of songs and when they have been used during a live service + + + Ui_customEditDialog + + + Move slide Up 1 + Move slide Up 1 + + + SongsPlugin + + + OpenSong + OpenSong + + + AlertsManager + + + Alert message created and delayed + Alert message created and delayed + + + Ui_EditSongDialog + + + Alternative Title: + Alternative Title: + + + ServiceManager + + + Open Service + Open Service + + + BiblesTab + + + Display Style: + Display Style: + + + Ui_AmendThemeDialog + + + Image + Image + + + EditSongForm + + + You need to enter a song title. + You need to enter a song title. + + + ThemeManager + + + Error + Error + + + ImportWizardForm + + + Invalid Bible Location + Invalid Bible Location + + + ThemesTab + + + Global level + Global level + + + ThemeManager + + + Make Global + Make Global + + + Ui_MainWindow + + + &Service Manager + &Service Manager + + + Ui_OpenLPImportDialog + + + Author + Author + + + Ui_AmendThemeDialog + + + Height: + Height: + + + ThemeManager + + + Delete a theme + Delete a theme + + + Ui_BibleImportWizard + + + Crosswalk + Crosswalk + + + SongBookForm + + + Error + Error + + + Ui_AuthorsDialog + + + Last name: + Last name: + + + Ui_customEditDialog + + + Title: + Title: + + + ImportWizardForm + + + You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. + You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. + + + SongMediaItem + + + Maintain the lists of authors, topics and books + Maintain the lists of authors, topics and books + + + Ui_AlertEditDialog + + + Save + Save + + + EditCustomForm + + + You have unsaved data + You have unsaved data + + + Ui_AmendThemeDialog + + + Outline + Outline + + + BibleMediaItem + + + Text Search + Text Search + + + Ui_BibleImportWizard + + + CSV + CSV + + + SongUsagePlugin + + + Delete song usage to specified date + Delete song usage to specified date + + + Ui_SongUsageDetailDialog + + + Report Location + Report Location + + + Ui_BibleImportWizard + + + OpenSong + OpenSong + + + Ui_MainWindow + + + Open Service + Open Service + + + BibleMediaItem + + + Find: + Find: + + + ImageMediaItem + + + Select Image(s) + Select Image(s) + + + BibleMediaItem + + + Search Type: + Search Type: + + + Ui_MainWindow + + + Media Manager + Media Manager + + + Alt+F4 + Alt+F4 + + + MediaManagerItem + + + &Preview + &Preview + + + GeneralTab + + + CCLI Details + CCLI Details + + + BibleMediaItem + + + Bible not fully loaded + Bible not fully loaded + + + Ui_MainWindow + + + Toggle the visibility of the Preview Panel + Toggle the visibility of the Preview Panel + + + ImportWizardForm + + + Bible Exists + Bible Exists + + + Ui_MainWindow + + + &User Guide + &User Guide + + + SongUsageDeleteForm + + + Are you sure you want to delete selected Audit Data? + + + + + Ui_MainWindow + + + Set the interface language to English + Set the interface language to English + + + Ui_AmendThemeDialog + + + Main Font + Main Font + + + ImportWizardForm + + + Empty Copyright + Empty Copyright + + + CustomPlugin + + + <b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br> + + + + + AuthorsForm + + + You need to type in the first name of the author. + You need to type in the first name of the author. + + + SongsTab + + + Display Verses on Live Tool bar: + Display Verses on Live Tool bar: + + + ServiceManager + + + Move to top + Move to top + + + ImageMediaItem + + + Override background + Override background + + + Ui_SongMaintenanceDialog + + + Edit + Edit + + + Ui_OpenSongExportDialog + + + Select All + Select All + + + ThemesTab + + + 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 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. + + + PresentationMediaItem + + + Presentation + Presentation + + + Ui_AmendThemeDialog + + + Solid Color + Solid Color + + + CustomTab + + + Custom + Custom + + + Ui_OpenLPImportDialog + + + Ready to import + Ready to import + + + MainWindow + + + OpenLP version %s has been updated to version %s + +You can obtain the latest version from http://openlp.org + OpenLP version %s has been updated to version %s + +You can obtain the latest version from http://openlp.org + + + Ui_BibleImportWizard + + + File Location: + File Location: + + + SlideController + + + Go to Verse + Go to Verse + + + Ui_MainWindow + + + &Import + &Import + + + Quit OpenLP + Quit OpenLP + + + Ui_BibleImportWizard + + + 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. + 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. + + + SongMaintenanceForm + + + Couldn't add your topic! + + + + + ImportWizardForm + + + Empty Version Name + Empty Version Name + + + Ui_MainWindow + + + &Preview Panel + &Preview Panel + + + SlideController + + + Start continuous loop + Start continuous loop + + + ServiceManager + + + Move down + Move down + + + GeneralTab + + + primary + primary + + + Ui_EditSongDialog + + + Add a Theme + Add a Theme + + + Ui_MainWindow + + + &New + &New + + + Ui_customEditDialog + + + Credits: + Credits: + + + SlideController + + + Live + Live + + + GeneralTab + + + Show blank screen warning + Show blank screen warning + + + BiblesTab + + + continuous + continuous + + + Ui_EditVerseDialog + + + Number + Number + + + GeneralTab + + + Application Startup + Application Startup + + + Ui_AmendThemeDialog + + + Use Default Location: + Use Default Location: + + + Ui_OpenSongImportDialog + + + Import + Import + + + Ui_AmendThemeDialog + + + Other Options + Other Options + + + Ui_EditSongDialog + + + Verse Order: + Verse Order: + + + Ui_SongUsageDetailDialog + + + ASelect Date Range + + + + + Ui_MainWindow + + + Default Theme: + Default Theme: + + + Toggle Preview Panel + Toggle Preview Panel + + + SongMediaItem + + + Lyrics + Lyrics + + + Ui_OpenLPImportDialog + + + Progress: + Progress: + + + Ui_AmendThemeDialog + + + Shadow + Shadow + + + GeneralTab + + + Select monitor for output display: + Select monitor for output display: + + + Ui_MainWindow + + + &Settings + &Settings + + + Ui_AmendThemeDialog + + + Italics + Italics + + + ServiceManager + + + Create a new service + Create a new service + + + Ui_AmendThemeDialog + + + Background: + Background: + + + Ui_OpenLPImportDialog + + + openlp.org Song Importer + openlp.org Song Importer + + + Ui_BibleImportWizard + + + Copyright: + Copyright: + + + ThemesTab + + + Service level + Service level + + + BiblesTab + + + [ and ] + [ and ] + + + Ui_BibleImportWizard + + + Verse Location: + Verse Location: + + + MediaManagerItem + + + You must select one or more items + You must select one or more items + + + GeneralTab + + + Application Settings + Application Settings + + + ServiceManager + + + Save this service + Save this service + + + ImportWizardForm + + + Open Books CSV file + Open Books CSV file + + + GeneralTab + + + SongSelect Username: + SongSelect Username: + + + Ui_AmendThemeDialog + + + X Position: + X Position: + + + BibleMediaItem + + + No matching book could be found in this Bible. + No matching book could be found in this Bible. + + + Ui_BibleImportWizard + + + Server: + Server: + + + SongMaintenanceForm + + + Couldn't save your book! + + + + Ui_EditVerseDialog + + + Ending + Ending + + + CustomTab + + + Display Footer: + Display Footer: + + + ImportWizardForm + + + Invalid OpenSong Bible + Invalid OpenSong Bible + + + GeneralTab + + + CCLI Number: + CCLI Number: + + + Ui_AmendThemeDialog + + + Center + Center + + + ServiceManager + + + Theme: + Theme: + + + Ui_MainWindow + + + &Live + &Live + + + Ui_AmendThemeDialog + + + <Color2> + <Color2> + + + Ui_MainWindow + + + English + English + + + ImageMediaItem + + + You must select one or more items + You must select one or more items + + + Ui_AuthorsDialog + + + First name: + First name: + + + Ui_OpenLPExportDialog + + + Select openlp.org export filename: + Select openlp.org export filename: + + + Ui_BibleImportWizard + + + Permission: + Permission: + + + Ui_OpenSongImportDialog + + + Close + Close + + + Ui_AmendThemeDialog + + + Opaque + Opaque + + + SongMaintenanceForm + + + This book can't be deleted, it is currently assigned to at least one song! + + + + + ImportWizardForm + + + Your Bible import failed. + Your Bible import failed. + + + SlideController + + + Start playing media + Start playing media + + + SongMediaItem + + + Type: + Type: + + + Ui_AboutDialog + + + Close + Close + + + TopicsForm + + + You need to type in a topic name! + + + + + Ui_OpenSongExportDialog + + + Song Export List + Song Export List + + + BibleMediaItem + + + Dual: + Dual: + + + ImageTab + + + sec + sec + + + ServiceManager + + + Delete From Service + Delete From Service + + + GeneralTab + + + Automatically open the last service + Automatically open the last service + + + Ui_OpenLPImportDialog + + + Song Import List + Song Import List + + + Ui_OpenSongExportDialog + + + Author + Author + + + Ui_AmendThemeDialog + + + Outline Color: + Outline Color: + + + Ui_BibleImportWizard + + + Select Import Source + Select Import Source + + + Ui_MainWindow + + + F9 + F9 + + + F8 + F8 + + + ServiceManager + + + &Change Item Theme + &Change Item Theme + + + Ui_OpenSongImportDialog + + + OpenSong Folder: + OpenSong Folder: + + + Ui_OpenLPImportDialog + + + Import File Song List + Import File Song List + + + Ui_customEditDialog + + + Edit Custom Slides + Edit Custom Slides + + + Ui_BibleImportWizard + + + Set up the Bible's license details. + Set up the Bible's license details. + + + Ui_AmendThemeDialog + + + Alignment + Alignment + + + SongMaintenanceForm + + + Delete Book + Delete Book + + + ThemeManager + + + Edit a theme + Edit a theme + + + Ui_BibleImportWizard + + + BibleGateway + BibleGateway + + + GeneralTab + + + Preview Next Song from Service Manager + Preview Next Song from Service Manager + + + Ui_EditSongDialog + + + Title && Lyrics + Title && Lyrics + + + SongMaintenanceForm + + + No book selected! + + + + + SlideController + + + Move to live + Move to live + + + Ui_EditVerseDialog + + + Other + Other + + + Ui_EditSongDialog + + + Theme + Theme + + + ServiceManager + + + Save Service + Save Service + + + Ui_MainWindow + + + Save the current service to disk + Save the current service to disk + + + BibleMediaItem + + + Chapter: + Chapter: + + + Search + Search + + + PresentationTab + + + Available Controllers + Available Controllers + + + ImportWizardForm + + + Open Verses CSV file + Open Verses CSV file + + + TopicsForm + + + Error + Error + + + RemoteTab + + + Remotes Receiver Port + Remotes Receiver Port + + + Ui_MainWindow + + + &View + &View + + + Ui_AmendThemeDialog + + + Normal + Normal + + + Ui_OpenLPExportDialog + + + Close + Close + + + Ui_BibleImportWizard + + + Username: + Username: + + + ThemeManager + + + Edit Theme + Edit Theme + + + SlideController + + + Preview + Preview + + + Ui_AlertDialog + + + Alert Message + Alert Message + + + ImportWizardForm + + + Finished import. + Finished import. + + + You need to specify a file of Bible verses to import! + You need to specify a file of Bible verses to import! + + + AlertsTab + + + Location: + Location: + + + Ui_EditSongDialog + + + Authors, Topics && Book + Authors, Topics && Book + + + EditSongForm + + + You need to enter some verses. + You need to enter some verses. + + + Ui_BibleImportWizard + + + Download Options + Download Options + + + BiblePlugin + + + <strong>Bible Plugin</strong><br />This plugin allows bible verses from different sources to be displayed on the screen during the service. + <strong>Bible Plugin</strong><br />This plugin allows bible verses from different sources to be displayed on the screen during the service. + + + Ui_EditSongDialog + + + Copyright Information + Copyright Information + + + Ui_MainWindow + + + &Export + &Export + + + Ui_AmendThemeDialog + + + Bold + Bold + + + SongsPlugin + + + Export songs in OpenLP 2.0 format + Export songs in OpenLP 2.0 format + + + MediaManagerItem + + + Load a new + Load a new + + + AlertEditForm + + + Missing data + Missing data + + + SongsPlugin + + + <b>Song Plugin</b> <br>This plugin allows Songs to be managed and displayed.<br> + <b>Song Plugin</b> <br>This plugin allows Songs to be managed and displayed.<br> + + + Ui_AmendThemeDialog + + + Footer Font + Footer Font + + + EditSongForm + + + Invalid verse entry - vX + Invalid verse entry - vX + + + MediaManagerItem + + + Delete the selected item + Delete the selected item + + + Ui_OpenLPExportDialog + + + Export + Export + + + Ui_BibleImportWizard + + + Location: + Location: + + + BibleMediaItem + + + Keep + Keep + + + SongUsagePlugin + + + Generate report on Song Usage + Generate report on Song Usage + + + Ui_EditSongDialog + + + Topic + Topic + + + Ui_MainWindow + + + &Open + &Open + + + AuthorsForm + + + You haven't set a display name for the author, would you like me to combine the first and last names for you? + You haven't set a display name for the author, would you like me to combine the first and last names for you? + + + AmendThemeForm + + + Slide Height is %s rows + Slide Height is %s rows + + + Ui_EditVerseDialog + + + Pre-Chorus + Pre-Chorus + + + Ui_EditSongDialog + + + Lyrics: + Lyrics: + + + Ui_AboutDialog + + + Project Lead + Raoul "superfly" Snyman + +Developers + Tim "TRB143" Bentley + Jonathan "gushie" Corwin + Michael "cocooncrash" Gorven + Scott "sguerrieri" Guerrieri + Raoul "superfly" Snyman + Maikel Stuivenberg + Martin "mijiti" Thompson + Jon "Meths" Tibble + Carsten "catini" Tingaard + +Testers + Wesley "wrst" Stout + Project Lead + Raoul "superfly" Snyman + +Developers + Tim "TRB143" Bentley + Jonathan "gushie" Corwin + Michael "cocooncrash" Gorven + Scott "sguerrieri" Guerrieri + Raoul "superfly" Snyman + Maikel Stuivenberg + Martin "mijiti" Thompson + Jon "Meths" Tibble + Carsten "catini" Tingaard + +Testers + Wesley "wrst" Stout + + + SongMediaItem + + + Titles + + + + + Ui_OpenLPExportDialog + + + Lyrics + Lyrics + + + PresentationMediaItem + + + Present using: + Present using: + + + SongMediaItem + + + Clear + Clear + + + ServiceManager + + + &Live Verse + &Live Verse + + + Ui_OpenSongImportDialog + + + Progress: + Progress: + + + Ui_MainWindow + + + Toggle Theme Manager + Toggle Theme Manager + + + Ui_AlertDialog + + + Alert Text: + Alert Text: + + + Ui_EditSongDialog + + + Edit + Edit + + + AlertsTab + + + Font Color: + Font Color: + + + Ui_AmendThemeDialog + + + Theme Maintenance + Theme Maintenance + + + CustomTab + + + Custom Display + Custom Display + + + Ui_OpenSongExportDialog + + + Title + Title + + + Ui_AmendThemeDialog + + + <Color1> + <Color1> + + + Ui_EditSongDialog + + + Authors + Authors + + + ThemeManager + + + Export Theme + Export Theme + + + ServiceManager + + + (N) + + + + + Ui_SongBookDialog + + + Name: + Name: + + + Ui_AuthorsDialog + + + Author Maintenance + Author Maintenance + + + Ui_AmendThemeDialog + + + Font Footer + Font Footer + + + BiblesTab + + + Verse Display + Verse Display + + + Ui_MainWindow + + + &Options + &Options + + + BibleMediaItem + + + Results: + Results: + + + Ui_OpenLPExportDialog + + + Full Song List + Full Song List + + + SlideController + + + Move to last + Move to last + + + Ui_OpenLPExportDialog + + + Progress: + + + + + Ui_SongMaintenanceDialog + + + Add + Add + + + SongMaintenanceForm + + + Are you sure you want to delete the selected author? + + + + + SongUsagePlugin + + + Song Usage Status + Song Usage Status + + + BibleMediaItem + + + Verse Search + Verse Search + + + Ui_SongBookDialog + + + Edit Book + Edit Book + + + EditSongForm + + + Save && Preview + Save && Preview + + + Ui_SongBookDialog + + + Publisher: + Publisher: + + + Ui_AmendThemeDialog + + + Font Weight: + Font Weight: + + + Ui_BibleImportWizard + + + Bible Filename: + Bible Filename: + + + Ui_AmendThemeDialog + + + Transparent + Transparent + + + SongMediaItem + + + Search + Search + + + Ui_BibleImportWizard + + + Format: + Format: + + + Ui_AmendThemeDialog + + + Background + Background + + + Ui_BibleImportWizard + + + Importing + Importing + + + Ui_customEditDialog + + + Edit all slides + Edit all slides + + + SongsTab + + + Enable search as you type: + Enable search as you type: + + + Ui_MainWindow + + + Ctrl+S + Ctrl+S + + + SongMediaItem + + + Authors + Authors + + + Ui_PluginViewDialog + + + Active + Active + + + SongMaintenanceForm + + + Couldn't save your topic! + + + + + Ui_MainWindow + + + Ctrl+O + Ctrl+O + + + Ctrl+N + Ctrl+N + + + SongMaintenanceForm + + + Couldn't add your author! + + + + + Ui_AlertEditDialog + + + Edit + Edit + + + Ui_EditSongDialog + + + Song Editor + Song Editor + + + AlertsTab + + + Font + Font + + + SlideController + + + Edit and re-preview Song + Edit and re-preview Song + + + Delay between slides in seconds + Delay between slides in seconds + + + MediaManagerItem + + + &Edit + &Edit + + + Ui_AmendThemeDialog + + + Vertical + Vertical + + + Width: + Width: + + + ThemeManager + + + You are unable to delete the default theme! + + + + + ThemesTab + + + Use the global theme, overriding any themes associated with either the service or the songs. + Use the global theme, overriding any themes associated with either the service or the songs. + + + BibleMediaItem + + + Version: + Version: + + + Ui_AboutDialog + + + OpenLP <version> build <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> build <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. + + + SongsPlugin + + + OpenLP 2.0 + OpenLP 2.0 + + + ServiceManager + + + New Service + New Service + + + Ui_TopicsDialog + + + Topic name: + Topic name: + + + ThemeManager + + + File is not a valid theme! + + + + + Ui_BibleImportWizard + + + License Details + License Details + + + Ui_AboutDialog + + + License + License + + + Ui_EditSongDialog + + + R&emove + R&emove + + + Ui_AmendThemeDialog + + + Middle + Middle + + + Ui_customEditDialog + + + Save + Save + + + AlertEditForm + + + Item selected to Edit + Item selected to Edit + + + BibleMediaItem + + + From: + From: + + + Ui_AmendThemeDialog + + + Shadow Color: + Shadow Color: + + + ServiceManager + + + &Notes + &Notes + + + Ui_MainWindow + + + E&xit + E&xit + + + Ui_OpenLPImportDialog + + + Close + Close + + + MainWindow + + + OpenLP Version Updated + OpenLP Version Updated + + + Ui_customEditDialog + + + Replace edited slide + Replace edited slide + + + Add new slide at bottom + Add new slide at bottom + + + EditCustomForm + + + You need to enter a title + You need to enter a title + + + ThemeManager + + + Theme Exists + Theme Exists + + + Ui_MainWindow + + + &Help + &Help + + + Ui_EditVerseDialog + + + Bridge + Bridge + + + Ui_OpenSongExportDialog + + + OpenSong Song Exporter + OpenSong Song Exporter + + + Ui_AmendThemeDialog + + + Vertical Align: + Vertical Align: + + + TestMediaManager + + + Item2 + + + + + Item1 + + + + + Ui_AmendThemeDialog + + + Top + Top + + + BiblesTab + + + Display Dual Bible Verses + Display Dual Bible Verses + + + Ui_MainWindow + + + Toggle Service Manager + Toggle Service Manager + + + MediaManagerItem + + + &Add to Service + &Add to Service + + + AmendThemeForm + + + First Color: + First Color: + + + ThemesTab + + + Song level + Song level + + + alertsPlugin + + + Show an alert message + Show an alert message + + + Ui_MainWindow + + + Ctrl+F1 + Ctrl+F1 + + + Save the current service under a new name + Save the current service under a new name + + + Ui_OpenLPExportDialog + + + Remove Selected + Remove Selected + + + ThemeManager + + + Delete theme + Delete theme + + + ImageTab + + + Image Settings + Image Settings + + + Ui_OpenSongImportDialog + + + OpenSong Song Importer + OpenSong Song Importer + + + SongUsagePlugin + + + &Extract recorded data + &Extract recorded data + + + AlertsTab + + + Font Name: + Font Name: + + + Ui_MainWindow + + + &Web Site + &Web Site + + + MediaManagerItem + + + Send the selected item live + Send the selected item live + + + Ui_MainWindow + + + M&ode + M&ode + + + Translate the interface to your language + Translate the interface to your language + + + Service Manager + Service Manager + + + CustomMediaItem + + + Custom + Custom + + + ImageMediaItem + + + No items selected... + No items selected... + + + Ui_BibleImportWizard + + + OSIS + OSIS + + + SongsPlugin + + + openlp.org 1.0 + openlp.org 1.0 + + + Ui_MainWindow + + + &Theme + &Theme + + + Ui_EditVerseDialog + + + Edit Verse + Edit Verse + + + Ui_MainWindow + + + &Language + &Language + + + ServiceManager + + + Move to end + Move to end + + + Your service is unsaved, do you want to save those changes before creating a new one ? + Your service is unsaved, do you want to save those changes before creating a new one ? + + + Ui_OpenSongExportDialog + + + Remove Selected + Remove Selected + + + SongMediaItem + + + Search: + Search: + + + MainWindow + + + Save Changes to Service? + Save Changes to Service? + + + Your service has changed, do you want to save those changes? + Your service has changed, do you want to save those changes? + + + EditSongForm + + + Invalid verse entry - values must be Numeric, I,B,C,T,P,E,O + Invalid verse entry - values must be Numeric, I,B,C,T,P,E,O + + + Ui_EditSongDialog + + + &Add to Song + &Add to Song + + + Ui_MainWindow + + + &About + &About + + + BiblesTab + + + Only show new chapter numbers + Only show new chapter numbers + + + ImportWizardForm + + + You need to specify a version name for your Bible! + You need to specify a version name for your Bible! + + + Ui_AlertEditDialog + + + Delete + Delete + + + EditCustomForm + + + Error + Error + + + ThemesTab + + + 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. + 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. + + + SongMaintenanceForm + + + This topic can't be deleted, it is currently assigned to at least one song! + + + + + AlertEditForm + + + Item selected to Add + Item selected to Add + + + Ui_AmendThemeDialog + + + Right + Right + + + ThemeManager + + + Save Theme - (%s) + Save Theme - (%s) + + + ImageMediaItem + + + Allow background of live slide to be overridden + Allow background of live slide to be overridden + + + MediaManagerItem + + + Add the selected item(s) to the service + Add the selected item(s) to the service + + + AuthorsForm + + + Error + Error + + + BibleMediaItem + + + Book: + Book: + + + Ui_AmendThemeDialog + + + Font Color: + Font Color: + + + Ui_OpenLPImportDialog + + + Select openlp.org songfile to import: + Select openlp.org songfile to import: + + + Ui_SettingsDialog + + + Settings + Settings + + + BiblesTab + + + Layout Style: + Layout Style: + + + MediaManagerItem + + + Edit the selected + Edit the selected + + + SlideController + + + Move to next + Move to next + + + Ui_MainWindow + + + &Plugin List + &Plugin List + + + BiblePlugin + + + &Bible + &Bible + + + Ui_BibleImportWizard + + + Web Download + Web Download + + + Ui_AmendThemeDialog + + + Horizontal + Horizontal + + + ImportWizardForm + + + Open OSIS file + Open OSIS file + + + Ui_AmendThemeDialog + + + Circular + + + + + pt + pt + + + Ui_MainWindow + + + &Add Tool... + &Add Tool... + + + SongMaintenanceForm + + + Delete Topic + Delete Topic + + + ServiceManager + + + Move up + Move up + + + Ui_OpenLPImportDialog + + + Lyrics + Lyrics + + + BiblesTab + + + No brackets + No brackets + + + Ui_AlertEditDialog + + + Maintain Alerts + Maintain Alerts + + + Ui_AmendThemeDialog + + + px + px + + + ServiceManager + + + Select a theme for the service + Select a theme for the service + + + ThemesTab + + + Themes + Themes + + + ServiceManager + + + Move to bottom + Move to bottom + + + Ui_PluginViewDialog + + + Status: + Status: + + + Ui_EditSongDialog + + + CCLI Number: + CCLI Number: + + + ImportWizardForm + + + This Bible already exists! Please import a different Bible or first delete the existing one. + + + + + Ui_MainWindow + + + &Translate + &Translate + + + AlertEditForm + + + Please Save or Clear seletced item + + + + + BiblesTab + + + Bibles + Bibles + + + Ui_SongMaintenanceDialog + + + Authors + Authors + + + SongUsageDetailForm + + + Output File Location + Output File Location + + + BiblesTab + + + { and } + { and } + + + GeneralTab + + + Prompt to save Service before starting New + Prompt to save Service before starting New + + + ImportWizardForm + + + Starting import... + Starting import... + + + BiblesTab + + + Note: +Changes don't affect verses already in the service + Note: +Changes don't affect verses already in the service + + + Ui_EditVerseDialog + + + Intro + Intro + + + ServiceManager + + + Move up order + Move up order + + + PresentationTab + + + available + available + + + ThemeManager + + + default + default + + + SongMaintenanceForm + + + Delete Author + Delete Author + + + Ui_AmendThemeDialog + + + Display Location + Display Location + + + Ui_PluginViewDialog + + + Version: + Version: + + + Ui_AlertEditDialog + + + Add + Add + + + GeneralTab + + + General + General + + + Ui_AmendThemeDialog + + + Y Position: + Y Position: + + + ServiceManager + + + Move down order + Move down order + + + BiblesTab + + + verse per slide + verse per slide + + + Ui_AmendThemeDialog + + + Show Shadow: + Show Shadow: + + + AlertsTab + + + Preview + Preview + + + alertsPlugin + + + <b>Alerts Plugin</b><br>This plugin controls the displaying of alerts on the presentations screen + <b>Alerts Plugin</b><br>This plugin controls the displaying of alerts on the presentations screen + + + GeneralTab + + + Show the splash screen + Show the splash screen + + + Ui_MainWindow + + + New Service + New Service + + + SlideController + + + Move to first + Move to first + + + Ui_MainWindow + + + &Online Help + &Online Help + + + SlideController + + + Blank Screen + Blank Screen + + + Ui_MainWindow + + + Save Service + Save Service + + + Save &As... + Save &As... + + + Toggle the visibility of the Media Manager + Toggle the visibility of the Media Manager + + + BibleMediaItem + + + No Book Found + No Book Found + + + Ui_EditSongDialog + + + Add + Add + + + alertsPlugin + + + &Alert + &Alert + + + BibleMediaItem + + + Advanced + Advanced + + + ImageMediaItem + + + Image(s) + Image(s) + + + Ui_MainWindow + + + F11 + F11 + + + F10 + F10 + + + F12 + F12 + + + Ui_BibleImportWizard + + + Select the import format, and where to import from. + Select the import format, and where to import from. + + + Ui_MainWindow + + + Alt+F7 + Alt+F7 + + + Add an application to the list of tools + Add an application to the list of tools + + + MediaPlugin + + + <b>Media Plugin</b><br>This plugin allows the playing of audio and video media + <b>Media Plugin</b><br>This plugin allows the playing of audio and video media + + + BiblesTab + + + Bible Theme: + Bible Theme: + + + SongsPlugin + + + Export songs in openlp.org 1.0 format + Export songs in openlp.org 1.0 format + + + Ui_MainWindow + + + Theme Manager + Theme Manager + + + AlertsTab + + + Alerts + Alerts + + + Ui_customEditDialog + + + Move slide down 1 + Move slide down 1 + + + Ui_AmendThemeDialog + + + Font: + Font: + + + ServiceManager + + + Load an existing service + Load an existing service + + + Ui_MainWindow + + + Toggle the visibility of the Theme Manager + Toggle the visibility of the Theme Manager + + + PresentationTab + + + Presentations + Presentations + + + SplashScreen + + + Starting + Starting + + + ImageTab + + + Slide Loop Delay: + Slide Loop Delay: + + + SlideController + + + Verse + Verse + + + AlertsTab + + + Alert timeout: + Alert timeout: + + + Ui_MainWindow + + + &Preview Pane + &Preview Pane + + + MediaManagerItem + + + Add a new + + + + + ThemeManager + + + Select Theme Import File + Select Theme Import File + + + New Theme + New Theme + + + MediaMediaItem + + + Media + Media + + + Ui_AmendThemeDialog + + + Preview + Preview + + + Outline Size: + Outline Size: + + + Ui_OpenSongExportDialog + + + Progress: + Progress: + + + AmendThemeForm + + + Second Color: + Second Color: + + + Ui_EditSongDialog + + + Theme, Copyright Info && Comments + Theme, Copyright Info && Comments + + + Ui_AboutDialog + + + Credits + Credits + + + BibleMediaItem + + + To: + To: + + + Ui_EditSongDialog + + + Song Book + Song Book + + + alertsPlugin + + + F7 + F7 + + + Ui_OpenLPExportDialog + + + Author + Author + + + Ui_AmendThemeDialog + + + Wrap Indentation + Wrap Indentation + + + ThemeManager + + + Import a theme + Import a theme + + + PresentationPlugin + + + <b>Presentation Plugin</b> <br> Delivers 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. + + + + + ImageMediaItem + + + Image + Image + + + BibleMediaItem + + + Clear + Clear + + + Ui_MainWindow + + + Save Service As + Save Service As + + + Ui_AlertDialog + + + Cancel + Cancel + + + Ui_OpenLPImportDialog + + + Import + Import + + + Ui_EditVerseDialog + + + Chorus + Chorus + + + Ui_EditSongDialog + + + Edit All + Edit All + + + AuthorsForm + + + You need to type in the last name of the author. + You need to type in the last name of the author. + + + SongsTab + + + Songs Mode + Songs Mode + + + Ui_AmendThemeDialog + + + Left + Left + + + RemotesPlugin + + + <b>Remote Plugin</b><br>This plugin provides the ability to send messages to a running version of openlp on a different computer.<br>The Primary use for this would be to send alerts from a creche + <b>Remote Plugin</b><br>This plugin provides the ability to send messages to a running version of openlp on a different computer.<br>The Primary use for this would be to send alerts from a creche + + + ImageTab + + + Images + Images + + + BibleMediaItem + + + Verse: + Verse: + + + Ui_OpenLPExportDialog + + + openlp.org Song Exporter + openlp.org Song Exporter + + + Song Export List + Song Export List + + + ThemeManager + + + Export theme + Export theme + + + Ui_SongMaintenanceDialog + + + Delete + Delete + + + Ui_AmendThemeDialog + + + Theme Name: + Theme Name: + + + Ui_AboutDialog + + + About OpenLP + About OpenLP + + + Ui_MainWindow + + + Toggle the visibility of the Service Manager + Toggle the visibility of the Service Manager + + + PresentationMediaItem + + + A presentation with that filename already exists. + A presentation with that filename already exists. + + + AlertsTab + + + openlp.org + openlp.org + + + ImportWizardForm + + + Invalid Books File + Invalid Books File + + + Ui_OpenLPImportDialog + + + Song Title + Song Title + + + MediaManagerItem + + + &Show Live + &Show Live + + + AlertsTab + + + Keep History: + Keep History: + + + Ui_AmendThemeDialog + + + Image: + Image: + + + Ui_customEditDialog + + + Set Theme for Slides + Set Theme for Slides + + + Ui_MainWindow + + + More information about OpenLP + More information about OpenLP + + + AlertsTab + + + Background Color: + Background Color: + + + SongMaintenanceForm + + + No topic selected! + No topic selected! + + + Ui_MainWindow + + + &Media Manager + &Media Manager + + + &Tools + &Tools + + + AmendThemeForm + + + Background Color: + Background Color: + + + Ui_EditSongDialog + + + A&dd to Song + A&dd to Song + + + Title: + Title: + + + GeneralTab + + + Screen + Screen + + + AlertsTab + + + s + s + + + ImagePlugin + + + <b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any somgs which are rendered will use the selected image from the background instead of the one provied by the theme.<br> + <b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any somgs which are rendered will use the selected image from the background instead of the one provied by the theme.<br> + + + Ui_AlertEditDialog + + + Clear + Clear + + + Ui_BibleImportWizard + + + Please wait while your Bible is imported. + Please wait while your Bible is imported. + + + MediaManagerItem + + + No items selected... + No items selected... + + + Ui_OpenLPImportDialog + + + Select All + Select All + + + Ui_AmendThemeDialog + + + Font Main + Font Main + + + ImageMediaItem + + + Images (*.jpg *jpeg *.gif *.png *.bmp) + Images (*.jpg *jpeg *.gif *.png *.bmp) + + + Ui_OpenLPImportDialog + + + Title + Title + + + Ui_OpenSongExportDialog + + + Select OpenSong song folder: + Select OpenSong song folder: + + + Ui_MainWindow + + + Toggle Media Manager + Toggle Media Manager + + + SongUsagePlugin + + + &Song Usage + &Song Usage + + + GeneralTab + + + Monitors + Monitors + + + EditCustomForm + + + You need to enter a slide + You need to enter a slide + + + Ui_SongMaintenanceDialog + + + Topics + Topics + + + ImportWizardForm + + + You need to specify a file to import your Bible from! + + + + + Ui_EditVerseDialog + + + Verse Type + Verse Type + + + OpenSongBible + + + Importing + Importing + + + Ui_EditSongDialog + + + Comments + Comments + + + AlertsTab + + + Bottom + Bottom + + + Ui_MainWindow + + + Create a new Service + Create a new Service + + + AlertsTab + + + Top + Top + + + ServiceManager + + + &Preview Verse + &Preview Verse + + + Ui_PluginViewDialog + + + TextLabel + TextLabel + + + AlertsTab + + + Font Size: + Font Size: + + + Ui_PluginViewDialog + + + About: + About: + + + Inactive + Inactive + + + Ui_OpenSongExportDialog + + + Ready to export + Ready to export + + + Export + Export + + + Ui_PluginViewDialog + + + Plugin List + Plugin List + + + Ui_AmendThemeDialog + + + Transition Active: + Transition Active: + + + Ui_BibleImportWizard + + + Proxy Server (Optional) + Proxy Server (Optional) + + + Ui_EditSongDialog + + + &Manage Authors, Topics, Books + &Manage Authors, Topics, Books + + + Ui_SongUsageDetailDialog + + + Audit Detail Extraction + + + + + Ui_OpenLPExportDialog + + + Ready to export + Ready to export + + + EditCustomForm + + + Save && Preview + Save && Preview + + + Ui_OpenLPExportDialog + + + Select All + Select All + + + Ui_SongUsageDetailDialog + + + to + to + + + Ui_AmendThemeDialog + + + Size: + Size: + + + MainWindow + + + OpenLP Main Display Blanked + OpenLP Main Display Blanked + + + Ui_OpenLPImportDialog + + + Remove Selected + Remove Selected + + + Ui_EditSongDialog + + + Delete + Delete + + + ImportWizardForm + + + You need to specify an OpenSong Bible file to import! + You need to specify an OpenSong Bible file to import! + + + PresentationMediaItem + + + File exists + File exists + + + Ui_OpenLPExportDialog + + + Title + Title + + + Ui_OpenSongImportDialog + + + Ready to import + Ready to import + + + SlideController + + + Stop continuous loop + Stop continuous loop + + + s + s + + + SongMediaItem + + + Song Maintenance + Song Maintenance + + + Ui_customEditDialog + + + Edit + Edit + + + Ui_AmendThemeDialog + + + Gradient : + Gradient : + + + ImportWizardForm + + + Invalid Verse File + Invalid Verse File + + + EditSongForm + + + Error + Error + + + Ui_customEditDialog + + + Add New + Add New + + + Ui_AuthorsDialog + + + Display name: + Display name: + + + SongMaintenanceForm + + + Are you sure you want to delete the selected topic? + Are you sure you want to delete the selected topic? + + + Ui_AmendThemeDialog + + + Bold/Italics + Bold/Italics + + + Ui_SongMaintenanceDialog + + + Song Maintenance + Song Maintenance + + + Ui_BibleImportWizard + + + Welcome to the Bible Import Wizard + Welcome to the Bible Import Wizard + + + SongsTab + + + Songs + Songs + + + Ui_BibleImportWizard + + + Password: + Password: + + + Ui_MainWindow + + + &Theme Manager + &Theme Manager + + + MediaManagerItem + + + Preview the selected item + Preview the selected item + + + Ui_BibleImportWizard + + + Version Name: + Version Name: + + + Ui_AboutDialog + + + About + About + + + MediaMediaItem + + + Select Media + Select Media + + + Ui_AmendThemeDialog + + + Horizontal Align: + Horizontal Align: + + + ServiceManager + + + &Edit Item + &Edit Item + + + Ui_AmendThemeDialog + + + Background Type: + Background Type: + + + Ui_MainWindow + + + &Save + &Save + + + OpenLP 2.0 + OpenLP 2.0 + + + ThemeManager + + + A theme with this name already exists, would you like to overwrite it? + A theme with this name already exists, would you like to overwrite it? + + + PresentationMediaItem + + + Select Presentation(s) + Select Presentation(s) + + + ThemeManager + + + Export a theme + Export a theme + + + AmendThemeForm + + + Open file + Open file + + + Ui_TopicsDialog + + + Topic Maintenance + Topic Maintenance + + + Ui_customEditDialog + + + Clear edit area + Clear edit area + + + Ui_AmendThemeDialog + + + Show Outline: + Show Outline: + + + SongBookForm + + + You need to type in a book name! + + + + + ImportWizardForm + + + Open OpenSong Bible + Open OpenSong Bible + + + Ui_MainWindow + + + Look && &Feel + Look && &Feel + + + Ui_BibleImportWizard + + + Ready. + Ready. + + + ThemeManager + + + You have not selected a theme! + + + + + Ui_SongMaintenanceDialog + + + Books/Hymnals + Books/Hymnals + + + Ui_AboutDialog + + + Contribute + Contribute + + + Ui_AmendThemeDialog + + + Gradient + Gradient + + + Ui_BibleImportWizard + + + Books Location: + Books Location: + + + Ui_OpenSongExportDialog + + + Full Song List + Full Song List + + + GeneralTab + + + SongSelect Password: + SongSelect Password: + + + diff --git a/resources/i18n/openlp_en_ZA.ts b/resources/i18n/openlp_en_ZA.ts new file mode 100644 index 000000000..a85573725 --- /dev/null +++ b/resources/i18n/openlp_en_ZA.ts @@ -0,0 +1,4457 @@ + + + + BibleMediaItem + + + Quick + Quick + + + Ui_customEditDialog + + + Delete selected slide + Delete selected slide + + + BiblesTab + + + ( and ) + ( and ) + + + RemoteTab + + + Remotes + Remotes + + + Ui_EditSongDialog + + + &Remove + &Remove"&" needs to stay in, it's a shortcut in a menu. + + + Ui_AmendThemeDialog + + + Shadow Size: + Shadow Size: + + + Ui_OpenSongExportDialog + + + Close + Close + + + ThemeManager + + + Import Theme + Import Theme + + + Ui_AmendThemeDialog + + + Slide Transition + Slide Transition + + + SongMaintenanceForm + + + Are you sure you want to delete the selected book? + Are you sure you want to delete the selected book? + + + ThemesTab + + + Theme level + Theme level + + + BibleMediaItem + + + Bible + Bible + + + ServiceManager + + + Save Changes to Service? + Save Changes to Service? + + + SongUsagePlugin + + + &Delete recorded data + &Delete recorded data + + + Ui_OpenLPExportDialog + + + Song Title + Song Title + + + Ui_customEditDialog + + + Edit selected slide + Edit selected slide + + + SongMediaItem + + + CCLI Licence: + CCLI License: + + + Ui_SongUsageDeleteDialog + + + Audit Delete + Audit Delete + + + Ui_BibleImportWizard + + + Bible Import Wizard + Bible Import Wizard + + + Ui_customEditDialog + + + Edit All + Edit All + + + Ui_ServiceNoteEdit + + + Service Item Notes + Service Item Notes + + + SongMaintenanceForm + + + Couldn't save your author! + Couldn't save your author! + + + Ui_customEditDialog + + + Clear + Clear + + + ThemesTab + + + Global theme + Global theme + + + SongUsagePlugin + + + Start/Stop live song usage recording + Start/Stop live song usage recording + + + MainWindow + + + The Main Display has been blanked out + The Main Display has been blanked out + + + Ui_OpenSongExportDialog + + + Lyrics + Lyrics + + + Ui_AlertDialog + + + Display + Display + + + Ui_customEditDialog + + + Delete + Delete + + + Ui_EditVerseDialog + + + Verse + Verse + + + SongMaintenanceForm + + + This author can't be deleted, they are currently assigned to at least one song! + This author can't be deleted, they are currently assigned to at least one song! + + + ThemeManager + + + Create a new theme + Create a new theme + + + Ui_MainWindow + + + Open an existing service + Open an existing service + + + SlideController + + + Move to previous + Move to previous + + + SongsPlugin + + + &Song + &Song + + + Ui_PluginViewDialog + + + Plugin Details + Plugin Details + + + AlertsTab + + + pt + pt + + + Edit History: + Edit History: + + + Ui_MainWindow + + + &File + &File + + + SongMaintenanceForm + + + Couldn't add your book! + Couldn't add your book! + + + BiblesTab + + + verse per line + verse per line + + + Ui_customEditDialog + + + Theme: + Theme: + + + SongMaintenanceForm + + + Error + Error + + + Ui_BibleImportWizard + + + Bible: + Bible: + + + ImportWizardForm + + + You need to specify a file with books of the Bible to use in the import! + You need to specify a file with books of the Bible to use in the import! + + + ThemeManager + + + Delete Theme + Delete Theme + + + SplashScreen + + + Splash Screen + Splash Screen + + + SongMediaItem + + + Song + Song + + + SongUsageDeleteForm + + + Delete Selected Audit Events? + Delete selected song usage events? + + + Ui_OpenSongExportDialog + + + Song Title + Song Title + + + Ui_AmendThemeDialog + + + Bottom + Bottom + + + Ui_MainWindow + + + List the Plugins + List the plugins + + + SongMaintenanceForm + + + No author selected! + No author selected! + + + SongUsagePlugin + + + <b>SongUsage Plugin</b><br>This plugin records the use of songs and when they have been used during a live service + <b>SongUsage Plugin</b><br>This plugin records the use of songs and when they have been used during a live service + + + Ui_customEditDialog + + + Move slide Up 1 + Move slide up 1 + + + SongsPlugin + + + OpenSong + OpenSong + + + AlertsManager + + + Alert message created and delayed + Alert message created and delayed + + + Ui_EditSongDialog + + + Alternative Title: + Alternative Title: + + + ServiceManager + + + Open Service + Open Service + + + BiblesTab + + + Display Style: + Display Style: + + + Ui_AmendThemeDialog + + + Image + Image + + + EditSongForm + + + You need to enter a song title. + You need to enter a song title. + + + ThemeManager + + + Error + Error + + + ImportWizardForm + + + Invalid Bible Location + Invalid Bible Location + + + ThemesTab + + + Global level + Global level + + + ThemeManager + + + Make Global + Make Global + + + Ui_MainWindow + + + &Service Manager + &Service Manager + + + Ui_OpenLPImportDialog + + + Author + Author + + + Ui_AmendThemeDialog + + + Height: + Height: + + + ThemeManager + + + Delete a theme + Delete a theme + + + Ui_BibleImportWizard + + + Crosswalk + Crosswalk + + + SongBookForm + + + Error + Error + + + Ui_AuthorsDialog + + + Last name: + Last name: + + + Ui_customEditDialog + + + Title: + Title: + + + ImportWizardForm + + + You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. + You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. + + + SongMediaItem + + + Maintain the lists of authors, topics and books + Maintain the lists of authors, topics and books + + + Ui_AlertEditDialog + + + Save + Save + + + EditCustomForm + + + You have unsaved data + You have unsaved data + + + Ui_AmendThemeDialog + + + Outline + Outline + + + BibleMediaItem + + + Text Search + Text Search + + + Ui_BibleImportWizard + + + CSV + CSV + + + SongUsagePlugin + + + Delete song usage to specified date + Delete song usage to specified date + + + Ui_SongUsageDetailDialog + + + Report Location + Report Location + + + Ui_BibleImportWizard + + + OpenSong + OpenSong + + + Ui_MainWindow + + + Open Service + Open Service + + + BibleMediaItem + + + Find: + Find: + + + ImageMediaItem + + + Select Image(s) + Select Image(s) + + + BibleMediaItem + + + Search Type: + Search Type: + + + Ui_MainWindow + + + Media Manager + Media Manager + + + Alt+F4 + Alt+F4 + + + MediaManagerItem + + + &Preview + &Preview + + + GeneralTab + + + CCLI Details + CCLI Details + + + BibleMediaItem + + + Bible not fully loaded + Bible not fully loaded + + + Ui_MainWindow + + + Toggle the visibility of the Preview Panel + Toggle the visibility of the Preview Panel + + + ImportWizardForm + + + Bible Exists + Bible Exists + + + Ui_MainWindow + + + &User Guide + &User Guide + + + SongUsageDeleteForm + + + Are you sure you want to delete selected Audit Data? + Are you sure you want to delete the selected song usage data? + + + Ui_MainWindow + + + Set the interface language to English + Set the interface language to English + + + Ui_AmendThemeDialog + + + Main Font + Main Font + + + ImportWizardForm + + + Empty Copyright + Empty Copyright + + + CustomPlugin + + + <b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br> + <b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin. + + + AuthorsForm + + + You need to type in the first name of the author. + You need to type in the first name of the author. + + + SongsTab + + + Display Verses on Live Tool bar: + Display Verses on Live Tool bar: + + + ServiceManager + + + Move to top + Move to top + + + ImageMediaItem + + + Override background + Override background + + + Ui_SongMaintenanceDialog + + + Edit + Edit + + + Ui_OpenSongExportDialog + + + Select All + Select All + + + ThemesTab + + + 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 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. + + + PresentationMediaItem + + + Presentation + Presentation + + + Ui_AmendThemeDialog + + + Solid Color + Solid Colour + + + CustomTab + + + Custom + Custom + + + Ui_OpenLPImportDialog + + + Ready to import + Ready to import + + + MainWindow + + + OpenLP version %s has been updated to version %s + +You can obtain the latest version from http://openlp.org + OpenLP version %s has been updated to version %s + +You can obtain the latest version from http://openlp.org + + + Ui_BibleImportWizard + + + File Location: + File Location: + + + SlideController + + + Go to Verse + Go to Verse + + + Ui_MainWindow + + + &Import + &Import + + + Quit OpenLP + Quit OpenLP + + + Ui_BibleImportWizard + + + 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. + 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. + + + SongMaintenanceForm + + + Couldn't add your topic! + Couldn't add your topic! + + + ImportWizardForm + + + Empty Version Name + Empty Version Name + + + Ui_MainWindow + + + &Preview Panel + &Preview Panel + + + SlideController + + + Start continuous loop + Start continuous loop + + + ServiceManager + + + Move down + Move down + + + GeneralTab + + + primary + primary + + + Ui_EditSongDialog + + + Add a Theme + Add a Theme + + + Ui_MainWindow + + + &New + &New + + + Ui_customEditDialog + + + Credits: + Credits: + + + SlideController + + + Live + Live + + + GeneralTab + + + Show blank screen warning + Show blank screen warning + + + BiblesTab + + + continuous + continuous + + + Ui_EditVerseDialog + + + Number + Number + + + GeneralTab + + + Application Startup + Application Startup + + + Ui_AmendThemeDialog + + + Use Default Location: + Use Default Location: + + + Ui_OpenSongImportDialog + + + Import + Import + + + Ui_AmendThemeDialog + + + Other Options + Other Options + + + Ui_EditSongDialog + + + Verse Order: + Verse Order: + + + Ui_SongUsageDetailDialog + + + ASelect Date Range + ASelect Date Range + + + Ui_MainWindow + + + Default Theme: + Default Theme: + + + Toggle Preview Panel + Toggle Preview Panel + + + SongMediaItem + + + Lyrics + Lyrics + + + Ui_OpenLPImportDialog + + + Progress: + Progress: + + + Ui_AmendThemeDialog + + + Shadow + Shadow + + + GeneralTab + + + Select monitor for output display: + Select monitor for output display: + + + Ui_MainWindow + + + &Settings + &Settings + + + Ui_AmendThemeDialog + + + Italics + Italics + + + ServiceManager + + + Create a new service + Create a new service + + + Ui_AmendThemeDialog + + + Background: + Background: + + + Ui_OpenLPImportDialog + + + openlp.org Song Importer + openlp.org Song Importer + + + Ui_BibleImportWizard + + + Copyright: + Copyright: + + + ThemesTab + + + Service level + Service level + + + BiblesTab + + + [ and ] + [ and ] + + + Ui_BibleImportWizard + + + Verse Location: + Verse Location: + + + MediaManagerItem + + + You must select one or more items + You must select one or more items + + + GeneralTab + + + Application Settings + Application Settings + + + ServiceManager + + + Save this service + Save this service + + + ImportWizardForm + + + Open Books CSV file + Open Books CSV file + + + GeneralTab + + + SongSelect Username: + SongSelect Username: + + + Ui_AmendThemeDialog + + + X Position: + X Position: + + + BibleMediaItem + + + No matching book could be found in this Bible. + No matching book could be found in this Bible. + + + Ui_BibleImportWizard + + + Server: + Server: + + + SongMaintenanceForm + + + Couldn't save your book! + Couldn't save your book! + + + Ui_EditVerseDialog + + + Ending + Ending + + + CustomTab + + + Display Footer: + Display Footer: + + + ImportWizardForm + + + Invalid OpenSong Bible + Invalid OpenSong Bible + + + GeneralTab + + + CCLI Number: + CCLI Number: + + + Ui_AmendThemeDialog + + + Center + Centre + + + ServiceManager + + + Theme: + Theme: + + + Ui_MainWindow + + + &Live + &Live + + + Ui_AmendThemeDialog + + + <Color2> + <Color2> + + + Ui_MainWindow + + + English + English + + + ImageMediaItem + + + You must select one or more items + You must select one or more items + + + Ui_AuthorsDialog + + + First name: + First name: + + + Ui_OpenLPExportDialog + + + Select openlp.org export filename: + Select openlp.org export filename: + + + Ui_BibleImportWizard + + + Permission: + Permission: + + + Ui_OpenSongImportDialog + + + Close + Close + + + Ui_AmendThemeDialog + + + Opaque + Opaque + + + SongMaintenanceForm + + + This book can't be deleted, it is currently assigned to at least one song! + This book can't be deleted, it is currently assigned to at least one song! + + + ImportWizardForm + + + Your Bible import failed. + Your Bible import failed. + + + SlideController + + + Start playing media + Start playing media + + + SongMediaItem + + + Type: + Type: + + + Ui_AboutDialog + + + Close + Close + + + TopicsForm + + + You need to type in a topic name! + You need to type in a topic name! + + + Ui_OpenSongExportDialog + + + Song Export List + Song Export List + + + BibleMediaItem + + + Dual: + Dual: + + + ImageTab + + + sec + sec + + + ServiceManager + + + Delete From Service + Delete From Service + + + GeneralTab + + + Automatically open the last service + Automatically open the last service + + + Ui_OpenLPImportDialog + + + Song Import List + Song Import List + + + Ui_OpenSongExportDialog + + + Author + Author + + + Ui_AmendThemeDialog + + + Outline Color: + Outline Colour: + + + Ui_BibleImportWizard + + + Select Import Source + Select Import Source + + + Ui_MainWindow + + + F9 + F9 + + + F8 + F8 + + + ServiceManager + + + &Change Item Theme + &Change Item Theme + + + Ui_OpenSongImportDialog + + + OpenSong Folder: + OpenSong Folder: + + + Ui_OpenLPImportDialog + + + Import File Song List + Import File Song List + + + Ui_customEditDialog + + + Edit Custom Slides + Edit Custom Slides + + + Ui_BibleImportWizard + + + Set up the Bible's license details. + Set up the Bible's license details. + + + Ui_AmendThemeDialog + + + Alignment + Alignment + + + SongMaintenanceForm + + + Delete Book + Delete Book + + + ThemeManager + + + Edit a theme + Edit a theme + + + Ui_BibleImportWizard + + + BibleGateway + BibleGateway + + + GeneralTab + + + Preview Next Song from Service Manager + Preview Next Song from Service Manager + + + Ui_EditSongDialog + + + Title && Lyrics + Title && Lyrics + + + SongMaintenanceForm + + + No book selected! + No book selected! + + + SlideController + + + Move to live + Move to live + + + Ui_EditVerseDialog + + + Other + Other + + + Ui_EditSongDialog + + + Theme + Theme + + + ServiceManager + + + Save Service + Save Service + + + Ui_MainWindow + + + Save the current service to disk + Save the current service to disk + + + BibleMediaItem + + + Chapter: + Chapter: + + + Search + Search + + + PresentationTab + + + Available Controllers + Available Controllers + + + ImportWizardForm + + + Open Verses CSV file + Open Verses CSV file + + + TopicsForm + + + Error + Error + + + RemoteTab + + + Remotes Receiver Port + Remotes Receiver Port + + + Ui_MainWindow + + + &View + &View + + + Ui_AmendThemeDialog + + + Normal + Normal + + + Ui_OpenLPExportDialog + + + Close + Close + + + Ui_BibleImportWizard + + + Username: + Username: + + + ThemeManager + + + Edit Theme + Edit Theme + + + SlideController + + + Preview + Preview + + + Ui_AlertDialog + + + Alert Message + Alert Message + + + ImportWizardForm + + + Finished import. + Finished import. + + + You need to specify a file of Bible verses to import! + You need to specify a file of Bible verses to import! + + + AlertsTab + + + Location: + Location: + + + Ui_EditSongDialog + + + Authors, Topics && Book + Authors, Topics && Book + + + EditSongForm + + + You need to enter some verses. + You need to enter some verses. + + + Ui_BibleImportWizard + + + Download Options + Download Options + + + BiblePlugin + + + <strong>Bible Plugin</strong><br />This plugin allows bible verses from different sources to be displayed on the screen during the service. + <strong>Bible Plugin</strong><br />This plugin allows bible verses from different sources to be displayed on the screen during the service. + + + Ui_EditSongDialog + + + Copyright Information + Copyright Information + + + Ui_MainWindow + + + &Export + &Export + + + Ui_AmendThemeDialog + + + Bold + Bold + + + SongsPlugin + + + Export songs in OpenLP 2.0 format + Export songs in OpenLP 2.0 format + + + MediaManagerItem + + + Load a new + Load a new + + + AlertEditForm + + + Missing data + Missing data + + + SongsPlugin + + + <b>Song Plugin</b> <br>This plugin allows Songs to be managed and displayed.<br> + <b>Song Plugin</b><br>This plugin allows songs to be managed and displayed.<br> + + + Ui_AmendThemeDialog + + + Footer Font + Footer Font + + + EditSongForm + + + Invalid verse entry - vX + Invalid verse entry - vX + + + MediaManagerItem + + + Delete the selected item + Delete the selected item + + + Ui_OpenLPExportDialog + + + Export + Export + + + Ui_BibleImportWizard + + + Location: + Location: + + + BibleMediaItem + + + Keep + Keep + + + SongUsagePlugin + + + Generate report on Song Usage + Generate report on Song Usage + + + Ui_EditSongDialog + + + Topic + Topic + + + Ui_MainWindow + + + &Open + &Open + + + AuthorsForm + + + You haven't set a display name for the author, would you like me to combine the first and last names for you? + You haven't set a display name for the author, would you like me to combine the first and last names for you? + + + AmendThemeForm + + + Slide Height is %s rows + Slide Height is %s rows + + + Ui_EditVerseDialog + + + Pre-Chorus + Pre-Chorus + + + Ui_EditSongDialog + + + Lyrics: + Lyrics: + + + Ui_AboutDialog + + + Project Lead + Raoul "superfly" Snyman + +Developers + Tim "TRB143" Bentley + Jonathan "gushie" Corwin + Michael "cocooncrash" Gorven + Scott "sguerrieri" Guerrieri + Raoul "superfly" Snyman + Maikel Stuivenberg + Martin "mijiti" Thompson + Jon "Meths" Tibble + Carsten "catini" Tingaard + +Testers + Wesley "wrst" Stout + Project Lead + Raoul "superfly" Snyman + +Developers + Tim "TRB143" Bentley + Jonathan "gushie" Corwin + Michael "cocooncrash" Gorven + Scott "sguerrieri" Guerrieri + Raoul "superfly" Snyman + Maikel Stuivenberg + Martin "mijiti" Thompson + Jon "Meths" Tibble + Carsten "catini" Tingaard + +Testers + Wesley "wrst" Stout + + + SongMediaItem + + + Titles + Titles + + + Ui_OpenLPExportDialog + + + Lyrics + Lyrics + + + PresentationMediaItem + + + Present using: + Present using: + + + SongMediaItem + + + Clear + Clear + + + ServiceManager + + + &Live Verse + &Live Verse + + + Ui_OpenSongImportDialog + + + Progress: + Progress: + + + Ui_MainWindow + + + Toggle Theme Manager + Toggle Theme Manager + + + Ui_AlertDialog + + + Alert Text: + Alert Text: + + + Ui_EditSongDialog + + + Edit + Edit + + + AlertsTab + + + Font Color: + Font Colour: + + + Ui_AmendThemeDialog + + + Theme Maintenance + Theme Maintenance + + + CustomTab + + + Custom Display + Custom Display + + + Ui_OpenSongExportDialog + + + Title + Title + + + Ui_AmendThemeDialog + + + <Color1> + <Color1> + + + Ui_EditSongDialog + + + Authors + Authors + + + ThemeManager + + + Export Theme + Export Theme + + + ServiceManager + + + (N) + (N) + + + Ui_SongBookDialog + + + Name: + Name: + + + Ui_AuthorsDialog + + + Author Maintenance + Author Maintenance + + + Ui_AmendThemeDialog + + + Font Footer + Font Footer + + + BiblesTab + + + Verse Display + Verse Display + + + Ui_MainWindow + + + &Options + &Options + + + BibleMediaItem + + + Results: + Results: + + + Ui_OpenLPExportDialog + + + Full Song List + Full Song List + + + SlideController + + + Move to last + Move to last + + + Ui_OpenLPExportDialog + + + Progress: + Progress: + + + Ui_SongMaintenanceDialog + + + Add + Add + + + SongMaintenanceForm + + + Are you sure you want to delete the selected author? + Are you sure you want to delete the selected author? + + + SongUsagePlugin + + + Song Usage Status + Song Usage Status + + + BibleMediaItem + + + Verse Search + Verse Search + + + Ui_SongBookDialog + + + Edit Book + Edit Book + + + EditSongForm + + + Save && Preview + Save && Preview + + + Ui_SongBookDialog + + + Publisher: + Publisher: + + + Ui_AmendThemeDialog + + + Font Weight: + Font Weight: + + + Ui_BibleImportWizard + + + Bible Filename: + Bible Filename: + + + Ui_AmendThemeDialog + + + Transparent + Transparent + + + SongMediaItem + + + Search + Search + + + Ui_BibleImportWizard + + + Format: + Format: + + + Ui_AmendThemeDialog + + + Background + Background + + + Ui_BibleImportWizard + + + Importing + Importing + + + Ui_customEditDialog + + + Edit all slides + Edit all slides. + + + SongsTab + + + Enable search as you type: + Enable search as you type + + + Ui_MainWindow + + + Ctrl+S + Ctrl+S + + + SongMediaItem + + + Authors + Authors + + + Ui_PluginViewDialog + + + Active + Active + + + SongMaintenanceForm + + + Couldn't save your topic! + Couldn't save your topic! + + + Ui_MainWindow + + + Ctrl+O + Ctrl+O + + + Ctrl+N + Ctrl+N + + + SongMaintenanceForm + + + Couldn't add your author! + Couldn't add your author! + + + Ui_AlertEditDialog + + + Edit + Edit + + + Ui_EditSongDialog + + + Song Editor + Song Editor + + + AlertsTab + + + Font + Font + + + SlideController + + + Edit and re-preview Song + Edit and re-preview Song. + + + Delay between slides in seconds + Delay between slides in seconds. + + + MediaManagerItem + + + &Edit + + + + + Ui_AmendThemeDialog + + + Vertical + Vertical + + + Width: + Width: + + + ThemeManager + + + You are unable to delete the default theme! + + + + + ThemesTab + + + Use the global theme, overriding any themes associated with either the service or the songs. + Use the global theme, overriding any themes associated with either the service or the songs. + + + BibleMediaItem + + + Version: + Version: + + + Ui_AboutDialog + + + OpenLP <version> build <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. + + + + + SongsPlugin + + + OpenLP 2.0 + OpenLP 2.0 + + + ServiceManager + + + New Service + New Service + + + Ui_TopicsDialog + + + Topic name: + Topic name: + + + ThemeManager + + + File is not a valid theme! + File is not a valid theme! + + + Ui_BibleImportWizard + + + License Details + License Details + + + Ui_AboutDialog + + + License + License + + + Ui_EditSongDialog + + + R&emove + + + + + Ui_AmendThemeDialog + + + Middle + Middle + + + Ui_customEditDialog + + + Save + Save + + + AlertEditForm + + + Item selected to Edit + Item selected to Edit + + + BibleMediaItem + + + From: + From: + + + Ui_AmendThemeDialog + + + Shadow Color: + Shadow Color: + + + ServiceManager + + + &Notes + + + + + Ui_MainWindow + + + E&xit + + + + + Ui_OpenLPImportDialog + + + Close + Close + + + MainWindow + + + OpenLP Version Updated + OpenLP Version Updated + + + Ui_customEditDialog + + + Replace edited slide + Replace edited slide. + + + Add new slide at bottom + Add new slide at bottom. + + + EditCustomForm + + + You need to enter a title + You need to enter a title. + + + ThemeManager + + + Theme Exists + Theme Exists + + + Ui_MainWindow + + + &Help + + + + + Ui_EditVerseDialog + + + Bridge + Bridge + + + Ui_OpenSongExportDialog + + + OpenSong Song Exporter + OpenSong Song Exporter + + + Ui_AmendThemeDialog + + + Vertical Align: + Vertical Align: + + + TestMediaManager + + + Item2 + + + + + Item1 + + + + + Ui_AmendThemeDialog + + + Top + Top + + + BiblesTab + + + Display Dual Bible Verses + Display Dual Bible Verses + + + Ui_MainWindow + + + Toggle Service Manager + Toggle Service Manager. + + + MediaManagerItem + + + &Add to Service + + + + + AmendThemeForm + + + First Color: + First Colour: + + + ThemesTab + + + Song level + Song level + + + alertsPlugin + + + Show an alert message + Show an alert message. + + + Ui_MainWindow + + + Ctrl+F1 + Ctrl+F1 + + + Save the current service under a new name + Save the current service under a new name. + + + Ui_OpenLPExportDialog + + + Remove Selected + Remove Selected + + + ThemeManager + + + Delete theme + Delete theme + + + ImageTab + + + Image Settings + Image Settings + + + Ui_OpenSongImportDialog + + + OpenSong Song Importer + OpenSong Song Importer + + + SongUsagePlugin + + + &Extract recorded data + + + + + AlertsTab + + + Font Name: + Font Name: + + + Ui_MainWindow + + + &Web Site + + + + + MediaManagerItem + + + Send the selected item live + Send the selected item live. + + + Ui_MainWindow + + + M&ode + + + + + Translate the interface to your language + Translate the interface to your language. + + + Service Manager + Service Manager + + + CustomMediaItem + + + Custom + Custom + + + ImageMediaItem + + + No items selected... + No items selected... + + + Ui_BibleImportWizard + + + OSIS + OSIS + + + SongsPlugin + + + openlp.org 1.0 + openlp.org 1.0 + + + Ui_MainWindow + + + &Theme + + + + + Ui_EditVerseDialog + + + Edit Verse + Edit Verse + + + Ui_MainWindow + + + &Language + + + + + ServiceManager + + + Move to end + Move to the end + + + Your service is unsaved, do you want to save those changes before creating a new one ? + Your service is unsaved. Do you want to save those changes before creating a new one? + + + Ui_OpenSongExportDialog + + + Remove Selected + Remove Selected + + + SongMediaItem + + + Search: + Search: + + + MainWindow + + + Save Changes to Service? + Save Changes to Service? + + + Your service has changed, do you want to save those changes? + Your service has changed. Do you want to save those changes? + + + EditSongForm + + + Invalid verse entry - values must be Numeric, I,B,C,T,P,E,O + Invalid verse entry - values must be Numeric, I,B,C,T,P,E,O + + + Ui_EditSongDialog + + + &Add to Song + + + + + Ui_MainWindow + + + &About + + + + + BiblesTab + + + Only show new chapter numbers + Only show new chapter numbers + + + ImportWizardForm + + + You need to specify a version name for your Bible! + You need to specify a version name for the Bible! + + + Ui_AlertEditDialog + + + Delete + Delete + + + EditCustomForm + + + Error + Error + + + ThemesTab + + + 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. + 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. + + + SongMaintenanceForm + + + This topic can't be deleted, it is currently assigned to at least one song! + This topic can't be deleted - it is currently assigned to at least one song! + + + AlertEditForm + + + Item selected to Add + Item selected to Add + + + Ui_AmendThemeDialog + + + Right + Right + + + ThemeManager + + + Save Theme - (%s) + Save Theme - (%s) + + + ImageMediaItem + + + Allow background of live slide to be overridden + Allow background of live slide to be overridden. + + + MediaManagerItem + + + Add the selected item(s) to the service + Add the selected item(s) to the service. + + + AuthorsForm + + + Error + Error + + + BibleMediaItem + + + Book: + Book: + + + Ui_AmendThemeDialog + + + Font Color: + Font Colour: + + + Ui_OpenLPImportDialog + + + Select openlp.org songfile to import: + Select openlp.org songfile to import: + + + Ui_SettingsDialog + + + Settings + Settings + + + BiblesTab + + + Layout Style: + Layout Style: + + + MediaManagerItem + + + Edit the selected + Edit the selected + + + SlideController + + + Move to next + Move to next slide. + + + Ui_MainWindow + + + &Plugin List + + + + + BiblePlugin + + + &Bible + + + + + Ui_BibleImportWizard + + + Web Download + Web Download + + + Ui_AmendThemeDialog + + + Horizontal + Horizontal + + + ImportWizardForm + + + Open OSIS file + Open OSIS File + + + Ui_AmendThemeDialog + + + Circular + Circular + + + pt + pt + + + Ui_MainWindow + + + &Add Tool... + + + + + SongMaintenanceForm + + + Delete Topic + Delete Topic + + + ServiceManager + + + Move up + Move Up + + + Ui_OpenLPImportDialog + + + Lyrics + Lyrics + + + BiblesTab + + + No brackets + No Brackets + + + Ui_AlertEditDialog + + + Maintain Alerts + Maintain Alerts + + + Ui_AmendThemeDialog + + + px + px + + + ServiceManager + + + Select a theme for the service + Select a theme for the service. + + + ThemesTab + + + Themes + Themes + + + ServiceManager + + + Move to bottom + Move to Bottom + + + Ui_PluginViewDialog + + + Status: + Status: + + + Ui_EditSongDialog + + + CCLI Number: + CCLI Number: + + + ImportWizardForm + + + 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. + + + Ui_MainWindow + + + &Translate + + + + + AlertEditForm + + + Please Save or Clear seletced item + Please save or clear the selected item. + + + BiblesTab + + + Bibles + Bibles + + + Ui_SongMaintenanceDialog + + + Authors + Authors + + + SongUsageDetailForm + + + Output File Location + Output File Location + + + BiblesTab + + + { and } + { and } + + + GeneralTab + + + Prompt to save Service before starting New + Prompt to save the service before starting new + + + ImportWizardForm + + + Starting import... + Starting import... + + + BiblesTab + + + Note: +Changes don't affect verses already in the service + Note: +Changes don't affect verses already in the service + + + Ui_EditVerseDialog + + + Intro + Intro + + + ServiceManager + + + Move up order + Move up order. + + + PresentationTab + + + available + available + + + ThemeManager + + + default + default + + + SongMaintenanceForm + + + Delete Author + + + + + Ui_AmendThemeDialog + + + Display Location + + + + + Ui_PluginViewDialog + + + Version: + + + + + Ui_AlertEditDialog + + + Add + + + + + GeneralTab + + + General + + + + + Ui_AmendThemeDialog + + + Y Position: + + + + + ServiceManager + + + Move down order + + + + + BiblesTab + + + verse per slide + + + + + Ui_AmendThemeDialog + + + Show Shadow: + + + + + AlertsTab + + + Preview + + + + + alertsPlugin + + + <b>Alerts Plugin</b><br>This plugin controls the displaying of alerts on the presentations screen + + + + + GeneralTab + + + Show the splash screen + + + + + Ui_MainWindow + + + New Service + + + + + SlideController + + + Move to first + + + + + Ui_MainWindow + + + &Online Help + + + + + SlideController + + + Blank Screen + + + + + Ui_MainWindow + + + Save Service + + + + + Save &As... + + + + + Toggle the visibility of the Media Manager + + + + + BibleMediaItem + + + No Book Found + + + + + Ui_EditSongDialog + + + Add + + + + + alertsPlugin + + + &Alert + + + + + BibleMediaItem + + + Advanced + + + + + ImageMediaItem + + + Image(s) + + + + + Ui_MainWindow + + + F11 + + + + + F10 + + + + + F12 + + + + + Ui_BibleImportWizard + + + Select the import format, and where to import from. + + + + + Ui_MainWindow + + + Alt+F7 + + + + + Add an application to the list of tools + + + + + MediaPlugin + + + <b>Media Plugin</b><br>This plugin allows the playing of audio and video media + + + + + BiblesTab + + + Bible Theme: + + + + + SongsPlugin + + + Export songs in openlp.org 1.0 format + + + + + Ui_MainWindow + + + Theme Manager + + + + + AlertsTab + + + Alerts + + + + + Ui_customEditDialog + + + Move slide down 1 + + + + + Ui_AmendThemeDialog + + + Font: + + + + + ServiceManager + + + Load an existing service + + + + + Ui_MainWindow + + + Toggle the visibility of the Theme Manager + + + + + PresentationTab + + + Presentations + + + + + SplashScreen + + + Starting + + + + + ImageTab + + + Slide Loop Delay: + + + + + SlideController + + + Verse + + + + + AlertsTab + + + Alert timeout: + + + + + Ui_MainWindow + + + &Preview Pane + + + + + MediaManagerItem + + + Add a new + + + + + ThemeManager + + + Select Theme Import File + + + + + New Theme + + + + + MediaMediaItem + + + Media + + + + + Ui_AmendThemeDialog + + + Preview + + + + + Outline Size: + + + + + Ui_OpenSongExportDialog + + + Progress: + + + + + AmendThemeForm + + + Second Color: + + + + + Ui_EditSongDialog + + + Theme, Copyright Info && Comments + + + + + Ui_AboutDialog + + + Credits + + + + + BibleMediaItem + + + To: + + + + + Ui_EditSongDialog + + + Song Book + + + + + alertsPlugin + + + F7 + + + + + Ui_OpenLPExportDialog + + + Author + + + + + Ui_AmendThemeDialog + + + Wrap Indentation + + + + + ThemeManager + + + Import a theme + + + + + PresentationPlugin + + + <b>Presentation Plugin</b> <br> Delivers 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. + + + + + ImageMediaItem + + + Image + + + + + BibleMediaItem + + + Clear + + + + + Ui_MainWindow + + + Save Service As + + + + + Ui_AlertDialog + + + Cancel + + + + + Ui_OpenLPImportDialog + + + Import + + + + + Ui_EditVerseDialog + + + Chorus + + + + + Ui_EditSongDialog + + + Edit All + + + + + AuthorsForm + + + You need to type in the last name of the author. + + + + + SongsTab + + + Songs Mode + + + + + Ui_AmendThemeDialog + + + Left + + + + + RemotesPlugin + + + <b>Remote Plugin</b><br>This plugin provides the ability to send messages to a running version of openlp on a different computer.<br>The Primary use for this would be to send alerts from a creche + + + + + ImageTab + + + Images + + + + + BibleMediaItem + + + Verse: + + + + + Ui_OpenLPExportDialog + + + openlp.org Song Exporter + + + + + Song Export List + + + + + ThemeManager + + + Export theme + + + + + Ui_SongMaintenanceDialog + + + Delete + + + + + Ui_AmendThemeDialog + + + Theme Name: + + + + + Ui_AboutDialog + + + About OpenLP + + + + + Ui_MainWindow + + + Toggle the visibility of the Service Manager + + + + + PresentationMediaItem + + + A presentation with that filename already exists. + + + + + AlertsTab + + + openlp.org + + + + + ImportWizardForm + + + Invalid Books File + + + + + Ui_OpenLPImportDialog + + + Song Title + + + + + MediaManagerItem + + + &Show Live + + + + + AlertsTab + + + Keep History: + + + + + Ui_AmendThemeDialog + + + Image: + + + + + Ui_customEditDialog + + + Set Theme for Slides + + + + + Ui_MainWindow + + + More information about OpenLP + + + + + AlertsTab + + + Background Color: + + + + + SongMaintenanceForm + + + No topic selected! + + + + + Ui_MainWindow + + + &Media Manager + + + + + &Tools + + + + + AmendThemeForm + + + Background Color: + + + + + Ui_EditSongDialog + + + A&dd to Song + + + + + Title: + + + + + GeneralTab + + + Screen + + + + + AlertsTab + + + s + + + + + ImagePlugin + + + <b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any somgs which are rendered will use the selected image from the background instead of the one provied by the theme.<br> + + + + + Ui_AlertEditDialog + + + Clear + + + + + Ui_BibleImportWizard + + + Please wait while your Bible is imported. + + + + + MediaManagerItem + + + No items selected... + + + + + Ui_OpenLPImportDialog + + + Select All + + + + + Ui_AmendThemeDialog + + + Font Main + + + + + ImageMediaItem + + + Images (*.jpg *jpeg *.gif *.png *.bmp) + + + + + Ui_OpenLPImportDialog + + + Title + + + + + Ui_OpenSongExportDialog + + + Select OpenSong song folder: + + + + + Ui_MainWindow + + + Toggle Media Manager + + + + + SongUsagePlugin + + + &Song Usage + + + + + GeneralTab + + + Monitors + + + + + EditCustomForm + + + You need to enter a slide + + + + + Ui_SongMaintenanceDialog + + + Topics + + + + + ImportWizardForm + + + You need to specify a file to import your Bible from! + + + + + Ui_EditVerseDialog + + + Verse Type + + + + + OpenSongBible + + + Importing + + + + + Ui_EditSongDialog + + + Comments + + + + + AlertsTab + + + Bottom + + + + + Ui_MainWindow + + + Create a new Service + + + + + AlertsTab + + + Top + + + + + ServiceManager + + + &Preview Verse + + + + + Ui_PluginViewDialog + + + TextLabel + + + + + AlertsTab + + + Font Size: + + + + + Ui_PluginViewDialog + + + About: + + + + + Inactive + + + + + Ui_OpenSongExportDialog + + + Ready to export + + + + + Export + + + + + Ui_PluginViewDialog + + + Plugin List + + + + + Ui_AmendThemeDialog + + + Transition Active: + + + + + Ui_BibleImportWizard + + + Proxy Server (Optional) + + + + + Ui_EditSongDialog + + + &Manage Authors, Topics, Books + + + + + Ui_SongUsageDetailDialog + + + Audit Detail Extraction + + + + + Ui_OpenLPExportDialog + + + Ready to export + + + + + EditCustomForm + + + Save && Preview + + + + + Ui_OpenLPExportDialog + + + Select All + + + + + Ui_SongUsageDetailDialog + + + to + + + + + Ui_AmendThemeDialog + + + Size: + + + + + MainWindow + + + OpenLP Main Display Blanked + + + + + Ui_OpenLPImportDialog + + + Remove Selected + + + + + Ui_EditSongDialog + + + Delete + + + + + ImportWizardForm + + + You need to specify an OpenSong Bible file to import! + + + + + PresentationMediaItem + + + File exists + + + + + Ui_OpenLPExportDialog + + + Title + + + + + Ui_OpenSongImportDialog + + + Ready to import + + + + + SlideController + + + Stop continuous loop + + + + + s + + + + + SongMediaItem + + + Song Maintenance + + + + + Ui_customEditDialog + + + Edit + + + + + Ui_AmendThemeDialog + + + Gradient : + + + + + ImportWizardForm + + + Invalid Verse File + + + + + EditSongForm + + + Error + + + + + Ui_customEditDialog + + + Add New + + + + + Ui_AuthorsDialog + + + Display name: + + + + + SongMaintenanceForm + + + Are you sure you want to delete the selected topic? + + + + + Ui_AmendThemeDialog + + + Bold/Italics + + + + + Ui_SongMaintenanceDialog + + + Song Maintenance + + + + + Ui_BibleImportWizard + + + Welcome to the Bible Import Wizard + + + + + SongsTab + + + Songs + + + + + Ui_BibleImportWizard + + + Password: + + + + + Ui_MainWindow + + + &Theme Manager + + + + + MediaManagerItem + + + Preview the selected item + + + + + Ui_BibleImportWizard + + + Version Name: + + + + + Ui_AboutDialog + + + About + + + + + MediaMediaItem + + + Select Media + + + + + Ui_AmendThemeDialog + + + Horizontal Align: + + + + + ServiceManager + + + &Edit Item + + + + + Ui_AmendThemeDialog + + + Background Type: + + + + + Ui_MainWindow + + + &Save + + + + + OpenLP 2.0 + + + + + ThemeManager + + + A theme with this name already exists, would you like to overwrite it? + + + + + PresentationMediaItem + + + Select Presentation(s) + + + + + ThemeManager + + + Export a theme + + + + + AmendThemeForm + + + Open file + + + + + Ui_TopicsDialog + + + Topic Maintenance + + + + + Ui_customEditDialog + + + Clear edit area + + + + + Ui_AmendThemeDialog + + + Show Outline: + + + + + SongBookForm + + + You need to type in a book name! + + + + + ImportWizardForm + + + Open OpenSong Bible + + + + + Ui_MainWindow + + + Look && &Feel + + + + + Ui_BibleImportWizard + + + Ready. + + + + + ThemeManager + + + You have not selected a theme! + + + + + Ui_SongMaintenanceDialog + + + Books/Hymnals + + + + + Ui_AboutDialog + + + Contribute + + + + + Ui_AmendThemeDialog + + + Gradient + + + + + Ui_BibleImportWizard + + + Books Location: + + + + + Ui_OpenSongExportDialog + + + Full Song List + + + + + GeneralTab + + + SongSelect Password: + + + + +Delete Selected Song Usage Events?Couldn't save your book.AutomaticMove to &bottomThis author can't be deleted, they are currently assigned to at least one song.Couldn't save your topic.Move to &topYou need to specify a file to import your Bible from.Song Usage ExtractionAllow the background of live slide to be overriddenYou are unable to delete the default theme.Couldn't save your author.<b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any songs which are rendered will use the selected image from the background instead of the one provied by the theme.<br>&Delete From ServiceImages (*.jpg *.jpeg *.gif *.png *.bmp);; All files (*)You need to specify a version name for your Bible.Couldn't add your topic.You need to specify a file of Bible verses to import.File is not a valid theme.This book can't be deleted, it is currently assigned to at least one song.<b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br>Please save or clear selected itemOpenLP Service Files (*.osz)Couldn't add your author.This topic can't be deleted, it is currently assigned to at least one song.Move &downAre you sure you want to delete selected Song Usage data?Add &Tool...Song Usage DeleteMove &upYou need to specify a file with books of the Bible to use in the import.<b>Presentation Plugin</b> <br> Delivers 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.Couldn't add your book.You have not selected a theme.Select Date RangeYou need to specify an OpenSong Bible file to import. diff --git a/resources/i18n/openlp_es.ts b/resources/i18n/openlp_es.ts new file mode 100644 index 000000000..0c3b7bf14 --- /dev/null +++ b/resources/i18n/openlp_es.ts @@ -0,0 +1,4253 @@ + + + + BibleMediaItem + + + Quick + Rápida + + + Ui_customEditDialog + + + Delete selected slide + Eliminar diap. seleccionada + + + BiblesTab + + + ( and ) + ( y ) + + + RemoteTab + + + Remotes + Remotas + + + ServiceManager + + + Save Service + Guardar Servicio + + + Ui_AmendThemeDialog + + + Shadow Size: + Tamaño: + + + Ui_OpenSongExportDialog + + + Close + Cerrar + + + ThemeManager + + + Import Theme + Importar Tema + + + Ui_AmendThemeDialog + + + Slide Transition + Transición de Diapositiva + + + ImportWizardForm + + + Bible Exists + Ya existe la Biblia + + + ThemesTab + + + Theme level + Nivel del Tema + + + BibleMediaItem + + + Bible + Biblia + + + ServiceManager + + + Save Changes to Service? + ¿Guardar cambios al Servicio? + + + SongUsagePlugin + + + &Delete recorded data + &Eliminar los datos guardados + + + Ui_OpenLPExportDialog + + + Song Title + Título de Canción + + + Ui_customEditDialog + + + Edit selected slide + Editar diap. seleccionada + + + SongMediaItem + + + CCLI Licence: + Licencia CCLI: + + + Ui_SongUsageDeleteDialog + + + Audit Delete + Eliminar Auditoría + + + BibleMediaItem + + + Clear + Limpiar + + + Ui_BibleImportWizard + + + Bible Import Wizard + Asistente de Importación de Biblias + + + Ui_customEditDialog + + + Edit All + Editar Todo + + + Ui_ServiceNoteEdit + + + Service Item Notes + Notas de Elemento de Servicio + + + SongMaintenanceForm + + + Couldn't save your author! + ¡No se puede guardar su autor! + + + Ui_customEditDialog + + + Clear + Limpiar + + + ThemesTab + + + Global theme + Tema Global + + + SongUsagePlugin + + + Start/Stop live song usage recording + Grabar los tiempos de la canción en vivo + + + MainWindow + + + The Main Display has been blanked out + La Pantalla Principal esta en negro + + + Ui_OpenSongExportDialog + + + Lyrics + Letra + + + Ui_AlertDialog + + + Display + Pantalla + + + Ui_customEditDialog + + + Delete + Eliminar + + + SongMaintenanceForm + + + This author can't be deleted, they are currently assigned to at least one song! + ¡Este autor no puede ser eliminado, está asignado a al menos una canción! + + + ThemeManager + + + Create a new theme + Crear un tema nuevo + + + Ui_MainWindow + + + Open an existing service + Abrir un servicio existente + + + SlideController + + + Move to previous + Regresar al anterior + + + Edit and re-preview Song + Editar y re-visualizar Canción + + + Ui_PluginViewDialog + + + Plugin Details + Detalles de Plugin + + + AlertsTab + + + pt + pt + + + Edit History: + Editar Historial: + + + SlideController + + + Delay between slides in seconds + Espera entre diapositivas en segundos + + + SongMaintenanceForm + + + Couldn't add your book! + ¡No se pudo agregar su libro! + + + BiblesTab + + + verse per line + versículo por línea + + + Ui_customEditDialog + + + Theme: + Tema: + + + SongMaintenanceForm + + + Error + Error + + + Ui_BibleImportWizard + + + Bible: + Biblia: + + + ImportWizardForm + + + You need to specify a file with books of the Bible to use in the import! + ¡Es necesario especificar un archivo con los libros de la Biblia para uso en la importación! + + + ThemeManager + + + Delete Theme + Eliminar Tema + + + SplashScreen + + + Splash Screen + Pantalla de Bienvenida + + + SongMediaItem + + + Song + Canción + + + SongUsageDeleteForm + + + Delete Selected Audit Events? + ¿Borrar la Selección de Eventos Auditados? + + + Ui_OpenSongExportDialog + + + Song Title + Título de Canción + + + BibleMediaItem + + + Search + Buscar + + + Ui_MainWindow + + + List the Plugins + Lista de PluginsUsar Complementos en ves de Plugins? + + + SongMaintenanceForm + + + No author selected! + ¡Ningún autor seleccionado! + + + SongUsagePlugin + + + <b>SongUsage Plugin</b><br>This plugin records the use of songs and when they have been used during a live service + <b>SongUsage Plugin</b><br>Este plugin registra el uso de canciones y cuando se han utilizado durante un servicio en vivo + + + Ui_customEditDialog + + + Move slide Up 1 + Mover hacia Arriba 1 + + + SongsPlugin + + + OpenSong + OpenSong + + + AlertsManager + + + Alert message created and delayed + Mensaje de alerta creado y pospuesto + + + Ui_EditSongDialog + + + Alternative Title: + Título alternativo: + + + ServiceManager + + + Open Service + Abrir Servicio + + + BiblesTab + + + Display Style: + Mostar Como: + + + Ui_AmendThemeDialog + + + Image + Imagen + + + EditSongForm + + + You need to enter a song title. + Usted necesita introducir el título de la canción. + + + ThemeManager + + + Error + Error + + + ImportWizardForm + + + Invalid Bible Location + Ubicación de Biblia no válida + + + ThemesTab + + + Global level + Nivel Global + + + ThemeManager + + + Make Global + Establecer como GlobalAcortar? Hacer Global + + + Ui_MainWindow + + + &Service Manager + Gestor de &Servicio + + + Ui_OpenLPImportDialog + + + Author + Autor + + + Ui_AmendThemeDialog + + + Height: + Altura: + + + Ui_BibleImportWizard + + + Books Location: + Ubicación de los Libros: + + + ThemeManager + + + Delete a theme + Eliminar un tema + + + Ui_BibleImportWizard + + + Crosswalk + Crosswalk + + + SongBookForm + + + Error + Error + + + Ui_AuthorsDialog + + + Last name: + Apellido: + + + Ui_customEditDialog + + + Title: + Título: + + + ImportWizardForm + + + You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. + ¡Tiene que establecer los derechos de autor de la Biblia! Biblias de Dominio Público deben ser marcados como tales. + + + SongMediaItem + + + Maintain the lists of authors, topics and books + Administrar la lista de autores, categorías y libros + + + Ui_AlertEditDialog + + + Save + Guardar + + + EditCustomForm + + + You have unsaved data + Tiene información sin guardar + + + BibleMediaItem + + + To: + Hasta: + + + Ui_AmendThemeDialog + + + Outline + Contorno + + + BibleMediaItem + + + Text Search + Búsqueda de texto + + + Ui_OpenLPExportDialog + + + openlp.org Song Exporter + Exportador de Canciones openlp.orgAcortar? + + + SongUsagePlugin + + + Delete song usage to specified date + Eliminar el historial de uso hasta la fecha especificada + + + Ui_SongUsageDetailDialog + + + Report Location + Ubicación de Reporte + + + Ui_BibleImportWizard + + + OpenSong + OpenSong + + + Ui_MainWindow + + + Open Service + Abrir Servicio + + + SongMediaItem + + + Titles + Títulos + + + ImageMediaItem + + + Select Image(s) + Seleccionar Imagen(es) + + + BibleMediaItem + + + Search Type: + Tipo de búsqueda:Acortar? + + + Ui_MainWindow + + + Media Manager + Gestor de Medios + + + ImageMediaItem + + + Images (*.jpg *jpeg *.gif *.png *.bmp);; All files (*) + Imágenes (*.jpg *jpeg *.gif *.png *.bmp);; Todos los archivos (*) + + + Ui_MainWindow + + + Alt+F4 + Alt+F4 + + + MediaManagerItem + + + &Preview + Vista &previa + + + GeneralTab + + + CCLI Details + Detalles de CCLI + + + SongSelect Password: + Contraseña SongSelect: + + + Ui_MainWindow + + + Toggle the visibility of the Preview Panel + Alternar la visibilidad del Panel de Vista Previa + + + SongMaintenanceForm + + + Are you sure you want to delete the selected book? + ¿Está seguro de que quiere eliminar el libro seleccionado? + + + Ui_MainWindow + + + &User Guide + Guía de &Usuario + + + SongUsageDeleteForm + + + Are you sure you want to delete selected Audit Data? + ¿Está seguro que desea eliminar la selección de Datos Auditados? + + + Ui_MainWindow + + + Set the interface language to English + Establecer el idioma de la interfaz a Inglés + + + Ui_AmendThemeDialog + + + Main Font + Tipo de Letra Principal + + + ImportWizardForm + + + Empty Copyright + Derechos de autor en blanco + + + CustomPlugin + + + <b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br> + <b>Custom Plugin</b><br>Este plugin permite que las diapositivas se muestren en la pantalla de la misma manera que las canciones. Este plugin proporciona una mayor libertad que el plugin de canciones.<br> + + + AuthorsForm + + + You need to type in the first name of the author. + Tiene que escribir el nombre del autor. + + + SongsTab + + + Display Verses on Live Tool bar: + Mostrar Versos en Barra En Vivo:Verses = Versículos? + + + ServiceManager + + + Move to top + Mover al principio + + + ImageMediaItem + + + Override background + Sustituir el fondo + + + Ui_SongMaintenanceDialog + + + Edit + Editar + + + Ui_OpenSongExportDialog + + + Select All + Seleccionar Todo + + + ThemesTab + + + 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. + + + PresentationMediaItem + + + Presentation + Presentación + + + Ui_AmendThemeDialog + + + Solid Color + Color Sólido + + + CustomTab + + + Custom + Personalizado + + + Ui_OpenLPImportDialog + + + Ready to import + Listo para importar + + + MainWindow + + + OpenLP version %s has been updated to version %s + +You can obtain the latest version from http://openlp.org + OpenLP versión %s se ha actualizado a la versión %s + +Puede obtener la última versión desde http://openlp.org + + + Ui_BibleImportWizard + + + File Location: + Archivo: + + + SlideController + + + Go to Verse + Ir al Verso + + + Ui_MainWindow + + + &Import + &Importar + + + Quit OpenLP + Salir de OpenLP + + + Ui_BibleImportWizard + + + 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. + + + Ui_OpenLPExportDialog + + + Title + Título + + + ImportWizardForm + + + Empty Version Name + Nombre de Versión Vacío + + + Ui_MainWindow + + + &Preview Panel + &Panel de Vista Previa + + + SlideController + + + Start continuous loop + Iniciar bucle continuo + + + Ui_AboutDialog + + + License + Licencia + + + GeneralTab + + + primary + primario + + + Ui_EditSongDialog + + + Add a Theme + Añadir un Tema + + + Ui_MainWindow + + + &New + &Nuevo + + + Ui_customEditDialog + + + Credits: + Créditos: + + + SlideController + + + Live + En vivo + + + ImportWizardForm + + + You need to specify a file of Bible verses to import! + ¡Es necesario especificar un archivo de versículos de la Biblia para importar! + + + BiblesTab + + + continuous + continuo + + + Ui_EditVerseDialog + + + Number + Número + + + GeneralTab + + + Application Startup + Inicio de la Aplicación + + + Ui_AmendThemeDialog + + + Use Default Location: + Usar Ubicación por Defecto: + + + Ui_OpenSongImportDialog + + + Import + Importar + + + Ui_MainWindow + + + Ctrl+N + Ctrl+N + + + Ui_EditSongDialog + + + Verse Order: + Orden de Versos: + + + Ui_SongUsageDetailDialog + + + ASelect Date Range + Seleccione el Rango de Fechas + + + Ui_MainWindow + + + Default Theme: + Tema por defecto: + + + Toggle Preview Panel + Alternar Panel de Vista Previa + + + SongMediaItem + + + Lyrics + Letra + + + Ui_OpenLPImportDialog + + + Progress: + Progreso: + + + Ui_AmendThemeDialog + + + Shadow + Sombra + + + GeneralTab + + + Select monitor for output display: + Seleccionar monitor para visualizar la salida: + + + Ui_AmendThemeDialog + + + Italics + Cursiva + + + ServiceManager + + + Create a new service + Crear un servicio nuevo + + + Ui_AmendThemeDialog + + + Background: + Fondo: + + + Ui_OpenLPImportDialog + + + openlp.org Song Importer + Importador de Canciones openlp.orgAcortar? + + + Ui_BibleImportWizard + + + Copyright: + Derechos de autor: + + + ThemesTab + + + Service level + Según Servicio + + + BiblesTab + + + [ and ] + [ y ] + + + Ui_customEditDialog + + + Save + Guardar + + + MediaManagerItem + + + You must select one or more items + Usted debe seleccionar uno o más elementos + + + GeneralTab + + + Application Settings + Configuración del Programa + + + ServiceManager + + + Save this service + Guardar este servicio + + + ImportWizardForm + + + Open Books CSV file + Abrir archivo de Libros CSV + + + GeneralTab + + + SongSelect Username: + Usuario SongSelect: + + + Ui_AmendThemeDialog + + + X Position: + Posición X: + + + BibleMediaItem + + + No matching book could be found in this Bible. + No se encuentra un libro que concuerde, en esta Biblia. + + + Ui_BibleImportWizard + + + Server: + Servidor: + + + Download Options + Opciones de Descarga + + + ImportWizardForm + + + Invalid OpenSong Bible + Biblia OpenSong No Válida + + + GeneralTab + + + CCLI Number: + Número CCLI: + + + Ui_AmendThemeDialog + + + Center + Centro + + + ServiceManager + + + Theme: + Tema: + + + Ui_MainWindow + + + &Live + En &vivo + + + SongMaintenanceForm + + + Delete Topic + Borrar CategoríaTraducir "Topic" como "Tema" puede confundirse con la traducción de "Theme" + + + Ui_MainWindow + + + English + Ingles + + + ImageMediaItem + + + You must select one or more items + Usted debe seleccionar uno o más elementos + + + Ui_AuthorsDialog + + + First name: + Nombre: + + + Ui_BibleImportWizard + + + Permission: + Permiso: + + + Ui_OpenSongImportDialog + + + Close + Cerrar + + + Ui_AmendThemeDialog + + + Opaque + Opaco + + + SongMaintenanceForm + + + This book can't be deleted, it is currently assigned to at least one song! + ¡Este libro no puede ser eliminado, está actualmente asignado a al menos una canción! + + + ImportWizardForm + + + Your Bible import failed. + La importación de su Biblia falló. + + + SlideController + + + Start playing media + Iniciar la reproducción de medios + + + SongMediaItem + + + Type: + Tipo: + + + Ui_AboutDialog + + + Close + Cerrar + + + TopicsForm + + + You need to type in a topic name! + ¡Usted tiene que escribir un nombre para la categoría! + + + Ui_OpenSongExportDialog + + + Song Export List + Lista de Exportación de CancionesAcortar? + + + BibleMediaItem + + + Dual: + Paralela:O Dual:? O Doble:? + + + ImageTab + + + sec + seg + + + ServiceManager + + + Delete From Service + Eliminar Del Servicio + + + GeneralTab + + + Automatically open the last service + Abrir automáticamente el último servicio + + + Ui_OpenLPImportDialog + + + Song Import List + Lista de Importación de Canciones + + + Ui_OpenSongExportDialog + + + Author + Autor + + + Ui_AmendThemeDialog + + + Outline Color: + Color: + + + Ui_BibleImportWizard + + + Select Import Source + Seleccione Origen de Importación + + + Ui_MainWindow + + + F9 + F9 + + + F8 + F8 + + + ServiceManager + + + &Change Item Theme + &Cambiar Tema de Ítem + + + Ui_SongMaintenanceDialog + + + Topics + Categoría + + + Ui_OpenLPImportDialog + + + Import File Song List + Importar Archivo de Lista de CancionesAcortar? + + + Ui_customEditDialog + + + Edit Custom Slides + Editar Diapositivas PersonalizadasAcortar? + + + Ui_EditSongDialog + + + &Remove + &Quitar + + + Ui_BibleImportWizard + + + Set up the Bible's license details. + Establezca los detalles de licencia de la Biblia. + + + Ui_AmendThemeDialog + + + Alignment + Alineación + + + SongMaintenanceForm + + + Delete Book + Eliminar Libro + + + ThemeManager + + + Edit a theme + Editar un tema + + + Ui_BibleImportWizard + + + BibleGateway + BibleGateway + + + GeneralTab + + + Preview Next Song from Service Manager + Vista Previa de la Siguiente Canción del ServicioSiguiente Canción en Cola? + + + Ui_EditSongDialog + + + Title && Lyrics + Título && Letra + + + SongMaintenanceForm + + + No book selected! + ¡Ningún libro seleccionado! + + + SlideController + + + Move to live + Proyectar en vivo + + + Ui_EditVerseDialog + + + Other + Otro + + + Ui_EditSongDialog + + + Theme + Tema + + + Ui_EditVerseDialog + + + Verse + Verso + + + Ui_MainWindow + + + Save the current service to disk + Guardar el servicio actual al disco + + + BibleMediaItem + + + Chapter: + Capítulo: + + + Ui_AmendThemeDialog + + + Bottom + Inferior + + + PresentationTab + + + Available Controllers + Controladores DisponiblesControles? + + + ImportWizardForm + + + Open Verses CSV file + Abrir archivo de Versículos CSV + + + TopicsForm + + + Error + Error + + + RemoteTab + + + Remotes Receiver Port + Puerto de Recepción + + + Ui_MainWindow + + + &View + &Ver + + + Ui_AmendThemeDialog + + + Normal + Normal + + + Ui_OpenLPExportDialog + + + Close + Cerrar + + + Ui_BibleImportWizard + + + Username: + Usuario: + + + ThemeManager + + + Edit Theme + Editar Tema + + + ServiceManager + + + &Preview Verse + &Previzualizar Verso + + + Ui_AlertDialog + + + Alert Message + Mensaje de Alerta + + + ImportWizardForm + + + Finished import. + Importación finalizada. + + + GeneralTab + + + Show blank screen warning + Mostrar advertencia de pantalla en blanco + + + AlertsTab + + + Location: + Ubicación: + + + Ui_EditSongDialog + + + Authors, Topics && Book + Autores, Categorías && Libros + + + EditSongForm + + + You need to enter some verses. + Debe ingresar algunos versículos. + + + BibleMediaItem + + + Bible not fully loaded + Biblia incompleta + + + CustomTab + + + Display Footer: + Mostrar Pie de Página:Acortar? Mostrar Pie: + + + BiblePlugin + + + <strong>Bible Plugin</strong><br />This plugin allows bible verses from different sources to be displayed on the screen during the service. + <strong>Bible Plugin</strong><br />Este plugin permite visualizar versículos de la Biblia en la pantalla desde distintas fuentes durante el servicio. + + + Ui_EditSongDialog + + + Copyright Information + Información de Derechos de AutorAcortar? + + + Ui_MainWindow + + + &Export + &Exportar + + + Ui_AmendThemeDialog + + + Bold + Negrita + + + SongsPlugin + + + Export songs in OpenLP 2.0 format + Exportar canciones en formato OpenLP 2.0 + + + MediaManagerItem + + + Load a new + Cargar nuevo(a) + + + AlertEditForm + + + Missing data + Datos faltantes + + + SongsPlugin + + + <b>Song Plugin</b> <br>This plugin allows Songs to be managed and displayed.<br> + <b>Song Plugin</b> <br>Este plugin permite gestionar y mostrar las canciones.<br> + + + Ui_AmendThemeDialog + + + Footer Font + Fuente de Pie de Página + + + EditSongForm + + + Invalid verse entry - vX + Verso no válido - vX + + + BibleMediaItem + + + No Book Found + No se encontró el libro + + + Ui_OpenLPExportDialog + + + Export + Exportar + + + Ui_BibleImportWizard + + + Location: + Ubicación: + + + BibleMediaItem + + + Keep + Conservar + + + SongUsagePlugin + + + Generate report on Song Usage + Crear un reporte del Uso de las Canciones + + + Ui_EditSongDialog + + + Topic + Categoría + + + Ui_MainWindow + + + &Open + &Abrir + + + PresentationMediaItem + + + Present using: + Mostrar usando:Presentar? + + + ServiceManager + + + &Live Verse + Verso En &Vivo + + + Ui_EditVerseDialog + + + Pre-Chorus + Pre-Coro + + + Ui_EditSongDialog + + + Lyrics: + Letra: + + + Ui_AboutDialog + + + Project Lead + Raoul "superfly" Snyman + +Developers + Tim "TRB143" Bentley + Jonathan "gushie" Corwin + Michael "cocooncrash" Gorven + Scott "sguerrieri" Guerrieri + Raoul "superfly" Snyman + Maikel Stuivenberg + Martin "mijiti" Thompson + Jon "Meths" Tibble + Carsten "catini" Tingaard + +Testers + Wesley "wrst" Stout + Director del Proyecto +Raoul "superfly" Snyman + +Desarroladores +Tim "TRB143" Bentley +Jonathan "gushie" Corwin +Michael "cocooncrash" Gorven +Scott "sguerrieri" Guerrieri +Raoul "superfly" Snyman +Maikel Stuivenberg +Martin "mijiti" Thompson +Jon "Meths" Tibble +Carsten "catini" Tingaard + +Pruebas +Wesley "wrst" Stout + + + Ui_OpenLPExportDialog + + + Lyrics + Letra + + + AuthorsForm + + + You haven't set a display name for the author, would you like me to combine the first and last names for you? + No se ha puesto un nombre para el autor, ¿le gustaría que el nombre y los apellidos se combinen por usted? + + + SongMediaItem + + + Clear + Limpiar + + + AmendThemeForm + + + Slide Height is %s rows + Altura de Diapositiva es %s filas + + + Ui_OpenSongImportDialog + + + Progress: + Progreso: + + + Ui_MainWindow + + + Toggle Theme Manager + Alternar Gestor de Temas + + + Ui_AlertDialog + + + Alert Text: + Texto de Alerta: + + + Ui_EditSongDialog + + + Edit + Editar + + + AlertsTab + + + Font Color: + Color: + + + Ui_AmendThemeDialog + + + Theme Maintenance + Mantenimiento de Temas + + + CustomTab + + + Custom Display + Presentación Personalizada + + + Ui_OpenSongExportDialog + + + Title + Título + + + Ui_AmendThemeDialog + + + <Color1> + <Color1> + + + Ui_EditSongDialog + + + Authors + Autores + + + ThemeManager + + + Export Theme + Exportar Tema + + + ImageMediaItem + + + No items selected... + No hay ítems seleccionados... + + + Ui_SongBookDialog + + + Name: + Nombre: + + + Ui_AuthorsDialog + + + Author Maintenance + Mantenimiento de Autores + + + Ui_AmendThemeDialog + + + Font Footer + Pie de Página + + + Ui_MainWindow + + + &Settings + &Preferencias + + + &Options + &Opciones + + + BibleMediaItem + + + Results: + Resultados: + + + Ui_OpenLPExportDialog + + + Full Song List + Lista Completa de CancionesAcortar? + + + Ui_OpenSongImportDialog + + + OpenSong Folder: + Carpeta de OpenSong: + + + SlideController + + + Move to last + Mover al final + + + Ui_OpenLPExportDialog + + + Progress: + Progreso: + + + Ui_SongMaintenanceDialog + + + Add + Agregar + + + SongMaintenanceForm + + + Are you sure you want to delete the selected author? + ¿Está seguro que desea eliminar el autor seleccionado? + + + SongUsagePlugin + + + Song Usage Status + Estado de Uso de las Canciones + + + BibleMediaItem + + + Verse Search + Búsqueda de versículo + + + Ui_SongBookDialog + + + Edit Book + Editar Himnario + + + EditSongForm + + + Save && Preview + Guardar && Vista Previa + + + Ui_SongBookDialog + + + Publisher: + Editor:Publicador:? + + + Ui_AmendThemeDialog + + + Font Weight: + Tipo de Letra: + + + Ui_BibleImportWizard + + + Bible Filename: + Nombre de Biblia: + + + Ui_AmendThemeDialog + + + Transparent + Transparente + + + SongMediaItem + + + Search + Buscar + + + Ui_BibleImportWizard + + + Format: + Formato: + + + Ui_AmendThemeDialog + + + Background + Fondo + + + Ui_BibleImportWizard + + + Importing + Importando + + + Ui_customEditDialog + + + Edit all slides + Editar todas las diapositivasAcortar? + + + MediaMediaItem + + + Select Media + Seleccionar Medios + + + PresentationMediaItem + + + Select Presentation(s) + Seleccionar Presentación(es) + + + SongMediaItem + + + Authors + Autores + + + Ui_PluginViewDialog + + + Active + Activo + + + Ui_MainWindow + + + Save the current service under a new name + Guardar el servicio actual con un nuevo nombre + + + Ctrl+O + Ctrl+O + + + Ui_AmendThemeDialog + + + Other Options + Otras Opciones + + + SongMaintenanceForm + + + Couldn't add your author! + ¡No se pudo agregar su autor! + + + Ui_AlertEditDialog + + + Edit + Editar + + + Ui_EditSongDialog + + + Song Editor + Editor de Canción + + + AlertsTab + + + Font + Tipo de Letra + + + SongsPlugin + + + &Song + &Canción& where? + + + Ui_MainWindow + + + &File + &Archivo + + + MediaManagerItem + + + &Edit + &Editar + + + Ui_AmendThemeDialog + + + Vertical + Vertical + + + Width: + Ancho: + + + ThemeManager + + + You are unable to delete the default theme! + ¡Usted no puede eliminar el tema por defecto! + + + ThemesTab + + + 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. + + + BibleMediaItem + + + Version: + Versión: + + + Ui_AboutDialog + + + OpenLP <version> build <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> build <revision> - Open Source Lyrics Projection + +OpenLP es un programa gratuito de presentación para iglesias, o un programa de presentación de letras, usted to display slides of songs, Versículos, videos, imágenes, e incluso presentaciones (si OpenOffice.org, PowerPoint o PowerPoint Viewer esta instalado) para la alabanza, usando una computadora y un proyector de datos. + +Más información en: http://openlp.org/ + +OpenLP es desarrollado y mantenido por voluntarios. If you would like to see more free Christian software being written, please consider contributing by using the button below. + + + SongsPlugin + + + OpenLP 2.0 + OpenLP 2.0 + + + ServiceManager + + + New Service + Servicio Nuevo + + + Ui_TopicsDialog + + + Topic name: + Categoría:Nombre:? o Categoría:? + + + ThemeManager + + + File is not a valid theme! + ¡El archivo no es un tema válido! + + + Ui_BibleImportWizard + + + License Details + Detalles de Licencia + + + ServiceManager + + + Move down + Hacia abajo + + + Ui_EditSongDialog + + + R&emove + &Quitar + + + Ui_AmendThemeDialog + + + Middle + Medio + + + Ui_BibleImportWizard + + + Verse Location: + Versículos:Ubicación de Versículos: + + + AlertEditForm + + + Item selected to Edit + Tema seleccionado para Editar + + + BibleMediaItem + + + From: + Desde: + + + Ui_AmendThemeDialog + + + Shadow Color: + Color: + + + ServiceManager + + + &Notes + &Notas + + + Ui_MainWindow + + + E&xit + &Salir + + + Ui_OpenLPImportDialog + + + Close + Cerrar + + + MainWindow + + + OpenLP Version Updated + Versión de OpenLP Actualizada + + + Ui_customEditDialog + + + Replace edited slide + Reemplazar diapositiva editadaAcortar? + + + Add new slide at bottom + Agregar nueva diapositiva al finalAcortar? + + + EditCustomForm + + + You need to enter a title + Usted debe ingresar un título + + + ThemeManager + + + Theme Exists + Ya existe el Tema + + + Ui_MainWindow + + + &Help + &Ayuda + + + Ui_OpenSongExportDialog + + + OpenSong Song Exporter + Exportador de Canciones OpenSongAcortar? + + + Ui_AmendThemeDialog + + + Vertical Align: + Vertical: + + + TestMediaManager + + + Item2 + Ítem2 + + + Item1 + Ítem1 + + + Ui_AmendThemeDialog + + + Top + Superior + + + BiblesTab + + + Display Dual Bible Verses + Mostrar Versículos Paralelos + + + Ui_MainWindow + + + Toggle Service Manager + Alternar Gestor de Servicio + + + MediaManagerItem + + + &Add to Service + &Agregar al Servicio + + + AmendThemeForm + + + First Color: + Primer Color: + + + ThemesTab + + + Song level + Según Canción + + + alertsPlugin + + + Show an alert message + Mostrar un mensaje de alerta + + + Ui_MainWindow + + + Ctrl+F1 + Ctrl+F1 + + + SongMaintenanceForm + + + Couldn't save your topic! + ¡No se pudo guardar la categoría! + + + Ui_OpenLPExportDialog + + + Remove Selected + Quitar lo Seleccionado + + + ThemeManager + + + Delete theme + Eliminar tema + + + ImageTab + + + Image Settings + Preferencias de Imagen + + + Ui_OpenSongImportDialog + + + OpenSong Song Importer + Importador de canciones OpenSong + + + BiblesTab + + + Bibles + Biblias + + + SongUsagePlugin + + + &Extract recorded data + &Extraer los datos guardados + + + AlertsTab + + + Font Name: + Fuente: + + + Ui_MainWindow + + + &Web Site + Sitio &Web + + + MediaManagerItem + + + Send the selected item live + Enviar en vivo el ítem seleccionado + + + Ui_MainWindow + + + M&ode + M&odo + + + Translate the interface to your language + Traducir la interfaz a su idioma + + + Service Manager + Gestor de Servicio + + + CustomMediaItem + + + Custom + Personalizada + + + Ui_BibleImportWizard + + + OSIS + OSIS + + + SongsPlugin + + + openlp.org 1.0 + openlp.org 1.0 + + + Ui_MainWindow + + + &Theme + &Tema + + + Ui_EditVerseDialog + + + Edit Verse + Editar Verso + + + Ui_MainWindow + + + &Language + &Idioma + + + SlideController + + + Verse + VersoVersículo? + + + ImportWizardForm + + + You need to specify an OpenSong Bible file to import! + ¡Debe especificar una Biblia OpenSong para importar! + + + ServiceManager + + + Your service is unsaved, do you want to save those changes before creating a new one ? + Su servicio no se ha salvado, ¿quiere guardar los cambios antes de crear uno nuevo? + + + Ui_OpenSongExportDialog + + + Remove Selected + Quitar lo Seleccionado + + + SongMediaItem + + + Search: + Buscar: + + + MainWindow + + + Save Changes to Service? + ¿Guardar los Cambios al Servicio? + + + Your service has changed, do you want to save those changes? + ¿Su servicio cambió, quiere guardar esos cambios? + + + EditSongForm + + + Invalid verse entry - values must be Numeric, I,B,C,T,P,E,O + Entrada no válida - los valores deben ser Numéricos, I,B,C,T,P,E,OIntro,Puente,Coro,T ,Pre-coro, Final,Otro. + + + Ui_EditSongDialog + + + &Add to Song + &Agregar a Canción + + + Ui_MainWindow + + + &About + &Acerca De + + + BiblesTab + + + Only show new chapter numbers + Solo mostrar los números de capítulos nuevos + + + ImportWizardForm + + + You need to specify a version name for your Bible! + ¡Debe especificar un nombre para la versión de la Biblia! + + + Ui_AlertEditDialog + + + Delete + Eliminar + + + EditCustomForm + + + Error + Error + + + RemotesPlugin + + + <b>Remote Plugin</b><br>This plugin provides the ability to send messages to a running version of openlp on a different computer.<br>The Primary use for this would be to send alerts from a creche + <b>Remote Plugin</b><br>Este plugin ofrece la posibilidad de enviar mensajes a alguna versión de openlp en un equipo diferente.<br>El uso principal para esto sería enviar alertas desde una guardería + + + SongMaintenanceForm + + + This topic can't be deleted, it is currently assigned to at least one song! + ¡Esta categoría no se puede borrar, esta asignada a al menos una canción! + + + BibleMediaItem + + + Find: + Encontrar: + + + AlertEditForm + + + Item selected to Add + Ítem seleccionado para AgregarAcortar? + + + Ui_AmendThemeDialog + + + Right + Derecha + + + ThemeManager + + + Save Theme - (%s) + Guardar Tema - (%s) + + + ImageMediaItem + + + Allow background of live slide to be overridden + Permitir que el fondo de la diapositiva sea sustituido + + + MediaManagerItem + + + Add the selected item(s) to the service + Agregar el elemento(s) seleccionado(s) al el servicio + + + AuthorsForm + + + Error + Error + + + BibleMediaItem + + + Book: + Libro: + + + Ui_AmendThemeDialog + + + Font Color: + Color de Fuente: + + + Ui_OpenLPExportDialog + + + Select openlp.org export filename: + Seleccione el nombre de archivo openlp.org a exportar:Acortar? + + + Ui_SettingsDialog + + + Settings + Preferencias + + + BiblesTab + + + Verse Display + Visualización de versículos + + + MediaManagerItem + + + Edit the selected + Editar + + + SlideController + + + Move to next + Ir al siguiente + + + Ui_MainWindow + + + &Plugin List + Lista de &Plugins + + + BiblePlugin + + + &Bible + &Biblia + + + Ui_BibleImportWizard + + + Web Download + Descarga Web + + + Ui_AmendThemeDialog + + + Horizontal + Horizontal + + + ImportWizardForm + + + Open OSIS file + Abrir archivo OSIS + + + SongMaintenanceForm + + + Couldn't save your book! + ¡No se pudo guardar su libro! + + + Couldn't add your topic! + ¡No se pudo agregar la categoría! + + + Ui_AmendThemeDialog + + + pt + pt + + + Ui_MainWindow + + + &Add Tool... + &Agregar Herramienta... + + + Ui_AmendThemeDialog + + + <Color2> + <Color2> + + + ServiceManager + + + Move up + Hacia arriba + + + Ui_OpenLPImportDialog + + + Lyrics + Letra + + + BiblesTab + + + No brackets + Sin corchetes + + + Ui_AlertEditDialog + + + Maintain Alerts + Mantenimiento de Alertas + + + Ui_AmendThemeDialog + + + px + px + + + ServiceManager + + + Select a theme for the service + Seleccione un tema para el servicio + + + ThemesTab + + + Themes + Temas + + + ServiceManager + + + Move to bottom + Mover al Final + + + Ui_PluginViewDialog + + + Status: + Estado: + + + Ui_EditSongDialog + + + CCLI Number: + Número en CCLI: + + + ImportWizardForm + + + This Bible already exists! Please import a different Bible or first delete the existing one. + ¡La Biblia ya existe! Por favor, importe una diferente o borre la anterior. + + + Ui_MainWindow + + + &Translate + &Traducir + + + AlertEditForm + + + Please Save or Clear seletced item + Por favor, Guarde o Limpie el ítem seleccionadoO Borre? + + + Ui_MainWindow + + + Save Service As + Guardar Servicio Como + + + Ui_SongMaintenanceDialog + + + Authors + Autores + + + SongUsageDetailForm + + + Output File Location + Archivo de Salida + + + BiblesTab + + + { and } + { y } + + + GeneralTab + + + Prompt to save Service before starting New + Pedir salvar el Servicio al crear uno Nuevo + + + ImportWizardForm + + + Starting import... + Iniciando importación... + + + BiblesTab + + + Note: +Changes don't affect verses already in the service + Nota: +Los cambios no afectan a los versículo ya en el servicio + + + Ui_EditVerseDialog + + + Intro + Intro + + + ServiceManager + + + Move up order + Mover hacia arriba + + + PresentationTab + + + available + disponible + + + ThemeManager + + + default + por defectopredeterminado? + + + SongMaintenanceForm + + + Delete Author + Borrar Autor + + + Ui_AmendThemeDialog + + + Display Location + Ubicación en la pantalla + + + Ui_PluginViewDialog + + + Version: + Versión: + + + Ui_AlertEditDialog + + + Add + Agregar + + + GeneralTab + + + General + General + + + Ui_AmendThemeDialog + + + Y Position: + Posición Y: + + + ServiceManager + + + Move down order + Mover hacia abajo + + + BiblesTab + + + verse per slide + versículo por diapositiva + + + Ui_BibleImportWizard + + + Welcome to the Bible Import Wizard + Bienvenido al Asistente de Importación de Biblias + + + Ui_AmendThemeDialog + + + Show Shadow: + Mostrar: + + + AlertsTab + + + Preview + Vista Previa + + + alertsPlugin + + + <b>Alerts Plugin</b><br>This plugin controls the displaying of alerts on the presentations screen + <b>Alerts Plugin</b><br>Este plugin controla la visualización de alertas en la pantalla de presentaciones + + + GeneralTab + + + Show the splash screen + Mostrar pantalla de bienvenida + + + Ui_MainWindow + + + New Service + Servicio Nuevo + + + SlideController + + + Move to first + Ir al principio + + + Ui_MainWindow + + + &Online Help + &Ayuda En Línea + + + SlideController + + + Blank Screen + Pantalla en Blanco + + + Ui_MainWindow + + + Save Service + Guardar Servicio + + + Save &As... + Guardar &Como... + + + Toggle the visibility of the Media Manager + Alternar visibilidad del Gestor de Medios + + + MediaManagerItem + + + Delete the selected item + Borrar el ítem seleccionado + + + Ui_EditSongDialog + + + Add + Agregar + + + alertsPlugin + + + &Alert + &Alerta + + + BibleMediaItem + + + Advanced + Avanzado + + + ImageMediaItem + + + Image(s) + Imagen(es) + + + Ui_MainWindow + + + F11 + F11 + + + F10 + F10 + + + F12 + F12 + + + Ui_BibleImportWizard + + + Select the import format, and where to import from. + Seleccione el formato y el lugar del cual importar. + + + Ui_MainWindow + + + Alt+F7 + Alt+F7 + + + Add an application to the list of tools + Agregar una aplicación a la lista de herramientas + + + MediaPlugin + + + <b>Media Plugin</b><br>This plugin allows the playing of audio and video media + <b>Media Plugin</b><br>Este plugin permite la reproducción de medios de audio y video + + + BiblesTab + + + Bible Theme: + Tema de Biblia: + + + SongsPlugin + + + Export songs in openlp.org 1.0 format + Exportar canciones en formato openlp.org 1.0 + + + Ui_MainWindow + + + Theme Manager + Gestor de Temas + + + AlertsTab + + + Alerts + Alertas + + + Ui_customEditDialog + + + Move slide down 1 + Mover hacia abajo 1 + + + Ui_AmendThemeDialog + + + Font: + Fuente: + + + ServiceManager + + + Load an existing service + Abrir un servicio existente + + + Ui_MainWindow + + + Toggle the visibility of the Theme Manager + Alternar visibilidad del Gestor de Temas + + + PresentationTab + + + Presentations + Presentaciones + + + SplashScreen + + + Starting + Iniciando + + + ImageTab + + + Slide Loop Delay: + Retraso del Bucle: + + + ServiceManager + + + Move to end + Mover al final + + + AlertsTab + + + Alert timeout: + Espera:Timeout?? + + + Ui_MainWindow + + + &Preview Pane + Panel de Vista &Previa + + + MediaManagerItem + + + Add a new + Agregar uno nuevo + + + ThemeManager + + + Select Theme Import File + Seleccione el Archivo de Tema a Importar + + + New Theme + Tema Nuevo + + + MediaMediaItem + + + Media + Medios + + + Ui_BibleImportWizard + + + Password: + Contraseña: + + + Ui_AmendThemeDialog + + + Outline Size: + Tamaño: + + + Ui_OpenSongExportDialog + + + Progress: + Progreso: + + + AmendThemeForm + + + Second Color: + Segundo Color: + + + Ui_EditSongDialog + + + Theme, Copyright Info && Comments + Tema, Derechos de Autor && Comentarios + + + Ui_MainWindow + + + &Theme Manager + Gestor de &Temas + + + Ui_OpenLPImportDialog + + + Select openlp.org songfile to import: + Seleccionar al archivo de canciones openlp.org a importar: + + + Ui_EditSongDialog + + + Song Book + Himnario + + + alertsPlugin + + + F7 + F7 + + + Ui_OpenLPExportDialog + + + Author + Autor + + + Ui_AmendThemeDialog + + + Wrap Indentation + Sangría de Retorno + + + ThemeManager + + + Import a theme + Importar un tema + + + PresentationPlugin + + + <b>Presentation Plugin</b> <br> Delivers 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. + <b>Presentation Plugin</b> <br> Ofrece la capacidad de mostrar presentaciones usando un número de programas diferentes. La selección de programas disponibles se encuentra en un cuadro desplegable. + + + ImageMediaItem + + + Image + Imagen + + + SongsTab + + + Enable search as you type: + Habilitar búsqueda-al-escribir: + + + Ui_AlertDialog + + + Cancel + Cancelar + + + Ui_OpenLPImportDialog + + + Import + Importar + + + Ui_EditVerseDialog + + + Chorus + Coro + + + Ui_EditSongDialog + + + Edit All + Editar Todo + + + AuthorsForm + + + You need to type in the last name of the author. + Debe ingresar el apellido del autor. + + + SongsTab + + + Songs Mode + Modo de canciones + + + Ui_AmendThemeDialog + + + Left + Izquierda + + + ThemesTab + + + 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. + + + ImageTab + + + Images + Imágenes + + + BibleMediaItem + + + Verse: + Versículo:Verso:? + + + Ui_BibleImportWizard + + + CSV + CSV + + + Ui_OpenLPExportDialog + + + Song Export List + Lista de Canciones a ExportarAcortar? + + + ThemeManager + + + Export theme + Exportar tema + + + Ui_SongMaintenanceDialog + + + Delete + Eliminar + + + Ui_AmendThemeDialog + + + Theme Name: + Nombrar como: + + + Ui_AboutDialog + + + About OpenLP + Acerca de OpenLP + + + Ui_MainWindow + + + Toggle the visibility of the Service Manager + Alternar visibilidad del Gestor de Servicio + + + PresentationMediaItem + + + A presentation with that filename already exists. + Ya existe una presentación con ese nombre. + + + AlertsTab + + + openlp.org + openlp.org + + + ImportWizardForm + + + Invalid Books File + Archivo de Libros No Válido + + + Ui_OpenLPImportDialog + + + Song Title + Titulo de Canción + + + MediaManagerItem + + + &Show Live + Mo&star En Vivo& Where + + + AlertsTab + + + Keep History: + Guardar Historial:Acortar? + + + Ui_AmendThemeDialog + + + Image: + Imagen: + + + Ui_customEditDialog + + + Set Theme for Slides + Establezca el Tema para las Diapositivas + + + Ui_MainWindow + + + More information about OpenLP + Más información acerca de OpenLP + + + AlertsTab + + + Background Color: + Color de Fondo: + + + SongMaintenanceForm + + + No topic selected! + ¡No seleccionó la categoría! + + + Ui_MainWindow + + + &Media Manager + Gestor de &Medios + + + &Tools + &Herramientas + + + AmendThemeForm + + + Background Color: + Color de Fondo: + + + Ui_EditSongDialog + + + A&dd to Song + A&gregar a Canción + + + Title: + Título: + + + GeneralTab + + + Screen + Pantalla + + + AlertsTab + + + s + s + + + ImagePlugin + + + <b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any somgs which are rendered will use the selected image from the background instead of the one provied by the theme.<br> + <b>Image Plugin</b><br>Permite mostrar imágenes de todo tipo. Si se seleccionan varias imágenes juntas y se presentan en vivo, es posible convertirlas en un bucle temporalizado.<br<br>Desde el plugin, si se seleciona la opción de <i>Sustituir el fondo</i>, cualquier canción que se muestre, usará la imagen seleccionada como fondo, en vez de la imagen del tema.<br> + + + Ui_AlertEditDialog + + + Clear + Limpiar + + + Ui_BibleImportWizard + + + Please wait while your Bible is imported. + Por favor, espere mientras que la Biblia es importada. + + + MediaManagerItem + + + No items selected... + Ningún ítem seleccionado... + + + Ui_OpenLPImportDialog + + + Select All + Seleccionar Todo + + + Ui_AmendThemeDialog + + + Font Main + Fuente Principal + + + Ui_OpenLPImportDialog + + + Title + Título + + + Ui_OpenSongExportDialog + + + Select OpenSong song folder: + Seleccione la carpeta OpenSong de canciones:Acortar? + + + Ui_MainWindow + + + Toggle Media Manager + Alternar Gestor de Medios + + + SongUsagePlugin + + + &Song Usage + &Uso de las Canciones + + + GeneralTab + + + Monitors + Monitores + + + EditCustomForm + + + You need to enter a slide + Debe insertar una diapositiva + + + ImportWizardForm + + + You need to specify a file to import your Bible from! + ¡Debe especificar un archivo desde el cual importar su Biblia! + + + Ui_EditVerseDialog + + + Verse Type + Tipo de Verso + + + ThemeManager + + + You have not selected a theme! + ¡No ha seleccionado un tema! + + + Ui_EditSongDialog + + + Comments + Comentarios + + + AlertsTab + + + Bottom + AbajoInferior? + + + Ui_MainWindow + + + Create a new Service + Crear un Servicio nuevo + + + AlertsTab + + + Top + ArribaSuperior? + + + SlideController + + + Preview + Vista Previa + + + Ui_PluginViewDialog + + + TextLabel + TextLabelEnglish? + + + About: + Acerca de: + + + Inactive + Inactivo + + + Ui_OpenSongExportDialog + + + Ready to export + Listo para exportar + + + Export + Exportar + + + Ui_PluginViewDialog + + + Plugin List + Lista de Plugins + + + Ui_AmendThemeDialog + + + Transition Active: + Activar Transición: + + + Ui_BibleImportWizard + + + Proxy Server (Optional) + Servidor Proxy (Opcional) + + + Ui_EditSongDialog + + + &Manage Authors, Topics, Books + Ad&ministrar Autores, Categorías, Libros + + + Ui_SongUsageDetailDialog + + + Audit Detail Extraction + Extracción de Detalles de Auditoria + + + Ui_OpenLPExportDialog + + + Ready to export + Listo para exportar + + + EditCustomForm + + + Save && Preview + Guardar && Vista Previa + + + Ui_OpenLPExportDialog + + + Select All + Seleccionar Todo + + + Ui_SongUsageDetailDialog + + + to + hasta + + + Ui_AmendThemeDialog + + + Size: + Tamaño: + + + MainWindow + + + OpenLP Main Display Blanked + Pantalla Principal de OpenLP en Blanco + + + Ui_OpenLPImportDialog + + + Remove Selected + Quitar lo Seleccionado + + + OpenSongBible + + + Importing + Importando + + + Ui_EditSongDialog + + + Delete + Eliminar + + + Ui_MainWindow + + + Ctrl+S + Crtl+G + + + PresentationMediaItem + + + File exists + Ya existe el Archivo + + + Ui_OpenSongImportDialog + + + Ready to import + Listo para importar + + + SlideController + + + Stop continuous loop + Detener el bucleBucle, sinónimos? + + + s + s + + + SongMediaItem + + + Song Maintenance + Mantenimiento de Canción + + + Ui_customEditDialog + + + Edit + Editar + + + Ui_AmendThemeDialog + + + Gradient : + Gradiente: + + + BiblesTab + + + Layout Style: + Disposición: + + + ImportWizardForm + + + Invalid Verse File + Archivo de Versículo No Válido + + + EditSongForm + + + Error + Error + + + Ui_customEditDialog + + + Add New + Agregar Nueva + + + Ui_AuthorsDialog + + + Display name: + Mostrar: + + + SongMaintenanceForm + + + Are you sure you want to delete the selected topic? + ¿Está seguro que desea eliminar la categoría seleccionada? + + + Ui_AmendThemeDialog + + + Bold/Italics + Negrita/Cursiva + + + Ui_SongMaintenanceDialog + + + Song Maintenance + Mantenimiento de Canciones + + + Ui_EditVerseDialog + + + Bridge + Puente + + + SongsTab + + + Songs + Canciones + + + Ui_AmendThemeDialog + + + Preview + Vista Previa + + + Ui_AboutDialog + + + Credits + Créditos + + + MediaManagerItem + + + Preview the selected item + Vista Previa del ítem seleccionado + + + Ui_BibleImportWizard + + + Version Name: + Nombre de Versión: + + + Ui_AboutDialog + + + About + Acerca De + + + Ui_EditVerseDialog + + + Ending + Final + + + Ui_AmendThemeDialog + + + Horizontal Align: + Horizontal: + + + ServiceManager + + + &Edit Item + &Editar Ítem + + + Ui_AmendThemeDialog + + + Background Type: + Tipo de Fondo: + + + Ui_MainWindow + + + &Save + &Guardar + + + OpenLP 2.0 + OpenLP 2.0 + + + ThemeManager + + + A theme with this name already exists, would you like to overwrite it? + Ya existe un tema con este nombre, ¿quiere reemplazarlo? + + + Export a theme + Exportar un tema + + + AmendThemeForm + + + Open file + Abrir archivo + + + Ui_TopicsDialog + + + Topic Maintenance + Mantenimiento de Categorías + + + Ui_customEditDialog + + + Clear edit area + Limpiar el área de edición + + + Ui_AmendThemeDialog + + + Show Outline: + Mostrar: + + + SongBookForm + + + You need to type in a book name! + ¡Debe ingresar el nombre del himnario! + + + ImportWizardForm + + + Open OpenSong Bible + Abrir Biblia OpenSong + + + Ui_MainWindow + + + Look && &Feel + A&pariencia& en que letra? + + + Ui_BibleImportWizard + + + Ready. + Listo. + + + Ui_SongMaintenanceDialog + + + Books/Hymnals + Libros/Himnarios + + + Ui_AboutDialog + + + Contribute + Contribuir + + + Ui_AmendThemeDialog + + + Gradient + Gradiente + + + AlertsTab + + + Font Size: + Tamaño: + + + Ui_OpenSongExportDialog + + + Full Song List + Lista Completa de Canciones + + + Ui_AmendThemeDialog + + + Circular + Circular + + + diff --git a/resources/i18n/openlp_hu.ts b/resources/i18n/openlp_hu.ts new file mode 100644 index 000000000..4fdcd3f2f --- /dev/null +++ b/resources/i18n/openlp_hu.ts @@ -0,0 +1,3904 @@ + + + + + AboutForm + + + About OpenLP + Az OpenLP névjegye + + + + 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> összeállítás <revision> – Nyílt forrású dalszöveg vetítő + +Az OpenLP egy templomi/gyülekezeti, ill. dalszöveg vetítő szabad szoftver, mely használható daldiák, 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 szeretne több keresztény számítógépes programot, fontolja meg a részvételt az alábbi gombbal. + + + + About + Névjegy + + + + Project Lead + Raoul "superfly" Snyman + +Developers + Tim "TRB143" Bentley + Jonathan "gushie" Corwin + Michael "cocooncrash" Gorven + Scott "sguerrieri" Guerrieri + Raoul "superfly" Snyman + Martin "mijiti" Thompson + Jon "Meths" Tibble + +Contributors + Meinert "m2j" Jordan + Christian "crichter" Richter + Maikel Stuivenberg + Carsten "catini" Tingaard + +Testers + Philip "Phill" Ridout + Wesley "wrst" Stout (lead) + +Packagers + Thomas "tabthorpe" Abthorpe (FreeBSD) + Tim "TRB143" Bentley (Fedora) + Michael "cocooncrash" Gorven (Ubuntu) + Matthias "matthub" Hub (Mac OS X) + Raoul "superfly" Snyman (Windows) + + Projektvezetés + Raoul „superfly” Snyman + +Fejlesztők + Tim „TRB143” Bentley + Jonathan „gushie” Corwin + Michael „cocooncrash” Gorven + Scott „sguerrieri” Guerrieri + Raoul „superfly” Snyman + Martin „mijiti” Thompson + Jon „Meths” Tibble + +Közreműködők + Meinert „m2j” Jordan + Christian „crichter” Richter + Maikel Stuivenberg + Carsten „catini” Tingaard + +Tesztelők + Philip „Phill” Ridout + Wesley „wrst” Stout (lead) + +Csomagolók + Thomas „tabthorpe” Abthorpe (FreeBSD) + Tim „TRB143” Bentley (Fedora) + Michael „cocooncrash” Gorven (Ubuntu) + Matthias „matthub” Hub (Mac OS X) + Raoul „superfly” Snyman (Windows) + + + + Credits + Közreműködők + + + + Copyright © 2004-2010 Raoul Snyman +Portions copyright © 2004-2010 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten Tinggaard + +This program is 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. + + +GNU GENERAL PUBLIC LICENSE +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification follow. + +GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + +a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. + +c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. + +3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: + +a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + +If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. + +This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version', you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. + +<one line to give the program's name and a brief idea of what it does.> +Copyright (C) <year> <name of author> + +This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. + +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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this when it starts in an interactive mode: + +Gnomovision version 69, Copyright (C) year name of author +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type "show w". +This is free software, and you are welcome to redistribute it under certain conditions; type "show c" for details. + +The hypothetical commands "show w" and "show c" should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than "show w" and "show c"; they could even be mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in the program "Gnomovision" (which makes passes at compilers) written by James Hacker. + +<signature of Ty Coon>, 1 April 1989 +Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. + Copyright © 2004-2010 Raoul Snyman +Részleges copyright © 2004-2010 Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten Tinggaard + +Ez a program szabad szoftver; terjeszthető illetve módosítható a Free Software Foundation által kiadott GNU General Public License dokumentumában leírtak; akár a licenc 2-es, akár (tetszőleges) későbbi változata szerint. + +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észleteket a GNU General Public License tartalmaz. + + +GNU GENERAL PUBLIC LICENSE +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Bárki terjesztheti, másolhatja a dokumentumot, de a módosítása nem megengedett. (A fordítás csak tájékoztató jellegű és jogi szempontból csakis az angol eredeti a mérvadó.) + +Előszó + +A legtöbb szoftver licencei azzal a szándékkal készültek, hogy minél kevesebb lehetőséget adjanak a szoftver megváltoztatására és terjesztésére. Ezzel szemben a GNU GPL célja, hogy garantálja a szabad szoftver másolásának és terjesztésének szabadságát, ezáltal biztosítva a szoftver szabad felhasználhatóságát minden felhasználó számára. A GPL szabályai vonatkoznak a Free Software Foundation legtöbb szoftverére, illetve minden olyan programra, melynek szerzője úgy dönt, hogy ezt használja a szerzői jog megjelölésekor. (A Free Software Foundation egyes szoftvereire a GNU LGPL érvényes.) Bárki használhatja a programjaiban a GPL-t a szerzői jogi megjegyzésnél. + +A szabad szoftver megjelölés nem jelenti azt, hogy a szoftvernek nem lehet ára. A GPL licencek célja, hogy garantálja a szabad szoftver másolatainak szabad terjesztését (és e szolgáltatásért akár díj felszámítását), a forráskód elérhetőségét, hogy bárki szabadon módosíthassa a szoftvert, vagy felhasználhassa a részeit új szabad programokban; és hogy mások megismerhessék ezt a lehetőséget. + +A szerző jogainak védelmében korlátozásokat kell hozni, amelyek megtiltják, hogy bárki megtagadhassa ezeket a jogokat másoktól, vagy ezekről való lemondásra kényszerítsen bárki mást. Ezek a megszorítások bizonyos felelősségeket jelentenek azok számára, akik a szoftver másolatait terjesztik vagy módosítják. + +Ha valaki például ilyen program másolatait terjeszti, akár ingyen vagy bizonyos összeg fejében, a szoftverre vonatkozó minden jogot tovább kell adnia a fogadó feleknek. Biztosítani kell továbbá, hogy megkapják vagy legalábbis megkaphassák a forráskódot is. És persze ezeket a licencfeltételeket is el kell juttatni, hogy tisztában legyenek a jogaikkal. + +A jogok védelme két lépésből áll: + +(1) a szoftver szerzői jogainak védelméből és + +(2) a jelen licenc biztosításából, amely jogalapot biztosít a szoftver másolására, terjesztésére és/vagy módosítására. + +Az egyes szerzők és a magunk védelmében biztosítani akarjuk, hogy mindenki megértse: a jelen szabad szoftverre nincs jótállás. Ha a szoftvert módosították és továbbadták, akkor mindenkinek, aki a módosított változatot kapja, tudnia kell, hogy az nem az eredeti, így a mások által okozott hibáknak nem lehet hatása az eredeti szerző hírnevére. + +Végül, a szabad szoftver létét állandóan fenyegetik a szoftverszabadalmak. El szeretnénk kerülni annak veszélyét, hogy a szabad program terjesztői szabadalmat jegyezhessenek be rá, ezáltal saját szellemi tulajdont képezővé tegyék a programot. Ennek megelőzéséhez tisztázni kívánjuk: szabadalom szabad szoftverrel kapcsolatban csak mindenki általi szabad használatra jegyezhető be, vagy egyáltalán nem jegyezhető be. + +A másolásra, terjesztésre, módosításra vonatkozó pontos szabályok és feltételek: +A MÁSOLÁSRA, TERJESZTÉSRE ÉS MÓDOSÍTÁSRA VONATKOZÓ FELTÉTELEK ÉS KIKÖTÉSEK + +0. Ez a licenc minden olyan programra vagy munkára vonatkozik, amelynek a szerzői jogi megjegyzésében a jog tulajdonosa a következő szöveget helyezte el: a GPL-ben foglaltak alapján terjeszthető. Az alábbiakban a Program kifejezés bármely ilyen programra vagy munkára vonatkozik, a Programon alapuló munka pedig magát a programot vagy egy szerzői joggal védett munkát jelenti: vagyis olyan munkát, amely tartalmazza a programot vagy annak egy részletét, módosítottan vagy módosítatlanul és/vagy más nyelvre fordítva. (Az alábbiakban a fordítás minden egyéb megkötés nélkül beletartozik a módosítás fogalmába.) Minden engedélyezés címzettje Ön. + +A jelen licenc a másoláson, terjesztésen és módosításon kívül más tevékenységre nem vonatkozik, azok a hatályán kívül esnek. A Program futtatása nincs korlátozva, illetve a Program kimenetére is csak abban az esetben vonatkozik ez a szabályozás, ha az tartalmazza a Programon alapuló munka egy részletét (függetlenül attól, hogy ez a Program futtatásával jött-e létre). Ez tehát a Program működésétől függ. + +1. A Program forráskódja módosítás nélkül másolható és bármely adathordozón terjeszthető, feltéve, hogy minden egyes példányon pontosan szerepel a megfelelő szerzői jogi megjegyzés, illetve a garanciavállalás elutasítása; érintetlenül kell hagyni minden erre a szabályozásra és a garancia teljes hiányára utaló szöveget és a jelen licencdokumentumot is el kell juttatni mindazokhoz, akik a Programot kapják. + +Felszámítható díj a másolat fizikai továbbítása fejében, illetve ellenszolgáltatás fejében a Programhoz garanciális támogatás is biztosítható. + +2. A Program vagy annak egy része módosítható, így a Programon alapuló munka jön létre. A módosítás ezután az 1. szakaszban adott feltételek szerint tovább terjeszthető, ha az alábbi feltételek is teljesülnek: + +a) A módosított fájlokat el kell látni olyan megjegyzéssel, amely feltünteti a módosítást végző nevét és a módosítások dátumát. + +b) Minden olyan munkát, amely részben vagy egészben tartalmazza a Programot vagy a Programon alapul, olyan szabályokkal kell kiadni vagy terjeszteni, hogy annak használati joga harmadik személy részére licencdíjmentesen hozzáférhető legyen, a jelen dokumentumban található feltételeknek megfelelően. + +c) Ha a módosított Program interaktívan olvassa a parancsokat futás közben, akkor úgy kell elkészíteni, hogy a megszokott módon történő indításkor megjelenítsen egy üzenetet a megfelelő szerzői jogi megjegyzéssel és a garancia hiányára utaló közléssel (vagy éppen azzal az információval, hogy miként juthat valaki garanciához), illetve azzal az információval, hogy bárki terjesztheti a Programot a jelen feltételeknek megfelelően, és arra is utalást kell tenni, hogy a felhasználó miként tekintheti meg a licenc egy példányát. (Kivétel: ha a Program interaktív ugyan, de nem jelenít meg hasonló üzenetet, akkor a Programon alapuló munkának sem kell ezt tennie.) + +Ezek a feltételek a módosított munkára, mint egészre vonatkoznak. Ha a munka azonosítható részei nem a Programon alapulnak és független munkákként elkülönülten azonosíthatók, akkor ez a szabályozás nem vonatkozik ezekre a részekre, ha azok külön munkaként kerülnek terjesztésre. Viszont, ha ugyanez a rész az egész részeként kerül terjesztésre, amely a Programon alapuló munka, akkor az egész terjesztése csak a jelen dokumentum alapján lehetséges, amely ebben az esetben a jogokat minden egyes felhasználó számára kiterjeszti az egészre tekintet nélkül arra, hogy melyik részt ki írta. + +E szövegrésznek tehát nem az a célja, hogy mások jogait elvegye vagy korlátozza a kizárólag saját maga által írt munkákra; a cél az, hogy a jogok gyakorlása szabályozva legyen a Programon alapuló illetve a gyűjteményes munkák terjesztése esetében. + +Ezenkívül más munkáknak, amelyek nem a Programon alapulnak, a Programmal (vagy a Programon alapuló munkával) közös adathordozón vagy adattárolón szerepeltetése nem jelenti a jelen szabályok érvényességét azokra is. + +3. A Program (vagy a Programon alapuló munka a 2. szakasznak megfelelően) másolható és terjeszthető tárgykódú vagy végrehajtható kódú formájában az 1. és 2. szakaszban foglaltak szerint, amennyiben az alábbi feltételek is teljesülnek: + +a) a teljes, gép által értelmezhető forráskód kíséri az anyagot, amelynek terjesztése az 1. és 2. szakaszban foglaltak szerint történik, jellemzően szoftverterjesztésre használt adathordozón; vagy, + +b) legalább három évre szólóan írásban vállalja, hogy bármely külső személynek rendelkezésre áll a teljes gép által értelmezhető forráskód, a fizikai továbbítást fedező összegnél nem nagyobb díjért az 1. és 2. szakaszban foglaltak szerint szoftverterjesztésre használt adathordozón; vagy, + +c) a megfelelő forráskód terjesztésére vonatkozóan megkapott tájékoztatás kíséri az anyagot. (Ez az alternatíva csak nem kereskedelmi terjesztés esetén alkalmazható abban az esetben, ha a terjesztő a Programhoz a tárgykódú vagy forráskódú formájában jutott hozzá az ajánlattal együtt a fenti b. cikkelynek megfelelően.) + +Egy munka forráskódja a munkának azt a formáját jelenti, amelyben a módosításokat elsődlegesen végezni szokás. Egy végrehajtható program esetében a teljes forráskód a tartalmazott összes modul forráskódját jelenti, továbbá a kapcsolódó felületdefiníciós fájlokat és a fordítást vezérlő parancsfájlokat. Egy speciális kivételként a forráskódnak nem kell tartalmaznia normál esetben a végrehajtható kód futtatására szolgáló operációs rendszer főbb részeiként (kernel, fordítóprogram stb.) terjesztett részeit (forrás vagy bináris formában), kivéve, ha a komponens maga a végrehajtható állományt kíséri. + +Ha a végrehajtható program vagy tárgykód terjesztése a forráskód hozzáférését egy megadott helyen biztosító írásban vállalja, akkor ez egyenértékű a forráskód terjesztésével, bár másoknak nem kell a forrást lemásolniuk a tárgykóddal együtt. + +4. A Programot csak a jelen Licencben leírtaknak megfelelően szabad lemásolni, terjeszteni, módosítani és allicencbe adni. Az egyéb módon történő másolás, módosítás, terjesztés és allicencbe adás érvénytelen, és azonnal érvényteleníti a dokumentumban megadott jogosultságokat. Mindazonáltal azok, akik a Licencet megszegőtől kaptak példányokat vagy jogokat, tovább gyakorolhatják a Licenc által meghatározott jogaikat mindaddig, amíg teljesen megfelelnek a Licenc feltételeinek. + +5. Önnek nem kötelező elfogadnia ezt a szabályozást, hiszen nem írta alá. Ezen kívül viszont semmi más nem ad jogokat a Program terjesztésére és módosítására. Ezeket a cselekedeteket a törvény bünteti, ha nem a jelen szerzői jogi szabályozás keretei között történnek. Mindezek miatt a Program (vagy a Programon alapuló munka) terjesztése vagy módosítása a jelen dokumentum szabályainak, és azon belül a Program vagy a munka módosítására, másolására vagy terjesztésére vonatkozó összes feltételének elfogadását jelenti. + +6. Minden alkalommal, amikor a Program (vagy az azon alapuló munka) továbbadása történik, a Programot megkapó személy automatikusan hozzájut az eredeti licenctulajdonostól származó licenchez, amely a jelen szabályok szerint biztosítja a jogot a Program másolására, terjesztésére és módosítására. Nem lehet semmilyen módon tovább korlátozni a fogadó félnek az itt megadott jogait. A Program továbbadója nem felelős harmadik személyekkel betartatni a jelen szabályokat. + +7. Ha bírósági határozat, szabadalomsértés vélelme, vagy egyéb (nem kizárólag szabadalmakkal kapcsolatos) okból olyan feltételeknek kell megfelelnie (akár bírósági határozat, akár megállapodás, akár bármi más eredményeképp), amelyek ellentétesek a jelen feltételekkel, az nem menti fel a terjesztőt a jelen feltételek figyelembevétele alól. Ha a terjesztés nem lehetséges a jelen Licenc és az egyéb feltételek kötelezettségeinek együttes betartásával, akkor tilos a Program terjesztése. Ha például egy szabadalmi szerződés nem engedi meg egy program jogdíj nélküli továbbterjesztését azok számára, akik közvetve vagy közvetlenül megkapják, akkor az egyetlen módja, hogy eleget tegyen valaki mindkét feltételnek az, hogy eláll a Program terjesztésétől. + +Ha ennek a szakasznak bármely része érvénytelen, vagy nem érvényesíthető valamely körülmény folytán, akkor a szakasz maradék részét kell alkalmazni, egyéb esetekben pedig a szakasz egésze alkalmazandó. + +Ennek a szakasznak nem az a célja, hogy a szabadalmak vagy egyéb hasonló jogok megsértésére ösztönözzön bárkit is; mindössze meg szeretné védeni a szabad szoftver terjesztési rendszerének egységét, amelyet a szabad közreadást szabályozó feltételrendszerek teremtenek meg. Sok ember nagymértékben járult hozzá az e rendszer keretében terjesztett, különféle szoftverekhez, és számít a rendszer következetes alkalmazására; azt a szerző/adományozó dönti el, hogy a szoftverét más rendszer szerint is közzé kívánja-e tenni, és a licencet kapók ezt nem befolyásolhatják. + +E szakasz célja, hogy pontosan tisztázza azt, ami elgondolásunk szerint a jelen licenc többi részének a következménye. + +8. Ha a Program terjesztése és/vagy használata egyes országokban nem lehetséges akár szabadalmak, akár szerzői jogokkal védett felületek miatt, akkor a Program szerzői jogainak eredeti tulajdonosa, aki a Programot ezen szabályozás alapján adja közre, egy explicit földrajzi megkötést adhat a terjesztésre, és egyes országokat kizárhat. Ebben az esetben úgy tekintendő, hogy a jelen licenc ezt a megkötést is tartalmazza, ugyanúgy mintha csak a fő szövegében lenne leírva. + +9. A Free Software Foundation időről időre kiadja a General Public License dokumentum felülvizsgált és/vagy újabb változatait. Ezek az újabb dokumentumok az előzőek szellemében készülnek, de részletekben különbözhetnek, hogy új problémákat vagy aggályokat is kezeljenek. + +A dokumentum minden változata egy megkülönböztető verziószámmal ellátva jelenik meg. Ha a Program szerzői jogi megjegyzésében egy bizonyos vagy annál újabb verzió van megjelölve, akkor lehetőség van akár a megjelölt, vagy a Free Software Foundation által kiadott későbbi verzióban leírt feltételek követésére. Ha nincs ilyen megjelölt verzió, akkor lehetőség van a Free Software Foundation által valaha kibocsátott bármelyik dokumentum alkalmazására. + +10. A Programot más szabad szoftverbe, amelynek szerzői jogi szabályozása különbözik, csak akkor építheti be, ha a szerzőtől erre engedélyt szerzett. Abban az esetben, ha a program szerzői jogainak tulajdonosa a Free Software Foundation, akkor a Free Software Foundation címére kell írni; néha kivételt teszünk. A döntés a következő két cél szem előtt tartásával fog történni: megmaradjon a szabad szoftveren alapuló munkák szabad állapota, valamint segítse elő a szoftver újrafelhasználását és megosztását. +GARANCIAVÁLLALÁS HIÁNYA + +11. MIVEL A JELEN PROGRAM HASZNÁLATI JOGA DÍJMENTES, AZ ALKALMAZHATÓ JOGSZABÁLYOK ÁLTAL BIZTOSÍTOTT MAXIMÁLIS MÉRTÉKBEN VISSZAUTASÍTJUK A PROGRAMHOZ A GARANCIA BIZTOSÍTÁSÁT. AMENNYIBEN A SZERZŐI JOGOK TULAJDONOSAI ÍRÁSBAN MÁSKÉNT NEM NYILATKOZNAK, A PROGRAM A "JELEN ÁLLAPOTÁBAN" KERÜL KIADÁSRA, MINDENFÉLE GARANCIAVÁLLALÁS NÉLKÜL, LEGYEN AZ KIFEJEZETT VAGY BELEÉRTETT, BELEÉRTVE, DE NEM KIZÁRÓLAGOSAN A FORGALOMBA HOZHATÓSÁGRA VAGY ALKALMAZHATÓSÁGRA VONATKOZÓ GARANCIÁKAT. A PROGRAM MINŐSÉGÉBŐL ÉS MŰKÖDÉSÉBŐL FAKADÓ ÖSSZES KOCKÁZAT A FELHASZNÁLÓT TERHELI. HA A PROGRAM HIBÁSAN MŰKÖDIK, A FELHASZNÁLÓNAK MAGÁNAK KELL VÁLLALNIA A JAVÍTÁSHOZ SZÜKSÉGES MINDEN KÖLTSÉGET. + +12. AMENNYIBEN A HATÁLYOS JOGSZABÁLYOK VAGY A SZERZŐI JOGOK TULAJDONOSAI ÍRÁSOS MEGÁLLAPODÁSBAN MÁSKÉNT NEM RENDELKEZNEK, SEM A PROGRAM SZERZŐJE, SEM MÁSOK, AKIK MÓDOSÍTOTTÁK ÉS/VAGY TERJESZTETTÉK A PROGRAMOT A FENTIEKNEK MEGFELELŐEN, NEM TEHETŐK FELELŐSSÉ A KÁROKÉRT, BELEÉRTVE MINDEN VÉLETLEN, VAGY KÖVETKEZMÉNYES KÁRT, AMELY A PROGRAM HASZNÁLATÁBÓL VAGY A HASZNÁLAT MEGAKADÁLYOZÁSÁBÓL SZÁRMAZIK (BELEÉRTVE, DE NEM KIZÁRÓLAGOSAN AZ ADATVESZTÉST ÉS A HELYTELEN ADATFELDOLGOZÁST, VALAMINT A MÁS PROGRAMOKKAL VALÓ HIBÁS EGYÜTTMŰKÖDÉST), MÉG AKKOR SEM, HA EZEN FELEK TUDATÁBAN VOLTAK, HOGY ILYEN KÁROK KELETKEZHETNEK. + +FELTÉTELEK ÉS SZABÁLYOK VÉGE +Hogyan alkalmazhatók ezek a szabályok egy új programra? +Ha valaki egy új programot készít és szeretné, hogy az bárki számára a lehető leginkább hasznos legyen, akkor a legjobb módszer, hogy azt szabad szoftverré teszi, megengedve mindenkinek a szabad másolást és módosítást a jelen feltételeknek megfelelően. + +Ehhez a következő megjegyzést kell csatolni a programhoz. A legbiztosabb ezt minden egyes forrásfájl elejére beírni, így közölve leghatásosabban a garancia visszautasítását; ezenkívül minden fájl kell, hogy tartalmazzon egy copyright sort és egy mutatót arra a helyre, ahol a teljes szöveg található. + +Egy sor, amely megadja a program nevét és funkcióját +Copyright (C) év; szerző neve; + +Ez a program szabad szoftver; terjeszthető illetve módosítható a Free Software Foundation által kiadott GNU General Public License dokumentumában leírtak; akár a licenc 2-es, akár (tetszőleges) későbbi változata szerint. + +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észleteket a GNU General Public License tartalmaz. + +A felhasználónak a programmal együtt meg kell kapnia a GNU General Public License egy példányát; ha mégsem kapta meg, akkor ezt a Free Software Foundationnak küldött levélben jelezze (cím: Free Software Foundation Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.) + +A programhoz csatolni kell azt is, hogy miként lehet kapcsolatba lépni a szerzővel, elektronikus vagy hagyományos levél küldésével. + +Ha a program interaktív, a következőhöz hasonló üzenettel lehet ezt megtenni a program indulásakor: + +Gnomovision version 69, Copyright (C) év, a szerző neve. +A Gnomovision programhoz SEMMILYEN GARANCIA NEM JÁR; részletekért írja be a 'show w' parancsot. Ez egy szabad szoftver, bizonyos feltételek mellett terjeszthető, illetve módosítható; részletekért írja be a 'show c' parancsot. + +A show w és show c képzeletbeli parancsok, és a GPL megfelelő részeit kell megjeleníteniük. Természetesen a valódi parancsok a show w és show c parancstól különbözhetnek; lehetnek akár egérkattintások vagy menüpontok is, ami a programnak megfelel. + +Ha szükséges, meg kell szerezni a munkáltatótól (ha a szerző programozóként dolgozik) vagy az iskolától a program szerzői jogairól való lemondás igazolását. Erre itt egy példa; változtassa meg a neveket: + +A Fiktív Bt. ezennel lemond minden szerzői jogi érdekeltségéről a „Gnomovision” programmal (amelyet több fázisban fordítanak le a fordítóprogramok) kapcsolatban, amelyet H. Ekker János írt. + +Aláírás: Tira Mihály, 1989. április 1. Tira Mihály ügyvezető + +A GNU General Public License nem engedi meg, hogy a program része legyen szellemi tulajdont képező programoknak. Ha a program egy szubrutinkönyvtár, akkor megfontolhatja, hogy nem célszerűbb-e megengedni, hogy szellemi tulajdont képező alkalmazásokkal is összefűzhető legyen a programkönyvtár. Ha ezt szeretné, akkor a GPL helyett a GNU LGPL-t kell használni. + + + + License + Licenc + + + + Contribute + Részvétel + + + + Close + Bezárás + + + + build + + + + + AlertForm + + + Alert Message + Figyelmeztetés + + + + Alert &text: + Figyelmeztető &szöveg: + + + + &Parameter(s): + &Paraméterek: + + + + &New + &Új + + + + &Save + &Mentés + + + + &Delete + &Törlés + + + + Displ&ay + &Megjelenítés + + + + Display && Cl&ose + M&egjelenítés és bezárás + + + + &Close + &Bezárás + + + + Item selected to Add + Hozzáadásra kiválasztott elem + + + + Missing data + Hiányos adatok + + + + AlertsTab + + + pt + pt + + + + Location: + Hely: + + + + Font Color: + Betűszín: + + + + Font + Betűkészlet + + + + Font Name: + Betűkészlet neve: + + + + Preview + Előnézet + + + + Alerts + Figyelmeztetések + + + + Alert timeout: + Figyelmeztetés késleltetése: + + + + openlp.org + openlp.org + + + + Background Color: + Háttérszín: + + + + s + mp + + + + Bottom + Alul + + + + Top + Felül + + + + Font Size: + Betűméret: + + + + AmendThemeForm + + + Slide Height is %s rows + A dia magassága %s sor + + + + First Color: + Első szín: + + + + Second Color: + Második szín: + + + + Background Color: + Háttérszín: + + + + Theme Maintenance + Témák kezelése + + + + Theme Name: + Téma neve: + + + + Background: + Háttér: + + + + Opaque + Átlátszatlan + + + + Transparent + Átlátszó + + + + Background Type: + Háttér típusa: + + + + Solid Color + Homogén szín + + + + Gradient + Színátmenet + + + + Image + Kép + + + + <Color1> + + + + + <Color2> + + + + + Image: + Kép: + + + + Gradient : + Színátmenet: + + + + Horizontal + Vízszintes + + + + Vertical + Függőleges + + + + Circular + Körkörös + + + + Background + Háttér + + + + Main Font + Alap betűkészlet + + + + Font: + Betűkészlet: + + + + Font Color: + Betűszín: + + + + Size: + Méret: + + + + pt + + + + + Wrap Indentation + Sortörési behúzás + + + + Adjust Line Spacing + Sorköz igazítása + + + + Normal + Normál + + + + Bold + Félkövér + + + + Italics + Dőlt + + + + Bold/Italics + Félkövér dőlt + + + + Font Weight: + Betűvastagság: + + + + Display Location + Hely megjelenítése + + + + Use Default Location: + Alapértelmezett hely alkalmazása: + + + + X Position: + X pozíció: + + + + Y Position: + Y pozíció: + + + + Width: + Szélesség: + + + + Height: + Magasság: + + + + px + + + + + Font Main + Alap betűkészlet + + + + Footer Font + Lábjegyzet betűkészlete + + + + Font Footer + Lábjegyzet betűkészlet + + + + Outline + Körvonal + + + + Outline Size: + Körvonal mérete: + + + + Outline Color: + Körvonal színe: + + + + Show Outline: + Körvonal megjelenítése: + + + + Shadow + Árnyék + + + + Shadow Size: + Árnyék mérete: + + + + Shadow Color: + Árnyék színe: + + + + Show Shadow: + Árnyék megjelenítése: + + + + Alignment + Igazítás + + + + Horizontal Align: + Vízszintes igazítás: + + + + Left + Balra zárt + + + + Right + Jobbra zárt + + + + Center + Középre igazított + + + + Vertical Align: + Függőleges igazítás: + + + + Top + Felülre + + + + Middle + Középre + + + + Bottom + Alulra + + + + Slide Transition + Diaátmenet + + + + Transition Active: + Aktív átmenet: + + + + Other Options + További beállítások + + + + Preview + Előnézet + + + + AuditDeleteDialog + + + Song Usage Delete + Dalstatisztika törlése + + + + AuditDetailDialog + + + Song Usage Extraction + Dalstatisztika kicsomagolása + + + + Select Date Range + Időintervallum megadása + + + + to + + + + + Report Location + Helyszín jelentése + + + + AuthorsForm + + + You need to type in the first name of the author. + Meg kell adni a szerző vezetéknevét. + + + + You haven't set a display name for the author, would you like me to combine the first and last names for you? + Nem állította be a megjelenített nevet. Szeretné a vezetéknevet és a keresztnevet összeilleszteni? + + + + Error + Hiba + + + + You need to type in the last name of the author. + Meg kell adni a szerző keresztnevét. + + + + Author Maintenance + Szerzők kezelése + + + + Display name: + Megjelenített név: + + + + First name: + Keresztnév: + + + + Last name: + Vezetéknév: + + + + BibleMediaItem + + + Quick + Gyors + + + + Bible + Biblia + + + + Text Search + Szöveg keresése + + + + Find: + Keresés: + + + + Search Type: + Keresés típusa: + + + + Bible not fully loaded + A Biblia nem töltődött be teljesen + + + + No matching book could be found in this Bible. + Nem található ilyen könyv ebben a Bibliában. + + + + Dual: + Második: + + + + Chapter: + Fejezet: + + + + Search + Keresés + + + + Keep + Megtartása + + + + Results: + Eredmények: + + + + Verse Search + Vers keresése + + + + Version: + Verzió: + + + + From: + Innentől: + + + + Book: + Könyv: + + + + No Book Found + Nincs ilyen könyv + + + + Advanced + Haladó + + + + To: + Idáig: + + + + Clear + Törlése + + + + Verse: + Vers: + + + + BiblePlugin + + + <strong>Bible Plugin</strong><br />This plugin allows bible verses from different sources to be displayed on the screen during the service. + <strong>Biblia bővítmény</strong><br />Ez a bővítmény különféle igehelyek vetítését teszi lehetővé a szolgálat alatt. + + + + BiblesTab + + + ( and ) + ( és ) + + + + verse per line + egy vers soronként + + + + Display Style: + Megjelenítési stílus: + + + + continuous + folytonos + + + + [ and ] + [ és ] + + + + Verse Display + Vers megjelenítés + + + + Display Dual Bible Verses + Kettőzött bibliaversek megjelenítése + + + + Only show new chapter numbers + Csak az új fejezetszámok megjelenítése + + + + Layout Style: + Elrendezési stílus: + + + + No brackets + Nincsenek zárójelek + + + + Bibles + Bibliák + + + + { and } + { és } + + + + Note: +Changes don't affect verses already in the service + Megjegyzés: +A változások nem érintik a már a szolgálatban lévő igeverseket + + + + verse per slide + egy vers diánként + + + + Bible Theme: + Biblia téma: + + + + CustomMediaItem + + + Custom + Egyedi + + + + CustomPlugin + + + <b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br> + <b>Egyedi bővítmény</b><br/>Ez a bővítmény dalokhoz hasonló diák vetítését teszi lehetővé. Ugyanakkor több szabadságot enged meg, mint a dalok bővítmény + + + + CustomTab + + + Custom + Egyedi + + + + Custom Display + Egyedi megjelenés + + + + Display Footer + Lábjegyzet megjelenítése + + + + DisplayTab + + + Displays + Megjelenítők + + + + EditCustomForm + + + You need to enter a title + Meg kell adni egy címet + + + + Error + Hiba + + + + You need to enter a slide + Meg kell adni egy diát + + + + Save && Preview + Mentés és előnézet + + + + Edit Custom Slides + Egyedi diák szerkesztése + + + + Move slide Up 1 + Dia mozgatása felfelé + + + + Move slide down 1 + Dia mozgatása lefelé + + + + Title: + Cím: + + + + Add New + Új hozzáadása + + + + Add new slide at bottom + Új dia hozzáadása alulra + + + + Edit + Szerkesztés + + + + Edit selected slide + Kiválasztott dia szerkesztése + + + + Edit All + Összes szerkesztése + + + + Edit all slides + Összes dia szerkesztése + + + + Save + Mentés + + + + Replace edited slide + Szerkesztett dia cserélése + + + + Delete + Törlés + + + + Delete selected slide + Kiválasztott dia törlése + + + + Clear + Szöveg törlése + + + + Clear edit area + Szerkesztő terület törlése + + + + Split Slide + Dia kettéválasztása + + + + Add slide split + Elválasztás hozzáadása + + + + Theme: + Téma: + + + + Credits: + Közreműködők: + + + + You have unsaved data, please save or clear + Nincs minden adat elmentve, mentse el vagy törölje + + + + EditSongForm + + + You need to enter a song title. + Meg kell adni egy dalcímet. + + + + You need to enter some verses. + Meg kell adni néhány versszakot. + + + + Save && Preview + Mentés és előnézet + + + + Error + Hiba + + + + Song Editor + Dalszerkesztő + + + + Title: + Cím: + + + + Alternative Title: + Alternatív cím: + + + + Lyrics: + Dalszöveg: + + + + Verse Order: + Versszak sorrend: + + + + Add + Hozzáadás + + + + Edit + Szerkesztés + + + + Edit All + Összes szerkesztése + + + + Delete + Törlés + + + + Title && Lyrics + Cím és dalszöveg + + + + Authors + Szerzők + + + + &Add to Song + &Hozzáadás dalhoz + + + + &Remove + &Eltávolítás + + + + &Manage Authors, Topics, Books + &Szerzők, témakörök, könyvek kezelése + + + + Topic + Témakör + + + + A&dd to Song + &Hozzáadás dalhoz + + + + R&emove + &Eltávolítás + + + + Song Book + Daloskönyv + + + + Authors, Topics && Book + Szerzők, témakörök és könyv + + + + Theme + Téma + + + + Add a Theme + Téma hozzáadása + + + + Copyright Information + Szerzői jogi információ + + + + CCLI Number: + CCLI szám: + + + + Comments + Megjegyzések + + + + Theme, Copyright Info && Comments + Téma, szerzői jogi infók és megjegyzések + + + + bitped + + + + + v + + + + + c + + + + + Invalid verse entry - Vx or Cx + Érvénytelen versszak bejegyzés – Vx vagy Cx + + + + Invalid verse entry, values must be I,B,T,P,E,O,Vx,Cx + Érvénytelen versszak bejegyzés – az érvényes értékek: I,B,T,P,E,O,Vx,Cx + + + + EditVerseForm + + + Edit Verse + Versszak szerkesztése + + + + Verse Type: + Versszak típusa: + + + + Verse + Versszak + + + + Chorus + Refrén + + + + Bridge + Mellékdal + + + + Pre-Chorus + Elő-refrén + + + + Intro + Bevezetés + + + + Ending + Befejezés + + + + Other + Egyéb + + + + Insert + Beszúrás + + + + GeneralTab + + + CCLI Details + CCLI részletek + + + + primary + elsődleges + + + + Show blank screen warning + Figyelmeztetés megjelenítése a fekete képernyőről + + + + Application Startup + Alkalmazás indítása + + + + Select monitor for output display: + Válassza ki a vetítési képernyőt: + + + + Application Settings + Alkalmazás beállítások + + + + SongSelect Username: + SongSelect felhasználói név: + + + + CCLI Number: + CCLI szám: + + + + Automatically open the last service + Utolsó szolgálat automatikus megnyitása + + + + Preview Next Song from Service Manager + Következő dal előnézete a szolgálatkezelőből + + + + Prompt to save Service before starting New + Rákérdezés a szolgálat mentésére új kezdése előtt + + + + General + Általános + + + + Show the splash screen + Indító képernyő megjelenítése + + + + Screen + Képernyő + + + + Monitors + Monitorok + + + + SongSelect Password: + SongSelect jelszó: + + + + Display if a single screen + Megjelenítés egy képernyő esetén + + + + ImageMediaItem + + + Select Image(s) + Kép(ek) kiválasztása + + + + Image(s) + Kép(ek) + + + + Image + Kép + + + + Images (*.jpg *.jpeg *.gif *.png *.bmp);; All files (*) + Képek (*.jpg *.jpeg *.gif *.png *.bmp);; Minden fájl (*) + + + + Replace Live Background + Egyenes adás háttérének cseréje + + + + No item selected + Nincs kiválasztott elem + + + + You must select one item + Ki kell választani egy elemet + + + + ImagePlugin + + + <b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any songs which are rendered will use the selected image from the background instead of the one provied by the theme.<br> + <b>Kép bővítmény</b><br />Ez a bővítmény mindenféle kép vetítését teszi lehetővé. Ha több kép együtt van kiválasztva és vetítve, az egyenes adás vezérlőn lehetőség van időzített körkörös lejátszásra.<br/>Ha a bővítményben a <i>Háttér felülírása</i> be van kapcsolva és egy kép ki van jelölve, minden megjelenített dalnak a kiválasztott kép lesz a háttérképe a témában megadott helyett.<br /> + + + + ImageTab + + + sec + mp + + + + Image Settings + Kép beállítások + + + + Slide Loop Delay: + Időzített diák késleltetése: + + + + Images + Képek + + + + ImportWizardForm + + + Invalid Bible Location + Érvénytelen a Biblia elérési útvonala + + + + You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. + Meg kell adni a szerzői jogokat! A közkincs Bibliákat meg kell jelölni ilyennek. + + + + Bible Exists + Biblia létezik + + + + Empty Copyright + Üres a szerzői jog + + + + Empty Version Name + Üres verziónév + + + + Invalid OpenSong Bible + Érvénytelen OpenSong Biblia + + + + Your Bible import failed. + A Biblia importálása nem sikerült. + + + + Finished import. + Az importálás befejeződött. + + + + This Bible already exists! Please import a different Bible or first delete the existing one. + Ez a Biblia már létezik! Kérem, importáljon egy másik Bibliát vagy előbb törölje a meglévőt. + + + + Starting import... + Importálás indítása... + + + + Invalid Books File + Érvénytelen könyv fájl + + + + Invalid Verse File + Érvénytelen versszak fájl + + + + Open OpenSong Bible + OpenSong Biblia megnyitása + + + + Bible Import Wizard + Bibliaimportáló tündér + + + + Welcome to the Bible Import Wizard + Üdvözlet a Bibliaimportáló tündérben + + + + 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. + + + + Select Import Source + Válassza ki az importálandó forrást + + + + Select the import format, and where to import from. + Válassza ki a importálandó forrást és a helyet, ahonnan importálja. + + + + Format: + Formátum: + + + + OSIS + OSIS + + + + CSV + CSV + + + + OpenSong + OpenSong + + + + Web Download + Web letöltés + + + + File Location: + Fájl helye: + + + + Books Location: + Könyvek helye: + + + + Verse Location: + Vers helye: + + + + Bible Filename: + Biblia fájl: + + + + Location: + Hely: + + + + Crosswalk + + + + + BibleGateway + + + + + Bible: + Biblia: + + + + Download Options + Letöltési beállítások + + + + Server: + Szerver: + + + + Username: + Felhasználói név: + + + + Password: + Jelszó: + + + + Proxy Server (Optional) + Proxy szerver (választható) + + + + License Details + Licenc részletek + + + + Set up the Bible's license details. + Állítsa be a Biblia licenc részleteit. + + + + Version Name: + Verzió neve: + + + + Copyright: + Copyright: + + + + Permission: + Engedély: + + + + Importing + Importálás + + + + Please wait while your Bible is imported. + Kérem, várjon, míg a Biblia importálás alatt áll. + + + + Ready. + Kész. + + + + You need to specify a file to import your Bible from. + Meg kell adni egy fájlt, amelyből a Bibliát importálni lehet. + + + + You need to specify a file with books of the Bible to use in the import. + Meg kell adni egy fájlt a bibliai könyvekről az importáláshoz. + + + + You need to specify a file of Bible verses to import. + Meg kell adni egy fájlt a bibliai versekről az importáláshoz. + + + + You need to specify an OpenSong Bible file to import. + Meg kell adni egy OpenSong Biblia fájlt az importáláshoz. + + + + You need to specify a version name for your Bible. + Meg kell adni a Biblia verziószámát. + + + + Open OSIS File + OSIS fájl megnyitása + + + + Open Books CSV File + Könyv CSV fájl megnyitása + + + + Open Verses CSV File + Versszak CSV fájl megnyitása + + + + No OpenLyrics Files Selected + Nincsenek kijelölt OpenLyrics fájlok + + + + You need to add at least one OpenLyrics song file to import from. + Meg kell adni legalább egy OpenLyrics dal fájlt az importáláshoz. + + + + No OpenSong Files Selected + Nincsenek kijelölt OpenSong fájlok + + + + You need to add at least one OpenSong song file to import from. + Meg kell adni legalább egy OpenSong dal fájlt az importáláshoz. + + + + No CCLI Files Selected + Nincsenek kijelölt CCLI fájlok + + + + You need to add at least one CCLI file to import from. + Meg kell adni legalább egy CCLI fájlt az importáláshoz. + + + + No CSV File Selected + Nincsenek kijelölt CSV fájlok + + + + You need to specify a CSV file to import from. + Meg kell adni legalább egy CSV fájlt az importáláshoz. + + + + LanguageManager + + + Language + Nyelv + + + + After restart new Language settings will be used. + Újraindítás után lépnek érvénybe a nyelvi beállítások. + + + + MainWindow + + + The Main Display has been blanked out + A fő képernyő el lett sötétítve + + + + OpenLP Version Updated + OpenLP verziófrissítés + + + + Save Changes to Service? + Mentsük a változásokat a szolgálatban? + + + + OpenLP Main Display Blanked + Sötét OpenLP fő képernyő + + + + OpenLP 2.0 + + + + + English + Magyar + + + + Default Theme: + Alapértelmezett téma: + + + + &File + &Fájl + + + + &Import + &Importálás + + + + &Export + &Exportálás + + + + &Options + &Beállítások + + + + &View + &Nézet + + + + M&ode + &Mód + + + + &Tools + &Eszközök + + + + &Help + &Súgó + + + + Media Manager + Médiakezelő + + + + Service Manager + Szolgálatkezelő + + + + Theme Manager + Témakezelő + + + + &New + &Új + + + + New Service + Új szolgálat + + + + Create a new Service + Új szolgálat létrehozása + + + + Ctrl+N + + + + + &Open + &Megnyitás + + + + Open Service + Szolgálat megnyitása + + + + Open an existing service + Meglévő szolgálat megnyitása + + + + Ctrl+O + + + + + &Save + M&entés + + + + Save Service + Szolgálat mentése + + + + Save the current service to disk + Aktuális szolgálat mentése + + + + Ctrl+S + + + + + Save &As... + Mentés má&sként... + + + + Save Service As + Szolgálat mentése másként + + + + Save the current service under a new name + Az aktuális szolgálat más néven való mentése + + + + F12 + + + + + E&xit + &Kilépés + + + + Quit OpenLP + OpenLP bezárása + + + + Alt+F4 + + + + + &Theme + &Téma + + + + &Language + &Nyelv + + + + Look && &Feel + &Kinézet + + + + &Settings + &Beállítások + + + + &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 + + + + F8 + + + + + &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 + + + + F10 + + + + + &Service Manager + &Szolgálatkezelő + + + + Toggle Service Manager + Szolgálatkezelő átváltása + + + + Toggle the visibility of the Service Manager + A szolgálatkezelő láthatóságának átváltása + + + + F9 + + + + + &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 + + + + F11 + + + + + &Plugin List + &Bővítménylista + + + + List the Plugins + Bővítmények listája + + + + Alt+F7 + + + + + &User Guide + &Felhasználói kézikönyv + + + + &About + &Névjegy + + + + More information about OpenLP + Több információ az OpenLP-ről + + + + Ctrl+F1 + + + + + &Online Help + &Online súgó + + + + &Web Site + &Weboldal + + + + &Auto Detect + &Automatikus felismerés + + + + Choose System language, if available + Ha elérhető, a rendszernyelv választása + + + + Set the interface language to %1 + A felhasználói felület nyelvének átváltása erre: %1 + + + + 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 + + + + &Preview Pane + &Előnézet panel + + + + &Live + &Egyenes adá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 + Már letölthető az OpenLP %s verziója (jelenleg a %s verzió fut). + +A legfrissebb verzió a http://openlp.org oldalról szerezhető be + + + + Your service has changed. Do you want to save those changes? + A szolgálat módosult. Szeretné elmenteni? + + + + MediaManagerItem + + + &Preview + &Előnézet + + + + You must select one or more items + Ki kell választani egy vagy több elemet + + + + Load a new + Új betöltése + + + + Delete the selected item + Kiválasztott elem törlése + + + + &Edit + &Szerkesztés + + + + &Add to Service + &Hozzáadás a szolgálathoz + + + + Send the selected item live + A kiválasztott elem egyenes adásba küldése + + + + Add the selected item(s) to the service + A kiválasztott elem(ek) hozzáadása a szolgálathoz + + + + Edit the selected + Kiválasztott elem szerkesztése + + + + Add a new + Új hozzáadása + + + + &Show Live + Egyenes &adásba + + + + Preview the selected item + A kiválasztott elem előnézete + + + + Import a + Hát ez mi? + Importálás + + + + &Delete + &Törlés + + + + &Add to selected Service Item + &Hozzáadás a kiválasztott szolgálat elemhez + + + + No Items Selected + Nincs kiválasztott elem + + + + You must select one or more items. + Ki kell választani egy vagy több elemet. + + + + No items selected + Nincs kiválasztott elem + + + + No Service Item Selected + Nincs kiválasztott szolgálat elem + + + + You must select an existing service item to add to. + Ki kell választani egy szolgálati elemet, amihez hozzá szeretné adni. + + + + Invalid Service Item + Érvénytelen szolgálat elem + + + + MediaMediaItem + + + Media + Média + + + + Select Media + Média kiválasztása + + + + Videos (%s);;Audio (%s);;All files (*) + Videók (%s);;Hangfájlok (%s);;Minden fájl (*) + + + + Replace Live Background + Egyenes adás hátterének cseréje + + + + No item selected + Nincs kiválasztott elem + + + + You must select one item + Ki kell választani egy elemet + + + + MediaPlugin + + + <b>Media Plugin</b><br>This plugin allows the playing of audio and video media + <b>Média bővítmény</b><br />Ez a bővítmény hangok és videók lejátszását teszi lehetővé + + + + OpenLPExportForm + + + openlp.org Song Exporter + openlp.org dalexportáló + + + + Select openlp.org export filename: + Válassza ki az openlp.org exportálási fájlnevet: + + + + Full Song List + Teljes dallista + + + + Song Title + Dal címe + + + + Author + Szerző + + + + Select All + Összes kiválasztása + + + + Lyrics + Dalszöveg + + + + Title + Cím + + + + Song Export List + Dal exportálási lista + + + + Remove Selected + Kiválasztottak eltávolítása + + + + Progress: + Folyamat: + + + + Ready to export + Készen áll az exportálásra + + + + Export + Exportálás + + + + Close + Bezárás + + + + OpenLPImportForm + + + openlp.org Song Importer + openlp.org dalimportáló + + + + Select openlp.org songfile to import: + Válassza ki az openlp.org importálandó fájlt: + + + + Import File Song List + Dallista fájl importálása + + + + Song Title + Dal címe + + + + Author + Szerző + + + + Select All + Összes kiválasztása + + + + Lyrics + Dalszöveg + + + + Title + Cím + + + + Song Import List + Dal importálási lista + + + + Remove Selected + Kiválasztottak eltávolítása + + + + Progress: + Folyamat: + + + + Ready to import + Készen áll az importálásra + + + + Import + Importálás + + + + Close + Bezárás + + + + OpenSongBible + + + Importing + Importálás + + + + OpenSongExportForm + + + OpenSong Song Exporter + OpenSong dalexportáló + + + + Select OpenSong song folder: + Válassza ki az OpenSong dalok mappáját: + + + + Full Song List + Teljes dallista + + + + Song Title + Dal címe + + + + Author + Szerző + + + + Select All + Összes kiválasztása + + + + Lyrics + Dalszöveg + + + + Title + Cím + + + + Song Export List + Dal exportálási lista + + + + Remove Selected + Kiválasztottak eltávolítása + + + + Progress: + Folyamat: + + + + Ready to export + Készen áll az exportálásra + + + + Export + Exportálás + + + + Close + Bezárás + + + + OpenSongImportForm + + + OpenSong Song Importer + OpenSong dalimportáló + + + + OpenSong Folder: + OpenSong mappa: + + + + Progress: + Folyamat: + + + + Ready to import + Készen áll az importálásra + + + + Import + Importálás + + + + Close + Bezárás + + + + PluginForm + + + Plugin List + Bővítménylista + + + + Plugin Details + Bővítmény részletei + + + + Version: + Verzió: + + + + TextLabel + Szövegcímke + + + + About: + Névjegy: + + + + Status: + Állapot: + + + + Active + Aktív + + + + Inactive + Inaktív + + + + PresentationMediaItem + + + Presentation + Bemutató + + + + Present using: + Bemutató ezzel: + + + + A presentation with that filename already exists. + Ilyen fájlnéven már létezik egy bemutató. + + + + File exists + A fájl létezik + + + + Select Presentation(s) + Bemutató(k) kiválasztása + + + + Automatic + Automatikus + + + + Presentations (%s) + Bemutatók (%s) + + + + PresentationPlugin + + + <b>Presentation Plugin</b> <br> Delivers 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. + <b>Bemutató bővítmény</b><br />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. + + + + PresentationTab + + + Available Controllers + Elérhető vezérlők + + + + available + elérhető + + + + Presentations + Bemutatók + + + + RemoteTab + + + Remotes + Távvezérlés + + + + Remotes Receiver Port + Távvezérlést fogadó port + + + + RemotesPlugin + + + <b>Remote Plugin</b><br>This plugin provides the ability to send messages to a running version of openlp on a different computer via a web browser or other app<br>The Primary use for this would be to send alerts from a creche + <b>Távvezérlő bővítmény</b><br/>Ez a bővítmény egy böngésző vagy más alkalmazás segítségével lehetővé teszi egy másik számítógépen futó OpenLP irányítását.<br/>Az elsődleges felhasználási terület egy programösszeomlás jelentése + + + + ServiceItemEditForm + + + Service Item Maintenance + Szolgálati elem kezelése + + + + Up + Fel + + + + Delete + Törlés + + + + Down + Le + + + + ServiceManager + + + Save Changes to Service? + Változások mentése a szolgálatban? + + + + Open Service + Szolgálat megnyitása + + + + Move to top + Mozgatás felülre + + + + Create a new service + Új szolgálat létrehozása + + + + Save this service + Aktuális szolgálat mentése + + + + Theme: + Téma: + + + + Delete From Service + Törlés a szolgálatból + + + + Save Service + Szolgálat mentése + + + + &Live Verse + &Adásban lévő versszak + + + + New Service + Új szolgálat + + + + &Notes + &Jegyzetek + + + + Move to end + Mozgatás a végére + + + + Move up order + Mozgatás feljebb a sorban + + + + Move down order + Mozgatás lejjebb a sorban + + + + Load an existing service + Egy meglévő szolgálat betöltése + + + + &Preview Verse + Versszak &előnézete + + + + &Edit Item + &Elem szerkesztése + + + + Move to &top + Mozgatás &felülre + + + + Move &up + Mozgatás f&eljebb + + + + Move &down + Mozgatás &lejjebb + + + + Move to &bottom + Mozgatás &alulra + + + + &Delete From Service + &Törlés a szolgálatból + + + + &Add New Item + Új elem &hozzáadása + + + + &Add to Selected Item + &Hozzáadás a kiválasztott elemhez + + + + &Maintain Item + Elem &karbantartása + + + + Your service is unsaved, do you want to save those changes before creating a new one? + A szolgálat nincs elmentve, szeretné menteni, mielőtt az újat létrehozná? + + + + Your current service is unsaved, do you want to save the changes before opening a new one? + A szolgálat nincs elmentve, szeretné menteni, mielőtt az újat megnyitná? + + + + 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é + + + + ServiceNoteForm + + + Service Item Notes + Szolgálat elem jegyzetek + + + + SettingsForm + + + Settings + Beállítások + + + + SlideController + + + Move to previous + Mozgatás az előzőre + + + + Go to Verse + Ugrás versszakra + + + + Start continuous loop + Folyamatos vetítés indítása + + + + Live + Egyenes adás + + + + Start playing media + Médialejátszás indítása + + + + Move to live + Mozgatás az egyenes adásban lévőre + + + + Preview + Előnézet + + + + Move to last + Mozgatás az utolsóra + + + + Edit and re-preview Song + Dal szerkesztése, majd újra az előnézet megnyitása + + + + Delay between slides in seconds + Diák közötti késleltetés másodpercben + + + + Move to next + Mozgatás a következőre + + + + Move to first + Mozgatás az elsőre + + + + Blank Screen + Elsötétített képernyő + + + + Verse + Versszak + + + + Stop continuous loop + Folyamatos vetítés leállítása + + + + s + mp + + + + Theme Screen + Téma képernyő + + + + Hide Screen + Képernyő rejtése + + + + Chorus + Refrén + + + + SongBookForm + + + Error + Hiba + + + + You need to type in a book name! + Meg kell adnia egy könyv nevét! + + + + Edit Book + Könyv szerkesztése + + + + Name: + Név: + + + + Publisher: + Kiadó: + + + + SongMaintenanceForm + + + Are you sure you want to delete the selected book? + A kiválasztott könyv biztosan törölhető? + + + + Error + Hiba + + + + No author selected! + Nincs kiválasztott szerző! + + + + Delete Book + Könyv törlése + + + + No book selected! + Nincs kiválasztott könyv! + + + + Are you sure you want to delete the selected author? + A kiválasztott szerző biztosan törölhető? + + + + Delete Topic + Témakör törlése + + + + Delete Author + Szerző törlése + + + + No topic selected! + Nincs kiválasztott témakör! + + + + Are you sure you want to delete the selected topic? + A kiválasztott témakör biztosan törölhető? + + + + Song Maintenance + Dalok kezelése + + + + Authors + Szerzők + + + + Topics + Témakörök + + + + Books/Hymnals + Énekeskönyvek + + + + Add + Hozzáadás + + + + Edit + Szerkesztés + + + + Delete + Törlés + + + + Couldn't add your author. + A szerzőt nem lehet hozzáadni. + + + + Couldn't add your topic. + A témakört nem lehet hozzáadni. + + + + Couldn't add your book. + A könyvet nem lehet hozzáadni. + + + + Couldn't save your author. + A szerzőt nem lehet menteni. + + + + Couldn't save your topic. + A témakört nem lehet menteni. + + + + Couldn't save your book. + A könyvet nem lehet menteni. + + + + This author can't be deleted, they are currently assigned to at least one song. + Ez a szerző nem törölhető, mivel hozzá van rendelve legalább egy dalhoz. + + + + This topic can't be deleted, it is currently assigned to at least one song. + Ez a témakör nem törölhető, mivel hozzá van rendelve legalább egy dalhoz. + + + + This book can't be deleted, it is currently assigned to at least one song. + Ez a könyv nem törölhető, mivel hozzá van rendelve legalább egy dalhoz. + + + + SongMediaItem + + + CCLI Licence: + CCLI licenc: + + + + Song + Dal + + + + Maintain the lists of authors, topics and books + A szerzők, témakörök, könyvek listájának kezelése + + + + Lyrics + Dalszöveg + + + + Type: + Típus: + + + + Titles + Címek + + + + Clear + Törlés + + + + Search + Keresés + + + + Authors + Szerzők + + + + Search: + Keresés: + + + + Song Maintenance + Dalok kezelése + + + + %s (%s) + + + + + Delete song? + Valóban törölhető a dal? + + + + Delete %d songs? + Valóban törölhetők a dalok: %d? + + + + Delete Confirmation + Törlés megerősítése + + + + SongUsageDeleteForm + + + Delete Selected Song Usage Events? + Valóban törölhetők a kiválasztott dalstatisztika események? + + + + Are you sure you want to delete selected Song Usage data? + Valóban törölhetők a kiválasztott dalstatisztika adatok? + + + + SongUsageDetailForm + + + Output File Location + Kimeneti fájl elérési útvonala + + + + SongUsagePlugin + + + <b>SongUsage Plugin</b><br>This plugin records the use of songs and when they have been used during a live service + <b>Dalstatisztika bővítmény</b><br />Ez a bővítmény rögzíti, hogy a dalok mikor lettek vetítve egy élő szolgálat során + + + + SongsPlugin + + + Open Songs of Fellowship file + Songs of Fellowship fájl megnyitása + + + + Open documents or presentations + Dokumentum vagy bemutató megnyitása + + + + <strong>Song Plugin</strong><br />This plugin allows songs to be managed and displayed. + <strong>Dal bővítmény</strong> <br />Ez a a bővítmény dalok kezelését és vetítését teszi lehetővé. + + + + SongsTab + + + Songs Mode + Dalmód + + + + Songs + Dalok + + + + Enable search as you type + Gépelés közbeni keresés engedélyezése + + + + Display Verses on Live Tool bar + Versszakok megjelenítése az egyenes adás eszközön + + + + ThemeManager + + + Import Theme + Téma importálása + + + + Create a new theme + Új téma létrehozása + + + + Delete Theme + Téma törlése + + + + Error + Hiba + + + + Make Global + Legyen globális + + + + Delete a theme + Egy téma törlése + + + + Edit a theme + Egy téma szerkesztése + + + + Edit Theme + Téma szerkesztése + + + + Export Theme + Téma exportálása + + + + Theme Exists + A téma már létezik + + + + Delete theme + Téma törlése + + + + Save Theme - (%s) + Téma mentése – (%s) + + + + default + alapértelmezett + + + + Select Theme Import File + Importálandó téma fájl kiválasztása + + + + New Theme + Új téma + + + + Import a theme + Egy téma importálása + + + + Export theme + Téma exportálása + + + + A theme with this name already exists, would you like to overwrite it? + Ilyen néven már létezik egy téma, szeretné felülírni? + + + + Export a theme + Egy téma exportálása + + + + You are unable to delete the default theme. + Az alapértelmezett témát nem lehet törölni. + + + + Theme %s is use in %s plugin + A %s beépülő használja ezt a témát: %s + + + + Theme %s is use by Service Manager + A szolgálatkezelő használja ezt a témát: %s + + + + You have not selected a theme. + Nincs kiválasztva egy téma sem. + + + + File is not a valid theme. + Nem érvényes témafájl. + + + + ThemesTab + + + Theme level + Téma szint + + + + Global theme + Globális téma + + + + Global level + Globális szint + + + + 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. + Minden dalra az adatbázisban tárolt téma alkalmazása. Ha egy dalhoz nincs saját téma beállítva, akkor a szolgálathoz beállított használata. Ha a szolgálathoz sincs téma beállítva, akkor a globális téma alkalmazása. + + + + Service level + Szolgálati szint + + + + Use the global theme, overriding any themes associated with either the service or the songs. + A globális téma alkalmazása, vagyis a szolgálathoz, ill. a dalokhoz beállított témák felülírása. + + + + Song level + Dal szint + + + + 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. + A szolgálathoz beállított téma alkalmazása, vagyis az egyes dalokhoz megadott témák felülírása. Ha a szolgálathoz nincs téma beállítva, akkor a globális téma alkalmazása. + + + + Themes + Témák + + + + TopicsForm + + + You need to type in a topic name! + Meg kell adni egy témakör nevet! + + + + Error + Hiba + + + + Topic Maintenance + Témakörök kezelése + + + + Topic name: + Témakör neve: + + + + Ui_SongImportWizard + + + Song Import Wizard + Dalimportáló tündér + + + + Welcome to the Song Import Wizard + Üdvözlet a dalimportáló tündérben + + + + 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. + + + + Select Import Source + Válassza ki az importálandó forrást + + + + Select the import format, and where to import from. + Válassza ki a importálandó forrást és a helyet, ahonnan importálja. + + + + Format: + Formátum: + + + + OpenLyrics + + + + + OpenSong + + + + + CCLI + + + + + CSV + + + + + Add Files... + Fájlok hozzáadása... + + + + Remove File(s) + Fájlok törlése + + + + Filename: + Fájlnév: + + + + Browse... + Tallózás... + + + + Importing + Importálás + + + + Please wait while your songs are imported. + Kérem, várjon, míg a dalok importálás alatt állnak. + + + + Ready. + Kész. + + + + %p% + + + + + alertsPlugin + + + Show an alert message + Figyelmeztetést jelenít meg + + + + <b>Alerts Plugin</b><br>This plugin controls the displaying of alerts on the presentations screen + <b>Figyelmeztető bővítmény</b><br/>Ez a bővítmény kezeli a vetítőn megjelenő figyelmeztetéseket + + + + &Alert + &Figyelmeztetés + + + + export_menu + + + &Bible + &Biblia + + + + import_menu + + + &Bible + &Biblia + + + + &Song + &Dal + + + + Import songs using the import wizard. + Dalok importálása az importálás tündérrel. + + + + Songs of Fellowship (temp menu item) + + + + + Import songs from the VOLS1_2.RTF, sof3words.rtf and sof4words.rtf supplied with the music books + + + + + Generic Document/Presentation Import (temp menu item) + + + + + Import songs from Word/Writer/Powerpoint/Impress + + + + + self.ImportSongMenu + + + Import Error + Importálás hiba + + + + Error importing Songs of Fellowship file. +OpenOffice.org must be installed and you must be using an unedited copy of the RTF included with the Songs of Fellowship Music Editions + + + + + self.splash_screen + + + Starting + Indítás + + + + Splash Screen + Indítóképernyő + + + + tools_menu + + + &Song Usage + Dal&statisztika + + + + &Delete recorded data + Mentett adatok &törlése + + + + Delete song usage to specified date + Dalstatisztika törlése a megadott dátumig + + + + &Extract recorded data + Mentett adatok &kibontása + + + + Generate report on Song Usage + Jelentés készítése a dalstatisztikából + + + + Song Usage Status + Dalstatisztika állapota + + + + Start/Stop live song usage recording + Élő dalstatisztika rögzítésének indítása/leállítása + + + diff --git a/resources/i18n/openlp_ko.ts b/resources/i18n/openlp_ko.ts new file mode 100644 index 000000000..34761a603 --- /dev/null +++ b/resources/i18n/openlp_ko.ts @@ -0,0 +1,4960 @@ + + + + BibleMediaItem + + + Quick + 즉시 + + + Ui_customEditDialog + + + Delete selected slide + 선택된 슬라이드 삭제 + + + BiblesTab + + + ( and ) + + + + + RemoteTab + + + Remotes + + + + + Ui_EditSongDialog + + + &Remove + + + + + Ui_AmendThemeDialog + + + Shadow Size: + + + + + Ui_OpenSongExportDialog + + + Close + + + + + ThemeManager + + + Import Theme + + + + + Ui_AmendThemeDialog + + + Slide Transition + + + + + SongMaintenanceForm + + + Are you sure you want to delete the selected book? + + + + + ThemesTab + + + Theme level + + + + + BibleMediaItem + + + Bible + 성경 + + + ServiceManager + + + Save Changes to Service? + + + + + SongUsagePlugin + + + &Delete recorded data + + + + + Ui_OpenLPExportDialog + + + Song Title + + + + + Ui_customEditDialog + + + Edit selected slide + + + + + SongMediaItem + + + CCLI Licence: + + + + + Ui_BibleImportWizard + + + Bible Import Wizard + + + + + Ui_customEditDialog + + + Edit All + + + + + SongMaintenanceForm + + + Couldn't save your author. + + + + + Ui_ServiceNoteEdit + + + Service Item Notes + + + + + Ui_customEditDialog + + + Add new slide at bottom + + + + + Clear + + + + + ThemesTab + + + Global theme + + + + + PresentationPlugin + + + <b>Presentation Plugin</b> <br> Delivers 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. + + + + + SongUsagePlugin + + + Start/Stop live song usage recording + + + + + MainWindow + + + The Main Display has been blanked out + + + + + Ui_OpenSongExportDialog + + + Lyrics + + + + + Ui_AlertDialog + + + Display + + + + + SongMaintenanceForm + + + This author can't be deleted, they are currently assigned to at least one song. + + + + + Ui_customEditDialog + + + Delete + + + + + Ui_EditVerseDialog + + + Verse + + + + + Ui_OpenSongImportDialog + + + OpenSong Folder: + + + + + ThemeManager + + + Create a new theme + + + + + Ui_MainWindow + + + Open an existing service + + + + + SlideController + + + Move to previous + + + + + SongsPlugin + + + &Song + + + + + Ui_PluginViewDialog + + + Plugin Details + + + + + ImportWizardForm + + + You need to specify a file with books of the Bible to use in the import. + + + + + AlertsTab + + + Edit History: + + + + + Ui_MainWindow + + + &File + + + + + BiblesTab + + + verse per line + + + + + Ui_customEditDialog + + + Theme: + + + + + SongMaintenanceForm + + + Couldn't add your book. + + + + + Error + + + + + Ui_BibleImportWizard + + + Bible: + + + + + ThemeManager + + + Delete Theme + + + + + SplashScreen + + + Splash Screen + + + + + SongMediaItem + + + Song + + + + + Ui_OpenSongExportDialog + + + Song Title + + + + + Ui_AmendThemeDialog + + + Bottom + + + + + Ui_MainWindow + + + List the Plugins + + + + + SongMaintenanceForm + + + No author selected! + + + + + SongUsageDeleteForm + + + Delete Selected Song Usage Events? + + + + + SongUsagePlugin + + + <b>SongUsage Plugin</b><br>This plugin records the use of songs and when they have been used during a live service + + + + + Ui_customEditDialog + + + Move slide Up 1 + + + + + SongsPlugin + + + OpenSong + + + + + AlertsManager + + + Alert message created and delayed + + + + + Ui_EditSongDialog + + + Alternative Title: + + + + + ServiceManager + + + Open Service + + + + + BiblesTab + + + Display Style: + + + + + Ui_AmendThemeDialog + + + Image + + + + + EditSongForm + + + You need to enter a song title. + + + + + ThemeManager + + + Error + + + + + Ui_SongUsageDeleteDialog + + + Song Usage Delete + + + + + ImportWizardForm + + + Invalid Bible Location + + + + + BibleMediaItem + + + Book: + + + + + ThemeManager + + + Make Global + + + + + Ui_MainWindow + + + &Service Manager + + + + + Ui_OpenLPImportDialog + + + Author + + + + + Ui_AmendThemeDialog + + + Height: + + + + + ThemeManager + + + Delete a theme + + + + + Ui_BibleImportWizard + + + Crosswalk + + + + + SongBookForm + + + Error + + + + + Ui_AuthorsDialog + + + Last name: + + + + + ThemesTab + + + Use the global theme, overriding any themes associated with either the service or the songs. + + + + + Ui_customEditDialog + + + Title: + + + + + ImportWizardForm + + + You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. + + + + + SongMediaItem + + + Maintain the lists of authors, topics and books + + + + + Ui_AlertEditDialog + + + Save + + + + + EditCustomForm + + + You have unsaved data + + + + + Ui_AmendThemeDialog + + + Outline + + + + + BibleMediaItem + + + Text Search + + + + + Ui_BibleImportWizard + + + CSV + + + + + SongUsagePlugin + + + Delete song usage to specified date + + + + + Ui_SongUsageDetailDialog + + + Report Location + + + + + Ui_BibleImportWizard + + + OpenSong + + + + + Ui_MainWindow + + + Open Service + + + + + BibleMediaItem + + + Find: + + + + + ImageMediaItem + + + Select Image(s) + + + + + BibleMediaItem + + + Search Type: + + + + + Ui_MainWindow + + + Media Manager + + + + + Alt+F4 + + + + + MediaManagerItem + + + &Preview + + + + + GeneralTab + + + CCLI Details + + + + + BibleMediaItem + + + Bible not fully loaded + + + + + Ui_MainWindow + + + Toggle the visibility of the Preview Panel + + + + + ImportWizardForm + + + Bible Exists + + + + + Ui_MainWindow + + + &User Guide + + + + + AlertsTab + + + pt + + + + + Ui_AboutDialog + + + 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. + + + + + Ui_MainWindow + + + Set the interface language to English + + + + + Ui_AmendThemeDialog + + + Main Font + + + + + ImportWizardForm + + + Empty Copyright + + + + + AuthorsForm + + + You need to type in the first name of the author. + + + + + SongsTab + + + Display Verses on Live Tool bar: + + + + + ServiceManager + + + Move to top + + + + + ImageMediaItem + + + Override background + + + + + Ui_SongMaintenanceDialog + + + Edit + + + + + Ui_OpenSongExportDialog + + + Select All + + + + + ThemesTab + + + 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. + + + + + PresentationMediaItem + + + Presentation + + + + + Ui_AmendThemeDialog + + + Solid Color + + + + + CustomTab + + + Custom + + + + + Ui_OpenLPImportDialog + + + Ready to import + + + + + MainWindow + + + OpenLP version %s has been updated to version %s + +You can obtain the latest version from http://openlp.org + + + + + Ui_BibleImportWizard + + + File Location: + + + + + SlideController + + + Go to Verse + + + + + SongMaintenanceForm + + + Couldn't add your topic. + + + + + Ui_MainWindow + + + &Import + + + + + Quit OpenLP + + + + + Ui_BibleImportWizard + + + 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. + + + + + Ui_OpenLPExportDialog + + + Title + + + + + ImportWizardForm + + + Empty Version Name + + + + + Ui_MainWindow + + + &Preview Panel + + + + + SlideController + + + Start continuous loop + + + + + GeneralTab + + + primary + + + + + Ui_EditSongDialog + + + Add a Theme + + + + + Ui_MainWindow + + + &New + + + + + Ui_customEditDialog + + + Credits: + + + + + Ui_EditSongDialog + + + R&emove + + + + + SlideController + + + Live + + + + + Ui_AmendThemeDialog + + + Font Main + + + + + BiblesTab + + + continuous + + + + + ThemeManager + + + File is not a valid theme. + + + + + GeneralTab + + + Application Startup + + + + + Ui_AmendThemeDialog + + + Use Default Location: + + + + + Ui_OpenSongImportDialog + + + Import + + + + + Ui_AmendThemeDialog + + + Other Options + + + + + Ui_EditSongDialog + + + Verse Order: + + + + + Ui_MainWindow + + + Default Theme: + + + + + Toggle Preview Panel + + + + + SongMediaItem + + + Lyrics + + + + + Ui_OpenLPImportDialog + + + Progress: + + + + + Ui_AmendThemeDialog + + + Shadow + + + + + GeneralTab + + + Select monitor for output display: + + + + + Ui_MainWindow + + + &Settings + + + + + EditSongForm + + + Invalid verse entry - values must be Numeric, I,B,C,T,P,E,O + + + + + Ui_AmendThemeDialog + + + Italics + + + + + ServiceManager + + + Create a new service + + + + + Ui_AmendThemeDialog + + + Background: + + + + + MediaManagerItem + + + No Items Selected + + + + + Ui_OpenLPImportDialog + + + openlp.org Song Importer + + + + + Ui_BibleImportWizard + + + Copyright: + + + + + ThemesTab + + + Service level + + + + + BiblesTab + + + [ and ] + + + + + Ui_BibleImportWizard + + + Verse Location: + + + + + AlertEditForm + + + Item selected to Edit + + + + + GeneralTab + + + Application Settings + + + + + ServiceManager + + + Save this service + + + + + ImportWizardForm + + + Open Books CSV file + + + + + GeneralTab + + + SongSelect Username: + + + + + Ui_AmendThemeDialog + + + X Position: + + + + + BibleMediaItem + + + No matching book could be found in this Bible. + + + + + Ui_BibleImportWizard + + + Server: + + + + + Ui_EditVerseDialog + + + Ending + + + + + CustomTab + + + Display Footer: + + + + + ImportWizardForm + + + Invalid OpenSong Bible + + + + + GeneralTab + + + CCLI Number: + + + + + Ui_AmendThemeDialog + + + Center + + + + + ServiceManager + + + Theme: + + + + + AlertEditForm + + + Please save or clear selected item + + + + + Ui_MainWindow + + + &Live + + + + + Ui_AmendThemeDialog + + + <Color2> + + + + + Ui_MainWindow + + + English + + + + + ImageMediaItem + + + You must select one or more items + + + + + Ui_AuthorsDialog + + + First name: + + + + + Ui_OpenLPExportDialog + + + Select openlp.org export filename: + + + + + Ui_BibleImportWizard + + + Permission: + + + + + Ui_OpenSongImportDialog + + + Close + + + + + Ui_SongUsageDetailDialog + + + Song Usage Extraction + + + + + Ui_AmendThemeDialog + + + Opaque + + + + + ImportWizardForm + + + Your Bible import failed. + + + + + SlideController + + + Start playing media + + + + + MediaManagerItem + + + Import a + + + + + Ui_AboutDialog + + + Project Lead + Raoul "superfly" Snyman + +Developers + Tim "TRB143" Bentley + Jonathan "gushie" Corwin + Michael "cocooncrash" Gorven + Scott "sguerrieri" Guerrieri + Raoul "superfly" Snyman + Martin "mijiti" Thompson + Jon "Meths" Tibble + +Contributors + Meinert "m2j" Jordan + Christian "crichter" Richter + Maikel Stuivenberg + Carsten "catini" Tingaard + +Testers + Philip "Phill" Ridout + Wesley "wrst" Stout (lead) + +Packagers + Thomas "tabthorpe" Abthorpe (FreeBSD) + Tim "TRB143" Bentley (Fedora) + Michael "cocooncrash" Gorven (Ubuntu) + Matthias "matthub" Hub (Mac OS X) + Raoul "superfly" Snyman (Windows) + + + + + + SongMaintenanceForm + + + This book can't be deleted, it is currently assigned to at least one song. + + + + + Ui_AboutDialog + + + Close + + + + + TopicsForm + + + You need to type in a topic name! + + + + + Ui_OpenSongExportDialog + + + Song Export List + + + + + BibleMediaItem + + + Dual: + + + + + ImageTab + + + sec + + + + + ServiceManager + + + Delete From Service + + + + + GeneralTab + + + Automatically open the last service + + + + + Ui_OpenLPImportDialog + + + Song Import List + + + + + Ui_OpenSongExportDialog + + + Author + + + + + Ui_AmendThemeDialog + + + Outline Color: + + + + + Ui_BibleImportWizard + + + Select Import Source + + + + + Ui_MainWindow + + + F9 + + + + + F8 + + + + + ServiceManager + + + &Change Item Theme + + + + + Ui_SongMaintenanceDialog + + + Topics + + + + + Ui_OpenLPImportDialog + + + Import File Song List + + + + + Ui_customEditDialog + + + Edit Custom Slides + + + + + Ui_BibleImportWizard + + + Set up the Bible's license details. + + + + + Ui_EditVerseDialog + + + Number + + + + + Ui_AmendThemeDialog + + + Alignment + + + + + SongMaintenanceForm + + + Delete Book + + + + + ThemeManager + + + Edit a theme + + + + + Ui_BibleImportWizard + + + BibleGateway + + + + + GeneralTab + + + Preview Next Song from Service Manager + + + + + Ui_EditSongDialog + + + Title && Lyrics + + + + + SongMaintenanceForm + + + No book selected! + + + + + SlideController + + + Move to live + + + + + Ui_EditVerseDialog + + + Other + + + + + Ui_EditSongDialog + + + Theme + + + + + ServiceManager + + + Save Service + + + + + Ui_SongUsageDetailDialog + + + Select Date Range + + + + + Ui_MainWindow + + + Save the current service to disk + + + + + BibleMediaItem + + + Chapter: + + + + + Search + + + + + PresentationTab + + + Available Controllers + + + + + Ui_MainWindow + + + Add &Tool... + + + + + TopicsForm + + + Error + + + + + RemoteTab + + + Remotes Receiver Port + + + + + Ui_MainWindow + + + &View + + + + + Ui_AmendThemeDialog + + + Normal + + + + + Ui_OpenLPExportDialog + + + Close + + + + + Ui_BibleImportWizard + + + Username: + + + + + ThemeManager + + + Edit Theme + + + + + SlideController + + + Preview + + + + + Ui_AlertDialog + + + Alert Message + + + + + ImportWizardForm + + + Finished import. + + + + + GeneralTab + + + Show blank screen warning + + + + + ImportWizardForm + + + You need to specify a file of Bible verses to import. + + + + + AlertsTab + + + Location: + + + + + Ui_EditSongDialog + + + Authors, Topics && Book + + + + + EditSongForm + + + You need to enter some verses. + + + + + Ui_BibleImportWizard + + + Download Options + + + + + BiblePlugin + + + <strong>Bible Plugin</strong><br />This plugin allows bible verses from different sources to be displayed on the screen during the service. + + + + + Ui_EditSongDialog + + + Copyright Information + + + + + Ui_MainWindow + + + &Export + + + + + Ui_AmendThemeDialog + + + Bold + + + + + SongsPlugin + + + Export songs in OpenLP 2.0 format + + + + + MediaManagerItem + + + Load a new + + + + + AlertEditForm + + + Missing data + + + + + SongsPlugin + + + <b>Song Plugin</b> <br>This plugin allows Songs to be managed and displayed.<br> + + + + + Ui_AmendThemeDialog + + + Footer Font + + + + + EditSongForm + + + Invalid verse entry - vX + + + + + ServiceManager + + + OpenLP Service Files (*.osz) + + + + + MediaManagerItem + + + Delete the selected item + + + + + Ui_OpenLPExportDialog + + + Export + + + + + Ui_BibleImportWizard + + + Location: + + + + + BibleMediaItem + + + Keep + + + + + SongUsagePlugin + + + Generate report on Song Usage + + + + + Ui_EditSongDialog + + + Topic + + + + + Ui_MainWindow + + + &Open + + + + + AuthorsForm + + + You haven't set a display name for the author, would you like me to combine the first and last names for you? + + + + + AmendThemeForm + + + Slide Height is %s rows + + + + + Ui_EditSongDialog + + + Lyrics: + + + + + Ui_AboutDialog + + + Project Lead + Raoul "superfly" Snyman + +Developers + Tim "TRB143" Bentley + Jonathan "gushie" Corwin + Michael "cocooncrash" Gorven + Scott "sguerrieri" Guerrieri + Raoul "superfly" Snyman + Maikel Stuivenberg + Martin "mijiti" Thompson + Jon "Meths" Tibble + Carsten "catini" Tingaard + +Testers + Wesley "wrst" Stout + + + + + SongMediaItem + + + Titles + + + + + Ui_OpenLPExportDialog + + + Lyrics + + + + + PresentationMediaItem + + + Present using: + + + + + SongMediaItem + + + Clear + + + + + ServiceManager + + + &Live Verse + + + + + Ui_OpenSongImportDialog + + + Progress: + + + + + Ui_MainWindow + + + Toggle Theme Manager + + + + + Ui_AlertDialog + + + Alert Text: + + + + + Ui_EditSongDialog + + + Edit + + + + + AlertsTab + + + Font Color: + + + + + BiblesTab + + + Display Dual Bible Verses + + + + + CustomTab + + + Custom Display + + + + + Ui_OpenSongExportDialog + + + Title + + + + + Ui_AmendThemeDialog + + + <Color1> + + + + + Ui_EditSongDialog + + + Authors + + + + + ThemeManager + + + Export Theme + + + + + ImageMediaItem + + + No items selected... + + + + + Ui_SongBookDialog + + + Name: + + + + + Ui_AuthorsDialog + + + Author Maintenance + + + + + Ui_AmendThemeDialog + + + Font Footer + + + + + BiblesTab + + + Verse Display + + + + + Ui_MainWindow + + + &Options + + + + + BibleMediaItem + + + Results: + + + + + Ui_OpenLPExportDialog + + + Full Song List + + + + + ServiceManager + + + Move to &top + + + + + SlideController + + + Move to last + + + + + Ui_OpenLPExportDialog + + + Progress: + + + + + Ui_SongMaintenanceDialog + + + Add + + + + + SongMaintenanceForm + + + Are you sure you want to delete the selected author? + + + + + SongUsagePlugin + + + Song Usage Status + + + + + BibleMediaItem + + + Verse Search + + + + + AboutForm + + + build + + + + + Ui_SongBookDialog + + + Edit Book + + + + + EditSongForm + + + Save && Preview + + + + + Ui_SongBookDialog + + + Publisher: + + + + + Ui_AmendThemeDialog + + + Font Weight: + + + + + Ui_BibleImportWizard + + + Bible Filename: + + + + + Ui_AmendThemeDialog + + + Transparent + + + + + SongMediaItem + + + Search + + + + + Ui_BibleImportWizard + + + Format: + + + + + Ui_AmendThemeDialog + + + Background + + + + + Ui_BibleImportWizard + + + Importing + + + + + Ui_customEditDialog + + + Edit all slides + + + + + SongsTab + + + Enable search as you type: + + + + + Ui_MainWindow + + + Ctrl+S + + + + + SongMediaItem + + + Authors + + + + + Ui_PluginViewDialog + + + Active + + + + + SongMaintenanceForm + + + Couldn't add your author. + + + + + Ui_MainWindow + + + Ctrl+O + + + + + Ctrl+N + + + + + Ui_AlertEditDialog + + + Edit + + + + + Ui_EditSongDialog + + + Song Editor + + + + + AlertsTab + + + Font + + + + + SlideController + + + Edit and re-preview Song + + + + + Delay between slides in seconds + + + + + MediaManagerItem + + + &Edit + + + + + Ui_AmendThemeDialog + + + Vertical + + + + + Width: + + + + + ThemesTab + + + Global level + + + + + ThemeManager + + + You are unable to delete the default theme. + + + + + BibleMediaItem + + + Version: + + + + + Ui_AboutDialog + + + OpenLP <version> build <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. + + + + + SongsPlugin + + + OpenLP 2.0 + + + + + ServiceManager + + + New Service + + + + + Ui_TopicsDialog + + + Topic name: + + + + + Ui_BibleImportWizard + + + License Details + + + + + Ui_AboutDialog + + + License + + + + + OpenSongBible + + + Importing + + + + + Ui_AmendThemeDialog + + + Middle + + + + + Ui_customEditDialog + + + Save + + + + + BibleMediaItem + + + From: + + + + + MediaManagerItem + + + You must select one or more items + + + + + Ui_AmendThemeDialog + + + Shadow Color: + + + + + ServiceManager + + + &Notes + + + + + Ui_MainWindow + + + E&xit + + + + + Ui_OpenLPImportDialog + + + Close + + + + + MainWindow + + + OpenLP Version Updated + + + + + Ui_customEditDialog + + + Replace edited slide + + + + + EditCustomForm + + + You need to enter a title + + + + + ThemeManager + + + Theme Exists + + + + + Ui_MainWindow + + + &Help + + + + + Ui_EditVerseDialog + + + Bridge + + + + + Ui_OpenSongExportDialog + + + OpenSong Song Exporter + + + + + Ui_AmendThemeDialog + + + Vertical Align: + + + + + Ui_EditVerseDialog + + + Pre-Chorus + + + + + Ui_AmendThemeDialog + + + Top + + + + + Theme Maintenance + + + + + MainWindow + + + 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 + + + + + Ui_MainWindow + + + Toggle Service Manager + + + + + Ui_EditSongDialog + + + Delete + + + + + MediaManagerItem + + + &Add to Service + + + + + AmendThemeForm + + + First Color: + + + + + ThemesTab + + + Song level + + + + + alertsPlugin + + + Show an alert message + + + + + Ui_MainWindow + + + Ctrl+F1 + + + + + SongMaintenanceForm + + + Couldn't save your topic. + + + + + Ui_MainWindow + + + Save the current service under a new name + + + + + Ui_OpenLPExportDialog + + + Remove Selected + + + + + ThemeManager + + + Delete theme + + + + + ImageTab + + + Image Settings + + + + + Ui_OpenSongImportDialog + + + OpenSong Song Importer + + + + + SongUsagePlugin + + + &Extract recorded data + + + + + ImportWizardForm + + + Open Books CSV File + + + + + AlertsTab + + + Font Name: + + + + + Ui_MainWindow + + + &Web Site + + + + + MediaManagerItem + + + Send the selected item live + + + + + Ui_MainWindow + + + M&ode + + + + + Translate the interface to your language + + + + + Service Manager + + + + + CustomMediaItem + + + Custom + + + + + Ui_BibleImportWizard + + + OSIS + + + + + SongsPlugin + + + openlp.org 1.0 + + + + + Ui_MainWindow + + + &Theme + + + + + Ui_EditVerseDialog + + + Edit Verse + + + + + Ui_MainWindow + + + &Language + + + + + ServiceManager + + + Move to end + + + + + Your service is unsaved, do you want to save those changes before creating a new one ? + + + + + Ui_OpenSongExportDialog + + + Remove Selected + + + + + SongMediaItem + + + Search: + + + + + MainWindow + + + Save Changes to Service? + + + + + Your service has changed, do you want to save those changes? + + + + + ServiceManager + + + &Delete From Service + + + + + Ui_EditSongDialog + + + &Add to Song + + + + + Ui_MainWindow + + + &About + + + + + ImportWizardForm + + + You need to specify a version name for your Bible. + + + + + BiblesTab + + + Only show new chapter numbers + + + + + Ui_AlertEditDialog + + + Delete + + + + + EditCustomForm + + + Error + + + + + ThemesTab + + + 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. + + + + + AlertEditForm + + + Item selected to Add + + + + + Ui_AmendThemeDialog + + + Right + + + + + ThemeManager + + + Save Theme - (%s) + + + + + MediaManagerItem + + + Add the selected item(s) to the service + + + + + AuthorsForm + + + Error + + + + + Ui_AmendThemeDialog + + + Font Color: + + + + + Ui_OpenLPImportDialog + + + Select openlp.org songfile to import: + + + + + Ui_SettingsDialog + + + Settings + + + + + BiblesTab + + + Layout Style: + + + + + MediaManagerItem + + + Edit the selected + + + + + SlideController + + + Move to next + + + + + Ui_MainWindow + + + &Plugin List + + + + + BiblePlugin + + + &Bible + + + + + Ui_BibleImportWizard + + + Web Download + + + + + Ui_AmendThemeDialog + + + Horizontal + + + + + ImportWizardForm + + + Open OSIS file + + + + + Ui_AmendThemeDialog + + + Circular + + + + + PresentationMediaItem + + + Automatic + + + + + SongMaintenanceForm + + + Couldn't save your book. + + + + + Ui_AmendThemeDialog + + + pt + + + + + SongMaintenanceForm + + + Delete Topic + + + + + Ui_OpenLPImportDialog + + + Lyrics + + + + + BiblesTab + + + No brackets + + + + + Ui_AlertEditDialog + + + Maintain Alerts + + + + + Ui_AmendThemeDialog + + + px + + + + + ServiceManager + + + Select a theme for the service + + + + + ThemesTab + + + Themes + + + + + Ui_PluginViewDialog + + + Status: + + + + + Ui_EditSongDialog + + + CCLI Number: + + + + + ImportWizardForm + + + This Bible already exists! Please import a different Bible or first delete the existing one. + + + + + Ui_MainWindow + + + &Translate + + + + + BiblesTab + + + Bibles + + + + + Ui_SongMaintenanceDialog + + + Authors + + + + + SongUsageDetailForm + + + Output File Location + + + + + BiblesTab + + + { and } + + + + + GeneralTab + + + Prompt to save Service before starting New + + + + + ImportWizardForm + + + Starting import... + + + + + BiblesTab + + + Note: +Changes don't affect verses already in the service + + + + + Ui_EditVerseDialog + + + Intro + + + + + ServiceManager + + + Move up order + + + + + PresentationTab + + + available + + + + + ThemeManager + + + default + + + + + SongMaintenanceForm + + + Delete Author + + + + + Ui_AmendThemeDialog + + + Display Location + + + + + Ui_PluginViewDialog + + + Version: + + + + + Ui_AlertEditDialog + + + Add + + + + + GeneralTab + + + General + + + + + Ui_AmendThemeDialog + + + Y Position: + + + + + ServiceManager + + + Move down order + + + + + BiblesTab + + + verse per slide + + + + + Ui_AmendThemeDialog + + + Show Shadow: + + + + + AlertsTab + + + Preview + + + + + alertsPlugin + + + <b>Alerts Plugin</b><br>This plugin controls the displaying of alerts on the presentations screen + + + + + GeneralTab + + + Show the splash screen + + + + + Ui_MainWindow + + + New Service + + + + + SlideController + + + Move to first + + + + + Ui_MainWindow + + + &Online Help + + + + + SlideController + + + Blank Screen + + + + + Ui_MainWindow + + + Save Service + + + + + Save &As... + + + + + Toggle the visibility of the Media Manager + + + + + BibleMediaItem + + + No Book Found + + + + + Ui_EditSongDialog + + + Add + + + + + alertsPlugin + + + &Alert + + + + + BibleMediaItem + + + Advanced + + + + + ImageMediaItem + + + Image(s) + + + + + Ui_MainWindow + + + F11 + + + + + F10 + + + + + F12 + + + + + CustomPlugin + + + <b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br> + + + + + Ui_MainWindow + + + Alt+F7 + + + + + Add an application to the list of tools + + + + + MediaPlugin + + + <b>Media Plugin</b><br>This plugin allows the playing of audio and video media + + + + + ServiceManager + + + Move &down + + + + + BiblesTab + + + Bible Theme: + + + + + SongMediaItem + + + Type: + + + + + SongsPlugin + + + Export songs in openlp.org 1.0 format + + + + + Ui_MainWindow + + + Theme Manager + + + + + AlertsTab + + + Alerts + + + + + Ui_customEditDialog + + + Move slide down 1 + + + + + Ui_AmendThemeDialog + + + Font: + + + + + ServiceManager + + + Load an existing service + + + + + Ui_MainWindow + + + Toggle the visibility of the Theme Manager + + + + + PresentationTab + + + Presentations + + + + + SplashScreen + + + Starting + + + + + ImageTab + + + Slide Loop Delay: + + + + + SlideController + + + Verse + + + + + AlertsTab + + + Alert timeout: + + + + + Ui_MainWindow + + + &Preview Pane + + + + + MediaManagerItem + + + Add a new + + + + + ThemeManager + + + Select Theme Import File + + + + + New Theme + + + + + MediaMediaItem + + + Media + + + + + Ui_AmendThemeDialog + + + Preview + + + + + Outline Size: + + + + + Ui_OpenSongExportDialog + + + Progress: + + + + + AmendThemeForm + + + Second Color: + + + + + Ui_EditSongDialog + + + Theme, Copyright Info && Comments + + + + + Ui_AboutDialog + + + Credits + + + + + BibleMediaItem + + + To: + + + + + Ui_EditSongDialog + + + Song Book + + + + + Ui_OpenLPExportDialog + + + Author + + + + + Ui_AmendThemeDialog + + + Wrap Indentation + + + + + ThemeManager + + + Import a theme + + + + + ImageMediaItem + + + Image + + + + + BibleMediaItem + + + Clear + + + + + Ui_MainWindow + + + Save Service As + + + + + Ui_AlertDialog + + + Cancel + + + + + Ui_OpenLPImportDialog + + + Import + + + + + Ui_EditVerseDialog + + + Chorus + + + + + Ui_EditSongDialog + + + Edit All + + + + + AuthorsForm + + + You need to type in the last name of the author. + + + + + SongsTab + + + Songs Mode + + + + + Ui_AmendThemeDialog + + + Left + + + + + RemotesPlugin + + + <b>Remote Plugin</b><br>This plugin provides the ability to send messages to a running version of openlp on a different computer.<br>The Primary use for this would be to send alerts from a creche + + + + + ImageTab + + + Images + + + + + BibleMediaItem + + + Verse: + + + + + Ui_OpenLPExportDialog + + + openlp.org Song Exporter + + + + + Song Export List + + + + + ThemeManager + + + Export theme + + + + + Ui_SongMaintenanceDialog + + + Delete + + + + + Ui_AmendThemeDialog + + + Theme Name: + + + + + Ui_AboutDialog + + + About OpenLP + + + + + Ui_MainWindow + + + Toggle the visibility of the Service Manager + + + + + PresentationMediaItem + + + A presentation with that filename already exists. + + + + + ImageMediaItem + + + Allow the background of live slide to be overridden + + + + + SongUsageDeleteForm + + + Are you sure you want to delete selected Song Usage data? + + + + + AlertsTab + + + openlp.org + + + + + ImportWizardForm + + + Invalid Books File + + + + + Ui_OpenLPImportDialog + + + Song Title + + + + + MediaManagerItem + + + &Show Live + + + + + AlertsTab + + + Keep History: + + + + + Ui_AmendThemeDialog + + + Image: + + + + + ImportWizardForm + + + Open Verses CSV file + + + + + Ui_customEditDialog + + + Set Theme for Slides + + + + + Ui_MainWindow + + + More information about OpenLP + + + + + AlertsTab + + + Background Color: + + + + + SongMaintenanceForm + + + No topic selected! + + + + + Ui_MainWindow + + + &Media Manager + + + + + &Tools + + + + + AmendThemeForm + + + Background Color: + + + + + Ui_EditSongDialog + + + A&dd to Song + + + + + Title: + + + + + GeneralTab + + + Screen + + + + + SongMaintenanceForm + + + This topic can't be deleted, it is currently assigned to at least one song. + + + + + AlertsTab + + + s + + + + + Ui_AlertEditDialog + + + Clear + + + + + Ui_BibleImportWizard + + + Please wait while your Bible is imported. + + + + + MediaManagerItem + + + No items selected... + + + + + Ui_OpenLPImportDialog + + + Select All + + + + + Ui_BibleImportWizard + + + Select the import format, and where to import from. + + + + + Ui_OpenLPImportDialog + + + Title + + + + + Ui_OpenSongExportDialog + + + Select OpenSong song folder: + + + + + Ui_MainWindow + + + Toggle Media Manager + + + + + SongUsagePlugin + + + &Song Usage + + + + + GeneralTab + + + Monitors + + + + + EditCustomForm + + + You need to enter a slide + + + + + ThemeManager + + + You have not selected a theme. + + + + + Ui_EditVerseDialog + + + Verse Type + + + + + ImportWizardForm + + + You need to specify a file to import your Bible from. + + + + + Ui_EditSongDialog + + + Comments + + + + + AlertsTab + + + Bottom + + + + + Ui_MainWindow + + + Create a new Service + + + + + AlertsTab + + + Top + + + + + ServiceManager + + + &Preview Verse + + + + + Ui_PluginViewDialog + + + TextLabel + + + + + AlertsTab + + + Font Size: + + + + + Ui_PluginViewDialog + + + About: + + + + + Inactive + + + + + Ui_OpenSongExportDialog + + + Ready to export + + + + + Export + + + + + Ui_PluginViewDialog + + + Plugin List + + + + + Ui_AmendThemeDialog + + + Transition Active: + + + + + Ui_BibleImportWizard + + + Proxy Server (Optional) + + + + + Ui_EditSongDialog + + + &Manage Authors, Topics, Books + + + + + Ui_OpenLPExportDialog + + + Ready to export + + + + + ImageMediaItem + + + Images (*.jpg *.jpeg *.gif *.png *.bmp);; All files (*) + + + + + EditCustomForm + + + Save && Preview + + + + + Ui_OpenLPExportDialog + + + Select All + + + + + Ui_SongUsageDetailDialog + + + to + + + + + Ui_AmendThemeDialog + + + Size: + + + + + MainWindow + + + OpenLP Main Display Blanked + + + + + Ui_OpenLPImportDialog + + + Remove Selected + + + + + ServiceManager + + + Move &up + + + + + ImportWizardForm + + + You need to specify an OpenSong Bible file to import. + + + + + Ui_BibleImportWizard + + + Ready. + + + + + PresentationMediaItem + + + File exists + + + + + Ui_OpenSongImportDialog + + + Ready to import + + + + + SlideController + + + Stop continuous loop + + + + + s + + + + + ImagePlugin + + + <b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any songs which are rendered will use the selected image from the background instead of the one provied by the theme.<br> + + + + + SongMediaItem + + + Song Maintenance + + + + + Ui_customEditDialog + + + Edit + + + + + Ui_AmendThemeDialog + + + Gradient : + + + + + ImportWizardForm + + + Invalid Verse File + + + + + EditSongForm + + + Error + + + + + Ui_customEditDialog + + + Add New + + + + + Ui_AuthorsDialog + + + Display name: + + + + + SongMaintenanceForm + + + Are you sure you want to delete the selected topic? + + + + + Ui_AmendThemeDialog + + + Bold/Italics + + + + + Ui_SongMaintenanceDialog + + + Song Maintenance + + + + + ImportWizardForm + + + Open Verses CSV File + + + + + Open OSIS File + + + + + Ui_BibleImportWizard + + + Welcome to the Bible Import Wizard + + + + + SongsTab + + + Songs + + + + + Ui_BibleImportWizard + + + Password: + + + + + Ui_MainWindow + + + &Theme Manager + + + + + MediaManagerItem + + + Preview the selected item + + + + + Ui_BibleImportWizard + + + Version Name: + + + + + Ui_AboutDialog + + + About + + + + + MediaMediaItem + + + Select Media + + + + + Ui_AmendThemeDialog + + + Horizontal Align: + + + + + ServiceManager + + + &Edit Item + + + + + Ui_AmendThemeDialog + + + Background Type: + + + + + Ui_MainWindow + + + &Save + + + + + OpenLP 2.0 + + + + + ThemeManager + + + A theme with this name already exists, would you like to overwrite it? + + + + + PresentationMediaItem + + + Select Presentation(s) + + + + + ThemeManager + + + Export a theme + + + + + AmendThemeForm + + + Open file + + + + + Ui_TopicsDialog + + + Topic Maintenance + + + + + Ui_customEditDialog + + + Clear edit area + + + + + Ui_AmendThemeDialog + + + Show Outline: + + + + + Gradient + + + + + SongBookForm + + + You need to type in a book name! + + + + + ImportWizardForm + + + Open OpenSong Bible + + + + + Ui_MainWindow + + + Look && &Feel + + + + + MediaManagerItem + + + You must select one or more items. + + + + + Ui_SongMaintenanceDialog + + + Books/Hymnals + + + + + Ui_AboutDialog + + + Contribute + + + + + ServiceManager + + + Move to &bottom + + + + + Ui_BibleImportWizard + + + Books Location: + + + + + Ui_OpenSongExportDialog + + + Full Song List + + + + + GeneralTab + + + SongSelect Password: + + + + + diff --git a/resources/i18n/openlp_nb.ts b/resources/i18n/openlp_nb.ts new file mode 100644 index 000000000..bbf2ecaef --- /dev/null +++ b/resources/i18n/openlp_nb.ts @@ -0,0 +1,4491 @@ + + + + BibleMediaItem + + + Quick + Rask + + + Ui_customEditDialog + + + Delete selected slide + Slett valgt slide + + + BiblesTab + + + ( and ) + ( og ) + + + RemoteTab + + + Remotes + Fjernmeldinger + + + ServiceManager + + + Save Service + Lagre møte + + + Ui_AmendThemeDialog + + + Shadow Size: + Skyggestørrelse: + + + Ui_OpenSongExportDialog + + + Close + Lukk + + + ThemeManager + + + Import Theme + Importer tema + + + Ui_AmendThemeDialog + + + Slide Transition + Lysbildeovergang + + + ImportWizardForm + + + Bible Exists + Bibelen eksisterer + + + ThemesTab + + + Theme level + Temanivå + + + BibleMediaItem + + + Bible + Bibel + + + ServiceManager + + + Save Changes to Service? + Lagre endringer til møteplanen? + + + SongUsagePlugin + + + &Delete recorded data + &Slett lagret data + + + Ui_OpenLPExportDialog + + + Song Title + Sangtittel + + + Ui_customEditDialog + + + Edit selected slide + Rediger merket lysbilde + + + SongMediaItem + + + CCLI Licence: + CCLI lisens: + + + BibleMediaItem + + + Clear + Slett + + + Ui_BibleImportWizard + + + Bible Import Wizard + Bibelimporteringsverktøy + + + Ui_customEditDialog + + + Edit All + Rediger alle + + + SongMaintenanceForm + + + Couldn't save your author. + Kunne ikke lagre forfatteren + + + Ui_ServiceNoteEdit + + + Service Item Notes + + + + + Ui_customEditDialog + + + Add new slide at bottom + Legg til nytt lysbilde på bunnen + + + Clear + Slett + + + ThemesTab + + + Global theme + + + + + PresentationPlugin + + + <b>Presentation Plugin</b> <br> Delivers 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. + <b>Presentasjonstillegg</b> <br> Gir deg mulighet til å vise presentasjoner ved hjelp av en rekke ulike programmer. Programmene som er tilgjengelige finner du i rullemenyen. + + + SongUsagePlugin + + + Start/Stop live song usage recording + + + + + MainWindow + + + The Main Display has been blanked out + + + + + Ui_OpenSongExportDialog + + + Lyrics + Sangtekst + + + Ui_AlertDialog + + + Display + Vis + + + SongMaintenanceForm + + + This author can't be deleted, they are currently assigned to at least one song. + Denne forfatteren kan ikke slettes, den er knyttet til minst én sang. + + + Ui_customEditDialog + + + Delete + Slett + + + Ui_OpenSongImportDialog + + + OpenSong Folder: + OpenSong-mappe: + + + ThemeManager + + + Create a new theme + Opprett nytt tema + + + Ui_MainWindow + + + Open an existing service + Åpne eksisterende møteplan + + + SlideController + + + Move to previous + Flytt til forrige + + + Edit and re-preview Song + Endre og forhåndsvis sang + + + Ui_PluginViewDialog + + + Plugin Details + + + + + AlertsTab + + + pt + p.t.Impossible to translate without a context. Point? pro tempore (currently)? + + + Edit History: + Endre historikk: + + + SlideController + + + Delay between slides in seconds + Forsinkelse mellom lysbilder i sekund + + + BiblesTab + + + verse per line + vers per linje + + + Ui_customEditDialog + + + Theme: + Tema: + + + SongMaintenanceForm + + + Couldn't add your book. + Kunne ikke legge til boken. + + + Error + Feil + + + Ui_BibleImportWizard + + + Bible: + Bibel: + + + ThemeManager + + + Delete Theme + Slett tema + + + SplashScreen + + + Splash Screen + + + + + SongMediaItem + + + Song + Sang + + + Ui_OpenSongExportDialog + + + Song Title + Sangtittel + + + BibleMediaItem + + + Search + Søk + + + Ui_MainWindow + + + List the Plugins + Hent liste over tillegg + + + SongMaintenanceForm + + + No author selected! + Ingen forfatter er valgt! + + + SongUsageDeleteForm + + + Delete Selected Song Usage Events? + + + + + SongUsagePlugin + + + <b>SongUsage Plugin</b><br>This plugin records the use of songs and when they have been used during a live service + + + + + Ui_customEditDialog + + + Move slide Up 1 + Flytt lysbildet én opp + + + SongsPlugin + + + OpenSong + OpenSong + + + AlertsManager + + + Alert message created and delayed + + + + + Ui_EditSongDialog + + + Alternative Title: + Alternativ tittel: + + + ServiceManager + + + Open Service + Åpne møteplan + + + BiblesTab + + + Display Style: + Visningsstil: + + + Ui_AmendThemeDialog + + + Image + Bilde + + + EditSongForm + + + You need to enter a song title. + Du må skrive inn en sangtittel. + + + ThemeManager + + + Error + Feil + + + Ui_SongUsageDeleteDialog + + + Song Usage Delete + Slett registrert sangbruk + + + ImportWizardForm + + + Invalid Bible Location + Ugyldig Bibelplassering + + + BibleMediaItem + + + Book: + Bok: + + + ThemeManager + + + Make Global + + + + + Ui_MainWindow + + + &Service Manager + + + + + ImportWizardForm + + + You need to specify a file with books of the Bible to use in the import. + Du må angi en fil som inneholder bøkene i Bibelen. + + + Ui_OpenLPImportDialog + + + Author + Forfatter + + + Ui_AmendThemeDialog + + + Height: + Høyde: + + + Ui_BibleImportWizard + + + Books Location: + Plassering av fil som inneholder bøkene: + + + ThemeManager + + + Delete a theme + Slett et tema + + + Ui_BibleImportWizard + + + Crosswalk + + + + + SongBookForm + + + Error + Error + + + Ui_AuthorsDialog + + + Last name: + Etternavn: + + + ThemesTab + + + Use the global theme, overriding any themes associated with either the service or the songs. + Bruk det globale temaet, og la det overstyre eventuelle tema som er tilknyttet møteplaner eller sanger. + + + Ui_customEditDialog + + + Title: + Tittel: + + + ImportWizardForm + + + You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. + Du må angi hvem som har opphavsrett til denne bibelutgaven! Bibler som ikke er tilknyttet noen opphavsrett må bli merket med dette. + + + SongMediaItem + + + Maintain the lists of authors, topics and books + Rediger liste over forfattere, emner og bøker. + + + Ui_AlertEditDialog + + + Save + Lagre + + + EditCustomForm + + + You have unsaved data + Du har data som ikke er lagret + + + BibleMediaItem + + + To: + Til: + + + Ui_AmendThemeDialog + + + Outline + Omriss + + + BibleMediaItem + + + Text Search + Tekstsøk + + + Ui_OpenLPExportDialog + + + openlp.org Song Exporter + openlp.org sangeksportør + + + SongUsagePlugin + + + Delete song usage to specified date + Slett data angående sangbruk frem til angitt dato + + + Ui_SongUsageDetailDialog + + + Report Location + + Is "report" verb or noun here? + + + Ui_BibleImportWizard + + + OpenSong + OpenSong + + + Ui_MainWindow + + + Open Service + Åpne møteplan + + + SongMediaItem + + + Titles + Titler + + + ImageMediaItem + + + Select Image(s) + Velg bilde(r) + + + BibleMediaItem + + + Search Type: + Søk i: + + + Ui_MainWindow + + + Media Manager + Innholdselementer + + + Alt+F4 + Alt+F4 + + + MediaManagerItem + + + &Preview + &Forhåndsvisning + + + GeneralTab + + + CCLI Details + CCLI-detaljer + + + SongSelect Password: + SongSelect-passord: + + + Ui_MainWindow + + + Toggle the visibility of the Preview Panel + Vis/skjul forhåndsvisningsvinduet + + + SongMaintenanceForm + + + Are you sure you want to delete the selected book? + Er du sikker på at du vil slette den merkede boken? + + + Ui_MainWindow + + + &User Guide + &Brukerveiledning + + + Set the interface language to English + Skift språk til engelsk + + + Ui_AmendThemeDialog + + + Main Font + Hovedskrifttype + + + ImportWizardForm + + + Empty Copyright + Tom copyright + + + AuthorsForm + + + You need to type in the first name of the author. + Du må skrive inn forfatterens fornavn. + + + SongsTab + + + Display Verses on Live Tool bar: + Vis versene på Live-verktøylinjen + + + ServiceManager + + + Move to top + Flytt til toppen + + + ImageMediaItem + + + Override background + Overstyr bakgrunn + + + Ui_SongMaintenanceDialog + + + Edit + Rediger + + + Ui_OpenSongExportDialog + + + Select All + Velg alle + + + ThemesTab + + + 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. + Bruk temaet fra hver sang i databasen. Hvis en sang ikke er tilknyttet et tema, bruk temaet til møteplanen. Hvis møteplanen ikke har et tema, bruk det globale temaet. + + + PresentationMediaItem + + + Presentation + Presentasjon + + + Ui_AmendThemeDialog + + + Solid Color + Ensfarget + + + CustomTab + + + Custom + Egendefinert + + + Ui_OpenLPImportDialog + + + Ready to import + Klar til å importere + + + MainWindow + + + OpenLP version %s has been updated to version %s + +You can obtain the latest version from http://openlp.org + OpenLP versjon %s har blitt oppgradert til versjon %s + +Du kan få tak i den siste versjonen hos http://openlp.org + + + Ui_BibleImportWizard + + + File Location: + Filplassering: + + + SlideController + + + Go to Verse + Gå til vers + + + SongMaintenanceForm + + + Couldn't add your topic. + Kunne ikke legge til emnet. + + + Ui_MainWindow + + + &Import + &Import + + + Quit OpenLP + Avslutt OpenLP + + + Ui_BibleImportWizard + + + 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. + Denne veiviseren vil hjelpe deg å importere Bibler fra en rekke ulike formater. Klikk på neste-knappen under for å starte prosessen ved å velge et format å importere fra. + + + Ui_OpenLPExportDialog + + + Title + Tittel + + + ImportWizardForm + + + Empty Version Name + Tomt versjonnavn + + + Ui_MainWindow + + + &Preview Panel + &Forhåndsvisningspanel + + + SlideController + + + Start continuous loop + Start kontinuerlig løkke + + + GeneralTab + + + primary + primær + + + Ui_EditSongDialog + + + Add a Theme + Legg til tema + + + Ui_MainWindow + + + &New + &Ny + + + Ui_customEditDialog + + + Credits: + + + + + SlideController + + + Live + Direkte + + + Ui_BibleImportWizard + + + Select Import Source + Velg importeringskilde + + + BiblesTab + + + continuous + kontinuerlig + + + Ui_AmendThemeDialog + + + Middle + Midtstilt + + + GeneralTab + + + Application Startup + Programoppstart + + + Ui_AmendThemeDialog + + + Use Default Location: + Bruk standardplassering + + + Ui_OpenSongImportDialog + + + Import + Importer + + + Ui_MainWindow + + + Ctrl+N + Ctrl+N + + + Ui_EditSongDialog + + + Verse Order: + Rekkefølge av versene + + + Ui_MainWindow + + + Default Theme: + Standardtema: + + + Toggle Preview Panel + Vis forhåndsvisningspanel + + + SongMediaItem + + + Lyrics + Sangtekst + + + Ui_OpenLPImportDialog + + + Progress: + Fremgang: + + + Ui_AmendThemeDialog + + + Shadow + Skygge + + + GeneralTab + + + Select monitor for output display: + Velg hvilken skjerm som skal brukes til fremvisning: + + + Ui_AmendThemeDialog + + + Italics + Kursiv + + + ServiceManager + + + Create a new service + Opprett ny møteplan + + + Ui_AmendThemeDialog + + + Background: + Bakgrunn: + + + Ui_OpenLPImportDialog + + + openlp.org Song Importer + openlp.org sangimportør + + + Ui_BibleImportWizard + + + Copyright: + Copyright: + + + ThemesTab + + + Service level + + + + + BiblesTab + + + [ and ] + [ og ] + + + Ui_customEditDialog + + + Save + Lagre + + + MediaManagerItem + + + You must select one or more items + Du må velge ett eller flere elementer + + + GeneralTab + + + Application Settings + Programinnstillinger + + + ServiceManager + + + Save this service + Lagre møteplan + + + ImportWizardForm + + + Open Books CSV file + Åpne CSV-fil som inneholder bøkene i Bibelen + + + GeneralTab + + + SongSelect Username: + SongSelect-brukernavn: + + + Ui_AmendThemeDialog + + + X Position: + X-posisjon + + + BibleMediaItem + + + No matching book could be found in this Bible. + Finner ingen matchende bøker i denne Bibelen. + + + Ui_BibleImportWizard + + + Server: + Server: + + + Download Options + Nedlastingsalternativer + + + ImportWizardForm + + + Invalid OpenSong Bible + Ugyldig OpenSong Bibel + + + GeneralTab + + + CCLI Number: + CCLI-nummer: + + + Ui_AmendThemeDialog + + + Center + Sentrert + + + ServiceManager + + + Theme: + Tema: + + + AlertEditForm + + + Please save or clear selected item + Vennligst lagre eller slett valgt element + + + Ui_MainWindow + + + &Live + &Direkte + + + SongMaintenanceForm + + + Delete Topic + Slett emne + + + Ui_MainWindow + + + English + Norsk + + + ImageMediaItem + + + You must select one or more items + Du må velge ett eller flere element + + + Ui_AuthorsDialog + + + First name: + Fornavn: + + + Ui_BibleImportWizard + + + Permission: + Tillatelse: + + + Ui_OpenSongImportDialog + + + Close + Lukk + + + Ui_SongUsageDetailDialog + + + Song Usage Extraction + + + + + Ui_AmendThemeDialog + + + Opaque + Gjennomsiktighet + + + ImportWizardForm + + + Your Bible import failed. + Bibelimporteringen mislyktes. + + + SlideController + + + Start playing media + Start avspilling av media + + + SongMediaItem + + + Type: + Type: + + + SongMaintenanceForm + + + This book can't be deleted, it is currently assigned to at least one song. + Denne boken kan ikke slettes, den er tilknyttet minst én sang. + + + Ui_AboutDialog + + + Close + Lukk + + + TopicsForm + + + You need to type in a topic name! + Skriv inn et emnenavn! + + + Ui_OpenSongExportDialog + + + Song Export List + Sangeksporteringsliste + + + BibleMediaItem + + + Dual: + Dobbel: + + + ImageTab + + + sec + sek + + + ServiceManager + + + Delete From Service + Slett fra møteplan + + + GeneralTab + + + Automatically open the last service + Åpne forrige møteplan automatisk + + + Ui_OpenLPImportDialog + + + Song Import List + Sangimporteringsliste + + + Ui_OpenSongExportDialog + + + Author + Forfatter + + + Ui_AmendThemeDialog + + + Outline Color: + Omrissfarge: + + + Ui_MainWindow + + + F9 + F9 + + + F8 + F8 + + + ServiceManager + + + &Change Item Theme + &Bytt objekttema + + + Ui_SongMaintenanceDialog + + + Topics + Emne + + + Ui_OpenLPImportDialog + + + Import File Song List + Importer fil med sangliste + + + Ui_customEditDialog + + + Edit Custom Slides + Rediger egendefinerte lysbilder + + + Ui_EditSongDialog + + + &Remove + &Fjern + + + Ui_BibleImportWizard + + + Set up the Bible's license details. + Skriv inn Bibelens lisensdetaljer. + + + Ui_EditVerseDialog + + + Number + Nummer + + + Ui_AmendThemeDialog + + + Alignment + Justering + + + SongMaintenanceForm + + + Delete Book + Slett bok + + + ThemeManager + + + Edit a theme + Rediger et tema + + + Ui_BibleImportWizard + + + BibleGateway + BibleGateway + + + GeneralTab + + + Preview Next Song from Service Manager + Forhåndsvis neste sang i møteplanen + + + Ui_EditSongDialog + + + Title && Lyrics + Tittel && Sangtekst + + + SongMaintenanceForm + + + No book selected! + Ingen bok er valgt! + + + SlideController + + + Move to live + + + + + Ui_EditVerseDialog + + + Other + Annet + + + Ui_EditSongDialog + + + Theme + Tema + + + Ui_EditVerseDialog + + + Verse + Vers + + + Ui_SongUsageDetailDialog + + + Select Date Range + Velg dato-område + + + Ui_MainWindow + + + Save the current service to disk + Lagre gjeldende møteplan + + + BibleMediaItem + + + Chapter: + Kapittel + + + Ui_AmendThemeDialog + + + Bottom + Bunn + + + PresentationTab + + + Available Controllers + + + + + Ui_MainWindow + + + Add &Tool... + Legg til & Verktøy... + + + TopicsForm + + + Error + Feil + + + RemoteTab + + + Remotes Receiver Port + + + + + Ui_MainWindow + + + &View + &Vis + + + Ui_AmendThemeDialog + + + Normal + Normal + + + Ui_OpenLPExportDialog + + + Close + Lukk + + + Ui_BibleImportWizard + + + Username: + Brukernavn: + + + ThemeManager + + + Edit Theme + Endre tema + + + ServiceManager + + + &Preview Verse + &Forhåndsvis vers + + + Ui_AlertDialog + + + Alert Message + Varsel-melding + + + ImportWizardForm + + + Finished import. + Import fullført. + + + GeneralTab + + + Show blank screen warning + + + + + ImportWizardForm + + + You need to specify a file of Bible verses to import. + Du må angi en fil med bibelvers som skal importeres. + + + AlertsTab + + + Location: + Plassering: + + + Ui_EditSongDialog + + + Authors, Topics && Book + Forfatter, Emne && Bok + + + EditSongForm + + + You need to enter some verses. + Du må skrive inn noen vers. + + + CustomTab + + + Display Footer: + Vis bunntekst: + + + BiblePlugin + + + <strong>Bible Plugin</strong><br />This plugin allows bible verses from different sources to be displayed on the screen during the service. + <strong>Bibel-tillegg</strong><br /> Dette tillegget gjør det mulig at bibelvers fra ulike kilder vises på skjermen under møtet. + + + Ui_EditSongDialog + + + Copyright Information + Copyright-informasjon + + + Ui_MainWindow + + + &Export + &Eksporter + + + Ui_AmendThemeDialog + + + Bold + Fet + + + SongsPlugin + + + Export songs in OpenLP 2.0 format + Eksporter sanger i OpenLP 2.0-format + + + MediaManagerItem + + + Load a new + Last inn en ny + + + AlertEditForm + + + Missing data + Data savnes + + + SongsPlugin + + + <b>Song Plugin</b> <br>This plugin allows Songs to be managed and displayed.<br> + <b>Sang-tillegg</b><br>Dette tillegget viser og håndterer sanger.<br> + + + Ui_AmendThemeDialog + + + Footer Font + Skrifttype bunntekst + + + EditSongForm + + + Invalid verse entry - vX + Ugyldig vers - vX + + + ServiceManager + + + OpenLP Service Files (*.osz) + OpenLP møteplan (*.osz) + + + BibleMediaItem + + + No Book Found + Ingen bøker funnet + + + Ui_OpenLPExportDialog + + + Export + Eksporter + + + Ui_BibleImportWizard + + + Location: + Plassering: + + + BibleMediaItem + + + Keep + Behold + + + SongUsagePlugin + + + Generate report on Song Usage + Lag rapport angående bruk av sanger + + + Ui_EditSongDialog + + + Topic + Emne + + + Ui_MainWindow + + + &Open + &Åpne + + + PresentationMediaItem + + + Present using: + Presenter ved hjelp av: + + + ServiceManager + + + &Live Verse + &Direktevers + + + Ui_EditSongDialog + + + Lyrics: + Sangtekst: + + + Ui_AboutDialog + + + Project Lead + Raoul "superfly" Snyman + +Developers + Tim "TRB143" Bentley + Jonathan "gushie" Corwin + Michael "cocooncrash" Gorven + Scott "sguerrieri" Guerrieri + Raoul "superfly" Snyman + Maikel Stuivenberg + Martin "mijiti" Thompson + Jon "Meths" Tibble + Carsten "catini" Tingaard + +Testers + Wesley "wrst" Stout + Prosjektleder +Raoul "superfly" Snyman + +Utviklere +Tim "TRB143" Bentley +Jonathan "gushie" Corwin +Michael "cocooncrash" Gorven +Scott "sguerrieri" Guerrieri +Raoul "superfly" Snyman +Maikel Stuivenberg +Martin "mijiti" Thompson +Jon "Meths" Tibble +Carsten "catini" Tingaard + +Testere +Wesley "wrst" Stout + + + Ui_OpenLPExportDialog + + + Lyrics + Sangtekst + + + AuthorsForm + + + You haven't set a display name for the author, would you like me to combine the first and last names for you? + Du har ikke angitt et visningsnavn for forfatteren, vil du bruke forfatterens fulle navn som visningsnavn? + + + SongMediaItem + + + Clear + Slett + + + AmendThemeForm + + + Slide Height is %s rows + + + + + Ui_OpenSongImportDialog + + + Progress: + Fremgang: + + + Ui_MainWindow + + + Toggle Theme Manager + Åpne tema-behandler + + + Ui_AlertDialog + + + Alert Text: + Varsel-tekst: + + + Ui_EditSongDialog + + + Edit + Rediger + + + AlertsTab + + + Font Color: + Skriftfarge: + + + Ui_AmendThemeDialog + + + Theme Maintenance + Vedlikehold av tema + + + CustomTab + + + Custom Display + Tilpasset visning + + + Ui_OpenSongExportDialog + + + Title + Tittel + + + Ui_AmendThemeDialog + + + <Color1> + <Farge1> + + + Ui_EditSongDialog + + + Authors + Forfattere + + + ThemeManager + + + Export Theme + Eksporter tema + + + ImageMediaItem + + + No items selected... + Ingen elementer valgt + + + Ui_SongBookDialog + + + Name: + Navn: + + + Ui_AuthorsDialog + + + Author Maintenance + Behandle forfatterdata + + + Ui_AmendThemeDialog + + + Font Footer + Skrifttype bunntekst + + + Ui_MainWindow + + + &Settings + &Innstillinger + + + &Options + &Alternativer + + + BibleMediaItem + + + Results: + Resultat: + + + Ui_OpenLPExportDialog + + + Full Song List + Komplett sangliste + + + ServiceManager + + + Move to &top + Flytt til &toppen + + + SlideController + + + Move to last + Flytt til sist + + + Ui_OpenLPExportDialog + + + Progress: + Fremgang: + + + Ui_SongMaintenanceDialog + + + Add + Legg til + + + SongMaintenanceForm + + + Are you sure you want to delete the selected author? + Er du sikker på at du vil slette den valgte forfatteren? + + + SongUsagePlugin + + + Song Usage Status + + + + + BibleMediaItem + + + Verse Search + Søk i vers + + + Ui_SongBookDialog + + + Edit Book + Rediger bok + + + EditSongForm + + + Save && Preview + Lagre && Forhåndsvis + + + Ui_SongBookDialog + + + Publisher: + Utgiver: + + + Ui_AmendThemeDialog + + + Font Weight: + Skrifttykkelse + + + Ui_BibleImportWizard + + + Bible Filename: + Bibel-filnavn: + + + Ui_AmendThemeDialog + + + Transparent + Gjennomsiktig + + + SongMediaItem + + + Search + Søk + + + Ui_BibleImportWizard + + + Format: + Format: + + + Ui_AmendThemeDialog + + + Background + Bakgrunn + + + Ui_BibleImportWizard + + + Importing + Importerer + + + Ui_customEditDialog + + + Edit all slides + Rediger alle lysbilder + + + MediaMediaItem + + + Select Media + Velg media + + + PresentationMediaItem + + + Select Presentation(s) + Velg presentasjon(er) + + + SongMediaItem + + + Authors + Forfattere + + + Ui_PluginViewDialog + + + Active + Aktiv + + + SongMaintenanceForm + + + Couldn't add your author. + Kunne ikke legge til forfatteren. + + + Ui_MainWindow + + + Ctrl+O + Ctrl+O + + + Ui_AmendThemeDialog + + + Other Options + Andre alternativer + + + Ui_AlertEditDialog + + + Edit + Rediger + + + Ui_EditSongDialog + + + Song Editor + Sangredigeringsverktøy + + + MediaPlugin + + + <b>Media Plugin</b><br>This plugin allows the playing of audio and video media + <b>Media-tillegg</b><br> Dette tillegget spiller av lyd og video. + + + AlertsTab + + + Font + Skrifttype + + + SongsPlugin + + + &Song + &Sang + + + Ui_MainWindow + + + &File + &Fil + + + MediaManagerItem + + + &Edit + &Rediger + + + Ui_AmendThemeDialog + + + Vertical + Vertikal + + + Width: + Bredde: + + + ThemesTab + + + Global level + + + + + ThemeManager + + + You are unable to delete the default theme. + Du kan ikke slette det globale temaet + + + BibleMediaItem + + + Version: + Versjon: + + + Ui_AboutDialog + + + OpenLP <version> build <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> build <revision> - Open Source Lyrics Projection + +OpenLP er et gratis presentasjonsverktøy tilegnet kirker, som kan brukes til å vise sanger, bibelvers, videoer, bilder og presentasjoner (hvis OpenOffice.org, PowerPoint eller PowerPoint Viewer er installert) ved hjelp av en data og en projektor. + +Finn ut mer om OpenLP: http://openlp.org/ + + OpenLP er skrevet og vedlikeholdt av frivillige. Hvis ønsker å se flere gratis, kristne program i fremtiden, bør du vurdere å bidra ved å trykke på knappen under. + + + SongsPlugin + + + OpenLP 2.0 + OpenLP 2.0 + + + ServiceManager + + + New Service + Ny møteplan + + + Ui_TopicsDialog + + + Topic name: + Emnenavn: + + + Ui_BibleImportWizard + + + License Details + Lisensdetaljer + + + Ui_AboutDialog + + + License + Lisens + + + Ui_EditSongDialog + + + R&emove + &Fjern + + + ThemeManager + + + File is not a valid theme. + Filen er ikke et gyldig tema. + + + Ui_BibleImportWizard + + + Verse Location: + Plassering av vers: + + + AlertEditForm + + + Item selected to Edit + Element som skal redigeres + + + BibleMediaItem + + + From: + Fra: + + + Ui_AmendThemeDialog + + + Shadow Color: + Skyggefarge: + + + ServiceManager + + + &Notes + &Notis + + + Ui_MainWindow + + + E&xit + &Avslutt + + + Ui_OpenLPImportDialog + + + Close + Lukk + + + MainWindow + + + OpenLP Version Updated + OpenLP versjonen har blitt oppdatert + + + Ui_customEditDialog + + + Replace edited slide + Erstatt redigert lysbilde + + + EditCustomForm + + + You need to enter a title + Du må angi en tittel + + + ThemeManager + + + Theme Exists + Temaet eksisterer + + + Ui_MainWindow + + + &Help + &Hjelp + + + Ui_OpenSongExportDialog + + + OpenSong Song Exporter + OpenSong sangeksportør + + + Ui_AmendThemeDialog + + + Vertical Align: + Vertikal justering: + + + Ui_EditVerseDialog + + + Pre-Chorus + Pre-Chorus + + + Ui_AmendThemeDialog + + + Top + Topp + + + BiblesTab + + + Display Dual Bible Verses + Vis doble bibelvers + + + Ui_MainWindow + + + Toggle Service Manager + Vis møteplanlegger + + + Ui_EditSongDialog + + + Delete + Slett + + + MediaManagerItem + + + &Add to Service + &Legg til i møteplan + + + AmendThemeForm + + + First Color: + Første farge: + + + ThemesTab + + + Song level + Sangnivå + + + alertsPlugin + + + Show an alert message + Vis varsel + + + Ui_MainWindow + + + Ctrl+F1 + Ctrl+F1 + + + SongMaintenanceForm + + + Couldn't save your topic. + Kunne ikke lagre emnet. + + + Ui_MainWindow + + + Save the current service under a new name + Lagre gjeldende møteplan under et nytt navn + + + Ui_OpenLPExportDialog + + + Remove Selected + Fjern merket + + + ThemeManager + + + Delete theme + Slett tema + + + ImageTab + + + Image Settings + Bildeinnstillinger + + + Ui_OpenSongImportDialog + + + OpenSong Song Importer + + + + + BiblesTab + + + Bibles + Bibler + + + SongUsagePlugin + + + &Extract recorded data + + + + + AlertsTab + + + Font Name: + + + + + Ui_MainWindow + + + &Web Site + &Internett side + + + MediaManagerItem + + + Send the selected item live + + + + + Ui_MainWindow + + + M&ode + + + + + Translate the interface to your language + + + + + Service Manager + + + + + CustomMediaItem + + + Custom + Egendefinert + + + Ui_BibleImportWizard + + + OSIS + + + + + SongsPlugin + + + openlp.org 1.0 + openlp.org 1.0 + + + Ui_MainWindow + + + &Theme + &Tema + + + Ui_EditVerseDialog + + + Edit Verse + Rediger Vers + + + Ui_MainWindow + + + &Language + &Språk + + + SlideController + + + Verse + Vers + + + ServiceManager + + + Your service is unsaved, do you want to save those changes before creating a new one ? + + + + + Ui_OpenSongExportDialog + + + Remove Selected + + + + + SongMediaItem + + + Search: + Søk: + + + MainWindow + + + Save Changes to Service? + + + + + Your service has changed, do you want to save those changes? + + + + + ServiceManager + + + &Delete From Service + + + + + Ui_EditSongDialog + + + &Add to Song + + + + + Ui_MainWindow + + + &About + &Om + + + ImportWizardForm + + + You need to specify a version name for your Bible. + + + + + BiblesTab + + + Only show new chapter numbers + + + + + Ui_AlertEditDialog + + + Delete + Slett + + + EditCustomForm + + + Error + Feil + + + RemotesPlugin + + + <b>Remote Plugin</b><br>This plugin provides the ability to send messages to a running version of openlp on a different computer.<br>The Primary use for this would be to send alerts from a creche + + + + + BibleMediaItem + + + Find: + Finn: + + + AlertEditForm + + + Item selected to Add + + + + + Ui_AmendThemeDialog + + + Right + + + + + ThemeManager + + + Save Theme - (%s) + + + + + MediaManagerItem + + + Add the selected item(s) to the service + + + + + AuthorsForm + + + Error + Feil + + + Ui_AmendThemeDialog + + + Font Color: + + + + + Ui_OpenLPExportDialog + + + Select openlp.org export filename: + + + + + Ui_SettingsDialog + + + Settings + Innstillinger + + + BiblesTab + + + Verse Display + + + + + MediaManagerItem + + + Edit the selected + + + + + SlideController + + + Move to next + + + + + Ui_MainWindow + + + &Plugin List + &Tillegsliste + + + BiblePlugin + + + &Bible + + + + + Ui_BibleImportWizard + + + Web Download + + + + + Ui_AmendThemeDialog + + + Horizontal + + + + + ImportWizardForm + + + Open OSIS file + + + + + Ui_AmendThemeDialog + + + Circular + + + + + PresentationMediaItem + + + Automatic + Automatisk + + + SongMaintenanceForm + + + Couldn't save your book. + + + + + Ui_AmendThemeDialog + + + pt + + + + + <Color2> + <Farge2> + + + Ui_OpenLPImportDialog + + + Lyrics + + + + + BiblesTab + + + No brackets + + + + + Ui_AlertEditDialog + + + Maintain Alerts + + + + + Ui_AmendThemeDialog + + + px + + + + + ServiceManager + + + Select a theme for the service + + + + + ThemesTab + + + Themes + Tema + + + Ui_PluginViewDialog + + + Status: + Status: + + + Ui_EditSongDialog + + + CCLI Number: + + + + + ImportWizardForm + + + This Bible already exists! Please import a different Bible or first delete the existing one. + + + + + Ui_MainWindow + + + &Translate + + + + + Save Service As + + + + + Ui_SongMaintenanceDialog + + + Authors + + + + + SongUsageDetailForm + + + Output File Location + + + + + BiblesTab + + + { and } + + + + + GeneralTab + + + Prompt to save Service before starting New + + + + + ImportWizardForm + + + Starting import... + + + + + BiblesTab + + + Note: +Changes don't affect verses already in the service + + + + + Ui_EditVerseDialog + + + Intro + + + + + ServiceManager + + + Move up order + + + + + PresentationTab + + + available + + + + + ThemeManager + + + default + + + + + SongMaintenanceForm + + + Delete Author + + + + + Ui_AmendThemeDialog + + + Display Location + + + + + Ui_PluginViewDialog + + + Version: + + + + + Ui_AlertEditDialog + + + Add + Legg til + + + GeneralTab + + + General + + + + + Ui_AmendThemeDialog + + + Y Position: + + + + + ServiceManager + + + Move down order + + + + + BiblesTab + + + verse per slide + + + + + Ui_BibleImportWizard + + + Welcome to the Bible Import Wizard + + + + + Ui_AmendThemeDialog + + + Show Shadow: + + + + + AlertsTab + + + Preview + + + + + alertsPlugin + + + <b>Alerts Plugin</b><br>This plugin controls the displaying of alerts on the presentations screen + + + + + GeneralTab + + + Show the splash screen + + + + + Ui_MainWindow + + + New Service + + + + + SlideController + + + Move to first + + + + + Ui_MainWindow + + + &Online Help + + + + + SlideController + + + Blank Screen + + + + + Ui_MainWindow + + + Save Service + + + + + Save &As... + + + + + Toggle the visibility of the Media Manager + + + + + MediaManagerItem + + + Delete the selected item + + + + + Ui_EditSongDialog + + + Add + Legg til + + + alertsPlugin + + + &Alert + + + + + BibleMediaItem + + + Advanced + Avansert + + + ImageMediaItem + + + Image(s) + Bilde(r) + + + Ui_MainWindow + + + F11 + F11 + + + F10 + F10 + + + F12 + F12 + + + Ui_BibleImportWizard + + + Select the import format, and where to import from. + + + + + CustomPlugin + + + <b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br> + + + + + Ui_MainWindow + + + Alt+F7 + ALT+F7 + + + Add an application to the list of tools + + + + + EditSongForm + + + Invalid verse entry - values must be Numeric, I,B,C,T,P,E,O + + + + + ServiceManager + + + Move &down + + + + + BiblesTab + + + Bible Theme: + + + + + SongsPlugin + + + Export songs in openlp.org 1.0 format + + + + + Ui_MainWindow + + + Theme Manager + + + + + AlertsTab + + + Alerts + + + + + Ui_customEditDialog + + + Move slide down 1 + + + + + Ui_AmendThemeDialog + + + Font: + + + + + ServiceManager + + + Load an existing service + + + + + Ui_MainWindow + + + Toggle the visibility of the Theme Manager + + + + + PresentationTab + + + Presentations + + + + + SplashScreen + + + Starting + + + + + ImageTab + + + Slide Loop Delay: + + + + + ServiceManager + + + Move to end + + + + + AlertsTab + + + Alert timeout: + + + + + Ui_MainWindow + + + &Preview Pane + + + + + MediaManagerItem + + + Add a new + + + + + ThemeManager + + + Select Theme Import File + + + + + New Theme + + + + + MediaMediaItem + + + Media + + + + + Ui_BibleImportWizard + + + Password: + + + + + Ui_AmendThemeDialog + + + Outline Size: + + + + + Ui_OpenSongExportDialog + + + Progress: + + + + + AmendThemeForm + + + Second Color: + + + + + Ui_EditSongDialog + + + Theme, Copyright Info && Comments + + + + + Ui_MainWindow + + + &Theme Manager + + + + + Ui_OpenLPImportDialog + + + Select openlp.org songfile to import: + + + + + Ui_EditSongDialog + + + Song Book + + + + + Ui_OpenLPExportDialog + + + Author + + + + + Ui_AmendThemeDialog + + + Wrap Indentation + + + + + ThemeManager + + + Import a theme + + + + + ImageMediaItem + + + Image + + + + + SongsTab + + + Enable search as you type: + + + + + Ui_AlertDialog + + + Cancel + + + + + Ui_OpenLPImportDialog + + + Import + + + + + Ui_EditVerseDialog + + + Chorus + + + + + Ui_EditSongDialog + + + Edit All + + + + + AuthorsForm + + + You need to type in the last name of the author. + + + + + SongsTab + + + Songs Mode + + + + + Ui_AmendThemeDialog + + + Left + + + + + ThemesTab + + + 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. + + + + + ImageTab + + + Images + + + + + BibleMediaItem + + + Verse: + + + + + Ui_BibleImportWizard + + + CSV + + + + + Ui_OpenLPExportDialog + + + Song Export List + + + + + ThemeManager + + + Export theme + + + + + Ui_SongMaintenanceDialog + + + Delete + + + + + Ui_AmendThemeDialog + + + Theme Name: + + + + + Ui_AboutDialog + + + About OpenLP + + + + + Ui_MainWindow + + + Toggle the visibility of the Service Manager + + + + + PresentationMediaItem + + + A presentation with that filename already exists. + + + + + ImageMediaItem + + + Allow the background of live slide to be overridden + + + + + SongUsageDeleteForm + + + Are you sure you want to delete selected Song Usage data? + + + + + AlertsTab + + + openlp.org + + + + + ImportWizardForm + + + Invalid Books File + + + + + Ui_OpenLPImportDialog + + + Song Title + + + + + MediaManagerItem + + + &Show Live + + + + + AlertsTab + + + Keep History: + + + + + Ui_AmendThemeDialog + + + Image: + + + + + ImportWizardForm + + + Open Verses CSV file + + + + + Ui_customEditDialog + + + Set Theme for Slides + + + + + Ui_MainWindow + + + More information about OpenLP + + + + + AlertsTab + + + Background Color: + + + + + SongMaintenanceForm + + + No topic selected! + + + + + Ui_MainWindow + + + &Media Manager + + + + + &Tools + + + + + AmendThemeForm + + + Background Color: + + + + + Ui_EditSongDialog + + + A&dd to Song + + + + + Title: + + + + + GeneralTab + + + Screen + + + + + SongMaintenanceForm + + + This topic can't be deleted, it is currently assigned to at least one song. + + + + + AlertsTab + + + s + + + + + Ui_AlertEditDialog + + + Clear + + + + + Ui_BibleImportWizard + + + Please wait while your Bible is imported. + + + + + MediaManagerItem + + + No items selected... + + + + + Ui_OpenLPImportDialog + + + Select All + + + + + Ui_AmendThemeDialog + + + Font Main + + + + + Ui_OpenLPImportDialog + + + Title + + + + + Ui_OpenSongExportDialog + + + Select OpenSong song folder: + + + + + Ui_MainWindow + + + Toggle Media Manager + + + + + SongUsagePlugin + + + &Song Usage + + + + + GeneralTab + + + Monitors + + + + + EditCustomForm + + + You need to enter a slide + + + + + ThemeManager + + + You have not selected a theme. + + + + + Ui_EditVerseDialog + + + Verse Type + + + + + ImportWizardForm + + + You need to specify a file to import your Bible from. + + + + + Ui_EditSongDialog + + + Comments + + + + + AlertsTab + + + Bottom + + + + + Ui_MainWindow + + + Create a new Service + + + + + AlertsTab + + + Top + Topp + + + SlideController + + + Preview + + + + + Ui_PluginViewDialog + + + TextLabel + + + + + About: + Om: + + + Inactive + + + + + Ui_OpenSongExportDialog + + + Ready to export + Klar til eksportering + + + Export + Eksporter + + + Ui_PluginViewDialog + + + Plugin List + + + + + Ui_AmendThemeDialog + + + Transition Active: + + + + + Ui_BibleImportWizard + + + Proxy Server (Optional) + + + + + Ui_EditSongDialog + + + &Manage Authors, Topics, Books + + + + + Ui_OpenLPExportDialog + + + Ready to export + Klar for eksportering + + + ImageMediaItem + + + Images (*.jpg *.jpeg *.gif *.png *.bmp);; All files (*) + + + + + EditCustomForm + + + Save && Preview + + + + + Ui_OpenLPExportDialog + + + Select All + Merk alt + + + Ui_SongUsageDetailDialog + + + to + til + + + Ui_AmendThemeDialog + + + Size: + Størrelse: + + + MainWindow + + + OpenLP Main Display Blanked + + + + + Ui_OpenLPImportDialog + + + Remove Selected + + + + + OpenSongBible + + + Importing + + + + + ServiceManager + + + Move &up + + + + + ImportWizardForm + + + You need to specify an OpenSong Bible file to import. + + + + + Ui_MainWindow + + + Ctrl+S + Ctrl+S + + + PresentationMediaItem + + + File exists + Filen eksisterer + + + Ui_OpenSongImportDialog + + + Ready to import + + + + + SlideController + + + Stop continuous loop + + + + + s + + + + + ImagePlugin + + + <b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any songs which are rendered will use the selected image from the background instead of the one provied by the theme.<br> + + + + + SongMediaItem + + + Song Maintenance + + + + + Ui_customEditDialog + + + Edit + + + + + Ui_AmendThemeDialog + + + Gradient : + + + + + BiblesTab + + + Layout Style: + + + + + ImportWizardForm + + + Invalid Verse File + + + + + EditSongForm + + + Error + + + + + Ui_customEditDialog + + + Add New + Legg til Ny + + + Ui_AuthorsDialog + + + Display name: + + + + + SongMaintenanceForm + + + Are you sure you want to delete the selected topic? + + + + + Ui_AmendThemeDialog + + + Bold/Italics + + + + + Ui_SongMaintenanceDialog + + + Song Maintenance + + + + + Ui_EditVerseDialog + + + Bridge + + + + + SongsTab + + + Songs + Sanger + + + Ui_AmendThemeDialog + + + Preview + + + + + Ui_AboutDialog + + + Credits + + + + + MediaManagerItem + + + Preview the selected item + + + + + Ui_BibleImportWizard + + + Version Name: + Versjons Navn: + + + Ui_AboutDialog + + + About + Om + + + Ui_EditVerseDialog + + + Ending + + + + + Ui_AmendThemeDialog + + + Horizontal Align: + + + + + ServiceManager + + + &Edit Item + + + + + Ui_AmendThemeDialog + + + Background Type: + + + + + Ui_MainWindow + + + &Save + &Lagre + + + OpenLP 2.0 + OpenLP 2.0 + + + ThemeManager + + + A theme with this name already exists, would you like to overwrite it? + + + + + Export a theme + Eksporter tema + + + AmendThemeForm + + + Open file + Åpne fil + + + Ui_TopicsDialog + + + Topic Maintenance + + + + + Ui_customEditDialog + + + Clear edit area + + + + + Ui_AmendThemeDialog + + + Show Outline: + + + + + ServiceManager + + + Move to &bottom + + + + + SongBookForm + + + You need to type in a book name! + + + + + ImportWizardForm + + + Open OpenSong Bible + + + + + Ui_MainWindow + + + Look && &Feel + + + + + Ui_BibleImportWizard + + + Ready. + Klar. + + + Ui_SongMaintenanceDialog + + + Books/Hymnals + + + + + Ui_AboutDialog + + + Contribute + + + + + Ui_AmendThemeDialog + + + Gradient + + + + + AlertsTab + + + Font Size: + + + + + Ui_OpenSongExportDialog + + + Full Song List + + + + + BibleMediaItem + + + Bible not fully loaded + + + + + diff --git a/resources/i18n/openlp_pt_BR.ts b/resources/i18n/openlp_pt_BR.ts new file mode 100644 index 000000000..991c027d0 --- /dev/null +++ b/resources/i18n/openlp_pt_BR.ts @@ -0,0 +1,4254 @@ + + + + BibleMediaItem + + + Quick + Rápido + + + Ui_customEditDialog + + + Delete selected slide + Deletar slide selecionado + + + BiblesTab + + + ( and ) + ( e ) + + + RemoteTab + + + Remotes + Remoto + + + Ui_EditSongDialog + + + &Remove + &Remover + + + Ui_AmendThemeDialog + + + Shadow Size: + Tamanho da sombra: + + + Ui_OpenSongExportDialog + + + Close + Fechar + + + ThemeManager + + + Import Theme + Importar Tema + + + Ui_AmendThemeDialog + + + Slide Transition + Transição do Slide + + + SongMaintenanceForm + + + Are you sure you want to delete the selected book? + Você tem certeza que deseja deletar o livro selecionado? + + + ThemesTab + + + Theme level + Nível do Tema + + + BibleMediaItem + + + Bible + Bíblia + + + ServiceManager + + + Save Changes to Service? + Salvar Mudanças no Culto? + + + SongUsagePlugin + + + &Delete recorded data + &Deletar dados armazenados + + + Ui_OpenLPExportDialog + + + Song Title + Título da Música + + + Ui_customEditDialog + + + Edit selected slide + Editar slide selecionado + + + SongMediaItem + + + CCLI Licence: + Licença CCLI: + + + Ui_SongUsageDeleteDialog + + + Audit Delete + Deletar Auditoria + + + Ui_BibleImportWizard + + + Bible Import Wizard + Assistente de Importação da Bíblia + + + Ui_customEditDialog + + + Edit All + Editar Todos + + + Ui_ServiceNoteEdit + + + Service Item Notes + Item de Notas de Culto + + + SongMaintenanceForm + + + Couldn't save your author! + Não foi possível salvar seu autor! + + + Ui_customEditDialog + + + Clear + Limpar + + + ThemesTab + + + Global theme + Tema global + + + SongUsagePlugin + + + Start/Stop live song usage recording + Iniciar/Parar registro do uso de músicas + + + MainWindow + + + The Main Display has been blanked out + A Tela Principal foi apagada + + + Ui_OpenSongExportDialog + + + Lyrics + Letras + + + Ui_AlertDialog + + + Display + Tela + + + Ui_customEditDialog + + + Delete + Deletar + + + Ui_EditVerseDialog + + + Verse + Versículo + + + SongMaintenanceForm + + + This author can't be deleted, they are currently assigned to at least one song! + Este autor não pode ser deletado. Ele está atualmente cadastrado em pelo menos uma música! + + + ThemeManager + + + Create a new theme + Criar um novo tema + + + Ui_MainWindow + + + Open an existing service + Abrir um culto existente + + + SlideController + + + Move to previous + Mover para o anterior + + + SongsPlugin + + + &Song + &Música + + + Ui_PluginViewDialog + + + Plugin Details + Detalhes do Plugin + + + AlertsTab + + + pt + pt + + + Edit History: + Editar Histórico: + + + Ui_MainWindow + + + &File + &Arquivo + + + SongMaintenanceForm + + + Couldn't add your book! + Não foi possível adicionar o seu livro! + + + BiblesTab + + + verse per line + versículo por linhaVerificar se é necessário colocar versículo no plural + + + Ui_customEditDialog + + + Theme: + Tema: + + + SongMaintenanceForm + + + Error + Erro + + + Ui_BibleImportWizard + + + Bible: + Bíblia: + + + ImportWizardForm + + + You need to specify a file with books of the Bible to use in the import! + Você precisa especificar um arquivo com os livros da Bíblia para usar a importação! + + + ThemeManager + + + Delete Theme + Deletar Tema + + + SplashScreen + + + Splash Screen + Tela InicialVerificar se é a melhor tradução. + + + SongMediaItem + + + Song + Música + + + SongUsageDeleteForm + + + Delete Selected Audit Events? + Deletar Eventos de Auditoria Selecionados? + + + Ui_OpenSongExportDialog + + + Song Title + Título da Música + + + Ui_AmendThemeDialog + + + Bottom + Rodapé + + + Ui_MainWindow + + + List the Plugins + Listar os Plugins + + + SongMaintenanceForm + + + No author selected! + Nenhum autor selecionado! + + + SongUsagePlugin + + + <b>SongUsage Plugin</b><br>This plugin records the use of songs and when they have been used during a live service + <b>Plugin de Uso das Músicas</b><br>Este plugin registra o uso das músicas e quando elas foram usadas durante um culto + + + Ui_customEditDialog + + + Move slide Up 1 + Mover slide para cima 1Verificar o uso do 1 + + + SongsPlugin + + + OpenSong + OpenSong + + + AlertsManager + + + Alert message created and delayed + Mensagem de alerta criada e atrasada + + + Ui_EditSongDialog + + + Alternative Title: + Título Alternativo: + + + ServiceManager + + + Open Service + Abrir Culto + + + BiblesTab + + + Display Style: + Estilo de Exibição: + + + Ui_AmendThemeDialog + + + Image + Imagem + + + EditSongForm + + + You need to enter a song title. + Você precisa digitar um título para a música. + + + ThemeManager + + + Error + Erro + + + ImportWizardForm + + + Invalid Bible Location + Localização da Bíblia Inválida + + + ThemesTab + + + Global level + Nível Global + + + ThemeManager + + + Make Global + Tornar Global + + + Ui_MainWindow + + + &Service Manager + &Gerenciador de Culto + + + Ui_OpenLPImportDialog + + + Author + Autor + + + Ui_AmendThemeDialog + + + Height: + Altura: + + + ThemeManager + + + Delete a theme + Deletar um tema + + + Ui_BibleImportWizard + + + Crosswalk + Crosswalk + + + SongBookForm + + + Error + Erro + + + Ui_AuthorsDialog + + + Last name: + Sobrenome: + + + Ui_customEditDialog + + + Title: + Título: + + + ImportWizardForm + + + You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. + Você precisa definir um direito autoral para a sua Bíblia! Bíblias em Domínio Público necessitam ser marcadas como tal. + + + SongMediaItem + + + Maintain the lists of authors, topics and books + Gerenciar as listas de autores, tópicos e livros + + + Ui_AlertEditDialog + + + Save + Salvar + + + EditCustomForm + + + You have unsaved data + Você possui dados não gravados + + + Ui_AmendThemeDialog + + + Outline + Esboço + + + BibleMediaItem + + + Text Search + Busca de Texto + + + Ui_BibleImportWizard + + + CSV + CSV + + + SongUsagePlugin + + + Delete song usage to specified date + Deletar uso da música para a data especificada + + + Ui_SongUsageDetailDialog + + + Report Location + Localização do Relatório + + + Ui_BibleImportWizard + + + OpenSong + OpenSong + + + Ui_MainWindow + + + Open Service + Culto Aberto + + + BibleMediaItem + + + Find: + Buscar: + + + ImageMediaItem + + + Select Image(s) + Selecionar Imagem(s)verificar o uso do (s) + + + BibleMediaItem + + + Search Type: + Tipo de Busca: + + + Ui_MainWindow + + + Media Manager + Gerenciador de Mídia + + + Alt+F4 + Alt+F4 + + + MediaManagerItem + + + &Preview + &Pré-Visualização + + + GeneralTab + + + CCLI Details + Detalhes de CCLI + + + BibleMediaItem + + + Bible not fully loaded + Bíblia não carregada completamente + + + Ui_MainWindow + + + Toggle the visibility of the Preview Panel + Alternar a visibilidade do Painel de Pré-Visualização + + + ImportWizardForm + + + Bible Exists + Bíblia Existe + + + Ui_MainWindow + + + &User Guide + &Guia do Usuário + + + SongUsageDeleteForm + + + Are you sure you want to delete selected Audit Data? + Você tem certeza que deseja deletar o Registro de Auditoria selecionado? + + + Ui_MainWindow + + + Set the interface language to English + Definir a linguagem da interface para Inglês + + + Ui_AmendThemeDialog + + + Main Font + Fonte Principal + + + ImportWizardForm + + + Empty Copyright + Limpar Direito Autoral + + + CustomPlugin + + + <b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br> + <b>Plugin Customizado</b><br>Este plugin permite que slides sejam exibidos na tela da mesma maneira que as músicas. Este plugin fornece uma grande liberdade sobre o plugin de músicas.<br> + + + AuthorsForm + + + You need to type in the first name of the author. + Você precisa digitar o primeiro nome do autor. + + + SongsTab + + + Display Verses on Live Tool bar: + Exibir Versículos na Barra Ao Vivo:Verificar contexto. + + + ServiceManager + + + Move to top + Mover para o topo + + + ImageMediaItem + + + Override background + Sobrescrever fundo de tela + + + Ui_SongMaintenanceDialog + + + Edit + Editar + + + Ui_OpenSongExportDialog + + + Select All + Selecionar Tudo + + + ThemesTab + + + 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 do culto. Se o culto não tiver um tema, então use o tema global. + + + PresentationMediaItem + + + Presentation + Apresentação + + + Ui_AmendThemeDialog + + + Solid Color + Cor Sólida + + + CustomTab + + + Custom + Customizado + + + Ui_OpenLPImportDialog + + + Ready to import + Pronto para a importação + + + MainWindow + + + OpenLP version %s has been updated to version %s + +You can obtain the latest version from http://openlp.org + A versão do OpenLP %s foi atualizada para a versão %s + +Você pode obter a última versão no site http://openlp.org + + + Ui_BibleImportWizard + + + File Location: + Localização do Arquivo: + + + SlideController + + + Go to Verse + Ir ao Versículo + + + Ui_MainWindow + + + &Import + &Importar + + + Quit OpenLP + Fechar o OpenLP + + + Ui_BibleImportWizard + + + 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 comecar o processo selecionando o formato a ser importado. + + + SongMaintenanceForm + + + Couldn't add your topic! + Não foi possível adicionar o seu tópico! + + + ImportWizardForm + + + Empty Version Name + Nome da Versão Vazio + + + Ui_MainWindow + + + &Preview Panel + &Painel de Pré-Visualização + + + SlideController + + + Start continuous loop + Iniciar repetição contínua + + + ServiceManager + + + Move down + Mover para baixo + + + GeneralTab + + + primary + principal + + + Ui_EditSongDialog + + + Add a Theme + Adicionar um Tema + + + Ui_MainWindow + + + &New + &Novo + + + Ui_customEditDialog + + + Credits: + Créditos: + + + SlideController + + + Live + Ao Vivo + + + GeneralTab + + + Show blank screen warning + Exibir alerta de tela em branco + + + BiblesTab + + + continuous + continuamente + + + Ui_EditVerseDialog + + + Number + Número + + + GeneralTab + + + Application Startup + Inicialização da Aplicação + + + Ui_AmendThemeDialog + + + Use Default Location: + Usar Localização Padrão: + + + Ui_OpenSongImportDialog + + + Import + Importar + + + Ui_AmendThemeDialog + + + Other Options + Outras Opções + + + Ui_EditSongDialog + + + Verse Order: + Ordem dos Versículos: + + + Ui_SongUsageDetailDialog + + + ASelect Date Range + Selecione o Intervalo de Data + + + Ui_MainWindow + + + Default Theme: + Tema Padrão: + + + Toggle Preview Panel + Alternar para Painel de Pré-Visualização + + + SongMediaItem + + + Lyrics + Letras + + + Ui_OpenLPImportDialog + + + Progress: + Progresso: + + + Ui_AmendThemeDialog + + + Shadow + Sombra + + + GeneralTab + + + Select monitor for output display: + Selecione um monitor para exibição: + + + Ui_MainWindow + + + &Settings + &Configurações + + + Ui_AmendThemeDialog + + + Italics + Itálico + + + ServiceManager + + + Create a new service + Criar um novo culto + + + Ui_AmendThemeDialog + + + Background: + Tela de Fundo: + + + Ui_OpenLPImportDialog + + + openlp.org Song Importer + Importador de Músicas openlp.org + + + Ui_BibleImportWizard + + + Copyright: + Direito Autoral: + + + ThemesTab + + + Service level + Nível do Serviço + + + BiblesTab + + + [ and ] + [ e ] + + + Ui_BibleImportWizard + + + Verse Location: + Localização do Versículo: + + + MediaManagerItem + + + You must select one or more items + Você precisa selecionar um ou mais itens + + + GeneralTab + + + Application Settings + Configurações da Aplicação + + + ServiceManager + + + Save this service + Salvar este culto + + + ImportWizardForm + + + Open Books CSV file + Abrir arquivo CSV de Livros + + + GeneralTab + + + SongSelect Username: + Usuário do SongSelect: + + + Ui_AmendThemeDialog + + + X Position: + Posição X: + + + BibleMediaItem + + + No matching book could be found in this Bible. + Nenhum livro foi encontrado nesta Bíblia + + + Ui_BibleImportWizard + + + Server: + Servidor: + + + SongMaintenanceForm + + + Couldn't save your book! + Não foi possível salver o seu livro! + + + Ui_EditVerseDialog + + + Ending + Terminando + + + CustomTab + + + Display Footer: + Exibir Rodapé: + + + ImportWizardForm + + + Invalid OpenSong Bible + Bíblia do OpenSong Inválida + + + GeneralTab + + + CCLI Number: + Número CCLI: + + + Ui_AmendThemeDialog + + + Center + Centralizar + + + ServiceManager + + + Theme: + Tema: + + + Ui_MainWindow + + + &Live + &Ao Vivo + + + Ui_AmendThemeDialog + + + <Color2> + <Color2> + + + Ui_MainWindow + + + English + Inglês + + + ImageMediaItem + + + You must select one or more items + Você precisa selecionar um ou mais itens + + + Ui_AuthorsDialog + + + First name: + Primeiro Nome: + + + Ui_OpenLPExportDialog + + + Select openlp.org export filename: + Selecione um nome de arquivo do tipo openlp.org para exportação: + + + Ui_BibleImportWizard + + + Permission: + Permissão: + + + Ui_OpenSongImportDialog + + + Close + Fechar + + + Ui_AmendThemeDialog + + + Opaque + Opaco + + + SongMaintenanceForm + + + This book can't be deleted, it is currently assigned to at least one song! + Este livro não pode ser deletado pois está atribuída para pelo meno uma música! + + + ImportWizardForm + + + Your Bible import failed. + A sua Importação da Bíblia falhou. + + + SlideController + + + Start playing media + Iniciar a reprodução de mídia + + + SongMediaItem + + + Type: + Tipo: + + + Ui_AboutDialog + + + Close + Fechar + + + TopicsForm + + + You need to type in a topic name! + Você precisa digitar um nome para o tópico! + + + Ui_OpenSongExportDialog + + + Song Export List + Lista de Exportação de Músicas + + + BibleMediaItem + + + Dual: + Duplo: + + + ImageTab + + + sec + seg + + + ServiceManager + + + Delete From Service + Deletar do Culto + + + GeneralTab + + + Automatically open the last service + Abrir o último culto automaticamente + + + Ui_OpenLPImportDialog + + + Song Import List + Lista de Importação de Músicas + + + Ui_OpenSongExportDialog + + + Author + Autor + + + Ui_AmendThemeDialog + + + Outline Color: + Cor do Esboço: + + + Ui_BibleImportWizard + + + Select Import Source + Selecionar Origem da Importação + + + Ui_MainWindow + + + F9 + F9 + + + F8 + F8 + + + ServiceManager + + + &Change Item Theme + &Alterar Tema do Item + + + Ui_OpenSongImportDialog + + + OpenSong Folder: + Diretório do OpenSong: + + + Ui_OpenLPImportDialog + + + Import File Song List + Importar Arquivo com Lista de Músicas + + + Ui_customEditDialog + + + Edit Custom Slides + Editar Slides Customizados + + + Ui_BibleImportWizard + + + Set up the Bible's license details. + Configurar detalhes de licença da Bíblia. + + + Ui_AmendThemeDialog + + + Alignment + Alinhamento + + + SongMaintenanceForm + + + Delete Book + Deletar Livro + + + ThemeManager + + + Edit a theme + Editar um tema + + + Ui_BibleImportWizard + + + BibleGateway + BibleGateway + + + GeneralTab + + + Preview Next Song from Service Manager + Pré-Visualizar Próxima Música do Gerenciamento de Culto + + + Ui_EditSongDialog + + + Title && Lyrics + Título && Letras + + + SongMaintenanceForm + + + No book selected! + Nenhum livro selecionado! + + + SlideController + + + Move to live + Mover para ao vivo + + + Ui_EditVerseDialog + + + Other + Outro + + + Ui_EditSongDialog + + + Theme + Tema + + + ServiceManager + + + Save Service + Salvar Culto + + + Ui_MainWindow + + + Save the current service to disk + Salvar o culto atual no disco + + + BibleMediaItem + + + Chapter: + Capítulo: + + + Search + Buscar + + + PresentationTab + + + Available Controllers + Controladores Disponíveis + + + ImportWizardForm + + + Open Verses CSV file + Abrir arquivo CSV de Versículos + + + TopicsForm + + + Error + Erro + + + RemoteTab + + + Remotes Receiver Port + Porta Recebedora Remota + + + Ui_MainWindow + + + &View + &Visualizar + + + Ui_AmendThemeDialog + + + Normal + Normal + + + Ui_OpenLPExportDialog + + + Close + Fechar + + + Ui_BibleImportWizard + + + Username: + Nome de Usuário: + + + ThemeManager + + + Edit Theme + Editar Tema + + + SlideController + + + Preview + Pré-Visualizar + + + Ui_AlertDialog + + + Alert Message + Mensagem de Alerta + + + ImportWizardForm + + + Finished import. + Importação Finalizada. + + + You need to specify a file of Bible verses to import! + Você precisa especificar um arquivo de versículos da Bíblia para importar! + + + AlertsTab + + + Location: + Localização: + + + Ui_EditSongDialog + + + Authors, Topics && Book + Autores, Tópicos && Livro + + + EditSongForm + + + You need to enter some verses. + Você precisa inserir alguns versículos. + + + Ui_BibleImportWizard + + + Download Options + Opções de Download + + + BiblePlugin + + + <strong>Bible Plugin</strong><br />This plugin allows bible verses from different sources to be displayed on the screen during the service. + <strong>Plugin da Bíblia</strong>Este plugin permite exibir na tela versículos bíblicos de diferentes versões durante o culto. + + + Ui_EditSongDialog + + + Copyright Information + Informação de Direitos Autorais + + + Ui_MainWindow + + + &Export + &Exportar + + + Ui_AmendThemeDialog + + + Bold + Negrito + + + SongsPlugin + + + Export songs in OpenLP 2.0 format + Exportar músicas no formato OpenLP 2.0 + + + MediaManagerItem + + + Load a new + Carregar um novo + + + AlertEditForm + + + Missing data + Dados Faltando + + + SongsPlugin + + + <b>Song Plugin</b> <br>This plugin allows Songs to be managed and displayed.<br> + <b>Plugin de Músicas</b> <br>Este plugin permite que Músicas sejam gerenciadas e exibidas.<br> + + + Ui_AmendThemeDialog + + + Footer Font + Fonte do Rodapé + + + EditSongForm + + + Invalid verse entry - vX + Entrada de versículo inválida - vX + + + MediaManagerItem + + + Delete the selected item + Deletar o item selecionado + + + Ui_OpenLPExportDialog + + + Export + Exportar + + + Ui_BibleImportWizard + + + Location: + Localização: + + + BibleMediaItem + + + Keep + Manter + + + SongUsagePlugin + + + Generate report on Song Usage + Gerar relatório de Uso das Músicas + + + Ui_EditSongDialog + + + Topic + Tópico + + + Ui_MainWindow + + + &Open + &Abrir + + + AuthorsForm + + + You haven't set a display name for the author, would you like me to combine the first and last names for you? + Você não configurou um nome de exibição para o autor. Você quer que eu combine o primeiro e ultimo nomes para você? + + + AmendThemeForm + + + Slide Height is %s rows + A Altura do Slide é de %s linhas + + + Ui_EditVerseDialog + + + Pre-Chorus + Pré-Refrão + + + Ui_EditSongDialog + + + Lyrics: + Letras: + + + Ui_AboutDialog + + + Project Lead + Raoul "superfly" Snyman + +Developers + Tim "TRB143" Bentley + Jonathan "gushie" Corwin + Michael "cocooncrash" Gorven + Scott "sguerrieri" Guerrieri + Raoul "superfly" Snyman + Maikel Stuivenberg + Martin "mijiti" Thompson + Jon "Meths" Tibble + Carsten "catini" Tingaard + +Testers + Wesley "wrst" Stout + Líder do Projeto + Raoul "superfly" Snyman + +Desenvolvedores + Tim "TRB143" Bentley + Jonathan "gushie" Corwin + Michael "cocooncrash" Gorven + Scott "sguerrieri" Guerrieri + Raoul "superfly" Snyman + Maikel Stuivenberg + Martin "mijiti" Thompson + Jon "Meths" Tibble + Carsten "catini" Tingaard + +Testadores + Wesley "wrst" Stout + + + SongMediaItem + + + Titles + Títulos + + + Ui_OpenLPExportDialog + + + Lyrics + Letras + + + PresentationMediaItem + + + Present using: + Apresentar usando: + + + SongMediaItem + + + Clear + Limpar + + + ServiceManager + + + &Live Verse + &Versículo Ao Vivo + + + Ui_OpenSongImportDialog + + + Progress: + Progresso: + + + Ui_MainWindow + + + Toggle Theme Manager + Alternar para Gerenciamento de Temas + + + Ui_AlertDialog + + + Alert Text: + Texto de Alerta: + + + Ui_EditSongDialog + + + Edit + Editar + + + AlertsTab + + + Font Color: + Cor da Fonte: + + + Ui_AmendThemeDialog + + + Theme Maintenance + Manutenção do Tema + + + CustomTab + + + Custom Display + Exibição Customizada + + + Ui_OpenSongExportDialog + + + Title + Título + + + Ui_AmendThemeDialog + + + <Color1> + <Color1> + + + Ui_EditSongDialog + + + Authors + Autores + + + ThemeManager + + + Export Theme + Exportar Tema + + + ServiceManager + + + (N) + (N) + + + Ui_SongBookDialog + + + Name: + Nome: + + + Ui_AuthorsDialog + + + Author Maintenance + Manutenção de Autores + + + Ui_AmendThemeDialog + + + Font Footer + Fonte do Rodapé + + + BiblesTab + + + Verse Display + Exibição do Versículo + + + Ui_MainWindow + + + &Options + &Opções + + + BibleMediaItem + + + Results: + Resultados: + + + Ui_OpenLPExportDialog + + + Full Song List + Lista de Músicas Completa + + + SlideController + + + Move to last + Mover para o último + + + Ui_OpenLPExportDialog + + + Progress: + Progresso: + + + Ui_SongMaintenanceDialog + + + Add + Adicionar + + + SongMaintenanceForm + + + Are you sure you want to delete the selected author? + Você tem certeza que deseja deletar o autor selecionado? + + + SongUsagePlugin + + + Song Usage Status + Status de Uso das Músicas + + + BibleMediaItem + + + Verse Search + Busca de Versículos + + + Ui_SongBookDialog + + + Edit Book + Editar Livro + + + EditSongForm + + + Save && Preview + Salvar && Pré-Visualizar + + + Ui_SongBookDialog + + + Publisher: + Editor: + + + Ui_AmendThemeDialog + + + Font Weight: + Tamanho da Fonte: + + + Ui_BibleImportWizard + + + Bible Filename: + Nome de Arquivo da Bíblia: + + + Ui_AmendThemeDialog + + + Transparent + Transparente + + + SongMediaItem + + + Search + Buscar + + + Ui_BibleImportWizard + + + Format: + Formato: + + + Ui_AmendThemeDialog + + + Background + Plano de Fundo + + + Ui_BibleImportWizard + + + Importing + Importando + + + Ui_customEditDialog + + + Edit all slides + Editar todos os slides + + + SongsTab + + + Enable search as you type: + Habilitar busca ao digitar: + + + Ui_MainWindow + + + Ctrl+S + Ctrl+S + + + SongMediaItem + + + Authors + Autores + + + Ui_PluginViewDialog + + + Active + Ativo + + + SongMaintenanceForm + + + Couldn't save your topic! + Não foi possível salvar o seu tópico! + + + Ui_MainWindow + + + Ctrl+O + Ctrl+O + + + Ctrl+N + Ctrl+N + + + SongMaintenanceForm + + + Couldn't add your author! + Não foi possível adicionar o seu autor! + + + Ui_AlertEditDialog + + + Edit + Editar + + + Ui_EditSongDialog + + + Song Editor + Editor de Músicas + + + AlertsTab + + + Font + Fonte + + + SlideController + + + Edit and re-preview Song + Editar e pré-visualizar Música novamente + + + Delay between slides in seconds + Intervalo entre slides em segundos + + + MediaManagerItem + + + &Edit + &Editar + + + Ui_AmendThemeDialog + + + Vertical + Vertical + + + Width: + Largura: + + + ThemeManager + + + You are unable to delete the default theme! + Você não pode deletar o tema padrão! + + + ThemesTab + + + Use the global theme, overriding any themes associated with either the service or the songs. + Usar o tema global, sobrescrevendo qualquer tema associado com cultos ou músicas. + + + BibleMediaItem + + + Version: + Versão: + + + Ui_AboutDialog + + + OpenLP <version> build <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> build <revision> - Projeção de Letras em Código Aberto + +OpenLP é um software livre de apresentação para igrejas (software de projeção de letras de música) usado para exibir slides de músicas, versículos da Bíblia, vídeos, imagens e até apresentações (se o OpenOffice.org, PowerPoint ou PowerPoint Viewer estiver instalado) para o culto da igreja utilizando um computador e um projetor. + +Encontre mais sobre o OpenLP: http://openlp.org/ + +OpenLP é escrito e mantido por voluntários. Se você quiser ver mais softwares livres sendo escritos, por favor considere contribuir utilizando o botão abaixo. + + + SongsPlugin + + + OpenLP 2.0 + OpenLP 2.0 + + + ServiceManager + + + New Service + Novo Culto + + + Ui_TopicsDialog + + + Topic name: + Nome do tópico: + + + ThemeManager + + + File is not a valid theme! + O arquivo não é um tema válido! + + + Ui_BibleImportWizard + + + License Details + Detalhes da Licença + + + Ui_AboutDialog + + + License + Licença + + + Ui_EditSongDialog + + + R&emove + R&emover + + + Ui_AmendThemeDialog + + + Middle + Meio + + + Ui_customEditDialog + + + Save + Salvar + + + AlertEditForm + + + Item selected to Edit + Item selecionado para Edição + + + BibleMediaItem + + + From: + De: + + + Ui_AmendThemeDialog + + + Shadow Color: + Cor da Sombra: + + + ServiceManager + + + &Notes + &Notas + + + Ui_MainWindow + + + E&xit + S&air + + + Ui_OpenLPImportDialog + + + Close + Fechar + + + MainWindow + + + OpenLP Version Updated + Versão do OpenLP Atualizada + + + Ui_customEditDialog + + + Replace edited slide + Substituir slide editado + + + Add new slide at bottom + Adicionar um novo slide no final + + + EditCustomForm + + + You need to enter a title + Você precisa digitar um título + + + ThemeManager + + + Theme Exists + Tema Existe + + + Ui_MainWindow + + + &Help + &Ajuda + + + Ui_EditVerseDialog + + + Bridge + Ligação + + + Ui_OpenSongExportDialog + + + OpenSong Song Exporter + Exportador de Músicas para o OpenSong + + + Ui_AmendThemeDialog + + + Vertical Align: + Alinhamento Vertical: + + + TestMediaManager + + + Item2 + Item2 + + + Item1 + Item1 + + + Ui_AmendThemeDialog + + + Top + Topo + + + BiblesTab + + + Display Dual Bible Verses + Exibir Versículos Bíblicos Duplos + + + Ui_MainWindow + + + Toggle Service Manager + Alternar para o Gerenciador de Cultos + + + MediaManagerItem + + + &Add to Service + &Adicionar ao Culto + + + AmendThemeForm + + + First Color: + Primeira Cor: + + + ThemesTab + + + Song level + Nível de música + + + alertsPlugin + + + Show an alert message + Exibir uma mensagem de alerta + + + Ui_MainWindow + + + Ctrl+F1 + Ctrl+F1 + + + Save the current service under a new name + Salvar o culto atual com um novo nome + + + Ui_OpenLPExportDialog + + + Remove Selected + Remover Selecionado + + + ThemeManager + + + Delete theme + Deletar tema + + + ImageTab + + + Image Settings + Configurações de Imagem + + + Ui_OpenSongImportDialog + + + OpenSong Song Importer + Importador de Músicas do OpenSong + + + SongUsagePlugin + + + &Extract recorded data + &Extrair dados armazenados + + + AlertsTab + + + Font Name: + Nome da Fonte: + + + Ui_MainWindow + + + &Web Site + &Web Site + + + MediaManagerItem + + + Send the selected item live + Enviar o item selecionado para o ao vivo + + + Ui_MainWindow + + + M&ode + M&odo + + + Translate the interface to your language + Traduzir a interface para o seu idioma + + + Service Manager + Gerenciador de Culto + + + CustomMediaItem + + + Custom + Customizado + + + ImageMediaItem + + + No items selected... + Nenhum item selecionado... + + + Ui_BibleImportWizard + + + OSIS + OSIS + + + SongsPlugin + + + openlp.org 1.0 + openlp.org 1.0 + + + Ui_MainWindow + + + &Theme + &Tema + + + Ui_EditVerseDialog + + + Edit Verse + Editar Versículo + + + Ui_MainWindow + + + &Language + &Idioma + + + ServiceManager + + + Move to end + Mover para o fim + + + Your service is unsaved, do you want to save those changes before creating a new one ? + O seu culto não está salvo. Você deseja salvar estas mudanças antes de criar um novo? + + + Ui_OpenSongExportDialog + + + Remove Selected + Remover Selecionado + + + SongMediaItem + + + Search: + Buscar: + + + MainWindow + + + Save Changes to Service? + Salvar Mudanças no Culto? + + + Your service has changed, do you want to save those changes? + O seu culto foi alterado. Você deseja salvar estas mudanças? + + + EditSongForm + + + Invalid verse entry - values must be Numeric, I,B,C,T,P,E,O + Registro de Verículo inválido - os valores devem ser numéricos, I,B,C,T,P,E,O + + + Ui_EditSongDialog + + + &Add to Song + &Adicionar à Música + + + Ui_MainWindow + + + &About + &Sobre + + + BiblesTab + + + Only show new chapter numbers + Somente mostre números de capítulos novos + + + ImportWizardForm + + + You need to specify a version name for your Bible! + Você precisa especificar um nome de versão para a sua Bíblia! + + + Ui_AlertEditDialog + + + Delete + Deletar + + + EditCustomForm + + + Error + Erro + + + ThemesTab + + + 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 do culto, sobrescrevendo qualquer um dos temas individuais das músicas. Se o culto não tiver um tema, então use o tema global. + + + SongMaintenanceForm + + + This topic can't be deleted, it is currently assigned to at least one song! + Este tópico não pode ser deletado pois está atualmente atribuído para pelo menos uma música! + + + AlertEditForm + + + Item selected to Add + Item selecionado para Adicionar + + + Ui_AmendThemeDialog + + + Right + Direita + + + ThemeManager + + + Save Theme - (%s) + Salvar Tema - (%s) + + + ImageMediaItem + + + Allow background of live slide to be overridden + Permitir que o plano de fundo do slide ao vivo seja sobrescrito + + + MediaManagerItem + + + Add the selected item(s) to the service + Adicionar o item selecionado ao culto + + + AuthorsForm + + + Error + Erro + + + BibleMediaItem + + + Book: + Livro: + + + Ui_AmendThemeDialog + + + Font Color: + Cor da Fonte: + + + Ui_OpenLPImportDialog + + + Select openlp.org songfile to import: + Selecione um arquivo do openlp.org para importar: + + + Ui_SettingsDialog + + + Settings + Configurações + + + BiblesTab + + + Layout Style: + Estilo do Layout: + + + MediaManagerItem + + + Edit the selected + Editar o selecionado + + + SlideController + + + Move to next + Mover para o próximo + + + Ui_MainWindow + + + &Plugin List + &Lista de Plugin + + + BiblePlugin + + + &Bible + &Bíblia + + + Ui_BibleImportWizard + + + Web Download + Download da Internet + + + Ui_AmendThemeDialog + + + Horizontal + Horizontal + + + ImportWizardForm + + + Open OSIS file + Abrir arquivo OSIS + + + Ui_AmendThemeDialog + + + Circular + Circular + + + pt + pt + + + Ui_MainWindow + + + &Add Tool... + &Adicionar Ferramenta... + + + SongMaintenanceForm + + + Delete Topic + Deletar Tópico + + + ServiceManager + + + Move up + Mover para cima + + + Ui_OpenLPImportDialog + + + Lyrics + Letras + + + BiblesTab + + + No brackets + Sem Parênteses + + + Ui_AlertEditDialog + + + Maintain Alerts + Manter Alertas + + + Ui_AmendThemeDialog + + + px + px + + + ServiceManager + + + Select a theme for the service + Selecione um tema para o culto + + + ThemesTab + + + Themes + Temas + + + ServiceManager + + + Move to bottom + Mover para o fim + + + Ui_PluginViewDialog + + + Status: + Status: + + + Ui_EditSongDialog + + + CCLI Number: + Número CCLI: + + + ImportWizardForm + + + This Bible already exists! Please import a different Bible or first delete the existing one. + A Bíblia já existe! Por favor importe uma Bíblia diferente ou primeiro delete a existente. + + + Ui_MainWindow + + + &Translate + &Traduzir + + + AlertEditForm + + + Please Save or Clear seletced item + Por favor Salve ou Limpe o item selecionado + + + BiblesTab + + + Bibles + Bíblias + + + Ui_SongMaintenanceDialog + + + Authors + Autores + + + SongUsageDetailForm + + + Output File Location + Local do arquivo de saída + + + BiblesTab + + + { and } + { e } + + + GeneralTab + + + Prompt to save Service before starting New + Perguntar para salvar o Culto antes de começar um Novo + + + ImportWizardForm + + + Starting import... + Iniciando importação... + + + BiblesTab + + + Note: +Changes don't affect verses already in the service + Nota: +As mudanças não afetam os versículos que já estão no culto + + + Ui_EditVerseDialog + + + Intro + Introdução + + + ServiceManager + + + Move up order + Mover ordem para cima + + + PresentationTab + + + available + disponível + + + ThemeManager + + + default + padrão + + + SongMaintenanceForm + + + Delete Author + Deletar Autor + + + Ui_AmendThemeDialog + + + Display Location + Local de Exibição + + + Ui_PluginViewDialog + + + Version: + Versão: + + + Ui_AlertEditDialog + + + Add + Adicionar + + + GeneralTab + + + General + Geral + + + Ui_AmendThemeDialog + + + Y Position: + Posição Y: + + + ServiceManager + + + Move down order + Mover ordem para baixo + + + BiblesTab + + + verse per slide + versículos por slide + + + Ui_AmendThemeDialog + + + Show Shadow: + Exibir Sombra: + + + AlertsTab + + + Preview + Pré-Visualizar + + + alertsPlugin + + + <b>Alerts Plugin</b><br>This plugin controls the displaying of alerts on the presentations screen + <b>Plugin de Alertas</b><br>Este plugin controla a exibição de alertas na tela de apresentação + + + GeneralTab + + + Show the splash screen + Exibir a tela inicial + + + Ui_MainWindow + + + New Service + Novo Culto + + + SlideController + + + Move to first + Mover para o primeiro + + + Ui_MainWindow + + + &Online Help + &Ajuda Online + + + SlideController + + + Blank Screen + Tela em Branco + + + Ui_MainWindow + + + Save Service + Salvar Culto + + + Save &As... + Salvar &Como... + + + Toggle the visibility of the Media Manager + Alternar a visibilidade do Gerenciador de Mídia + + + BibleMediaItem + + + No Book Found + Nenhum Livro Encontrado + + + Ui_EditSongDialog + + + Add + Adicionar + + + alertsPlugin + + + &Alert + &Alerta + + + BibleMediaItem + + + Advanced + Avançado + + + ImageMediaItem + + + Image(s) + Imagem(s) + + + Ui_MainWindow + + + F11 + F11 + + + F10 + F10 + + + F12 + F12 + + + Ui_BibleImportWizard + + + Select the import format, and where to import from. + Selecione o formato e de onde será a importação + + + Ui_MainWindow + + + Alt+F7 + Alt+F7 + + + Add an application to the list of tools + Adicionar um aplicação para a lista de ferramentas + + + MediaPlugin + + + <b>Media Plugin</b><br>This plugin allows the playing of audio and video media + <br>Plugin de Mídia</b><br>Este plugin permite a execução de audio e vídeo + + + BiblesTab + + + Bible Theme: + Tema da Bíblia: + + + SongsPlugin + + + Export songs in openlp.org 1.0 format + Exportar músicas no formato openlp.org 1.0 + + + Ui_MainWindow + + + Theme Manager + Gerenciador de Temas + + + AlertsTab + + + Alerts + Alertas + + + Ui_customEditDialog + + + Move slide down 1 + Mover slide para baixo 1 + + + Ui_AmendThemeDialog + + + Font: + Fonte: + + + ServiceManager + + + Load an existing service + Carregar um culto existente + + + Ui_MainWindow + + + Toggle the visibility of the Theme Manager + Alternar a visibilidade do Gerenciador de Temas + + + PresentationTab + + + Presentations + Apresentações + + + SplashScreen + + + Starting + Iniciando + + + ImageTab + + + Slide Loop Delay: + Intervalo para Repetição do Slide: + + + SlideController + + + Verse + Versículo + + + AlertsTab + + + Alert timeout: + Tempo Limite para o Alerta: + + + Ui_MainWindow + + + &Preview Pane + &Painel de Pré-Visualização + + + MediaManagerItem + + + Add a new + Adicionar um novo + + + ThemeManager + + + Select Theme Import File + Selecionar Arquivo de Importação de Tema + + + New Theme + Novo Tema + + + MediaMediaItem + + + Media + Mídia + + + Ui_AmendThemeDialog + + + Preview + Pré-Visualização + + + Outline Size: + Tamanho do Esboço: + + + Ui_OpenSongExportDialog + + + Progress: + Progresso: + + + AmendThemeForm + + + Second Color: + Segunda Cor: + + + Ui_EditSongDialog + + + Theme, Copyright Info && Comments + Tema, Direitos Autorais && Comentários + + + Ui_AboutDialog + + + Credits + Créditos + + + BibleMediaItem + + + To: + Para: + + + Ui_EditSongDialog + + + Song Book + Livro de Músicas + + + alertsPlugin + + + F7 + F7 + + + Ui_OpenLPExportDialog + + + Author + Autor + + + Ui_AmendThemeDialog + + + Wrap Indentation + Indentação da quebra + + + ThemeManager + + + Import a theme + Importar um tema + + + PresentationPlugin + + + <b>Presentation Plugin</b> <br> Delivers 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. + <b>Plugin de Apresentação</b> <br>Entrega a habilidade de mostrar apresentações usando um diferente programas. A escolha dos programas de apresentação disponíveis está disponível para o usuário em uma caixa de seleção. + + + ImageMediaItem + + + Image + Imagem + + + BibleMediaItem + + + Clear + Limpar + + + Ui_MainWindow + + + Save Service As + Salvar Culto Como + + + Ui_AlertDialog + + + Cancel + Cancelar + + + Ui_OpenLPImportDialog + + + Import + Importar + + + Ui_EditVerseDialog + + + Chorus + Refrão + + + Ui_EditSongDialog + + + Edit All + Editar Todos + + + AuthorsForm + + + You need to type in the last name of the author. + Você precisa digitar o sobrenome do autor. + + + SongsTab + + + Songs Mode + Modo de Músicas + + + Ui_AmendThemeDialog + + + Left + Esquerda + + + RemotesPlugin + + + <b>Remote Plugin</b><br>This plugin provides the ability to send messages to a running version of openlp on a different computer.<br>The Primary use for this would be to send alerts from a creche + <b>Plugin Remoto</b><br>Este plugin provê a habilidade de enviar mensagens para uma versão do openlp rodando em um computador diferente.<br>O principal uso para isto seria para uso de alertas da creche + + + ImageTab + + + Images + Imagens + + + BibleMediaItem + + + Verse: + Versículo: + + + Ui_OpenLPExportDialog + + + openlp.org Song Exporter + Exportador de Músicas do openlp.org + + + Song Export List + Lista de Exportação de Músicas + + + ThemeManager + + + Export theme + Exportar tema + + + Ui_SongMaintenanceDialog + + + Delete + Deletar + + + Ui_AmendThemeDialog + + + Theme Name: + Nome do Tema: + + + Ui_AboutDialog + + + About OpenLP + Sobre o OpenLP + + + Ui_MainWindow + + + Toggle the visibility of the Service Manager + Alternar a visibilidade do Gerenciador de Cultos + + + PresentationMediaItem + + + A presentation with that filename already exists. + Uma apresentação com este nome já existe. + + + AlertsTab + + + openlp.org + openlp.org + + + ImportWizardForm + + + Invalid Books File + Arquivo de Livros Inválido + + + Ui_OpenLPImportDialog + + + Song Title + Título da Música + + + MediaManagerItem + + + &Show Live + &Mostrar Ao Vivo + + + AlertsTab + + + Keep History: + Manter Histórico: + + + Ui_AmendThemeDialog + + + Image: + Imagem: + + + Ui_customEditDialog + + + Set Theme for Slides + Definir Tema para os Slides + + + Ui_MainWindow + + + More information about OpenLP + Mais informações sobre o OpenLP + + + AlertsTab + + + Background Color: + Cor do Plano de Fundo: + + + SongMaintenanceForm + + + No topic selected! + Nenhum tópico selecionado! + + + Ui_MainWindow + + + &Media Manager + &Gerenciador de Mídia + + + &Tools + &Ferramentas + + + AmendThemeForm + + + Background Color: + Cor do Plano de Fundo: + + + Ui_EditSongDialog + + + A&dd to Song + A&dicionar uma Música + + + Title: + Título: + + + GeneralTab + + + Screen + Tela + + + AlertsTab + + + s + s + + + ImagePlugin + + + <b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any somgs which are rendered will use the selected image from the background instead of the one provied by the theme.<br> + <b>Plugin de Imagem</b><br>Permite que imagens de todos os tipos sejam exibidas. Se um número de imagens for selecionada e apresentada na tela ao vivo, é possível virá-las a tempo.<br><br>No plugin, se a opção <i>Sobrescrever Plano de Fundo</i> estiver escolhida e a imagem for selecionado, qualquer música que for exibida irá utilizar a imagem selecionada como plano de fundo ao invés da imagem configurada pelo tema.<br> + + + Ui_AlertEditDialog + + + Clear + Limpar + + + Ui_BibleImportWizard + + + Please wait while your Bible is imported. + Por favor aguarde enquanto a sua Bíblia é importada. + + + MediaManagerItem + + + No items selected... + Nenhum item selecionado... + + + Ui_OpenLPImportDialog + + + Select All + Selecionar Todos + + + Ui_AmendThemeDialog + + + Font Main + Fonte Principal + + + ImageMediaItem + + + Images (*.jpg *jpeg *.gif *.png *.bmp) + Imagens (*.jpg *jpeg *.gif *.png *.bmp) + + + Ui_OpenLPImportDialog + + + Title + Título + + + Ui_OpenSongExportDialog + + + Select OpenSong song folder: + Selecione o diretório da música do OpenSong: + + + Ui_MainWindow + + + Toggle Media Manager + Alternar Gerenciador de Mídia + + + SongUsagePlugin + + + &Song Usage + &Uso das Músicas + + + GeneralTab + + + Monitors + Monitores + + + EditCustomForm + + + You need to enter a slide + Você precisa inserir um slide + + + Ui_SongMaintenanceDialog + + + Topics + Tópicos + + + ImportWizardForm + + + You need to specify a file to import your Bible from! + Você precisa especificar um arquivo para importar a sua Bíblia! + + + Ui_EditVerseDialog + + + Verse Type + Tipo de Versículo + + + OpenSongBible + + + Importing + Importando + + + Ui_EditSongDialog + + + Comments + Comentários + + + AlertsTab + + + Bottom + Final + + + Ui_MainWindow + + + Create a new Service + Criar um novo Culto + + + AlertsTab + + + Top + Topo + + + ServiceManager + + + &Preview Verse + &Pré-Visualizar Versículo + + + Ui_PluginViewDialog + + + TextLabel + TextLabel + + + AlertsTab + + + Font Size: + Tamanho da Fonte: + + + Ui_PluginViewDialog + + + About: + Sobre: + + + Inactive + Inativo + + + Ui_OpenSongExportDialog + + + Ready to export + Pronto para exportação + + + Export + Exportar + + + Ui_PluginViewDialog + + + Plugin List + Lista de Plugins + + + Ui_AmendThemeDialog + + + Transition Active: + Transição Ativa: + + + Ui_BibleImportWizard + + + Proxy Server (Optional) + Servidor Proxy (Opcional) + + + Ui_EditSongDialog + + + &Manage Authors, Topics, Books + &Gerenciar Autores, Tópicos e Livros + + + Ui_SongUsageDetailDialog + + + Audit Detail Extraction + Extração de Detalhes de Auditoria + + + Ui_OpenLPExportDialog + + + Ready to export + Pronto para Exportação + + + EditCustomForm + + + Save && Preview + Salvar && Pré-Visualizar + + + Ui_OpenLPExportDialog + + + Select All + Selecionar Todos + + + Ui_SongUsageDetailDialog + + + to + para + + + Ui_AmendThemeDialog + + + Size: + Tamanho: + + + MainWindow + + + OpenLP Main Display Blanked + Tela Principal do OpenLP em Branco + + + Ui_OpenLPImportDialog + + + Remove Selected + Remover Selecionado + + + Ui_EditSongDialog + + + Delete + Deletar + + + ImportWizardForm + + + You need to specify an OpenSong Bible file to import! + Você precisa especificar uma Bíblia do OpenSong para importar! + + + PresentationMediaItem + + + File exists + Arquivo existe + + + Ui_OpenLPExportDialog + + + Title + Título + + + Ui_OpenSongImportDialog + + + Ready to import + Pronto para importação + + + SlideController + + + Stop continuous loop + Parar repetição contínua + + + s + s + + + SongMediaItem + + + Song Maintenance + Manutenção de Músicas + + + Ui_customEditDialog + + + Edit + Editar + + + Ui_AmendThemeDialog + + + Gradient : + Gradiente: + + + ImportWizardForm + + + Invalid Verse File + Arquivo de Versículo Inválido + + + EditSongForm + + + Error + Erro + + + Ui_customEditDialog + + + Add New + Adicionar Novo + + + Ui_AuthorsDialog + + + Display name: + Nome da Tela: + + + SongMaintenanceForm + + + Are you sure you want to delete the selected topic? + Você tem certeza que deseja deletar o tópico selecionado? + + + Ui_AmendThemeDialog + + + Bold/Italics + Negrito/Itálico + + + Ui_SongMaintenanceDialog + + + Song Maintenance + Manutenção de Músicas + + + Ui_BibleImportWizard + + + Welcome to the Bible Import Wizard + Bem Vindo ao assistente de Importação de Bíblias + + + SongsTab + + + Songs + Músicas + + + Ui_BibleImportWizard + + + Password: + Senha: + + + Ui_MainWindow + + + &Theme Manager + &Gerenciador de Temas + + + MediaManagerItem + + + Preview the selected item + Pré-Visualizar o item selecionado + + + Ui_BibleImportWizard + + + Version Name: + Nome da Versão: + + + Ui_AboutDialog + + + About + Sobre + + + MediaMediaItem + + + Select Media + Selecionar Mídia + + + Ui_AmendThemeDialog + + + Horizontal Align: + Alinhamento Horizontal: + + + ServiceManager + + + &Edit Item + &Editar Item + + + Ui_AmendThemeDialog + + + Background Type: + Tipo de Plano de Fundo: + + + Ui_MainWindow + + + &Save + &Salvar + + + OpenLP 2.0 + OpenLP 2.0 + + + ThemeManager + + + A theme with this name already exists, would you like to overwrite it? + Um tema com este nome já existe. Você gostaria de sobrescrevê-lo? + + + PresentationMediaItem + + + Select Presentation(s) + Selecionar Apresentação(ões) + + + ThemeManager + + + Export a theme + Exportar um tema + + + AmendThemeForm + + + Open file + Abrir arquivo + + + Ui_TopicsDialog + + + Topic Maintenance + Manutenção de Tópico + + + Ui_customEditDialog + + + Clear edit area + Limpar área de edição + + + Ui_AmendThemeDialog + + + Show Outline: + Mostrar Esboço: + + + SongBookForm + + + You need to type in a book name! + Você precisa digitar um nome de livro! + + + ImportWizardForm + + + Open OpenSong Bible + Abrir Biblia do OpenSong + + + Ui_MainWindow + + + Look && &Feel + Aparência + + + Ui_BibleImportWizard + + + Ready. + Pronto. + + + ThemeManager + + + You have not selected a theme! + Você não selecionou um tema! + + + Ui_SongMaintenanceDialog + + + Books/Hymnals + Livros/Hinários + + + Ui_AboutDialog + + + Contribute + Contribuir + + + Ui_AmendThemeDialog + + + Gradient + Gradiente + + + Ui_BibleImportWizard + + + Books Location: + Localização dos Livros: + + + Ui_OpenSongExportDialog + + + Full Song List + Lista de Músicas Completa + + + GeneralTab + + + SongSelect Password: + Senha do SongSelect: + + + diff --git a/resources/i18n/openlp_sv.ts b/resources/i18n/openlp_sv.ts new file mode 100644 index 000000000..cdb33f4a2 --- /dev/null +++ b/resources/i18n/openlp_sv.ts @@ -0,0 +1,4262 @@ + + + + BibleMediaItem + + + Quick + Snabb + + + Ui_customEditDialog + + + Delete selected slide + Ta bort vald bild + + + BiblesTab + + + ( and ) + ( och ) + + + RemoteTab + + + Remotes + FjärrstyrningarWhat is "remotes"? current translation is equal to "remote controlings" + + + Ui_EditSongDialog + + + &Remove + &Ta bort + + + Ui_AmendThemeDialog + + + Shadow Size: + Skuggstorlek: + + + Ui_OpenSongExportDialog + + + Close + Stäng + + + ThemeManager + + + Import Theme + Importera tema + + + Ui_AmendThemeDialog + + + Slide Transition + Bildövergång + + + SongMaintenanceForm + + + Are you sure you want to delete the selected book? + Är du säker på att du vill ta bort vald bok? + + + ThemesTab + + + Theme level + Temanivå + + + BibleMediaItem + + + Bible + Bibel + + + ServiceManager + + + Save Changes to Service? + Spara Ändringar till Planering?"Service" is hard to translate, current translation is more equal to "schedule" + + + SongUsagePlugin + + + &Delete recorded data + &Ta bort inspelad data + + + Ui_OpenLPExportDialog + + + Song Title + Sångtitel + + + Ui_customEditDialog + + + Edit selected slide + Redigera vald bild + + + SongMediaItem + + + CCLI Licence: + CCLI-licens: + + + Ui_BibleImportWizard + + + Bible Import Wizard + Bibelimport-guide + + + Ui_customEditDialog + + + Edit All + Redigera alla + + + SongMaintenanceForm + + + Couldn't save your author. + Kunde inte spara din låtskrivare.I think it's referring to the author of a song? + + + Ui_ServiceNoteEdit + + + Service Item Notes + Mötesanteckningar + + + Ui_customEditDialog + + + Add new slide at bottom + Lägg till ny bild i slutet + + + Clear + Rensa + + + ThemesTab + + + Global theme + Globalt tema + + + PresentationPlugin + + + <b>Presentation Plugin</b> <br> Delivers 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. + <b>Presentations Plugin</b> <br> Ger möjlighet att visa presentationer genom olika program. Tillgängliga presentationsprogram finns i en drop-down meny. + + + SongUsagePlugin + + + Start/Stop live song usage recording + Starta/Stoppa inspelning av sånganvändning + + + MainWindow + + + The Main Display has been blanked out + Huvuddisplayen har rensatsHard with a good translation, "rensats", "tömts"? + + + Ui_OpenSongExportDialog + + + Lyrics + Sångtexter + + + Ui_AlertDialog + + + Display + Visa + + + SongMaintenanceForm + + + This author can't be deleted, they are currently assigned to at least one song. + Låtskrivaren kan inte tas bort, den är associerad med åtminstone en sång. + + + Ui_customEditDialog + + + Delete + Ta bort + + + Ui_EditVerseDialog + + + Verse + Vers + + + Ui_OpenSongImportDialog + + + OpenSong Folder: + OpenSong-mapp: + + + ThemeManager + + + Create a new theme + Skapa ett nytt tema + + + Ui_MainWindow + + + Open an existing service + Öppna en befintlig mötesplanering + + + SlideController + + + Move to previous + Flytta till föregående + + + SongsPlugin + + + &Song + &Sång + + + Ui_PluginViewDialog + + + Plugin Details + Plugindetaljer + + + ImportWizardForm + + + You need to specify a file with books of the Bible to use in the import. + Du måste välja en fil med Bibelböcker att använda i importen. + + + AlertsTab + + + Edit History: + Redigera historik: + + + Ui_MainWindow + + + &File + &Fil + + + BiblesTab + + + verse per line + vers per rad + + + Ui_customEditDialog + + + Theme: + Tema: + + + SongMaintenanceForm + + + Couldn't add your book. + Kunde inte lägga till din bok. + + + Error + Fel + + + Ui_BibleImportWizard + + + Bible: + Bibel: + + + ThemeManager + + + Delete Theme + Ta bort tema + + + SplashScreen + + + Splash Screen + Startbild + + + SongMediaItem + + + Song + Sång + + + Ui_OpenSongExportDialog + + + Song Title + Sångtitel + + + Ui_AmendThemeDialog + + + Bottom + Längst ner + + + Ui_MainWindow + + + List the Plugins + Lista Plugin + + + SongMaintenanceForm + + + No author selected! + Ingen författare vald! + + + SongUsageDeleteForm + + + Delete Selected Song Usage Events? + Ta bort valda sånganvändningsdata? + + + SongUsagePlugin + + + <b>SongUsage Plugin</b><br>This plugin records the use of songs and when they have been used during a live service + <b>SongUsage Plugin</b><br>Det här pluginprogrammet spelar in användningen av sånger och när de använts i en planering + + + Ui_customEditDialog + + + Move slide Up 1 + Flytta upp bild ett steg + + + SongsPlugin + + + OpenSong + OpenSong + + + AlertsManager + + + Alert message created and delayed + Larmmeddelande skapat och fördröjt + + + Ui_EditSongDialog + + + Alternative Title: + Alternativ titel: + + + ServiceManager + + + Open Service + Öppna Mötesplanering + + + BiblesTab + + + Display Style: + Visningsutseende: + + + Ui_AmendThemeDialog + + + Image + Bild + + + EditSongForm + + + You need to enter a song title. + Du måste ange en sångtitel. + + + ThemeManager + + + Error + Fel + + + Ui_SongUsageDeleteDialog + + + Song Usage Delete + Ta bort inspelad sånganvändning + + + ImportWizardForm + + + Invalid Bible Location + Felaktig bibelplacering + + + BibleMediaItem + + + Book: + Bok: + + + ThemeManager + + + Make Global + Gör global + + + Ui_MainWindow + + + &Service Manager + &Mötesplaneringshanterare + + + Ui_OpenLPImportDialog + + + Author + Författare + + + Ui_AmendThemeDialog + + + Height: + Höjd: + + + ThemeManager + + + Delete a theme + Ta bort ett tema + + + Ui_BibleImportWizard + + + Crosswalk + Crosswalk?? + + + SongBookForm + + + Error + Fel + + + Ui_AuthorsDialog + + + Last name: + Efternamn: + + + ThemesTab + + + Use the global theme, overriding any themes associated with either the service or the songs. + Använd det globala temat, ignorerar teman associerade med mötesplaneringen eller sångerna. + + + Ui_customEditDialog + + + Title: + Titel: + + + ImportWizardForm + + + You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. + Du måste infoga copyright-information för din Bibel! Biblar i den publika domänen måste innehålla det. + + + SongMediaItem + + + Maintain the lists of authors, topics and books + Hantera listorna över författare, ämnen och böckerjag tror att hantera är tillräckligt generellt + + + Ui_AlertEditDialog + + + Save + Spara + + + EditCustomForm + + + You have unsaved data + Du har osparade data + + + Ui_AmendThemeDialog + + + Outline + Kontur + + + BibleMediaItem + + + Text Search + Textsökning + + + Ui_BibleImportWizard + + + CSV + CSV + + + SongUsagePlugin + + + Delete song usage to specified date + Ta bort sånganvändning fram till specificerat datum + + + Ui_SongUsageDetailDialog + + + Report Location + Rapportera placering + + + Ui_BibleImportWizard + + + OpenSong + OpenSong + + + Ui_MainWindow + + + Open Service + Öppna mötesplanering + + + BibleMediaItem + + + Find: + Hitta: + + + ImageMediaItem + + + Select Image(s) + Välj bild(er) + + + BibleMediaItem + + + Search Type: + Sök Typ: + + + Ui_MainWindow + + + Media Manager + Mediahanterare + + + Alt+F4 + Alt+F4 + + + MediaManagerItem + + + &Preview + &Förhandsgranska + + + GeneralTab + + + CCLI Details + CCLI-detaljer + + + BibleMediaItem + + + Bible not fully loaded + Bibeln är inte fullt laddad + + + Ui_MainWindow + + + Toggle the visibility of the Preview Panel + Växla förhandsgranskningens synlighet + + + ImportWizardForm + + + Bible Exists + Bibel existerar + + + Ui_MainWindow + + + &User Guide + &Användarguide + + + AlertsTab + + + pt + pt + + + Ui_MainWindow + + + Set the interface language to English + Byt språk till engelska + + + Ui_AmendThemeDialog + + + Main Font + Huvudfont + + + ImportWizardForm + + + Empty Copyright + Tom copyright-information + + + AuthorsForm + + + You need to type in the first name of the author. + Du måste ange låtskrivarens förnamn. + + + SongsTab + + + Display Verses on Live Tool bar: + Visa Verser i Live-verktygsfältet:changing to proposed translation, but without the quote-marks which i think looks out of place since we use live without translation (since there are no translation to live) + + + ServiceManager + + + Move to top + Flytta längst upp + + + ImageMediaItem + + + Override background + Ignorera bakgrund + + + Ui_SongMaintenanceDialog + + + Edit + Redigera + + + Ui_OpenSongExportDialog + + + Select All + Välj allt + + + ThemesTab + + + 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. + Använd temat för varje sång i databasen indviduellt. Om en sång inte har ett associerat tema, använd planeringens schema. Om planeringen inte har ett tema, använd globala temat. + + + PresentationMediaItem + + + Presentation + Presentation + + + Ui_AmendThemeDialog + + + Solid Color + Solid Färg + + + CustomTab + + + Custom + Anpassacustomized or customize? + + + Ui_OpenLPImportDialog + + + Ready to import + Redo att importera + + + MainWindow + + + OpenLP version %s has been updated to version %s + +You can obtain the latest version from http://openlp.org + OpenLP version %s har uppdaterats till version %s + +Du kan hämta den senaste versionen på http://openlp.org + + + Ui_BibleImportWizard + + + File Location: + Filsökväg: + + + SlideController + + + Go to Verse + Hoppa till vers + + + SongMaintenanceForm + + + Couldn't add your topic. + Kunde inte lägga till ditt ämne. + + + Ui_MainWindow + + + &Import + &Importera + + + Quit OpenLP + Stäng OpenLP + + + Ui_BibleImportWizard + + + 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. + Den här guiden hjälper dig importera biblar från en mängd olika format. Klicka på nästa-knappen nedan för att börja proceduren genom att välja ett format att importera från. + + + Ui_OpenLPExportDialog + + + Title + Titel + + + ImportWizardForm + + + Empty Version Name + Tomt versionsnamn + + + Ui_MainWindow + + + &Preview Panel + &Förhandsgranskning + + + SlideController + + + Start continuous loop + Börja oändlig loop + + + GeneralTab + + + primary + primär + + + Ui_EditSongDialog + + + Add a Theme + Lägg till ett tema + + + Ui_MainWindow + + + &New + &Ny + + + Ui_customEditDialog + + + Credits: + Medverkande: + + + Ui_EditSongDialog + + + R&emove + Ta &borttycker att b verkar vara en lämplig knapp för snabbkommandot + + + SlideController + + + Live + Live + + + Ui_BibleImportWizard + + + Select Import Source + Välj importkälla + + + BiblesTab + + + continuous + oändlig + + + ThemeManager + + + File is not a valid theme. + Filen är inte ett giltigt tema. + + + GeneralTab + + + Application Startup + Programstart + + + Ui_AmendThemeDialog + + + Use Default Location: + Använd standardsökväg: + + + Ui_OpenSongImportDialog + + + Import + Importera + + + Ui_AmendThemeDialog + + + Other Options + Andra alternativ + + + Ui_EditSongDialog + + + Verse Order: + Versordning: + + + Ui_MainWindow + + + Default Theme: + Standardtema: + + + Toggle Preview Panel + Växla förhandsgranskningspanel + + + SongMediaItem + + + Lyrics + Sångtexter + + + Ui_OpenLPImportDialog + + + Progress: + Händelseförlopp: + + + Ui_AmendThemeDialog + + + Shadow + Skugga + + + GeneralTab + + + Select monitor for output display: + Välj skärm för utsignal: + + + Ui_MainWindow + + + &Settings + &Inställningar + + + EditSongForm + + + Invalid verse entry - values must be Numeric, I,B,C,T,P,E,O + Ogiltig vers - värden måste vara numeriska, I,B,C,T,P,E,O + + + Ui_AmendThemeDialog + + + Italics + Kursiv + + + ServiceManager + + + Create a new service + Skapa en ny mötesplanering + + + Ui_AmendThemeDialog + + + Background: + Bakgrund: + + + Ui_OpenLPImportDialog + + + openlp.org Song Importer + openlp.org sångimportör + + + Ui_BibleImportWizard + + + Copyright: + Copyright: + + + ThemesTab + + + Service level + Mötesplaneringsnivå + + + BiblesTab + + + [ and ] + [ och ] + + + Ui_BibleImportWizard + + + Verse Location: + Verssökväg: + + + MediaManagerItem + + + You must select one or more items + Du måste välja ett eller flera objekt + + + GeneralTab + + + Application Settings + Programinställningar + + + ServiceManager + + + Save this service + Spara denna mötesplanering + + + ImportWizardForm + + + Open Books CSV file + Öppna böcker CSV-fil + + + GeneralTab + + + SongSelect Username: + SongSelect Användarnamn: + + + Ui_AmendThemeDialog + + + X Position: + X-position: + + + BibleMediaItem + + + No matching book could be found in this Bible. + Ingen matchande bok kunde hittas i den här Bibeln. + + + Ui_BibleImportWizard + + + Server: + Server: + + + Ui_EditVerseDialog + + + Ending + Ending + + + CustomTab + + + Display Footer: + Visa sidfot: + + + ImportWizardForm + + + Invalid OpenSong Bible + Ogiltig OpenSong-bibel + + + GeneralTab + + + CCLI Number: + CCLI-nummer: + + + Ui_AmendThemeDialog + + + Center + Centrera + + + ServiceManager + + + Theme: + Tema: + + + AlertEditForm + + + Please save or clear selected item + Spara eller töm valt objekt + + + Ui_MainWindow + + + &Live + &Livejag tror live är en bra översättning, eftersom man faktiskt säger live på svenska, typ liveinspelning, och live är ganska konkret då det handlar om något som blir verklighet liksom + + + Ui_AmendThemeDialog + + + <Color2> + <Färg2> + + + Ui_MainWindow + + + English + Engelska + + + ImageMediaItem + + + You must select one or more items + Du måste välja ett eller flera objekt + + + Ui_AuthorsDialog + + + First name: + Förnamn: + + + Ui_OpenLPExportDialog + + + Select openlp.org export filename: + Välj openlp.org exportfilnamn: + + + Ui_BibleImportWizard + + + Permission: + Rättigheter: + + + Ui_OpenSongImportDialog + + + Close + Stäng + + + Ui_SongUsageDetailDialog + + + Song Usage Extraction + Sånganvändningsutdrag + + + Ui_AmendThemeDialog + + + Opaque + Ogenomskinlig + + + ImportWizardForm + + + Your Bible import failed. + Din Bibelimport misslyckades. + + + SlideController + + + Start playing media + Börja spela media + + + SongMediaItem + + + Type: + Typ: + + + SongMaintenanceForm + + + This book can't be deleted, it is currently assigned to at least one song. + Boken kan inte tas bort, den är associerad med åtminstone en sång. + + + Ui_AboutDialog + + + Close + Stäng + + + TopicsForm + + + You need to type in a topic name! + Du måste skriva in ett namn på ämnet! + + + Ui_OpenSongExportDialog + + + Song Export List + Sångexporteringslista + + + BibleMediaItem + + + Dual: + Dubbel: + + + ImageTab + + + sec + sek + + + ServiceManager + + + Delete From Service + Ta bort från mötesplanering + + + GeneralTab + + + Automatically open the last service + Öppna automatiskt den senaste planeringen + + + Ui_OpenLPImportDialog + + + Song Import List + Sångimporteringslista + + + Ui_OpenSongExportDialog + + + Author + FörfattareSongwriter or bible author? + + + Ui_AmendThemeDialog + + + Outline Color: + Konturfärg: + + + Ui_MainWindow + + + F9 + F9 + + + F8 + F8 + + + ServiceManager + + + &Change Item Theme + &Byt objektets tema + + + Ui_SongMaintenanceDialog + + + Topics + Ämnen + + + Ui_OpenLPImportDialog + + + Import File Song List + Importera fil - sånglista + + + Ui_customEditDialog + + + Edit Custom Slides + Redigera anpassad bild + + + Ui_BibleImportWizard + + + Set up the Bible's license details. + Skriv in Bibelns licensdetaljer. + + + Ui_EditVerseDialog + + + Number + Nummer + + + Ui_AmendThemeDialog + + + Alignment + Justering + + + SongMaintenanceForm + + + Delete Book + Ta bort bok + + + ThemeManager + + + Edit a theme + Redigera ett tema + + + Ui_BibleImportWizard + + + BibleGateway + BibleGateway + + + GeneralTab + + + Preview Next Song from Service Manager + Förhandsgranska nästa sång från mötesplaneringen + + + Ui_EditSongDialog + + + Title && Lyrics + Titel && Sångtexter + + + SongMaintenanceForm + + + No book selected! + Ingen bok vald! + + + SlideController + + + Move to live + Flytta till live + + + Ui_EditVerseDialog + + + Other + Övrigt + + + Ui_EditSongDialog + + + Theme + Tema + + + ServiceManager + + + Save Service + Spara Mötesplanering + + + Ui_SongUsageDetailDialog + + + Select Date Range + Välj datumspann + + + Ui_MainWindow + + + Save the current service to disk + Spara nuvarande mötesplanering till disk + + + BibleMediaItem + + + Chapter: + Kapitel: + + + Search + Sök + + + PresentationTab + + + Available Controllers + Tillgängliga Presentationsprogramjag kollade på programmet, och under controllers listas alla presentationsprogram. Jag tycker det är bra som det är. + + + ImportWizardForm + + + Open Verses CSV file + Öppna Verser CSV-fil + + + TopicsForm + + + Error + Fel + + + RemoteTab + + + Remotes Receiver Port + Mottagarport för fjärrstyrning + + + Ui_MainWindow + + + &View + &Visa + + + Ui_AmendThemeDialog + + + Normal + Normal + + + Ui_OpenLPExportDialog + + + Close + Stäng + + + Ui_BibleImportWizard + + + Username: + Användarnamn: + + + ThemeManager + + + Edit Theme + Redigera tema + + + SlideController + + + Preview + Förhandsgranska + + + Ui_AlertDialog + + + Alert Message + Larmmeddelande + + + ImportWizardForm + + + Finished import. + Importen är färdig. + + + GeneralTab + + + Show blank screen warning + Visa varning vid tom skärm + + + ImportWizardForm + + + You need to specify a file of Bible verses to import. + Du måste specificera en fil med Bibelverser att importera. + + + AlertsTab + + + Location: + Plats: + + + Ui_EditSongDialog + + + Authors, Topics && Book + Författare, ämnen && bok + + + EditSongForm + + + You need to enter some verses. + Du måste skriva in några verser. + + + Ui_BibleImportWizard + + + Download Options + Alternativ för nedladdning + + + BiblePlugin + + + <strong>Bible Plugin</strong><br />This plugin allows bible verses from different sources to be displayed on the screen during the service. + <strong>Bibel Plugin</strong><br /> Det här pluginprogrammet visar Bibelverser från olika källor på skärmen. + + + Ui_EditSongDialog + + + Copyright Information + Copyright-information + + + Ui_MainWindow + + + &Export + &Exportera + + + Ui_AmendThemeDialog + + + Bold + Fetstil + + + SongsPlugin + + + Export songs in OpenLP 2.0 format + Exportera sånger i formatet OpenLP 2.0 + + + MediaManagerItem + + + Load a new + Ladda ny + + + AlertEditForm + + + Missing data + Data saknas + + + SongsPlugin + + + <b>Song Plugin</b> <br>This plugin allows Songs to be managed and displayed.<br> + <b>Sång Plugin</b> <br>Det här pluginprogrammet visar och hanterar sånger.<br> + + + Ui_AmendThemeDialog + + + Footer Font + Sidfot-font + + + EditSongForm + + + Invalid verse entry - vX + Ogiltig vers - vX + + + MediaManagerItem + + + Delete the selected item + Ta bort det valda objektet + + + Ui_OpenLPExportDialog + + + Export + Exportera + + + Ui_BibleImportWizard + + + Location: + Placering: + + + BibleMediaItem + + + Keep + Behåll + + + SongUsagePlugin + + + Generate report on Song Usage + Generera rapport på Sånganvändning + + + Ui_EditSongDialog + + + Topic + Ämne + + + Ui_MainWindow + + + &Open + &Öppna + + + AuthorsForm + + + You haven't set a display name for the author, would you like me to combine the first and last names for you? + Du har inte ställt in ett visningsnamn för låtskrivaren, vill du att programmet kombinerar förnamnet och efternamnet åt dig? + + + AmendThemeForm + + + Slide Height is %s rows + Bildens höjd är %s rader + + + Ui_EditVerseDialog + + + Pre-Chorus + BryggaI think it' better to keep the english translation here... +-wezzy: why? "för-refräng" doesn't work, but according to sources (wikipedia ex) it can be compared to bridge and then the translation would be brygga. + + + Ui_EditSongDialog + + + Lyrics: + Sångtexter: + + + Ui_AboutDialog + + + Project Lead + Raoul "superfly" Snyman + +Developers + Tim "TRB143" Bentley + Jonathan "gushie" Corwin + Michael "cocooncrash" Gorven + Scott "sguerrieri" Guerrieri + Raoul "superfly" Snyman + Maikel Stuivenberg + Martin "mijiti" Thompson + Jon "Meths" Tibble + Carsten "catini" Tingaard + +Testers + Wesley "wrst" Stout + Projektledning +Raoul "superfly" Snyman + +Utvecklare +Tim "TRB143" Bentley +Jonathan "gushie" Corwin +Michael "cocooncrash" Gorven +Scott "sguerrieri" Guerrieri +Raoul "superfly" Snyman +Maikel Stuivenberg +Martin "mijiti" Thompson +Jon "Meths" Tibble +Carsten "catini" Tingaard + +Testare +Wesley "wrst" Stout + + + SongMediaItem + + + Titles + Titlar + + + Ui_OpenLPExportDialog + + + Lyrics + Sångtexter + + + PresentationMediaItem + + + Present using: + Presentera genom: + + + SongMediaItem + + + Clear + Töm + + + ServiceManager + + + &Live Verse + &Live-vers + + + Ui_OpenSongImportDialog + + + Progress: + Framsteg: + + + Ui_MainWindow + + + Toggle Theme Manager + Växla temahanteraren + + + Ui_AlertDialog + + + Alert Text: + Alarmtext: + + + Ui_EditSongDialog + + + Edit + Redigera + + + AlertsTab + + + Font Color: + Fontfärg: + + + Ui_AmendThemeDialog + + + Theme Maintenance + TemaunderhållSounds a bit strange... + + + CustomTab + + + Custom Display + Anpassad Visning + + + Ui_OpenSongExportDialog + + + Title + Titel + + + Ui_AmendThemeDialog + + + <Color1> + <Färg1> + + + Ui_EditSongDialog + + + Authors + Låtskrivare + + + ThemeManager + + + Export Theme + Exportera tema + + + ImageMediaItem + + + No items selected... + Inga objekt valda... + + + Ui_SongBookDialog + + + Name: + Namn: + + + Ui_AuthorsDialog + + + Author Maintenance + Författare underhåll + + + Ui_AmendThemeDialog + + + Font Footer + Font-sidfot + + + BiblesTab + + + Verse Display + Versvisningout of context + + + Ui_MainWindow + + + &Options + &Alternativ + + + BibleMediaItem + + + Results: + Resultat: + + + Ui_OpenLPExportDialog + + + Full Song List + Full Sånglista + + + ServiceManager + + + Move to &top + Flytta till &toppen + + + SlideController + + + Move to last + Flytta till sist + + + Ui_OpenLPExportDialog + + + Progress: + Framsteg: + + + Ui_SongMaintenanceDialog + + + Add + Lägg till + + + SongMaintenanceForm + + + Are you sure you want to delete the selected author? + Är du säker på att du vill ta bort den valda låtskrivaren? + + + SongUsagePlugin + + + Song Usage Status + Sånganvändningsstatus + + + BibleMediaItem + + + Verse Search + Sök vers + + + Ui_SongBookDialog + + + Edit Book + Redigera bok + + + EditSongForm + + + Save && Preview + Spara && förhandsgranska + + + Ui_SongBookDialog + + + Publisher: + Utgivare: + + + Ui_AmendThemeDialog + + + Font Weight: + Teckentjocklek: + + + Ui_BibleImportWizard + + + Bible Filename: + Bibel-filnamn: + + + Ui_AmendThemeDialog + + + Transparent + Genomskinlig + + + SongMediaItem + + + Search + Sök + + + Ui_BibleImportWizard + + + Format: + Format: + + + Ui_AmendThemeDialog + + + Background + Bakgrund + + + Ui_BibleImportWizard + + + Importing + Importerar + + + Ui_customEditDialog + + + Edit all slides + Redigera alla bilder + + + SongsTab + + + Enable search as you type: + Aktivera sök-medan-du-skriver: + + + Ui_MainWindow + + + Ctrl+S + Ctrl+S + + + SongMediaItem + + + Authors + Författare + + + Ui_PluginViewDialog + + + Active + Aktiv + + + SongMaintenanceForm + + + Couldn't add your author. + Kunde inte lägga till din låtskrivare. + + + Ui_MainWindow + + + Ctrl+O + Ctrl+O + + + Ctrl+N + Ctrl+N + + + Ui_AlertEditDialog + + + Edit + Redigera + + + Ui_EditSongDialog + + + Song Editor + Sångredigerare + + + AlertsTab + + + Font + Font + + + SlideController + + + Edit and re-preview Song + Ändra och åter-förhandsgranska sång + + + Delay between slides in seconds + Fördröjning mellan bilder, i sekunder + + + MediaManagerItem + + + &Edit + &Redigera + + + Ui_AmendThemeDialog + + + Vertical + Vertikal + + + Width: + Bredd: + + + ThemesTab + + + Global level + Global nivå + + + ThemeManager + + + You are unable to delete the default theme. + Du kan inte ta bort standardtemat. + + + BibleMediaItem + + + Version: + Version: + + + Ui_AboutDialog + + + OpenLP <version> build <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> bygge <revision> - Open Source Lyrics Projection + +OpenLP är en gratis presentationsmjukvara för kyrkor, eller projektionsmjukvara för sångtexter, använt för att visa sånger, Bibelverser, videor, bilder, och till och med presentationer (om OpenOffice.org, PowerPoint eller PowerPoint Viewer är installerat) för lovsång genom en dator och en projektor. + +Få reda på mer om OpenLP: http://openlp.org/ + +OpenLP är utvecklad och underhållen av frivilliga. Om du vill se fler kristna mjukvaror utvecklas, vänligen bidra genom knappen nedan.Pretty long text, puh + + + SongsPlugin + + + OpenLP 2.0 + OpenLP 2.0 + + + ServiceManager + + + New Service + Ny mötesplanering + + + Ui_TopicsDialog + + + Topic name: + Ämnesnamn: + + + Ui_BibleImportWizard + + + License Details + Licensdetaljer + + + Ui_AboutDialog + + + License + Licens + + + OpenSongBible + + + Importing + Importerar + + + Ui_AmendThemeDialog + + + Middle + Mitten + + + Ui_customEditDialog + + + Save + Spara + + + AlertEditForm + + + Item selected to Edit + Objekt vald för redigering + + + BibleMediaItem + + + From: + Från: + + + Ui_AmendThemeDialog + + + Shadow Color: + Skuggfärg: + + + ServiceManager + + + &Notes + &Anteckningar + + + Ui_MainWindow + + + E&xit + &Avsluta + + + Ui_OpenLPImportDialog + + + Close + Stäng + + + MainWindow + + + OpenLP Version Updated + OpenLP-version uppdaterad + + + Ui_customEditDialog + + + Replace edited slide + Ersätt redigerad bild + + + EditCustomForm + + + You need to enter a title + Du måste ange en titel + + + ThemeManager + + + Theme Exists + Temat finns + + + Ui_MainWindow + + + &Help + &Hjälp + + + Ui_EditVerseDialog + + + Bridge + Brygga + + + Ui_OpenSongExportDialog + + + OpenSong Song Exporter + OpenSong sångexportör + + + Ui_AmendThemeDialog + + + Vertical Align: + Vertikal justering: + + + TestMediaManager + + + Item2 + Objekt2 + + + Item1 + Objekt1 + + + Ui_AmendThemeDialog + + + Top + Topp + + + BiblesTab + + + Display Dual Bible Verses + Visa dubbla Bibelverser + + + Ui_MainWindow + + + Toggle Service Manager + Växla mötesplaneringshanterare + + + Ui_EditSongDialog + + + Delete + Ta bort + + + MediaManagerItem + + + &Add to Service + &Lägg till i mötesplanering + + + AmendThemeForm + + + First Color: + Första färg: + + + ThemesTab + + + Song level + Sångnivå + + + alertsPlugin + + + Show an alert message + Visa ett alarmmeddelande + + + Ui_MainWindow + + + Ctrl+F1 + Ctrl+F1 + + + SongMaintenanceForm + + + Couldn't save your topic. + Kunde inte spara ditt ämne. + + + Ui_MainWindow + + + Save the current service under a new name + Spara nuvarande mötesplanering under ett nytt namn + + + Ui_OpenLPExportDialog + + + Remove Selected + Ta bort valda + + + ThemeManager + + + Delete theme + Ta bort tema + + + ImageTab + + + Image Settings + Bildinställningar + + + Ui_OpenSongImportDialog + + + OpenSong Song Importer + OpenSong sångimportör + + + SongUsagePlugin + + + &Extract recorded data + &Extrahera inspelade data + + + AlertsTab + + + Font Name: + Fontnamn: + + + Ui_MainWindow + + + &Web Site + &Webbsida + + + MediaManagerItem + + + Send the selected item live + Skicka det valda objektet till live + + + Ui_MainWindow + + + M&ode + &Läge + + + Translate the interface to your language + Översätt gränssnittet till ditt språk + + + Service Manager + Mötesplaneringshanterare + + + CustomMediaItem + + + Custom + Anpassad + + + Ui_BibleImportWizard + + + OSIS + OSIS + + + SongsPlugin + + + openlp.org 1.0 + openlp.org 1.0 + + + Ui_MainWindow + + + &Theme + &Tema + + + Ui_EditVerseDialog + + + Edit Verse + Redigera vers + + + Ui_MainWindow + + + &Language + &Språk + + + ServiceManager + + + Move to end + Flytta till slutet + + + Your service is unsaved, do you want to save those changes before creating a new one ? + Din planering är inte sparad, vill du spara den innan du skapar en ny ? + + + Ui_OpenSongExportDialog + + + Remove Selected + Ta bort valda + + + SongMediaItem + + + Search: + Sök: + + + MainWindow + + + Save Changes to Service? + Spara ändringar till mötesplanering? + + + Your service has changed, do you want to save those changes? + Din planering har ändrats, vill du spara den? + + + ServiceManager + + + &Delete From Service + &Ta bort från mötesplanering + + + Ui_EditSongDialog + + + &Add to Song + &Lägg till i sång + + + Ui_MainWindow + + + &About + &Om + + + ImportWizardForm + + + You need to specify a version name for your Bible. + Du måste ange ett versionsnamn för din Bibel. + + + BiblesTab + + + Only show new chapter numbers + Visa bara nya kapitelnummer + + + Ui_AlertEditDialog + + + Delete + Ta bort + + + EditCustomForm + + + Error + Fel + + + ThemesTab + + + 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. + Använd temat för mötesplaneringen, och ignorera sångernas indviduella teman. Om mötesplaneringen inte har ett tema använd då det globala temat. + + + AlertEditForm + + + Item selected to Add + Objekt valda att lägga till + + + Ui_AmendThemeDialog + + + Right + Höger + + + ThemeManager + + + Save Theme - (%s) + Spara tema - (%s) + + + MediaManagerItem + + + Add the selected item(s) to the service + Lägg till valda objekt till planeringen + + + AuthorsForm + + + Error + Fel + + + Ui_AmendThemeDialog + + + Font Color: + Fontfärg: + + + Ui_OpenLPImportDialog + + + Select openlp.org songfile to import: + Välj openlp.org sångfil att importera: + + + Ui_SettingsDialog + + + Settings + Alternativ + + + BiblesTab + + + Layout Style: + Layoutstil: + + + MediaManagerItem + + + Edit the selected + Redigera valda + + + SlideController + + + Move to next + Flytta till nästa + + + Ui_MainWindow + + + &Plugin List + &Pluginlista + + + BiblePlugin + + + &Bible + &Bibel + + + Ui_BibleImportWizard + + + Web Download + Webbnedladdning + + + Ui_AmendThemeDialog + + + Horizontal + Horisontellt + + + ImportWizardForm + + + Open OSIS file + Öppna OSIS-fil + + + Ui_AmendThemeDialog + + + Circular + Cirkulär + + + PresentationMediaItem + + + Automatic + Automatisk + + + SongMaintenanceForm + + + Couldn't save your book. + Kunde inte spara din bok. + + + Ui_AmendThemeDialog + + + pt + pt + + + Ui_MainWindow + + + &Add Tool... + &Lägg till verktyg... + + + SongMaintenanceForm + + + Delete Topic + Ta bort ämne + + + Ui_OpenLPImportDialog + + + Lyrics + Sångtexter + + + BiblesTab + + + No brackets + Ingen grupp + + + Ui_AlertEditDialog + + + Maintain Alerts + Underhåll alarm + + + Ui_AmendThemeDialog + + + px + px + + + ServiceManager + + + Select a theme for the service + Välj ett tema för planeringen + + + ThemesTab + + + Themes + Teman + + + Ui_PluginViewDialog + + + Status: + Status: + + + Ui_EditSongDialog + + + CCLI Number: + CCLI-nummer: + + + ImportWizardForm + + + This Bible already exists! Please import a different Bible or first delete the existing one. + Bibeln existerar redan! Importera en annan BIbel eller ta bort den som finns. + + + Ui_MainWindow + + + &Translate + &Översätt + + + BiblesTab + + + Bibles + Biblar + + + Ui_SongMaintenanceDialog + + + Authors + Författare + + + SongUsageDetailForm + + + Output File Location + Utfil sökväg + + + BiblesTab + + + { and } + { och } + + + GeneralTab + + + Prompt to save Service before starting New + Fråga om att spara mötesplanering innan en ny skapas + + + ImportWizardForm + + + Starting import... + Påbörjar import... + + + BiblesTab + + + Note: +Changes don't affect verses already in the service + Observera:: +Ändringar påverkar inte verser som redan finns i mötesplaneringen + + + Ui_EditVerseDialog + + + Intro + Intro + + + ServiceManager + + + Move up order + Flytta upp orderOrder as in opposit to messy, or order as a general gives? Current translatation is the second, the order a general gives, however, hopefully this order is less violent + + + PresentationTab + + + available + tillgänglig + + + ThemeManager + + + default + standard + + + SongMaintenanceForm + + + Delete Author + Ta bort låtskrivare + + + Ui_AmendThemeDialog + + + Display Location + Visa plats + + + Ui_PluginViewDialog + + + Version: + Version: + + + Ui_AlertEditDialog + + + Add + Lägg till + + + GeneralTab + + + General + Allmänt + + + Ui_AmendThemeDialog + + + Y Position: + Y-position: + + + ServiceManager + + + Move down order + Flytta ner order + + + BiblesTab + + + verse per slide + vers per bild + + + Ui_AmendThemeDialog + + + Show Shadow: + Visa skugga: + + + AlertsTab + + + Preview + Förhandsgranska + + + alertsPlugin + + + <b>Alerts Plugin</b><br>This plugin controls the displaying of alerts on the presentations screen + <b>Alarm Plugin</b><br>Den här plugin:en kontrollerar visning av alarm på presentationsbilden + + + GeneralTab + + + Show the splash screen + Visa startbilden + + + Ui_MainWindow + + + New Service + Ny Mötesplanering + + + SlideController + + + Move to first + Flytta till första + + + Ui_MainWindow + + + &Online Help + &Online-hjälp + + + SlideController + + + Blank Screen + Töm skärmTöm skärm är ett kommando, tom skärm är ett påstående. Jag tror texten ska vara ett kommando, dvs att man ska tömma skärmen + + + Ui_MainWindow + + + Save Service + Spara Planering + + + Save &As... + S&para som... + + + Toggle the visibility of the Media Manager + Växla mediahanterarens synlighet + + + BibleMediaItem + + + No Book Found + Ingen bok hittades + + + Ui_EditSongDialog + + + Add + Lägg till + + + alertsPlugin + + + &Alert + &Alarm + + + BibleMediaItem + + + Advanced + Avancerat + + + ImageMediaItem + + + Image(s) + Bilder + + + Ui_MainWindow + + + F11 + F11 + + + F10 + F10 + + + F12 + F12 + + + Ui_BibleImportWizard + + + Select the import format, and where to import from. + Välj format för import, och plats att importera från. + + + CustomPlugin + + + <b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br> + <b>Anpassad Plugin</b><br>Det här pluginprogrammet tillåter visning av bilder på samma sätt som sånger. Den ger större frihet över sångpluginprogrammet.<br> + + + Ui_MainWindow + + + Alt+F7 + Alt+F7 + + + Add an application to the list of tools + Lägg till ett program i listan av verktyg + + + MediaPlugin + + + <b>Media Plugin</b><br>This plugin allows the playing of audio and video media + <b>Media Plugin</b><br>Den här plugin:en tillåter uppspelning av ljud och video + + + ServiceManager + + + Move &down + Flytta &ner + + + BiblesTab + + + Bible Theme: + Bibeltema: + + + SongsPlugin + + + Export songs in openlp.org 1.0 format + Exportera sånger i openlp.org 1.0-format + + + Ui_MainWindow + + + Theme Manager + Temahanterare + + + AlertsTab + + + Alerts + Alarm + + + Ui_customEditDialog + + + Move slide down 1 + Flytta ner bild ett steg + + + Ui_AmendThemeDialog + + + Font: + Font: + + + ServiceManager + + + Load an existing service + Ladda en planering + + + Ui_MainWindow + + + Toggle the visibility of the Theme Manager + Växla Temahanterarens synlighet + + + PresentationTab + + + Presentations + Presentationer + + + SplashScreen + + + Starting + Startar + + + ImageTab + + + Slide Loop Delay: + Fördröjning av bild-loop: + + + SlideController + + + Verse + Vers + + + AlertsTab + + + Alert timeout: + Alarm timeout: + + + Ui_MainWindow + + + &Preview Pane + &Förhandsgranskning + + + MediaManagerItem + + + Add a new + Lägg till en ny + + + ThemeManager + + + Select Theme Import File + Välj tema importfil + + + New Theme + Nytt Tema + + + MediaMediaItem + + + Media + Media + + + Ui_AmendThemeDialog + + + Preview + Förhandsgranska + + + Outline Size: + Konturstorlek: + + + Ui_OpenSongExportDialog + + + Progress: + Progress: + + + AmendThemeForm + + + Second Color: + Andrafärg: + + + Ui_EditSongDialog + + + Theme, Copyright Info && Comments + Tema, copyright-info && kommentarer + + + Ui_AboutDialog + + + Credits + Credits + + + BibleMediaItem + + + To: + Till: + + + Ui_EditSongDialog + + + Song Book + Sångbok + + + Ui_OpenLPExportDialog + + + Author + Låtskrivare + + + Ui_AmendThemeDialog + + + Wrap Indentation + IndragUnclear what this option does to the text, since it doesn't happen anything when changing it in the program. + + + ThemeManager + + + Import a theme + Importera ett tema + + + ImageMediaItem + + + Image + Bild + + + BibleMediaItem + + + Clear + Töm + + + Ui_MainWindow + + + Save Service As + Spara mötesplanering som... + + + Ui_AlertDialog + + + Cancel + Avbryt + + + Ui_OpenLPImportDialog + + + Import + Importera + + + Ui_EditVerseDialog + + + Chorus + Refräng + + + Ui_EditSongDialog + + + Edit All + Redigera alla + + + AuthorsForm + + + You need to type in the last name of the author. + Du måste ange författarens efternamn. + + + SongsTab + + + Songs Mode + Sångläge + + + Ui_AmendThemeDialog + + + Left + Vänster + + + RemotesPlugin + + + <b>Remote Plugin</b><br>This plugin provides the ability to send messages to a running version of openlp on a different computer.<br>The Primary use for this would be to send alerts from a creche + <b>Fjärrstyrning Plugin</b><br>Den här plugin:en kan skicka meddelanden till OpenLP-program på en annan dator<br>Användningen vore framför allt att skicka alarm från ett barnrumwhat's a creche? A room in a church where children kan play during the service? Current translation is that, however, translation software suggests a home for children without parents. That didn't feel too right though... + + + ImageTab + + + Images + Bilder + + + BibleMediaItem + + + Verse: + Vers: + + + Ui_OpenLPExportDialog + + + openlp.org Song Exporter + openlp.org sångexportör + + + Song Export List + Sång exportlista + + + ThemeManager + + + Export theme + Exportera tema + + + Ui_SongMaintenanceDialog + + + Delete + Ta bort + + + Ui_AmendThemeDialog + + + Theme Name: + Namn på tema: + + + Ui_AboutDialog + + + About OpenLP + Om OpenLP + + + Ui_MainWindow + + + Toggle the visibility of the Service Manager + Växla mötesplaneringshanterarens synlighet + + + PresentationMediaItem + + + A presentation with that filename already exists. + En presentation med det namnet finns redan. + + + ImageMediaItem + + + Allow the background of live slide to be overridden + Tillåt live-bildens bakgrund att ignoreras + + + SongUsageDeleteForm + + + Are you sure you want to delete selected Song Usage data? + Vill du verkligen ta bort vald sånganvändningsdata? + + + AlertsTab + + + openlp.org + openlp.org + + + ImportWizardForm + + + Invalid Books File + Ogiltig bokfil + + + Ui_OpenLPImportDialog + + + Song Title + Sångtitel + + + MediaManagerItem + + + &Show Live + &Visa Live + + + AlertsTab + + + Keep History: + Behåll historik: + + + Ui_AmendThemeDialog + + + Image: + Bild: + + + Ui_customEditDialog + + + Set Theme for Slides + Sätt Tema för Bilder + + + Ui_MainWindow + + + More information about OpenLP + Mer information om OpenLP + + + AlertsTab + + + Background Color: + Bakgrundsfärg: + + + SongMaintenanceForm + + + No topic selected! + Inget ämne valt! + + + Ui_MainWindow + + + &Media Manager + &Mediahanterare + + + &Tools + &Verktyg + + + AmendThemeForm + + + Background Color: + Bakgrundsfärg: + + + Ui_EditSongDialog + + + A&dd to Song + Lägg till i sång + + + Title: + Titel: + + + GeneralTab + + + Screen + Skärm + + + SongMaintenanceForm + + + This topic can't be deleted, it is currently assigned to at least one song. + Ämnet kan inte tas bort, den är associerad med åtminstone en sång. + + + AlertsTab + + + s + s + + + Ui_AlertEditDialog + + + Clear + Töm + + + Ui_BibleImportWizard + + + Please wait while your Bible is imported. + Vänligen vänta medan din Bibel importeras. + + + MediaManagerItem + + + No items selected... + Inget valt objekt... + + + Ui_OpenLPImportDialog + + + Select All + Välj allt + + + Ui_AmendThemeDialog + + + Font Main + Huvudfont + + + Ui_OpenLPImportDialog + + + Title + Titel + + + Ui_OpenSongExportDialog + + + Select OpenSong song folder: + Välj OpenSong-mapp: + + + Ui_MainWindow + + + Toggle Media Manager + Växla mediahanterare + + + SongUsagePlugin + + + &Song Usage + &Sånganvändning + + + GeneralTab + + + Monitors + Skärmar + + + EditCustomForm + + + You need to enter a slide + Du måste ange en bild + + + ThemeManager + + + You have not selected a theme. + Du har inte valt ett tema. + + + Ui_EditVerseDialog + + + Verse Type + Verstyp + + + ImportWizardForm + + + You need to specify a file to import your Bible from. + Du måste ange en fil att importera dina Biblar från. + + + Ui_EditSongDialog + + + Comments + Kommentarer + + + AlertsTab + + + Bottom + Botten + + + Ui_MainWindow + + + Create a new Service + Skapa en ny mötesplanering + + + AlertsTab + + + Top + Topp + + + ServiceManager + + + &Preview Verse + &Förhandsgranska Vers + + + Ui_PluginViewDialog + + + TextLabel + TextLabel + + + AlertsTab + + + Font Size: + Fontstorlek: + + + Ui_PluginViewDialog + + + About: + Om: + + + Inactive + Inaktiv + + + Ui_OpenSongExportDialog + + + Ready to export + Redo att exportera + + + Export + Exportera + + + Ui_PluginViewDialog + + + Plugin List + Pluginlista + + + Ui_AmendThemeDialog + + + Transition Active: + Övergång aktiv: + + + Ui_BibleImportWizard + + + Proxy Server (Optional) + Proxyserver (Frivilligt) + + + Ui_EditSongDialog + + + &Manage Authors, Topics, Books + &Hantera författare, ämnen, böcker + + + Ui_OpenLPExportDialog + + + Ready to export + Redo att exportera + + + ImageMediaItem + + + Images (*.jpg *.jpeg *.gif *.png *.bmp);; All files (*) + Bilder (*.jpg *.jpeg *.gif *.png *.bmp);; Alla filer (*) + + + EditCustomForm + + + Save && Preview + Spara && förhandsgranska + + + Ui_OpenLPExportDialog + + + Select All + Välj allt + + + Ui_SongUsageDetailDialog + + + to + till + + + Ui_AmendThemeDialog + + + Size: + Storlek: + + + MainWindow + + + OpenLP Main Display Blanked + OpenLP huvuddisplay tömd + + + Ui_OpenLPImportDialog + + + Remove Selected + Ta bort valda + + + ServiceManager + + + Move &up + Flytta &upp + + + ImportWizardForm + + + You need to specify an OpenSong Bible file to import. + Du måste ange en OpenSong Bibel-fil att importera. + + + PresentationMediaItem + + + Select Presentation(s) + Välj presentation(er) + + + File exists + Fil finns + + + Ui_OpenSongImportDialog + + + Ready to import + Redo att importera + + + SlideController + + + Stop continuous loop + Stoppa upprepad loop + + + s + s + + + ImagePlugin + + + <b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any songs which are rendered will use the selected image from the background instead of the one provied by the theme.<br> + <b>Bild Plugin</b><br>Visar bilder av alla typer. Om flera bilder väljs och presenteras kan de visas en oändlig loop. <br<br> Om <i>Ignorera bakgrund</i> är valt och en bild markerad kommer sångerna visas med den markerade bilden som bakgrund, istället för bilen från temat.<br> + + + SongMediaItem + + + Song Maintenance + Sångunderhåll + + + Ui_customEditDialog + + + Edit + Redigera + + + Ui_AmendThemeDialog + + + Gradient : + Stegvis : + + + ImportWizardForm + + + Invalid Verse File + Ogiltid versfil + + + EditSongForm + + + Error + Fel + + + Ui_customEditDialog + + + Add New + Lägg till ny + + + Ui_AuthorsDialog + + + Display name: + Visningsnamn: + + + SongMaintenanceForm + + + Are you sure you want to delete the selected topic? + Är du säker på att du vill ta bort valt ämne? + + + Ui_AmendThemeDialog + + + Bold/Italics + Fetstil/kursiv + + + Ui_SongMaintenanceDialog + + + Song Maintenance + Sångunderhåll + + + Ui_BibleImportWizard + + + Welcome to the Bible Import Wizard + Välkommen till guiden för Bibelimport + + + SongsTab + + + Songs + Sånger + + + Ui_BibleImportWizard + + + Password: + Lösenord: + + + Ui_MainWindow + + + &Theme Manager + &Temahanterare + + + MediaManagerItem + + + Preview the selected item + Förhandsgranska det valda objektet + + + Ui_BibleImportWizard + + + Version Name: + Versionsnamn: + + + Ui_AboutDialog + + + About + Om + + + MediaMediaItem + + + Select Media + Välj media + + + Ui_AmendThemeDialog + + + Horizontal Align: + Horisontell justering: + + + ServiceManager + + + &Edit Item + &Redigera objekt + + + Ui_AmendThemeDialog + + + Background Type: + Bakgrundstyp: + + + Ui_MainWindow + + + &Save + &Spara + + + OpenLP 2.0 + OpenLP 2.0 + + + ThemeManager + + + A theme with this name already exists, would you like to overwrite it? + Ett tema med detta namn finns redan, vill du spara över det? + + + Export a theme + Exportera ett tema + + + AmendThemeForm + + + Open file + Öppna fil + + + Ui_TopicsDialog + + + Topic Maintenance + Ämnesunderhåll + + + Ui_customEditDialog + + + Clear edit area + Töm redigeringsområde + + + Ui_AmendThemeDialog + + + Show Outline: + Visa Kontur: + + + Gradient + Stegvis + + + SongBookForm + + + You need to type in a book name! + Du måste ange ett boknamn! + + + ImportWizardForm + + + Open OpenSong Bible + Öppna OpenSong Bibel + + + Ui_MainWindow + + + Look && &Feel + Utseende && &känsla + + + Ui_BibleImportWizard + + + Ready. + Redo. + + + Ui_SongMaintenanceDialog + + + Books/Hymnals + Böcker/psalmböcker + + + Ui_AboutDialog + + + Contribute + Bidra + + + ServiceManager + + + Move to &bottom + Flytta längst &ner + + + Ui_BibleImportWizard + + + Books Location: + Bokplacering: + + + Ui_OpenSongExportDialog + + + Full Song List + Fullständig sånglista + + + GeneralTab + + + SongSelect Password: + SongSelect-lösenord: + + + From 2c42aa0289411129d5d63b5319e092d35e1425a4 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Thu, 24 Jun 2010 16:50:40 +0100 Subject: [PATCH 42/83] Refactor check_item_selected --- openlp/core/lib/__init__.py | 16 ++++++++++++++++ openlp/core/lib/mediamanageritem.py | 13 ------------- openlp/core/ui/thememanager.py | 12 +++++++----- openlp/plugins/custom/lib/mediaitem.py | 8 +++++--- openlp/plugins/images/lib/mediaitem.py | 5 +++-- openlp/plugins/media/lib/mediaitem.py | 4 ++-- openlp/plugins/presentations/lib/mediaitem.py | 5 +++-- openlp/plugins/songs/lib/mediaitem.py | 6 +++--- 8 files changed, 39 insertions(+), 30 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 5a4d3f5b3..6b1a2e67a 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -159,6 +159,22 @@ def resize_image(image, width, height): painter.drawImage((width - realw) / 2, (height - realh) / 2, preview) return new_image +def check_item_selected(list_widget, message): + """ + Check if a list item is selected so an action may be performed on it + + ``list_widget`` + The list to check for selected items + + ``message`` + The message to give the user if no item is selected + """ + if not list_widget.selectedIndexes(): + QtGui.QMessageBox.information(self, + translate('MediaManagerItem', 'No Items Selected'), message) + return False + return True + class ThemeLevel(object): """ diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 5e2566704..2e30032c7 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -343,19 +343,6 @@ class MediaManagerItem(QtGui.QWidget): """ pass - def checkItemSelected(self, message): - """ - Check if a list item is selected so an action may be performed on it - - ``message`` - The message to give the user if no item is selected - """ - if not self.ListView.selectedIndexes(): - QtGui.QMessageBox.information(self, - translate('MediaManagerItem', 'No Items Selected'), message) - return False - return True - def onFileClick(self): files = QtGui.QFileDialog.getOpenFileNames( self, self.OnNewPrompt, diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 6da526af0..65170e281 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -35,7 +35,7 @@ from openlp.core.ui import AmendThemeForm from openlp.core.theme import Theme from openlp.core.lib import OpenLPToolbar, context_menu_action, \ ThemeXML, str_to_bool, get_text_file_string, build_icon, Receiver, \ - context_menu_separator, SettingsManager, translate + context_menu_separator, SettingsManager, translate, check_item_selected from openlp.core.utils import AppLocation, get_filesystem_encoding log = logging.getLogger(__name__) @@ -182,8 +182,9 @@ class ThemeManager(QtGui.QWidget): Loads the settings for the theme that is to be edited and launches the theme editing form so the user can make their changes. """ - item = self.ThemeListWidget.currentItem() - if item: + if check_item_selected(self.ThemeListWidget, translate('ThemeManager', + 'You must select a theme to edit.')): + item = self.ThemeListWidget.currentItem() theme = self.getThemeData( unicode(item.data(QtCore.Qt.UserRole).toString())) self.amendThemeForm.loadTheme(theme) @@ -198,8 +199,9 @@ class ThemeManager(QtGui.QWidget): self.global_theme = unicode(QtCore.QSettings().value( self.settingsSection + u'/global theme', QtCore.QVariant(u'')).toString()) - item = self.ThemeListWidget.currentItem() - if item: + if check_item_selected(self.ThemeListWidget, translate('ThemeManager', + 'You must select a theme to delete.')): + item = self.ThemeListWidget.currentItem() theme = unicode(item.text()) # should be the same unless default if theme != unicode(item.data(QtCore.Qt.UserRole).toString()): diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 94ca4b33b..a4fb54932 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -28,7 +28,7 @@ import logging from PyQt4 import QtCore, QtGui from openlp.core.lib import MediaManagerItem, SongXMLParser, BaseListWithDnD, \ - Receiver, ItemCapabilities, translate + Receiver, ItemCapabilities, translate, check_item_selected log = logging.getLogger(__name__) @@ -118,7 +118,8 @@ class CustomMediaItem(MediaManagerItem): """ Edit a custom item """ - if self.checkItemSelected(translate('CustomPlugin.MediaItem', + if check_item_selected(self.ListView, + translate('CustomPlugin.MediaItem', 'You must select an item to edit.')): item = self.ListView.currentItem() item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] @@ -130,7 +131,8 @@ class CustomMediaItem(MediaManagerItem): """ Remove a custom item from the list and database """ - if self.checkItemSelected(translate('CustomPlugin.MediaItem', + if check_item_selected(self.ListView, + translate('CustomPlugin.MediaItem', 'You must select an item to delete.')): item = self.ListView.currentItem() item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 4c74c1b5b..29985a9ed 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -29,7 +29,8 @@ import os from PyQt4 import QtCore, QtGui from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon, \ - context_menu_action, ItemCapabilities, SettingsManager, translate + context_menu_action, ItemCapabilities, SettingsManager, translate, \ + check_item_selected from openlp.core.utils import AppLocation, get_images_filter log = logging.getLogger(__name__) @@ -116,7 +117,7 @@ class ImageMediaItem(MediaManagerItem): """ Remove an image item from the list """ - if self.checkItemSelected(translate('ImagePlugin.MediaItem', + if check_item_selected(self.ListView, translate('ImagePlugin.MediaItem', 'You must select an item to delete.')): items = self.ListView.selectedIndexes() for item in items: diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 5d8fe03a4..b6de22712 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -29,7 +29,7 @@ import os from PyQt4 import QtCore, QtGui from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon, \ - ItemCapabilities, SettingsManager, translate + ItemCapabilities, SettingsManager, translate, check_item_selected log = logging.getLogger(__name__) @@ -141,7 +141,7 @@ class MediaMediaItem(MediaManagerItem): """ Remove a media item from the list """ - if self.checkItemSelected(translate('MediaPlugin.MediaItem', + if check_item_selected(self.ListView, translate('MediaPlugin.MediaItem', 'You must select an item to delete.')): item = self.ListView.currentItem() row = self.ListView.row(item) diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index aba137af7..384d28c4a 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -29,7 +29,7 @@ import os from PyQt4 import QtCore, QtGui from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon, \ - SettingsManager, translate + SettingsManager, translate, check_item_selected from openlp.core.utils import AppLocation from openlp.plugins.presentations.lib import MessageListener @@ -177,7 +177,8 @@ class PresentationMediaItem(MediaManagerItem): """ Remove a presentation item from the list """ - if self.checkItemSelected(translate('PresentationPlugin.MediaItem', + if check_item_selected(self.ListView, + translate('PresentationPlugin.MediaItem', 'You must select an item to delete.')): item = self.ListView.currentItem() row = self.ListView.row(item) diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 020c1ea71..385e391d3 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -28,7 +28,7 @@ import logging from PyQt4 import QtCore, QtGui from openlp.core.lib import MediaManagerItem, SongXMLParser, \ - BaseListWithDnD, Receiver, ItemCapabilities, translate + BaseListWithDnD, Receiver, ItemCapabilities, translate, check_item_selected from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm, \ ImportWizardForm @@ -279,7 +279,7 @@ class SongMediaItem(MediaManagerItem): """ Edit a song """ - if self.checkItemSelected(translate('SongsPlugin.MediaItem', + if check_item_selected(self.ListView, translate('SongsPlugin.MediaItem', 'You must select an item to edit.')): item = self.ListView.currentItem() item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] @@ -290,7 +290,7 @@ class SongMediaItem(MediaManagerItem): """ Remove a song from the list and database """ - if self.checkItemSelected(translate('SongsPlugin.MediaItem', + if check_item_selected(self.ListView, translate('SongsPlugin.MediaItem', 'You must select an item to delete.')): items = self.ListView.selectedIndexes() if len(items) == 1: From b4626d80eb91694186de52358f64104c26566bd8 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 24 Jun 2010 19:06:34 +0100 Subject: [PATCH 43/83] Screen sizes now work --- openlp/core/ui/maindisplay.py | 34 ++++++++++++++----------------- openlp/core/ui/slidecontroller.py | 2 +- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 8e996a147..267de9bf8 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -118,12 +118,10 @@ class MainDisplay(DisplayWidget): """ log.debug(u'Initialisation started') DisplayWidget.__init__(self, parent) -# self.setWindowFlags(QtCore.Qt.Window | QtCore.Qt.FramelessWindowHint) -# self.setWindowState(QtCore.Qt.WindowFullScreen) + self.setWindowFlags(QtCore.Qt.Window | QtCore.Qt.FramelessWindowHint) self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.parent = parent - #self.setWindowTitle(u'OpenLP Display') # WA_TranslucentBackground is not available in QT4.4 try: self.setAttribute(QtCore.Qt.WA_TranslucentBackground) @@ -146,6 +144,7 @@ class MainDisplay(DisplayWidget): QtCore.SIGNAL(u'maindisplay_show'), self.showDisplay) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'videodisplay_background'), self.hideDisplayForVideo) + self.setVisible(False) def setup(self): """ @@ -156,12 +155,8 @@ class MainDisplay(DisplayWidget): self.setVisible(False) self.screen = self.screens.current #Sort out screen locations and sizes -# self.display_alert.setGeometry(self.screen[u'size']) -# self.display_image.resize( -# self.screen[u'size'].width(), self.screen[u'size'].height()) -# self.display_text.resize( -# self.screen[u'size'].width(), self.screen[u'size'].height()) self.setGeometry(self.screen[u'size']) + self.scene.setSceneRect(0,0,self.size().width(), self.size().height()) #Build a custom splash screen self.InitialFrame = QtGui.QImage( self.screen[u'size'].width(), @@ -191,10 +186,10 @@ class MainDisplay(DisplayWidget): self.transparent.fill(QtCore.Qt.transparent) # self.display_alert.setPixmap(self.transparent) # self.display_text.setPixmap(self.transparent) - self.frameView(self.transparent) + #self.frameView(self.transparent) # To display or not to display? if not self.screen[u'primary']: - self.showFullScreen() + self.setVisible(True) self.primary = False else: self.setVisible(False) @@ -202,7 +197,7 @@ class MainDisplay(DisplayWidget): def setupScene(self): self.scene = QtGui.QGraphicsScene(self) - self.scene.setSceneRect(0,0,self.size().width()-2, self.size().height()-2) + self.scene.setSceneRect(0,0,self.size().width(), self.size().height()) self.setScene(self.scene) def setupImage(self): @@ -213,7 +208,7 @@ class MainDisplay(DisplayWidget): def setupText(self): #self.display_text = QtGui.QGraphicsTextItem() self.display_text = QtGui.QGraphicsPixmapItem() - self.display_text.setPos(0,self.size().height()/2) + #self.display_text.setPos(0,self.size().height()/2) #self.display_text.setTextWidth(self.size().width()) self.display_text.setZValue(4) self.scene.addItem(self.display_text) @@ -278,9 +273,9 @@ class MainDisplay(DisplayWidget): log.debug(u'showDisplay') if self.storeImage: self.display_image.setPixmap(self.storeImage) - self.display_alert.setPixmap(self.transparent) if self.storeText: self.display_text.setPixmap(self.storeText) + #self.display_alert.setPixmap(self.transparent) self.storeImage = None self.store = None Receiver.send_message(u'maindisplay_active') @@ -293,9 +288,9 @@ class MainDisplay(DisplayWidget): def setAlertSize(self, top, height): log.debug(u'setAlertSize') - self.display_alert.setGeometry( - QtCore.QRect(0, top, - self.screen[u'size'].width(), height)) +# self.display_alert.setGeometry( +# QtCore.QRect(0, top, +# self.screen[u'size'].width(), height)) def addAlertImage(self, frame, blank=False): log.debug(u'addAlertImage') @@ -311,13 +306,14 @@ class MainDisplay(DisplayWidget): ``frame`` Image frame to be rendered """ - log.debug(u'frameView %d' % (display)) + log.debug(u'frameView %d' % display) + print "display ", display if display: if transition: if self.frame is not None: self.display_text.setPixmap( QtGui.QPixmap.fromImage(self.frame)) - self.repaint() + self.update() self.frame = None if frame[u'trans'] is not None: self.display_text.setPixmap( @@ -419,7 +415,7 @@ class VideoDisplay(Phonon.VideoWidget): # To display or not to display? if not self.screen[u'primary']: # and self.isVisible(): #self.showFullScreen() - self.setVisible(True) + self.setVisible(False) self.primary = False else: self.setVisible(False) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 87f6f20fe..1b9e4578d 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -780,7 +780,7 @@ class SlideController(QtGui.QWidget): log.log( 15, u'Slide Rendering took %4s' % (time.time() - before)) if self.isLive: - self.mainDisplay.frameView(frame, True, self.canDisplay) + self.mainDisplay.frameView(frame, True)#, self.canDisplay) self.selectedRow = row Receiver.send_message(u'slidecontroller_%s_changed' % self.typePrefix, row) From aa2d1586eac70995fc22c709a128a0f50466022e Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Thu, 24 Jun 2010 20:35:01 +0200 Subject: [PATCH 44/83] Fix bug #595676 and improve the OSIS importer. --- openlp/plugins/bibles/lib/osis.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index b4a2a2aa1..5b3324e00 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -62,10 +62,13 @@ class OSISBible(BibleDB): self.fi_regex = re.compile(r'(.*?)') self.rf_regex = re.compile(r'(.*?)') self.lb_regex = re.compile(r'') + self.lg_regex = re.compile(r'') self.l_regex = re.compile(r'') self.w_regex = re.compile(r'') - self.q_regex = re.compile(r'') + self.q1_regex = re.compile(r'') + self.q2_regex = re.compile(r'') self.trans_regex = re.compile(r'(.*?)') + self.divineName_regex = re.compile(r'(.*?)') self.spaces_regex = re.compile(r'([ ]{2,})') self.books = {} filepath = os.path.join( @@ -96,7 +99,7 @@ class OSISBible(BibleDB): detect_file = None try: detect_file = open(self.filename, u'r') - details = chardet.detect(detect_file.read()) + details = chardet.detect(detect_file.read(1048576)) except IOError: log.exception(u'Failed to detect OSIS file encoding') return @@ -150,11 +153,14 @@ class OSISBible(BibleDB): verse_text = self.milestone_regex.sub(u'', verse_text) verse_text = self.fi_regex.sub(u'', verse_text) verse_text = self.rf_regex.sub(u'', verse_text) - verse_text = self.lb_regex.sub(u'', verse_text) + verse_text = self.lb_regex.sub(u' ', verse_text) + verse_text = self.lg_regex.sub(u'', verse_text) verse_text = self.l_regex.sub(u'', verse_text) verse_text = self.w_regex.sub(u'', verse_text) - verse_text = self.q_regex.sub(u'', verse_text) + verse_text = self.q1_regex.sub(u'"', verse_text) + verse_text = self.q2_regex.sub(u'\'', verse_text) verse_text = self.trans_regex.sub(u'', verse_text) + verse_text = self.divineName_regex.sub(u'', verse_text) verse_text = verse_text.replace(u'', u'')\ .replace(u'', u'').replace(u'', u'')\ .replace(u'', u'').replace(u'', u'')\ From b402cc563992183fa3646e7390cbc12a219d61bf Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Thu, 24 Jun 2010 20:04:18 +0100 Subject: [PATCH 45/83] Fix check_item_selection --- openlp/core/lib/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 6b1a2e67a..5408c611d 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -170,7 +170,7 @@ def check_item_selected(list_widget, message): The message to give the user if no item is selected """ if not list_widget.selectedIndexes(): - QtGui.QMessageBox.information(self, + QtGui.QMessageBox.information(list_widget.parent(), translate('MediaManagerItem', 'No Items Selected'), message) return False return True From 78b1c8d1afa0a35c8b4805f8415d90f2905eec2a Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Thu, 24 Jun 2010 20:36:33 +0100 Subject: [PATCH 46/83] Do the fix properly --- openlp/core/lib/baselistwithdnd.py | 1 - openlp/plugins/bibles/lib/mediaitem.py | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/core/lib/baselistwithdnd.py b/openlp/core/lib/baselistwithdnd.py index d34eada98..fab27695b 100644 --- a/openlp/core/lib/baselistwithdnd.py +++ b/openlp/core/lib/baselistwithdnd.py @@ -32,7 +32,6 @@ class BaseListWithDnD(QtGui.QListWidget): def __init__(self, parent=None): QtGui.QListWidget.__init__(self, parent) - self.parent = parent # this must be set by the class which is inheriting assert(self.PluginName) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index d7633066d..6bc6d99d4 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -43,7 +43,8 @@ class BibleListView(BaseListWithDnD): BaseListWithDnD.__init__(self, parent) def resizeEvent(self, event): - self.parent.onListViewResize(event.size().width(), event.size().width()) + self.parent().onListViewResize(event.size().width(), + event.size().width()) class BibleMediaItem(MediaManagerItem): From 9dc12ac52234ac314e44016c7e20b5c1c3dd800f Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Thu, 24 Jun 2010 21:40:41 +0200 Subject: [PATCH 47/83] Try to fix the song plugin's dependence on OOo. --- openlp/plugins/songs/songsplugin.py | 85 ++++++++++++++++------------- 1 file changed, 46 insertions(+), 39 deletions(-) diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 57c0ee844..0d629fe42 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -29,8 +29,13 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import Plugin, build_icon, PluginStatus, Receiver, \ translate -from openlp.plugins.songs.lib import SongManager, SongMediaItem, SongsTab, \ - SofImport, OooImport +from openlp.plugins.songs.lib import SongManager, SongMediaItem, SongsTab + +try: + from openlp.plugins.songs.lib import SofImport, OooImport + OOo_available = True +except ImportError: + OOo_available = False log = logging.getLogger(__name__) @@ -95,46 +100,48 @@ class SongsPlugin(Plugin): self.SongImportItem.setToolTip(translate('SongsPlugin', 'Import songs using the import wizard.')) import_menu.addAction(self.SongImportItem) - # Songs of Fellowship import menu item - will be removed and the - # functionality will be contained within the import wizard - self.ImportSofItem = QtGui.QAction(import_menu) - self.ImportSofItem.setObjectName(u'ImportSofItem') - self.ImportSofItem.setText( - translate('SongsPlugin', - 'Songs of Fellowship (temp menu item)')) - self.ImportSofItem.setToolTip( - translate('SongsPlugin', - 'Import songs from the VOLS1_2.RTF, sof3words' \ - + '.rtf and sof4words.rtf supplied with the music books')) - self.ImportSofItem.setStatusTip( - translate('SongsPlugin', - 'Import songs from the VOLS1_2.RTF, sof3words' \ - + '.rtf and sof4words.rtf supplied with the music books')) - import_menu.addAction(self.ImportSofItem) - # OpenOffice.org import menu item - will be removed and the - # functionality will be contained within the import wizard - self.ImportOooItem = QtGui.QAction(import_menu) - self.ImportOooItem.setObjectName(u'ImportOooItem') - self.ImportOooItem.setText( - translate('SongsPlugin', - 'Generic Document/Presentation Import ' - '(temp menu item)')) - self.ImportOooItem.setToolTip( - translate('SongsPlugin', - 'Import songs from ' - 'Word/Writer/Powerpoint/Impress')) - self.ImportOooItem.setStatusTip( - translate('SongsPlugin', - 'Import songs from ' - 'Word/Writer/Powerpoint/Impress')) - import_menu.addAction(self.ImportOooItem) # Signals and slots QtCore.QObject.connect(self.SongImportItem, QtCore.SIGNAL(u'triggered()'), self.onSongImportItemClicked) - QtCore.QObject.connect(self.ImportSofItem, - QtCore.SIGNAL(u'triggered()'), self.onImportSofItemClick) - QtCore.QObject.connect(self.ImportOooItem, - QtCore.SIGNAL(u'triggered()'), self.onImportOooItemClick) + if OOo_available: + # Songs of Fellowship import menu item - will be removed and the + # functionality will be contained within the import wizard + self.ImportSofItem = QtGui.QAction(import_menu) + self.ImportSofItem.setObjectName(u'ImportSofItem') + self.ImportSofItem.setText( + translate('SongsPlugin', + 'Songs of Fellowship (temp menu item)')) + self.ImportSofItem.setToolTip( + translate('SongsPlugin', + 'Import songs from the VOLS1_2.RTF, sof3words' \ + + '.rtf and sof4words.rtf supplied with the music books')) + self.ImportSofItem.setStatusTip( + translate('SongsPlugin', + 'Import songs from the VOLS1_2.RTF, sof3words' \ + + '.rtf and sof4words.rtf supplied with the music books')) + import_menu.addAction(self.ImportSofItem) + # OpenOffice.org import menu item - will be removed and the + # functionality will be contained within the import wizard + self.ImportOooItem = QtGui.QAction(import_menu) + self.ImportOooItem.setObjectName(u'ImportOooItem') + self.ImportOooItem.setText( + translate('SongsPlugin', + 'Generic Document/Presentation Import ' + '(temp menu item)')) + self.ImportOooItem.setToolTip( + translate('SongsPlugin', + 'Import songs from ' + 'Word/Writer/Powerpoint/Impress')) + self.ImportOooItem.setStatusTip( + translate('SongsPlugin', + 'Import songs from ' + 'Word/Writer/Powerpoint/Impress')) + import_menu.addAction(self.ImportOooItem) + # Signals and slots + QtCore.QObject.connect(self.ImportSofItem, + QtCore.SIGNAL(u'triggered()'), self.onImportSofItemClick) + QtCore.QObject.connect(self.ImportOooItem, + QtCore.SIGNAL(u'triggered()'), self.onImportOooItemClick) def add_export_menu_item(self, export_menu): """ From 30f8441ce9f25830b888d52fdaa938c1d84c01e2 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Thu, 24 Jun 2010 20:42:15 +0100 Subject: [PATCH 48/83] Merge excepts together --- openlp/plugins/presentations/lib/powerpointcontroller.py | 8 +++----- openlp/plugins/presentations/lib/pptviewcontroller.py | 5 +---- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/openlp/plugins/presentations/lib/powerpointcontroller.py b/openlp/plugins/presentations/lib/powerpointcontroller.py index f5a6c1120..b0b2829d2 100644 --- a/openlp/plugins/presentations/lib/powerpointcontroller.py +++ b/openlp/plugins/presentations/lib/powerpointcontroller.py @@ -186,9 +186,7 @@ class PowerpointDocument(PresentationDocument): return False if self.presentation.SlideShowWindow.View is None: return False - except AttributeError: - return False - except pywintypes.com_error: + except (AttributeError, pywintypes.com_error): return False return True @@ -210,9 +208,9 @@ class PowerpointDocument(PresentationDocument): """ Returns true if screen is blank """ - try: + if self.is_active(): return self.presentation.SlideShowWindow.View.State == 3 - except pywintypes.com_error: + else: return False def stop_presentation(self): diff --git a/openlp/plugins/presentations/lib/pptviewcontroller.py b/openlp/plugins/presentations/lib/pptviewcontroller.py index bcda545ee..10ab41fd0 100644 --- a/openlp/plugins/presentations/lib/pptviewcontroller.py +++ b/openlp/plugins/presentations/lib/pptviewcontroller.py @@ -58,10 +58,7 @@ class PptviewController(PresentationController): log.debug(u'check_available') if os.name != u'nt': return False - try: - return self.check_installed() - except: - return False + return self.check_installed() if os.name == u'nt': def check_installed(self): From 1ea6d1da5076811230246ddf1ef0a892d9cce7b1 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Thu, 24 Jun 2010 20:58:45 +0100 Subject: [PATCH 49/83] Merge excepts together (again) --- openlp/plugins/presentations/lib/powerpointcontroller.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/openlp/plugins/presentations/lib/powerpointcontroller.py b/openlp/plugins/presentations/lib/powerpointcontroller.py index b0b2829d2..477145bb0 100644 --- a/openlp/plugins/presentations/lib/powerpointcontroller.py +++ b/openlp/plugins/presentations/lib/powerpointcontroller.py @@ -168,9 +168,7 @@ class PowerpointDocument(PresentationDocument): return False if self.controller.process.Presentations.Count == 0: return False - except AttributeError: - return False - except pywintypes.com_error: + except (AttributeError, pywintypes.com_error): return False return True From a23a3545323bd7b6917b7d1cb7f63337fa288dde Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Thu, 24 Jun 2010 21:25:35 +0100 Subject: [PATCH 50/83] pptviewlib.dll --- .../lib/pptviewlib/pptviewlib.dll | Bin 47104 -> 47104 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.dll b/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.dll index bb8e9d9a47aaf572decc48c3521dc0f61b2df51c..f8a0de0d33e562014629fc97d25cc11103695e55 100644 GIT binary patch delta 1481 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 rqi Date: Thu, 24 Jun 2010 22:48:38 +0200 Subject: [PATCH 51/83] Some more OOo related fixes. --- openlp/plugins/songs/lib/__init__.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index 15303ccf7..dddb23b4e 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -94,6 +94,10 @@ class VerseType(object): from manager import SongManager from songstab import SongsTab from mediaitem import SongMediaItem -from sofimport import SofImport -from oooimport import OooImport -from songimport import SongImport \ No newline at end of file +from songimport import SongImport +try: + from sofimport import SofImport + from oooimport import OooImport +except ImportError: + pass + From 3cee3f0f8eb5ec6f9812bbc2ff86720ea00d744d Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Fri, 25 Jun 2010 01:25:21 +0100 Subject: [PATCH 52/83] Fix grammo --- 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 d9c434987..dfcad984a 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -304,7 +304,7 @@ class ServiceItem(object): def merge(self, other): """ Updates the _uuid with the value from the original one - The _uuid is unique for a give service item but this allows one to + The _uuid is unique for a given service item but this allows one to replace an original version. """ self._uuid = other._uuid From 7c873ada587f42225ab913ed97dd6ba38f08aecb Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 25 Jun 2010 17:50:35 +0100 Subject: [PATCH 53/83] Fix bug #598415 --- openlp/core/ui/serviceitemeditform.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/openlp/core/ui/serviceitemeditform.py b/openlp/core/ui/serviceitemeditform.py index 1ea829f81..d667507af 100644 --- a/openlp/core/ui/serviceitemeditform.py +++ b/openlp/core/ui/serviceitemeditform.py @@ -73,6 +73,10 @@ class ServiceItemEditForm(QtGui.QDialog, Ui_ServiceItemEditDialog): for frame in self.itemList: item_name = QtGui.QListWidgetItem(frame[u'title']) self.listWidget.addItem(item_name) + if self.listWidget.count() == 1: + self.deleteButton.setEnabled(False) + else: + self.deleteButton.setEnabled(True) def onItemDelete(self): """ From 1800ae4ddbe7f4eda60964b14b8329781d42b62e Mon Sep 17 00:00:00 2001 From: andreas Date: Fri, 25 Jun 2010 20:18:52 +0200 Subject: [PATCH 54/83] improvement in regard to bug #598415 --- openlp/core/ui/serviceitemeditform.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/openlp/core/ui/serviceitemeditform.py b/openlp/core/ui/serviceitemeditform.py index d667507af..4355ab797 100644 --- a/openlp/core/ui/serviceitemeditform.py +++ b/openlp/core/ui/serviceitemeditform.py @@ -74,8 +74,12 @@ class ServiceItemEditForm(QtGui.QDialog, Ui_ServiceItemEditDialog): item_name = QtGui.QListWidgetItem(frame[u'title']) self.listWidget.addItem(item_name) if self.listWidget.count() == 1: + self.downButton.setEnabled(False) + self.upButton.setEnabled(False) self.deleteButton.setEnabled(False) else: + self.downButton.setEnabled(True) + self.upButton.setEnabled(True) self.deleteButton.setEnabled(True) def onItemDelete(self): From 4d1a7e8b4181e83052039572e52e675c1b992ca5 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Fri, 25 Jun 2010 20:01:03 +0100 Subject: [PATCH 55/83] Cleanup last few commits --- openlp/plugins/bibles/lib/osis.py | 3 ++- openlp/plugins/songs/lib/songimport.py | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index 5b3324e00..844d31052 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -68,7 +68,8 @@ class OSISBible(BibleDB): self.q1_regex = re.compile(r'') self.q2_regex = re.compile(r'') self.trans_regex = re.compile(r'(.*?)') - self.divineName_regex = re.compile(r'(.*?)') + self.divineName_regex = re.compile( + r'(.*?)') self.spaces_regex = re.compile(r'([ ]{2,})') self.books = {} filepath = os.path.join( diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index ede946dc7..654c9c4e7 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -25,8 +25,6 @@ import re -from PyQt4 import QtGui - from openlp.core.lib import SongXMLBuilder, translate from openlp.plugins.songs.lib import VerseType from openlp.plugins.songs.lib.models import Song, Author, Topic, Book From 217b40c26f0fd870b50e7ff3a44257d3101b93a3 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Fri, 25 Jun 2010 21:20:03 +0100 Subject: [PATCH 56/83] Bug 598361 - Preview presentation error. Ensure presentations close correctly --- openlp/core/ui/slidecontroller.py | 14 +++++++++----- .../plugins/presentations/lib/impresscontroller.py | 9 ++------- .../plugins/presentations/lib/messagelistener.py | 13 ++++++------- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 08c231cd5..c2ec38069 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -519,9 +519,13 @@ class SlideController(QtGui.QWidget): """ log.debug(u'processManagerItem') self.onStopLoop() - #If old item was a command tell it to stop - if self.serviceItem and self.serviceItem.is_command(): - self.onMediaStop() + #If old item was a command tell it to stop + if self.serviceItem: + if self.serviceItem.is_command(): + Receiver.send_message(u'%s_stop' % + self.serviceItem.name.lower(), [serviceItem, self.isLive]) + if self.serviceItem.is_media(): + self.onMediaStop() if serviceItem.is_media(): self.onMediaStart(serviceItem) if self.isLive: @@ -827,7 +831,7 @@ class SlideController(QtGui.QWidget): return Receiver.send_message(u'%s_next' % self.serviceItem.name.lower(), [self.serviceItem, self.isLive]) - if self.serviceItem.is_command(): + if self.serviceItem.is_command() and self.isLive: self.updatePreview() else: row = self.PreviewListWidget.currentRow() + 1 @@ -851,7 +855,7 @@ class SlideController(QtGui.QWidget): return Receiver.send_message(u'%s_previous' % self.serviceItem.name.lower(), [self.serviceItem, self.isLive]) - if self.serviceItem.is_command(): + if self.serviceItem.is_command() and self.isLive: self.updatePreview() else: row = self.PreviewListWidget.currentRow() - 1 diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index 6cb8c349c..52de42ca7 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -132,18 +132,13 @@ class ImpressController(PresentationController): def get_com_desktop(self): log.debug(u'get COM Desktop OpenOffice') - try: - desktop = self.manager.createInstance(u'com.sun.star.frame.Desktop') - return desktop - except: - log.exception(u'Failed to get COM desktop') - return None + return self.manager.createInstance(u'com.sun.star.frame.Desktop') def get_com_servicemanager(self): log.debug(u'get_com_servicemanager openoffice') try: return Dispatch(u'com.sun.star.ServiceManager') - except: + except pywintypes.com_error: log.exception(u'Failed to get COM service manager') return None diff --git a/openlp/plugins/presentations/lib/messagelistener.py b/openlp/plugins/presentations/lib/messagelistener.py index 13a589ec3..2f8a1aec7 100644 --- a/openlp/plugins/presentations/lib/messagelistener.py +++ b/openlp/plugins/presentations/lib/messagelistener.py @@ -70,16 +70,16 @@ class Controller(object): if self.doc.slidenumber > 1: self.doc.goto_slide(self.doc.slidenumber) - def slide(self, slide, live): - log.debug(u'Live = %s, slide' % live) - if not live: + def slide(self, slide): + log.debug(u'Live = %s, slide' % self.is_live) + if not self.is_live: return if self.doc.is_blank(): self.doc.slidenumber = int(slide) + 1 return self.activate() self.doc.goto_slide(int(slide) + 1) - self.doc.poll_slidenumber(live) + self.doc.poll_slidenumber(self.is_live) def first(self): """ @@ -248,11 +248,10 @@ class MessageListener(object): def slide(self, message): is_live = message[1] slide = message[2] - item = message[0] if is_live: - self.live_handler.slide(slide, item) + self.live_handler.slide(slide) else: - self.preview_handler.slide(slide, item) + self.preview_handler.slide(slide) def first(self, message): is_live = message[1] From 780e45891c778a8c675fcd426f1dd0818f2ba1a8 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 25 Jun 2010 21:44:13 +0100 Subject: [PATCH 57/83] More fixes --- openlp/core/ui/maindisplay.py | 15 ++++++++------- openlp/core/ui/slidecontroller.py | 10 ++++++++++ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 267de9bf8..0196732fe 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -195,6 +195,7 @@ class MainDisplay(DisplayWidget): self.setVisible(False) self.primary = True + def setupScene(self): self.scene = QtGui.QGraphicsScene(self) self.scene.setSceneRect(0,0,self.size().width(), self.size().height()) @@ -232,7 +233,8 @@ class MainDisplay(DisplayWidget): if self.primary: self.setVisible(False) else: - self.showFullScreen() + self.setVisible(True) + #self.showFullScreen() def hideDisplayForVideo(self): """ @@ -307,7 +309,6 @@ class MainDisplay(DisplayWidget): Image frame to be rendered """ log.debug(u'frameView %d' % display) - print "display ", display if display: if transition: if self.frame is not None: @@ -332,7 +333,7 @@ class MainDisplay(DisplayWidget): self.display_frame = frame if not self.isVisible() and self.screens.display: self.setVisible(True) - self.showFullScreen() + #self.showFullScreen() else: self.storeText = QtGui.QPixmap.fromImage(frame[u'main']) @@ -367,10 +368,10 @@ class VideoDisplay(Phonon.VideoWidget): Phonon.createPath(self.mediaObject, self.audioObject) flags = QtCore.Qt.FramelessWindowHint | QtCore.Qt.Dialog # # WindowsStaysOnBottomHint is not available in QT4.4 -# try: -# flags = flags | QtCore.Qt.WindowStaysOnBottomHint -# except AttributeError: -# pass + try: + flags = flags | QtCore.Qt.WindowStaysOnBottomHint + except AttributeError: + pass self.setWindowFlags(flags) QtCore.QObject.connect(Receiver.get_receiver(), diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 66cd70f73..c1757c2f8 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -253,6 +253,16 @@ class SlideController(QtGui.QWidget): translate('SlideController', 'Start playing media'), self.onMediaStop) if self.isLive: + self.button = QtGui.QToolButton(self.Toolbar) + self.Toolbar.addToolbarWidget(u'Hide Menu', self.button) + self.button.setText(translate('SlideController', 'Hide')) + self.menu = QtGui.QMenu(self.button) + blank_screen = QtGui.QAction(QtGui.QIcon( u':/slides/slide_blank.png'), u'Blank Screen', self.button) + theme_screen = QtGui.QAction(QtGui.QIcon(u':/slides/slide_theme.png'), u'Blank to Theme', self.button) + desktop_screen = QtGui.QAction(QtGui.QIcon(u':/slides/slide_desktop.png'), u'Show Desktop', self.button) + self.menu.addAction(blank_screen) + self.menu.addAction(theme_screen) + self.menu.addAction(desktop_screen) self.blankButton = self.Mediabar.addToolbarButton( u'Blank Screen', u':/slides/slide_blank.png', translate('SlideController', 'Blank Screen'), From 90cf4428c40610ff1a96ae1ac446d7c16be41582 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 26 Jun 2010 07:24:38 +0100 Subject: [PATCH 58/83] Hide buttons to menu part 1 --- openlp/core/ui/slidecontroller.py | 75 ++++++++++++++----------------- 1 file changed, 34 insertions(+), 41 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index c1757c2f8..3601df82b 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -196,18 +196,25 @@ class SlideController(QtGui.QWidget): self.onSlideSelectedLast) if self.isLive: self.Toolbar.addToolbarSeparator(u'Close Separator') - self.blankButton = self.Toolbar.addToolbarButton( - u'Blank Screen', u':/slides/slide_blank.png', - translate('SlideController', 'Blank Screen'), - self.onBlankDisplay, True) - self.themeButton = self.Toolbar.addToolbarButton( - u'Display Theme', u':/slides/slide_theme.png', - translate('SlideController', 'Theme Screen'), - self.onThemeDisplay, True) - self.hideButton = self.Toolbar.addToolbarButton( - u'Hide screen', u':/slides/slide_desktop.png', - translate('SlideController', 'Hide Screen'), - self.onHideDisplay, True) + self.HideMenu = QtGui.QToolButton(self.Toolbar) + self.HideMenu.setText(translate('SlideController', 'Hide')) + self.HideMenu.setPopupMode(QtGui.QToolButton.MenuButtonPopup) + self.Toolbar.addToolbarWidget(u'Hide Menu', self.HideMenu) + self.HideMenu.setMenu(QtGui.QMenu( + translate('SlideController', 'Hide'), self.Toolbar)) + self.BlankScreen = QtGui.QAction(QtGui.QIcon( u':/slides/slide_blank.png'), u'Blank Screen', self.HideMenu) + self.BlankScreen.setCheckable(True) + QtCore.QObject.connect(self.BlankScreen, QtCore.SIGNAL("triggered(bool)"), self.onBlankDisplay) + self.ThemeScreen = QtGui.QAction(QtGui.QIcon(u':/slides/slide_theme.png'), u'Blank to Theme', self.HideMenu) + self.ThemeScreen.setCheckable(True) + QtCore.QObject.connect(self.BlankScreen, QtCore.SIGNAL("triggered(bool)"), self.onThemeDisplay) + self.DesktopScreen = QtGui.QAction(QtGui.QIcon(u':/slides/slide_desktop.png'), u'Show Desktop', self.HideMenu) + self.DesktopScreen.setCheckable(True) + QtCore.QObject.connect(self.BlankScreen, QtCore.SIGNAL("triggered(bool)"), self.onHideDisplay) + self.HideMenu.setDefaultAction(self.BlankScreen) + self.HideMenu.menu().addAction(self.BlankScreen) + self.HideMenu.menu().addAction(self.ThemeScreen) + self.HideMenu.menu().addAction(self.DesktopScreen) if not self.isLive: self.Toolbar.addToolbarSeparator(u'Close Separator') self.Toolbar.addToolbarButton( @@ -252,29 +259,6 @@ class SlideController(QtGui.QWidget): u'Media Stop', u':/slides/media_playback_stop.png', translate('SlideController', 'Start playing media'), self.onMediaStop) - if self.isLive: - self.button = QtGui.QToolButton(self.Toolbar) - self.Toolbar.addToolbarWidget(u'Hide Menu', self.button) - self.button.setText(translate('SlideController', 'Hide')) - self.menu = QtGui.QMenu(self.button) - blank_screen = QtGui.QAction(QtGui.QIcon( u':/slides/slide_blank.png'), u'Blank Screen', self.button) - theme_screen = QtGui.QAction(QtGui.QIcon(u':/slides/slide_theme.png'), u'Blank to Theme', self.button) - desktop_screen = QtGui.QAction(QtGui.QIcon(u':/slides/slide_desktop.png'), u'Show Desktop', self.button) - self.menu.addAction(blank_screen) - self.menu.addAction(theme_screen) - self.menu.addAction(desktop_screen) - self.blankButton = self.Mediabar.addToolbarButton( - u'Blank Screen', u':/slides/slide_blank.png', - translate('SlideController', 'Blank Screen'), - self.onBlankDisplay, True) - self.themeButton = self.Mediabar.addToolbarButton( - u'Display Theme', u':/slides/slide_theme.png', - translate('SlideController', 'Theme Screen'), - self.onThemeDisplay, True) - self.hideButton = self.Mediabar.addToolbarButton( - u'Hide screen', u':/slides/slide_desktop.png', - translate('SlideController', 'Hide Screen'), - self.onHideDisplay, True) if not self.isLive: self.seekSlider = Phonon.SeekSlider() self.seekSlider.setGeometry(QtCore.QRect(90, 260, 221, 24)) @@ -686,8 +670,11 @@ class SlideController(QtGui.QWidget): Handle the blank screen button actions """ log.debug(u'onBlankDisplay %d' % checked) - self.hideButton.setChecked(False) - self.themeButton.setChecked(False) + self.HideMenu.setDefaultAction(self.BlankScreen) + self.BlankScreen.setCheckable(True) + self.BlankScreen.setChecked(True) + self.ThemeScreen.setChecked(False) + self.DesktopScreen.setChecked(False) self.canDisplay = not checked QtCore.QSettings().setValue( self.parent.generalSettingsSection + u'/screen blank', @@ -704,8 +691,11 @@ class SlideController(QtGui.QWidget): Handle the Theme screen button """ log.debug(u'onThemeDisplay %d' % checked) - self.blankButton.setChecked(False) - self.hideButton.setChecked(False) + self.HideMenu.setDefaultAction(self.ThemeScreen) + self.ThemeScreen.setCheckable(True) + self.BlankScreen.setChecked(False) + self.ThemeScreen.setChecked(True) + self.DesktopScreen.setChecked(False) self.canDisplay = False if checked: Receiver.send_message(u'maindisplay_hide', HideMode.Theme) @@ -719,8 +709,11 @@ class SlideController(QtGui.QWidget): Handle the Hide screen button """ log.debug(u'onHideDisplay %d' % checked) - self.blankButton.setChecked(False) - self.themeButton.setChecked(False) + self.HideMenu.setDefaultAction(self.DesktopScreen) + self.DesktopScreen.setCheckable(True) + self.BlankScreen.setChecked(False) + self.ThemeScreen.setChecked(False) + self.DesktopScreen.setChecked(True) self.canDisplay = False if checked: Receiver.send_message(u'maindisplay_hide', HideMode.Screen) From b59b2bdafaa216af50db61cb218135b2c9ebd883 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 26 Jun 2010 08:19:30 +0100 Subject: [PATCH 59/83] Fix bug #596541 hide theme combo for global themes --- openlp/core/ui/servicemanager.py | 22 +++++++++++++++++----- openlp/core/ui/slidecontroller.py | 16 ++++++++-------- openlp/core/ui/themestab.py | 2 +- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 540be0ff4..284d9c7e4 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -33,7 +33,7 @@ log = logging.getLogger(__name__) from PyQt4 import QtCore, QtGui from openlp.core.lib import OpenLPToolbar, ServiceItem, context_menu_action, \ - Receiver, build_icon, ItemCapabilities, SettingsManager, translate + Receiver, build_icon, ItemCapabilities, SettingsManager, translate, ThemeLevel from openlp.core.ui import ServiceNoteForm, ServiceItemEditForm from openlp.core.utils import AppLocation @@ -134,15 +134,13 @@ class ServiceManager(QtGui.QWidget): self.ThemeLabel = QtGui.QLabel(translate('ServiceManager', 'Theme:'), self) self.ThemeLabel.setMargin(3) - self.Toolbar.addWidget(self.ThemeLabel) + self.Toolbar.addToolbarWidget(u'ThemeLabel', self.ThemeLabel) self.ThemeComboBox = QtGui.QComboBox(self.Toolbar) self.ThemeComboBox.setToolTip(translate('ServiceManager', 'Select a theme for the service')) self.ThemeComboBox.setSizeAdjustPolicy( QtGui.QComboBox.AdjustToContents) - self.ThemeWidget = QtGui.QWidgetAction(self.Toolbar) - self.ThemeWidget.setDefaultWidget(self.ThemeComboBox) - self.Toolbar.addAction(self.ThemeWidget) + self.Toolbar.addToolbarWidget(u'ThemeWidget', self.ThemeComboBox) self.Layout.addWidget(self.Toolbar) # Create the service manager list self.ServiceManagerList = ServiceManagerList(self) @@ -214,6 +212,8 @@ class ServiceManager(QtGui.QWidget): QtCore.SIGNAL(u'servicemanager_list_request'), self.listRequest) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'config_updated'), self.regenerateServiceItems) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'theme_update_global'), self.themeChange) # Last little bits of setting up self.service_theme = unicode(QtCore.QSettings().value( self.parent.serviceSettingsSection + u'/service theme', @@ -756,6 +756,18 @@ class ServiceManager(QtGui.QWidget): QtCore.QVariant(self.service_theme)) self.regenerateServiceItems() + def themeChange(self): + """ + The theme may have changed in the settings dialog so make + sure the theme combo box is in the correct state. + """ + if self.parent.RenderManager.theme_level == ThemeLevel.Global: + self.Toolbar.actions[u'ThemeLabel'].setVisible(False) + self.Toolbar.actions[u'ThemeWidget'].setVisible(False) + else: + self.Toolbar.actions[u'ThemeLabel'].setVisible(True) + self.Toolbar.actions[u'ThemeWidget'].setVisible(True) + def regenerateServiceItems(self): """ Rebuild the service list as things have changed and a diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 67c498f45..bfb5e291e 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -513,21 +513,21 @@ class SlideController(QtGui.QWidget): """ log.debug(u'processManagerItem') self.onStopLoop() - #If old item was a command tell it to stop + #If old item was a command tell it to stop if self.serviceItem: if self.serviceItem.is_command(): - Receiver.send_message(u'%s_stop' % + Receiver.send_message(u'%s_stop' % self.serviceItem.name.lower(), [serviceItem, self.isLive]) if self.serviceItem.is_media(): self.onMediaStop() if serviceItem.is_media(): self.onMediaStart(serviceItem) - if self.isLive: - blanked = self.blankButton.isChecked() - else: - blanked = False - Receiver.send_message(u'%s_start' % serviceItem.name.lower(), - [serviceItem, self.isLive, blanked, slideno]) +# if self.isLive: +# blanked = self.blankButton.isChecked() +# else: +# blanked = False +# Receiver.send_message(u'%s_start' % serviceItem.name.lower(), +# [serviceItem, self.isLive, blanked, slideno]) self.slideList = {} width = self.parent.ControlSplitter.sizes()[self.split] #Set pointing cursor when we have somthing to point at diff --git a/openlp/core/ui/themestab.py b/openlp/core/ui/themestab.py index 73fbfeb88..007a51fd6 100644 --- a/openlp/core/ui/themestab.py +++ b/openlp/core/ui/themestab.py @@ -150,9 +150,9 @@ class ThemesTab(SettingsTab): settings.setValue(u'global theme', QtCore.QVariant(self.global_theme)) settings.endGroup() - Receiver.send_message(u'theme_update_global', self.global_theme) self.parent.RenderManager.set_global_theme( self.global_theme, self.theme_level) + Receiver.send_message(u'theme_update_global', self.global_theme) def postSetUp(self): Receiver.send_message(u'theme_update_global', self.global_theme) From d82f94e3267166eaa9c60231128ea7caca9a6b77 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 26 Jun 2010 09:09:09 +0100 Subject: [PATCH 60/83] Refactor Alert code for Html --- openlp/core/ui/maindisplay.py | 39 +++++++-------- openlp/plugins/alerts/lib/alertsmanager.py | 56 +++++----------------- openlp/plugins/alerts/lib/alertstab.py | 9 ++-- 3 files changed, 39 insertions(+), 65 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 0196732fe..981647846 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -52,7 +52,16 @@ class DisplayManager(QtGui.QWidget): self.videoDisplay.setup() self.mainDisplay.setup() + def addAlert(self, alertMessage, location): + """ + Handles the add Alert Message to the Displays + """ + self.mainDisplay.addAlert(alertMessage, location) + def close(self): + """ + Handles the closure of the displays + """ self.videoDisplay.close() self.audioPlayer.close() self.mainDisplay.close() @@ -184,7 +193,6 @@ class MainDisplay(DisplayWidget): self.transparent = QtGui.QPixmap( self.screen[u'size'].width(), self.screen[u'size'].height()) self.transparent.fill(QtCore.Qt.transparent) -# self.display_alert.setPixmap(self.transparent) # self.display_text.setPixmap(self.transparent) #self.frameView(self.transparent) # To display or not to display? @@ -195,7 +203,6 @@ class MainDisplay(DisplayWidget): self.setVisible(False) self.primary = True - def setupScene(self): self.scene = QtGui.QGraphicsScene(self) self.scene.setSceneRect(0,0,self.size().width(), self.size().height()) @@ -209,15 +216,13 @@ class MainDisplay(DisplayWidget): def setupText(self): #self.display_text = QtGui.QGraphicsTextItem() self.display_text = QtGui.QGraphicsPixmapItem() - #self.display_text.setPos(0,self.size().height()/2) + #self.display_text.setPos(0,0) #self.display_text.setTextWidth(self.size().width()) self.display_text.setZValue(4) self.scene.addItem(self.display_text) def setupAlert(self): self.alertText = QtGui.QGraphicsTextItem() - self.alertText.setPos(0,self.size().height()/2) - self.alertText.setPos(0,self.size().height() - 76) self.alertText.setTextWidth(self.size().width()) self.alertText.setZValue(8) self.scene.addItem(self.alertText) @@ -234,7 +239,6 @@ class MainDisplay(DisplayWidget): self.setVisible(False) else: self.setVisible(True) - #self.showFullScreen() def hideDisplayForVideo(self): """ @@ -250,7 +254,6 @@ class MainDisplay(DisplayWidget): log.debug(u'hideDisplay mode = %d', mode) self.storeImage = QtGui.QPixmap(self.display_image.pixmap()) self.storeText = QtGui.QPixmap(self.display_text.pixmap()) - #self.display_alert.setPixmap(self.transparent) #self.display_text.setPixmap(self.transparent) if mode == HideMode.Screen: #self.display_image.setPixmap(self.transparent) @@ -277,7 +280,6 @@ class MainDisplay(DisplayWidget): self.display_image.setPixmap(self.storeImage) if self.storeText: self.display_text.setPixmap(self.storeText) - #self.display_alert.setPixmap(self.transparent) self.storeImage = None self.store = None Receiver.send_message(u'maindisplay_active') @@ -288,18 +290,18 @@ class MainDisplay(DisplayWidget): frame, self.screen[u'size'].width(), self.screen[u'size'].height()) self.display_image.setPixmap(QtGui.QPixmap.fromImage(frame)) - def setAlertSize(self, top, height): - log.debug(u'setAlertSize') -# self.display_alert.setGeometry( -# QtCore.QRect(0, top, -# self.screen[u'size'].width(), height)) - - def addAlertImage(self, frame, blank=False): + def addAlert(self, message, location): + """ + Places the Alert text on the display at the correct location + """ log.debug(u'addAlertImage') - if blank: - self.display_alert.setPixmap(self.transparent) + if location == 0: + self.alertText.setPos(0, 0) + elif location == 1: + self.alertText.setPos(0,self.size().height()/2) else: - self.display_alert.setPixmap(frame) + self.alertText.setPos(0,self.size().height() - 76) + self.alertText.setHtml(message) def frameView(self, frame, transition=False, display=True): """ @@ -333,7 +335,6 @@ class MainDisplay(DisplayWidget): self.display_frame = frame if not self.isVisible() and self.screens.display: self.setVisible(True) - #self.showFullScreen() else: self.storeText = QtGui.QPixmap.fromImage(frame[u'main']) diff --git a/openlp/plugins/alerts/lib/alertsmanager.py b/openlp/plugins/alerts/lib/alertsmanager.py index ecd41bbd1..2b1d7c265 100644 --- a/openlp/plugins/alerts/lib/alertsmanager.py +++ b/openlp/plugins/alerts/lib/alertsmanager.py @@ -31,6 +31,15 @@ from openlp.core.lib import Receiver, translate log = logging.getLogger(__name__) +HTMLCODE = u""" +

+ %s +

+""" + class AlertsManager(QtCore.QObject): """ AlertsTab is the Alerts settings tab in the settings dialog. @@ -47,28 +56,6 @@ class AlertsManager(QtCore.QObject): QtCore.SIGNAL(u'maindisplay_active'), self.generateAlert) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'alerts_text'), self.onAlertText) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'config_screen_changed'), self.screenChanged) - - def screenChanged(self): - log.debug(u'screen changed') - self.alertTab = self.parent.alertsTab - self.screen = self.parent.maindisplay.screens.current - self.font = QtGui.QFont() - self.font.setFamily(self.alertTab.font_face) - self.font.setBold(True) - self.font.setPointSize(self.alertTab.font_size) - self.metrics = QtGui.QFontMetrics(self.font) - self.alertHeight = self.metrics.height() + 4 - if self.alertTab.location == 0: - self.alertScreenPosition = 0 - else: - self.alertScreenPosition = self.screen[u'size'].height() \ - - self.alertHeight - self.alertHeight = self.screen[u'size'].height() \ - - self.alertScreenPosition - self.parent.maindisplay.setAlertSize(self.alertScreenPosition, - self.alertHeight) def onAlertText(self, message): """ @@ -88,8 +75,6 @@ class AlertsManager(QtCore.QObject): display text """ log.debug(u'display alert called %s' % text) - if not self.screen: - self.screenChanged() self.alertList.append(text) if self.timer_id != 0: Receiver.send_message(u'maindisplay_status_text', @@ -105,24 +90,9 @@ class AlertsManager(QtCore.QObject): return text = self.alertList.pop(0) alertTab = self.parent.alertsTab - alertframe = \ - QtGui.QPixmap(self.screen[u'size'].width(), self.alertHeight) - alertframe.fill(QtCore.Qt.transparent) - painter = QtGui.QPainter(alertframe) - painter.fillRect(alertframe.rect(), QtCore.Qt.transparent) - painter.setRenderHint(QtGui.QPainter.Antialiasing) - painter.fillRect( - QtCore.QRect( - 0, 0, alertframe.rect().width(), - alertframe.rect().height()), - QtGui.QColor(self.alertTab.bg_color)) - painter.setFont(self.font) - painter.setPen(QtGui.QColor(self.alertTab.font_color)) - x, y = (0, 2) - painter.drawText( - x, y + self.metrics.height() - self.metrics.descent() - 1, text) - painter.end() - self.parent.maindisplay.addAlertImage(alertframe) + text = HTMLCODE % (alertTab.font_color, alertTab.bg_color, + alertTab.font_face, alertTab.font_size, text) + self.parent.preview_controller.parent.displayManager.addAlert(text, alertTab.location) # check to see if we have a timer running if self.timer_id == 0: self.timer_id = self.startTimer(int(alertTab.timeout) * 1000) @@ -130,7 +100,7 @@ class AlertsManager(QtCore.QObject): def timerEvent(self, event): log.debug(u'timer event') if event.timerId() == self.timer_id: - self.parent.maindisplay.addAlertImage(None, True) + self.parent.preview_controller.parent.displayManager.addAlert(u'', self.alertTab.location) self.killTimer(self.timer_id) self.timer_id = 0 self.generateAlert() diff --git a/openlp/plugins/alerts/lib/alertstab.py b/openlp/plugins/alerts/lib/alertstab.py index 31a9f7a3e..e03bbfabe 100644 --- a/openlp/plugins/alerts/lib/alertstab.py +++ b/openlp/plugins/alerts/lib/alertstab.py @@ -128,6 +128,7 @@ class AlertsTab(SettingsTab): self.LocationComboBox = QtGui.QComboBox(self.LocationWidget) self.LocationComboBox.addItem(QtCore.QString()) self.LocationComboBox.addItem(QtCore.QString()) + self.LocationComboBox.addItem(QtCore.QString()) self.LocationComboBox.setObjectName(u'LocationComboBox') self.LocationLayout.addWidget(self.LocationComboBox) self.LocationSpacer = QtGui.QSpacerItem(147, 20, @@ -208,9 +209,11 @@ class AlertsTab(SettingsTab): translate('AlertsPlugin.AlertsTab', 'Preview')) self.FontPreview.setText( translate('AlertsPlugin.AlertsTab', 'openlp.org')) - self.LocationComboBox.setItemText(0, + self.LocationComboBox.setItemText(0, translate('AlertsPlugin.AlertsTab', 'Top')) - self.LocationComboBox.setItemText(1, + self.LocationComboBox.setItemText(1, + translate('AlertsPlugin.AlertsTab', 'Middle')) + self.LocationComboBox.setItemText(2, translate('AlertsPlugin.AlertsTab', 'Bottom')) def onBackgroundColorButtonClicked(self): @@ -295,4 +298,4 @@ class AlertsTab(SettingsTab): font.setPointSize(self.font_size) self.FontPreview.setFont(font) self.FontPreview.setStyleSheet(u'background-color: %s; color: %s' % - (self.bg_color, self.font_color)) \ No newline at end of file + (self.bg_color, self.font_color)) From d4b70b34e76b1868b997082de685433779735061 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Sat, 26 Jun 2010 12:16:59 +0100 Subject: [PATCH 61/83] sofimport error trap if ooo not installed --- openlp/plugins/songs/lib/sofimport.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/songs/lib/sofimport.py b/openlp/plugins/songs/lib/sofimport.py index 8ba5c31cf..da56580aa 100644 --- a/openlp/plugins/songs/lib/sofimport.py +++ b/openlp/plugins/songs/lib/sofimport.py @@ -42,9 +42,14 @@ if os.name == u'nt': PAGE_AFTER = 5 PAGE_BOTH = 6 else: - 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 + 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 + except ImportError: + pass + class SofImport(OooImport): """ From 4b38c22d304f04683798936c2d48c39529cd3987 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 26 Jun 2010 15:13:10 +0100 Subject: [PATCH 62/83] Alerts now work and more hiding cleanups --- openlp/core/ui/maindisplay.py | 67 ++++++++++++---------- openlp/core/ui/slidecontroller.py | 38 +++++------- openlp/plugins/alerts/lib/alertsmanager.py | 13 ++++- 3 files changed, 65 insertions(+), 53 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 981647846..65b850eae 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -47,11 +47,31 @@ class DisplayManager(QtGui.QWidget): self.videoDisplay = VideoDisplay(self, screens) self.audioPlayer = AudioPlayer(self) self.mainDisplay = MainDisplay(self, screens) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'maindisplay_hide'), self.hideDisplay) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'maindisplay_show'), self.showDisplay) +# QtCore.QObject.connect(Receiver.get_receiver(), +# QtCore.SIGNAL(u'videodisplay_start'), self.hideDisplayForVideo) def setup(self): self.videoDisplay.setup() self.mainDisplay.setup() + def hideDisplay(self, message): + """ + Hide the output displays + """ + self.videoDisplay.mediaHide(message) + self.mainDisplay.hideDisplay(message) + + def showDisplay(self, message): + """ + Hide the output displays + """ + self.videoDisplay.mediaShow(message) + self.mainDisplay.showDisplay(message) + def addAlert(self, alertMessage, location): """ Handles the add Alert Message to the Displays @@ -145,14 +165,8 @@ class MainDisplay(DisplayWidget): self.primary = True self.blankFrame = None self.frame = None - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'videodisplay_start'), self.hideDisplayForVideo) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'maindisplay_hide'), self.hideDisplay) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'maindisplay_show'), self.showDisplay) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'videodisplay_background'), self.hideDisplayForVideo) + #Hide desktop for now untill we know where to put it + #and what size it should be. self.setVisible(False) def setup(self): @@ -240,11 +254,11 @@ class MainDisplay(DisplayWidget): else: self.setVisible(True) - def hideDisplayForVideo(self): - """ - Hides the main display if for the video to be played - """ - self.hideDisplay(HideMode.Screen) +# def hideDisplayForVideo(self): +# """ +# Hides the main display if for the video to be played +# """ +# self.hideDisplay(HideMode.Screen) def hideDisplay(self, mode=HideMode.Screen): """ @@ -252,8 +266,6 @@ class MainDisplay(DisplayWidget): Store the images so they can be replaced when required """ log.debug(u'hideDisplay mode = %d', mode) - self.storeImage = QtGui.QPixmap(self.display_image.pixmap()) - self.storeText = QtGui.QPixmap(self.display_text.pixmap()) #self.display_text.setPixmap(self.transparent) if mode == HideMode.Screen: #self.display_image.setPixmap(self.transparent) @@ -269,19 +281,14 @@ class MainDisplay(DisplayWidget): self.display_blank.setPixmap( QtGui.QPixmap.fromImage(self.blankFrame)) - def showDisplay(self): + def showDisplay(self, message=u''): """ Show the stored layers so the screen reappears as it was originally. Make the stored images None to release memory. """ log.debug(u'showDisplay') - if self.storeImage: - self.display_image.setPixmap(self.storeImage) - if self.storeText: - self.display_text.setPixmap(self.storeText) - self.storeImage = None - self.store = None + self.display_blank.setPixmap(self.transparent) Receiver.send_message(u'maindisplay_active') def addImageWithText(self, frame): @@ -293,6 +300,11 @@ class MainDisplay(DisplayWidget): def addAlert(self, message, location): """ Places the Alert text on the display at the correct location + ``messgae`` + Text to be displayed + ``location`` + Where on the screen the text should be. From the AlertTab + Combo box. """ log.debug(u'addAlertImage') if location == 0: @@ -309,6 +321,8 @@ class MainDisplay(DisplayWidget): if the alert is in progress the alert is added on top ``frame`` Image frame to be rendered + ``transition`` + Are transitions required. """ log.debug(u'frameView %d' % display) if display: @@ -374,11 +388,6 @@ class VideoDisplay(Phonon.VideoWidget): except AttributeError: pass self.setWindowFlags(flags) - - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'maindisplay_hide'), self.mediaHide) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'maindisplay_show'), self.mediaShow) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'videodisplay_start'), self.onMediaQueue) QtCore.QObject.connect(Receiver.get_receiver(), @@ -501,7 +510,7 @@ class VideoDisplay(Phonon.VideoWidget): self.mediaObject.clearQueue() self.setVisible(False) - def mediaHide(self): + def mediaHide(self, message=u''): """ Hide the video display """ @@ -509,7 +518,7 @@ class VideoDisplay(Phonon.VideoWidget): self.hidden = True self.setVisible(False) - def mediaShow(self): + def mediaShow(self, message=''): """ Show the video disaply if it was already hidden """ diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index bfb5e291e..72a12aced 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -207,10 +207,10 @@ class SlideController(QtGui.QWidget): QtCore.QObject.connect(self.BlankScreen, QtCore.SIGNAL("triggered(bool)"), self.onBlankDisplay) self.ThemeScreen = QtGui.QAction(QtGui.QIcon(u':/slides/slide_theme.png'), u'Blank to Theme', self.HideMenu) self.ThemeScreen.setCheckable(True) - QtCore.QObject.connect(self.BlankScreen, QtCore.SIGNAL("triggered(bool)"), self.onThemeDisplay) + QtCore.QObject.connect(self.ThemeScreen, QtCore.SIGNAL("triggered(bool)"), self.onThemeDisplay) self.DesktopScreen = QtGui.QAction(QtGui.QIcon(u':/slides/slide_desktop.png'), u'Show Desktop', self.HideMenu) self.DesktopScreen.setCheckable(True) - QtCore.QObject.connect(self.BlankScreen, QtCore.SIGNAL("triggered(bool)"), self.onHideDisplay) + QtCore.QObject.connect(self.DesktopScreen, QtCore.SIGNAL("triggered(bool)"), self.onHideDisplay) self.HideMenu.setDefaultAction(self.BlankScreen) self.HideMenu.menu().addAction(self.BlankScreen) self.HideMenu.menu().addAction(self.ThemeScreen) @@ -655,7 +655,7 @@ class SlideController(QtGui.QWidget): """ log.debug(u'mainDisplaySetBackground') if not self.mainDisplay.primary: - self.blankButton.setChecked(True) + self.onBlankDisplay(True) def onSlideBlank(self): """ @@ -673,64 +673,55 @@ class SlideController(QtGui.QWidget): """ Handle the blank screen button actions """ - log.debug(u'onBlankDisplay %d' % checked) + log.debug(u'onBlankDisplay %s' % checked) self.HideMenu.setDefaultAction(self.BlankScreen) - self.BlankScreen.setCheckable(True) - self.BlankScreen.setChecked(True) + self.BlankScreen.setChecked(checked) self.ThemeScreen.setChecked(False) self.DesktopScreen.setChecked(False) - self.canDisplay = not checked QtCore.QSettings().setValue( self.parent.generalSettingsSection + u'/screen blank', QtCore.QVariant(checked)) if checked: Receiver.send_message(u'maindisplay_hide', HideMode.Blank) - self.blankPlugin(True) else: Receiver.send_message(u'maindisplay_show') - self.blankPlugin(False) + self.blankPlugin(checked) def onThemeDisplay(self, checked): """ Handle the Theme screen button """ - log.debug(u'onThemeDisplay %d' % checked) + log.debug(u'onThemeDisplay %s' % checked) self.HideMenu.setDefaultAction(self.ThemeScreen) - self.ThemeScreen.setCheckable(True) self.BlankScreen.setChecked(False) - self.ThemeScreen.setChecked(True) + self.ThemeScreen.setChecked(checked) self.DesktopScreen.setChecked(False) - self.canDisplay = False if checked: Receiver.send_message(u'maindisplay_hide', HideMode.Theme) - self.blankPlugin(True) else: Receiver.send_message(u'maindisplay_show') - self.blankPlugin(False) + self.blankPlugin(checked) def onHideDisplay(self, checked): """ Handle the Hide screen button """ - log.debug(u'onHideDisplay %d' % checked) + log.debug(u'onHideDisplay %s' % checked) self.HideMenu.setDefaultAction(self.DesktopScreen) - self.DesktopScreen.setCheckable(True) self.BlankScreen.setChecked(False) self.ThemeScreen.setChecked(False) - self.DesktopScreen.setChecked(True) - self.canDisplay = False + self.DesktopScreen.setChecked(checked) if checked: Receiver.send_message(u'maindisplay_hide', HideMode.Screen) - self.hidePlugin(True) else: Receiver.send_message(u'maindisplay_show') - self.hidePlugin(False) + self.hidePlugin(checked) def blankPlugin(self, blank): """ Blank the display screen within a plugin if required. """ - log.debug(u'blankPlugin %d ', blank) + log.debug(u'blankPlugin %s ', blank) if self.serviceItem is not None: if blank: Receiver.send_message(u'%s_blank' @@ -743,8 +734,9 @@ class SlideController(QtGui.QWidget): def hidePlugin(self, hide): """ - Blank the display screen. + 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'%s_hide' diff --git a/openlp/plugins/alerts/lib/alertsmanager.py b/openlp/plugins/alerts/lib/alertsmanager.py index 2b1d7c265..10565a3d1 100644 --- a/openlp/plugins/alerts/lib/alertsmanager.py +++ b/openlp/plugins/alerts/lib/alertsmanager.py @@ -85,6 +85,9 @@ class AlertsManager(QtCore.QObject): self.generateAlert() def generateAlert(self): + """ + Format and request the Alert and start the timer + """ log.debug(u'Generate Alert called') if len(self.alertList) == 0: return @@ -98,9 +101,17 @@ class AlertsManager(QtCore.QObject): self.timer_id = self.startTimer(int(alertTab.timeout) * 1000) def timerEvent(self, event): + """ + Time has finished so if our time then request the next Alert + if there is one and reset the timer. + ``event`` + the QT event that has been triggered. + + """ log.debug(u'timer event') + alertTab = self.parent.alertsTab if event.timerId() == self.timer_id: - self.parent.preview_controller.parent.displayManager.addAlert(u'', self.alertTab.location) + self.parent.preview_controller.parent.displayManager.addAlert(u'', alertTab.location) self.killTimer(self.timer_id) self.timer_id = 0 self.generateAlert() From 696c413ceed630cd1c67713c1ecb42d1fa958bcb Mon Sep 17 00:00:00 2001 From: andreas Date: Sat, 26 Jun 2010 18:08:38 +0200 Subject: [PATCH 63/83] Improved delete button behaviour --- openlp/core/ui/serviceitemeditform.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/serviceitemeditform.py b/openlp/core/ui/serviceitemeditform.py index 4355ab797..098701ef1 100644 --- a/openlp/core/ui/serviceitemeditform.py +++ b/openlp/core/ui/serviceitemeditform.py @@ -88,9 +88,13 @@ class ServiceItemEditForm(QtGui.QDialog, Ui_ServiceItemEditDialog): """ items = self.listWidget.selectedItems() for item in items: - row = self.listWidget.row(item) + row = self.listWidget.row(item) self.itemList.remove(self.itemList[row]) self.loadData() + if row == self.listWidget.count(): + self.listWidget.setCurrentRow(row - 1) + else: + self.listWidget.setCurrentRow(row) def onItemUp(self): """ From 9c4f565776e5ec5fd2382573f2563250051e122f Mon Sep 17 00:00:00 2001 From: andreas Date: Sat, 26 Jun 2010 18:13:52 +0200 Subject: [PATCH 64/83] fixed double spaces --- openlp/core/ui/serviceitemeditform.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/core/ui/serviceitemeditform.py b/openlp/core/ui/serviceitemeditform.py index 098701ef1..6a95e875e 100644 --- a/openlp/core/ui/serviceitemeditform.py +++ b/openlp/core/ui/serviceitemeditform.py @@ -102,7 +102,7 @@ class ServiceItemEditForm(QtGui.QDialog, Ui_ServiceItemEditDialog): """ items = self.listWidget.selectedItems() for item in items: - row = self.listWidget.row(item) + row = self.listWidget.row(item) if row > 0: temp = self.itemList[row] self.itemList.remove(self.itemList[row]) @@ -116,7 +116,7 @@ class ServiceItemEditForm(QtGui.QDialog, Ui_ServiceItemEditDialog): """ items = self.listWidget.selectedItems() for item in items: - row = self.listWidget.row(item) + row = self.listWidget.row(item) if row < len(self.itemList) and row is not -1: temp = self.itemList[row] self.itemList.remove(self.itemList[row]) From 7cf31532b84feb51a15c3d88c57342f1d54cf8c5 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Sat, 26 Jun 2010 21:34:26 +0100 Subject: [PATCH 65/83] Remove error trace if no impress --- .../presentations/lib/impresscontroller.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index 52de42ca7..4cbadc9dd 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -42,9 +42,13 @@ from openlp.core.lib import resize_image if os.name == u'nt': from win32com.client import Dispatch else: - import uno - from com.sun.star.beans import PropertyValue - + try: + import uno + from com.sun.star.beans import PropertyValue + uno_available = True + except ImportError: + uno_available = False + from PyQt4 import QtCore from presentationcontroller import PresentationController, PresentationDocument @@ -78,9 +82,7 @@ class ImpressController(PresentationController): if os.name == u'nt': return self.get_com_servicemanager() is not None else: - # If not windows, and we've got this far then probably - # installed else the import uno would likely have failed - return True + return uno_available def start_process(self): """ @@ -322,7 +324,10 @@ class ImpressDocument(PresentationDocument): Returns true if screen is blank """ log.debug(u'is blank OpenOffice') - return self.control.isPaused() + if self.control: + return self.control.isPaused() + else: + return False def stop_presentation(self): log.debug(u'stop presentation OpenOffice') From 5ba7febc3b90358d89c338331e285b5ed382a161 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 27 Jun 2010 08:19:34 +0100 Subject: [PATCH 66/83] Video cleanups for display --- openlp/core/ui/maindisplay.py | 45 +++++++++++++++---------------- openlp/core/ui/slidecontroller.py | 3 +-- 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 65b850eae..21cec593a 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -51,8 +51,10 @@ class DisplayManager(QtGui.QWidget): QtCore.SIGNAL(u'maindisplay_hide'), self.hideDisplay) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'maindisplay_show'), self.showDisplay) -# QtCore.QObject.connect(Receiver.get_receiver(), -# QtCore.SIGNAL(u'videodisplay_start'), self.hideDisplayForVideo) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'videodisplay_start'), self.onStartVideo) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'videodisplay_stop'), self.onStopVideo) def setup(self): self.videoDisplay.setup() @@ -78,6 +80,22 @@ class DisplayManager(QtGui.QWidget): """ self.mainDisplay.addAlert(alertMessage, location) + def onStartVideo(self, item): + """ + Handles the Starting of a Video and Display Management + """ + self.videoDisplay.setVisible(True) + self.mainDisplay.setVisible(False) + self.videoDisplay.onMediaQueue(item) + + def onStopVideo(self): + """ + Handles the Stopping of a Video and Display Management + """ + self.mainDisplay.setVisible(True) + self.videoDisplay.setVisible(False) + self.videoDisplay.onMediaStop() + def close(self): """ Handles the closure of the displays @@ -388,14 +406,10 @@ class VideoDisplay(Phonon.VideoWidget): except AttributeError: pass self.setWindowFlags(flags) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'videodisplay_start'), self.onMediaQueue) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'videodisplay_play'), self.onMediaPlay) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'videodisplay_pause'), self.onMediaPause) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'videodisplay_stop'), self.onMediaStop) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'videodisplay_background'), self.onMediaBackground) QtCore.QObject.connect(Receiver.get_receiver(), @@ -462,8 +476,8 @@ class VideoDisplay(Phonon.VideoWidget): Set up a video to play from the serviceitem. """ log.debug(u'VideoDisplay Queue new media message %s' % message) - file = os.path.join(message[0].get_frame_path(), - message[0].get_frame_title()) + file = os.path.join(message.get_frame_path(), + message.get_frame_title()) self.mediaObject.setCurrentSource(Phonon.MediaSource(file)) self._play() @@ -551,21 +565,6 @@ class AudioPlayer(QtCore.QObject): self.audioObject = Phonon.AudioOutput(Phonon.VideoCategory) Phonon.createPath(self.mediaObject, self.audioObject) -# QtCore.QObject.connect(Receiver.get_receiver(), -# QtCore.SIGNAL(u'videodisplay_start'), self.onMediaQueue) -# QtCore.QObject.connect(Receiver.get_receiver(), -# QtCore.SIGNAL(u'videodisplay_play'), self.onMediaPlay) -# QtCore.QObject.connect(Receiver.get_receiver(), -# QtCore.SIGNAL(u'videodisplay_pause'), self.onMediaPause) -# QtCore.QObject.connect(Receiver.get_receiver(), -# QtCore.SIGNAL(u'videodisplay_stop'), self.onMediaStop) -# QtCore.QObject.connect(Receiver.get_receiver(), -# QtCore.SIGNAL(u'videodisplay_background'), self.onMediaBackground) -# QtCore.QObject.connect(Receiver.get_receiver(), -# QtCore.SIGNAL(u'config_updated'), self.setup) -# QtCore.QObject.connect(self.mediaObject, -# QtCore.SIGNAL(u'finished()'), self.onMediaBackground) - def setup(self): """ Sets up the Audio Player for use diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 72a12aced..2a92cd20d 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -923,8 +923,7 @@ class SlideController(QtGui.QWidget): """ log.debug(u'SlideController onMediaStart') if self.isLive: - Receiver.send_message(u'videodisplay_start', - [item, self.blankButton.isChecked()]) + Receiver.send_message(u'videodisplay_start', item) else: self.mediaObject.stop() self.mediaObject.clearQueue() From b188592c327dee9c9f22c9785682fbabec7e3f32 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 27 Jun 2010 14:49:01 +0200 Subject: [PATCH 67/83] Fixed up problems with version checking. --- openlp/.version | 2 +- openlp/core/ui/mainwindow.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/openlp/.version b/openlp/.version index 2007f03af..8fdcf3869 100644 --- a/openlp/.version +++ b/openlp/.version @@ -1 +1 @@ -1.9.1-bzr821 +1.9.2 diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 0f21b7307..7f1c0408b 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -63,7 +63,7 @@ class VersionThread(QtCore.QThread): self.parent = parent self.app_version = app_version self.version_splitter = re.compile( - r'([0-9]+).([0-9]+).([0-9]+)(?:-bzr([0-9]+))') + r'([0-9]+).([0-9]+).([0-9]+)(?:-bzr([0-9]+))?') def run(self): """ @@ -79,14 +79,14 @@ class VersionThread(QtCore.QThread): remote_version[u'major'] = int(match.group(1)) remote_version[u'minor'] = int(match.group(2)) remote_version[u'release'] = int(match.group(3)) - if len(match.groups()) > 3: + if len(match.groups()) > 3 and match.group(4): remote_version[u'revision'] = int(match.group(4)) match = self.version_splitter.match(self.app_version[u'full']) if match: local_version[u'major'] = int(match.group(1)) local_version[u'minor'] = int(match.group(2)) local_version[u'release'] = int(match.group(3)) - if len(match.groups()) > 3: + if len(match.groups()) > 3 and match.group(4): local_version[u'revision'] = int(match.group(4)) if remote_version[u'major'] > local_version[u'major'] or \ remote_version[u'minor'] > local_version[u'minor'] or \ From 9a2b05f830fcad1135c298288466c7b065166223 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Sun, 27 Jun 2010 23:34:33 +0100 Subject: [PATCH 68/83] Prevent crash if OpenOffice not installed on Windows --- openlp/plugins/presentations/lib/impresscontroller.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index 4cbadc9dd..c4250f27a 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -41,6 +41,7 @@ from openlp.core.lib import resize_image if os.name == u'nt': from win32com.client import Dispatch + import pywintypes else: try: import uno From ad9328a30f84c79e89946b2352a35d5aec89ae87 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Mon, 28 Jun 2010 12:24:18 +0100 Subject: [PATCH 69/83] RFC: Fix couple of leftovers --- openlp/plugins/songs/forms/editsongform.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index ace2d4f24..7a103931a 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -290,7 +290,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): QtGui.QMessageBox.Yes) == QtGui.QMessageBox.Yes: author = Author.populate(first_name=text.rsplit(u' ', 1)[0], last_name=text.rsplit(u' ', 1)[1], display_name=text) - self.songmanager.save_author(author) + self.songmanager.insert_object(author) self.song.authors.append(author) author_item = QtGui.QListWidgetItem( unicode(author.display_name)) @@ -342,7 +342,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.Yes) == QtGui.QMessageBox.Yes: topic = Topic.populate(name=text) - self.songmanager.save_topic(topic) + self.songmanager.insert_object(topic) self.song.topics.append(topic) topic_item = QtGui.QListWidgetItem(unicode(topic.name)) topic_item.setData(QtCore.Qt.UserRole, @@ -392,7 +392,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.Yes) == QtGui.QMessageBox.Yes: book = Book.populate(name=text) - self.songmanager.save_book(book) + self.songmanager.insert_object(book) self.song.book = book self.loadBooks() else: From f0896422d43455967e5a8598e59c6cf0322d0a5f Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Mon, 28 Jun 2010 13:43:14 +0100 Subject: [PATCH 70/83] Fix off-by-one in song saving --- 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 cbb79bff4..8bd839e3f 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -396,7 +396,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.loadBooks() else: return - elif item > 1: + elif item >= 1: item = int(self.SongbookCombo.currentIndex()) self.song.song_book_id = \ (self.SongbookCombo.itemData(item)).toInt()[0] From 3be57e57e7b5e42f55cb46c587253e8354fa1265 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Mon, 28 Jun 2010 14:38:29 +0100 Subject: [PATCH 71/83] Rename method to save_object() --- openlp/core/lib/db.py | 2 +- openlp/plugins/alerts/forms/alertform.py | 4 ++-- openlp/plugins/bibles/lib/db.py | 10 +++++----- openlp/plugins/custom/forms/editcustomform.py | 2 +- openlp/plugins/songs/forms/editsongform.py | 8 ++++---- openlp/plugins/songs/forms/songmaintenanceform.py | 12 ++++++------ openlp/plugins/songs/lib/songimport.py | 8 ++++---- openlp/plugins/songusage/songusageplugin.py | 4 ++-- 8 files changed, 25 insertions(+), 25 deletions(-) diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 19cd3eadf..b000fe918 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -135,7 +135,7 @@ class Manager(object): settings.endGroup() self.session = init_schema(self.db_url) - def insert_object(self, object_instance): + def save_object(self, object_instance): """ Save an object to the database diff --git a/openlp/plugins/alerts/forms/alertform.py b/openlp/plugins/alerts/forms/alertform.py index 446f9698f..bf75f9ced 100644 --- a/openlp/plugins/alerts/forms/alertform.py +++ b/openlp/plugins/alerts/forms/alertform.py @@ -98,7 +98,7 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog): else: alert = AlertItem() alert.text = unicode(self.AlertTextEdit.text()) - self.manager.insert_object(alert) + self.manager.save_object(alert) self.AlertTextEdit.setText(u'') self.loadList() @@ -109,7 +109,7 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog): if self.item_id: alert = self.manager.get_object(AlertItem, self.item_id) alert.text = unicode(self.AlertTextEdit.text()) - self.manager.insert_object(alert) + self.manager.save_object(alert) self.item_id = None self.loadList() else: diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index d2a62ec59..c799d71dd 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -200,9 +200,9 @@ class BibleDB(QtCore.QObject, Manager): """ self.wizard = wizard self.create_meta(u'dbversion', u'2') - self.insert_object(Testament.populate(name=u'Old Testament')) - self.insert_object(Testament.populate(name=u'New Testament')) - self.insert_object(Testament.populate(name=u'Apocrypha')) + 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')) return self.name def create_book(self, name, abbrev, testament=1): @@ -221,7 +221,7 @@ class BibleDB(QtCore.QObject, Manager): log.debug(u'create_book %s,%s', name, abbrev) book = Book.populate(name=name, abbreviation=abbrev, testament_id=testament) - self.insert_object(book) + self.save_object(book) return book def create_chapter(self, book_id, chapter, textlist): @@ -289,7 +289,7 @@ class BibleDB(QtCore.QObject, Manager): The value for this instance """ log.debug(u'save_meta %s/%s', key, value) - self.insert_object(BibleMeta.populate(key=key, value=value)) + self.save_object(BibleMeta.populate(key=key, value=value)) def get_book(self, book): """ diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index c3d25eabb..a266c44c5 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -166,7 +166,7 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog): u'utf-8') self.customSlide.theme_name = unicode(self.ThemeComboBox.currentText(), u'utf-8') - return self.custommanager.insert_object(self.customSlide) + return self.custommanager.save_object(self.customSlide) def onUpButtonPressed(self): selectedRow = self.VerseListView.currentRow() diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 7a103931a..c122c622c 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -290,7 +290,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): QtGui.QMessageBox.Yes) == QtGui.QMessageBox.Yes: author = Author.populate(first_name=text.rsplit(u' ', 1)[0], last_name=text.rsplit(u' ', 1)[1], display_name=text) - self.songmanager.insert_object(author) + self.songmanager.save_object(author) self.song.authors.append(author) author_item = QtGui.QListWidgetItem( unicode(author.display_name)) @@ -342,7 +342,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.Yes) == QtGui.QMessageBox.Yes: topic = Topic.populate(name=text) - self.songmanager.insert_object(topic) + self.songmanager.save_object(topic) self.song.topics.append(topic) topic_item = QtGui.QListWidgetItem(unicode(topic.name)) topic_item.setData(QtCore.Qt.UserRole, @@ -392,7 +392,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.Yes) == QtGui.QMessageBox.Yes: book = Book.populate(name=text) - self.songmanager.insert_object(book) + self.songmanager.save_object(book) self.song.book = book self.loadBooks() else: @@ -631,7 +631,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): if self._validate_song(): self.processLyrics() self.processTitle() - self.songmanager.insert_object(self.song) + self.songmanager.save_object(self.song) return True return False diff --git a/openlp/plugins/songs/forms/songmaintenanceform.py b/openlp/plugins/songs/forms/songmaintenanceform.py index ca56a5492..54a8d539f 100644 --- a/openlp/plugins/songs/forms/songmaintenanceform.py +++ b/openlp/plugins/songs/forms/songmaintenanceform.py @@ -131,7 +131,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): first_name=unicode(self.authorform.FirstNameEdit.text()), last_name=unicode(self.authorform.LastNameEdit.text()), display_name=unicode(self.authorform.DisplayEdit.text())) - if self.songmanager.insert_object(author): + if self.songmanager.save_object(author): self.resetAuthors() else: QtGui.QMessageBox.critical( @@ -143,7 +143,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): def onTopicAddButtonClick(self): if self.topicform.exec_(): topic = Topic.populate(name=unicode(self.topicform.NameEdit.text())) - if self.songmanager.insert_object(topic): + if self.songmanager.save_object(topic): self.resetTopics() else: QtGui.QMessageBox.critical( @@ -157,7 +157,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): book = Book.populate( name=unicode(self.bookform.NameEdit.text()), publisher=unicode(self.bookform.PublisherEdit.text())) - if self.songmanager.insert_object(book): + if self.songmanager.save_object(book): self.resetBooks() else: QtGui.QMessageBox.critical( @@ -187,7 +187,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): author.last_name = unicode(self.authorform.LastNameEdit.text()) author.display_name = unicode( self.authorform.DisplayEdit.text()) - if self.songmanager.insert_object(author): + if self.songmanager.save_object(author): self.resetAuthors() else: QtGui.QMessageBox.critical( @@ -203,7 +203,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): self.topicform.NameEdit.setText(topic.name) if self.topicform.exec_(False): topic.name = unicode(self.topicform.NameEdit.text()) - if self.songmanager.insert_object(topic): + if self.songmanager.save_object(topic): self.resetTopics() else: QtGui.QMessageBox.critical( @@ -221,7 +221,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): if self.bookform.exec_(False): book.name = unicode(self.bookform.NameEdit.text()) book.publisher = unicode(self.bookform.PublisherEdit.text()) - if self.songmanager.insert_object(book): + if self.songmanager.save_object(book): self.resetBooks() else: QtGui.QMessageBox.critical( diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index bc77e7f9b..08855f01a 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -309,7 +309,7 @@ class SongImport(object): author.display_name = authortext author.last_name = authortext.split(u' ')[-1] author.first_name = u' '.join(authortext.split(u' ')[:-1]) - self.manager.insert_object(author) + self.manager.save_object(author) song.authors.append(author) if self.song_book_name: filter_string = u'name=%s' % self.song_book_name @@ -318,7 +318,7 @@ class SongImport(object): song_book = Book() song_book.name = self.song_book_name song_book.publisher = self.song_book_pub - self.manager.insert_object(song_book) + self.manager.save_object(song_book) song.song_book_id = song_book.id for topictext in self.topics: filter_string = u'name=%s' % topictext @@ -326,9 +326,9 @@ class SongImport(object): if topic is None: topic = Topic() topic.name = topictext - self.manager.insert_object(topic) + self.manager.save_object(topic) song.topics.append(topictext) - self.manager.insert_object(song) + self.manager.save_object(song) def print_song(self): """ diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py index 179ff41af..06687acfe 100644 --- a/openlp/plugins/songusage/songusageplugin.py +++ b/openlp/plugins/songusage/songusageplugin.py @@ -148,7 +148,7 @@ class SongUsagePlugin(Plugin): song_usage_item.authors = u'' for author in audit[1]: song_usage_item.authors += author + u' ' - self.songusagemanager.insert_object(song_usage_item) + self.songusagemanager.save_object(song_usage_item) def onSongUsageDelete(self): self.SongUsagedeleteform.exec_() @@ -162,4 +162,4 @@ class SongUsagePlugin(Plugin): 'SongUsage Plugin
This plugin ' 'records the use of songs and when they have been used during ' 'a live service') - return about_text \ No newline at end of file + return about_text From 4f05a426272ad3c1bab95eeb0efff570dafa5da4 Mon Sep 17 00:00:00 2001 From: andreas Date: Mon, 28 Jun 2010 17:43:40 +0200 Subject: [PATCH 72/83] fixed bug #599066 --- openlp/plugins/images/lib/mediaitem.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 29985a9ed..fa3ba0eea 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -120,8 +120,12 @@ class ImageMediaItem(MediaManagerItem): if check_item_selected(self.ListView, translate('ImagePlugin.MediaItem', 'You must select an item to delete.')): items = self.ListView.selectedIndexes() + row_count = [] for item in items: - text = self.ListView.item(item.row()) + row_count.append(item.row()) + row_count.sort(reverse=True) + for item in row_count: + text = self.ListView.item(item) if text: try: os.remove(os.path.join(self.servicePath, @@ -129,7 +133,7 @@ class ImageMediaItem(MediaManagerItem): except OSError: #if not present do not worry pass - self.ListView.takeItem(item.row()) + self.ListView.takeItem(item) SettingsManager.set_list(self.settingsSection, self.settingsSection, self.getFileList()) From 5de4832ae7d047760bc07e6c918b2e23c3abaa6c Mon Sep 17 00:00:00 2001 From: andreas Date: Mon, 28 Jun 2010 18:23:59 +0200 Subject: [PATCH 73/83] changed the variable name --- openlp/plugins/images/lib/mediaitem.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index fa3ba0eea..5a8b1969e 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -120,11 +120,11 @@ class ImageMediaItem(MediaManagerItem): if check_item_selected(self.ListView, translate('ImagePlugin.MediaItem', 'You must select an item to delete.')): items = self.ListView.selectedIndexes() - row_count = [] + row_list = [] for item in items: - row_count.append(item.row()) - row_count.sort(reverse=True) - for item in row_count: + row_list.append(item.row()) + row_list.sort(reverse=True) + for item in row_list: text = self.ListView.item(item) if text: try: From eafdf71e5c45a3ae63c6dd8364094629edeb9caf Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Mon, 28 Jun 2010 17:48:21 +0100 Subject: [PATCH 74/83] Fix up screen blanking and videos --- openlp/core/ui/maindisplay.py | 56 +++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 21cec593a..632178f87 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -307,6 +307,7 @@ class MainDisplay(DisplayWidget): """ log.debug(u'showDisplay') self.display_blank.setPixmap(self.transparent) + #Trigger actions when display is active again Receiver.send_message(u'maindisplay_active') def addImageWithText(self, frame): @@ -394,28 +395,29 @@ class VideoDisplay(Phonon.VideoWidget): self.screens = screens self.hidden = False self.message = None + self.mediaActive = False self.mediaObject = Phonon.MediaObject() self.setAspectRatio(aspect) self.audioObject = Phonon.AudioOutput(Phonon.VideoCategory) Phonon.createPath(self.mediaObject, self) Phonon.createPath(self.mediaObject, self.audioObject) flags = QtCore.Qt.FramelessWindowHint | QtCore.Qt.Dialog -# # WindowsStaysOnBottomHint is not available in QT4.4 - try: - flags = flags | QtCore.Qt.WindowStaysOnBottomHint - except AttributeError: - pass +## # WindowsStaysOnBottomHint is not available in QT4.4 +# try: +# flags = flags | QtCore.Qt.WindowStaysOnBottomHint +# except AttributeError: +# pass self.setWindowFlags(flags) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'videodisplay_play'), self.onMediaPlay) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'videodisplay_pause'), self.onMediaPause) - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'videodisplay_background'), self.onMediaBackground) +# QtCore.QObject.connect(Receiver.get_receiver(), +# QtCore.SIGNAL(u'videodisplay_background'), self.onMediaBackground) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'config_updated'), self.setup) QtCore.QObject.connect(self.mediaObject, - QtCore.SIGNAL(u'finished()'), self.onMediaBackground) + QtCore.SIGNAL(u'finished()'), self.onMediaStop) self.setVisible(False) def keyPressEvent(self, event): @@ -454,22 +456,22 @@ class VideoDisplay(Phonon.VideoWidget): for pth in self.outputPaths(): disconnected = pth.disconnect() - def onMediaBackground(self, message=None): - """ - Play a video triggered from the video plugin with the - file name passed in on the event. - Also triggered from the Finish event so the video will loop - if it is triggered from the plugin - """ - log.debug(u'VideoDisplay Queue new media message %s' % message) - #If not file take the stored one - if not message: - message = self.message - # still no file name then stop as it was a normal video stopping - if message: - self.mediaObject.setCurrentSource(Phonon.MediaSource(message)) - self.message = message - self._play() +# def onMediaBackground(self, message=None): +# """ +# Play a video triggered from the video plugin with the +# file name passed in on the event. +# Also triggered from the Finish event so the video will loop +# if it is triggered from the plugin +# """ +# log.debug(u'VideoDisplay Queue new media message %s' % message) +# #If not file take the stored one +# if not message: +# message = self.message +# # still no file name then stop as it was a normal video stopping +# if message: +# self.mediaObject.setCurrentSource(Phonon.MediaSource(message)) +# self.message = message +# self._play() def onMediaQueue(self, message): """ @@ -479,6 +481,7 @@ class VideoDisplay(Phonon.VideoWidget): file = os.path.join(message.get_frame_path(), message.get_frame_title()) self.mediaObject.setCurrentSource(Phonon.MediaSource(file)) + self.mediaActive = True self._play() def onMediaPlay(self): @@ -497,7 +500,6 @@ class VideoDisplay(Phonon.VideoWidget): log.debug(u'VideoDisplay _play called') self.mediaObject.play() self.setVisible(True) - #self.showFullScreen() def onMediaPause(self): """ @@ -513,6 +515,7 @@ class VideoDisplay(Phonon.VideoWidget): """ log.debug(u'VideoDisplay Media stopped by user') self.message = None + self.mediaActive = False self.mediaObject.stop() self.onMediaFinish() @@ -538,7 +541,8 @@ class VideoDisplay(Phonon.VideoWidget): """ if self.hidden: self.hidden = False - self._play() + if self.mediaActive: + self._play() class AudioPlayer(QtCore.QObject): """ From fd09e3d5a0cf9881e08782852689773eb47dc235 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Mon, 28 Jun 2010 18:54:29 +0100 Subject: [PATCH 75/83] Tidy up loop icons --- openlp/core/ui/slidecontroller.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 2a92cd20d..69019a696 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -107,7 +107,6 @@ class SlideController(QtGui.QWidget): self.mainDisplay = self.parent.displayManager.mainDisplay self.loopList = [ u'Start Loop', - u'Stop Loop', u'Loop Separator', u'Image SpinBox' ] @@ -334,6 +333,7 @@ class SlideController(QtGui.QWidget): self.receiveSpinDelay) if isLive: self.Toolbar.makeWidgetsInvisible(self.loopList) + self.Toolbar.actions[u'Stop Loop'].setVisible(False) else: self.Toolbar.makeWidgetsInvisible(self.songEditList) self.Mediabar.setVisible(False) @@ -430,8 +430,8 @@ class SlideController(QtGui.QWidget): self.Mediabar.setVisible(False) self.Toolbar.makeWidgetsInvisible([u'Song Menu']) self.Toolbar.makeWidgetsInvisible(self.loopList) + self.Toolbar.actions[u'Stop Loop'].setVisible(False) if item.is_text(): - self.Toolbar.makeWidgetsInvisible(self.loopList) if QtCore.QSettings().value( self.parent.songsSettingsSection + u'/show songbar', QtCore.QVariant(True)).toBool() and len(self.slideList) > 0: @@ -884,6 +884,8 @@ 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): """ @@ -892,6 +894,8 @@ 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 timerEvent(self, event): """ From eccd2999ee3f97343d84d864513febcc4094927e Mon Sep 17 00:00:00 2001 From: andreas Date: Mon, 28 Jun 2010 20:20:05 +0200 Subject: [PATCH 76/83] started fixing deletion bug in media manager (custom still to be done) --- openlp/plugins/images/lib/mediaitem.py | 11 +++----- openlp/plugins/media/lib/mediaitem.py | 11 ++++---- openlp/plugins/presentations/lib/mediaitem.py | 28 +++++++++++-------- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 5a8b1969e..c08f530b0 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -119,13 +119,10 @@ class ImageMediaItem(MediaManagerItem): """ if check_item_selected(self.ListView, translate('ImagePlugin.MediaItem', 'You must select an item to delete.')): - items = self.ListView.selectedIndexes() - row_list = [] - for item in items: - row_list.append(item.row()) + row_list = [item.row() for item in self.ListView.selectedIndexes()] row_list.sort(reverse=True) - for item in row_list: - text = self.ListView.item(item) + for row in row_list: + text = self.ListView.item(row) if text: try: os.remove(os.path.join(self.servicePath, @@ -133,7 +130,7 @@ class ImageMediaItem(MediaManagerItem): except OSError: #if not present do not worry pass - self.ListView.takeItem(item) + self.ListView.takeItem(row) SettingsManager.set_list(self.settingsSection, self.settingsSection, self.getFileList()) diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index b6de22712..64882dd5a 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -143,11 +143,12 @@ class MediaMediaItem(MediaManagerItem): """ if check_item_selected(self.ListView, translate('MediaPlugin.MediaItem', 'You must select an item to delete.')): - item = self.ListView.currentItem() - row = self.ListView.row(item) - self.ListView.takeItem(row) - SettingsManager.set_list(self.settingsSection, - self.settingsSection, self.getFileList()) + row_list = [item.row() for item in self.ListView.selectedIndexes()] + row_list.sort(reverse=True) + for row in row_list: + self.ListView.takeItem(row) + SettingsManager.set_list(self.settingsSection, + self.settingsSection, self.getFileList()) def loadList(self, list): for file in list: diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index 384d28c4a..0651e429e 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -180,18 +180,22 @@ class PresentationMediaItem(MediaManagerItem): if check_item_selected(self.ListView, translate('PresentationPlugin.MediaItem', 'You must select an item to delete.')): - item = self.ListView.currentItem() - row = self.ListView.row(item) - self.ListView.takeItem(row) - SettingsManager.set_list(self.settingsSection, - self.settingsSection, self.getFileList()) - filepath = unicode(item.data(QtCore.Qt.UserRole).toString()) - #not sure of this has errors - #John please can you look at . - for cidx in self.controllers: - doc = self.controllers[cidx].add_doc(filepath) - doc.presentation_deleted() - doc.close_presentation() + items = self.ListView.selectedIndexes() + row_list = [item.row() for item in items] + row_list.sort(reverse=True) + for item in items: + filepath = unicode(item.data( + QtCore.Qt.UserRole).toString()) + #not sure of this has errors + #John please can you look at . + for cidx in self.controllers: + doc = self.controllers[cidx].add_doc(filepath) + doc.presentation_deleted() + doc.close_presentation() + for row in row_list: + self.ListView.takeItem(row) + SettingsManager.set_list(self.settingsSection, + self.settingsSection, self.getFileList()) def generateSlideData(self, service_item, item=None): items = self.ListView.selectedIndexes() From 51e07d66df9b232adca69c8f33847c6ce2816fca Mon Sep 17 00:00:00 2001 From: andreas Date: Mon, 28 Jun 2010 21:05:55 +0200 Subject: [PATCH 77/83] fixed deletion bug in media manager (custom, media, images, presentations) --- openlp/plugins/custom/lib/mediaitem.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index a4fb54932..d7bd36d7b 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -134,11 +134,14 @@ class CustomMediaItem(MediaManagerItem): if check_item_selected(self.ListView, translate('CustomPlugin.MediaItem', 'You must select an item to delete.')): - item = self.ListView.currentItem() - item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] - self.parent.custommanager.delete_custom(item_id) - row = self.ListView.row(item) - self.ListView.takeItem(row) + row_list = [item.row() for item in self.ListView.selectedIndexes()] + row_list.sort(reverse=True) + id_list = [(item.data(QtCore.Qt.UserRole)).toInt()[0] + for item in self.ListView.selectedIndexes()] + for id in id_list: + self.parent.custommanager.delete_custom(id) + for row in row_list: + self.ListView.takeItem(row) def generateSlideData(self, service_item, item=None): raw_slides = [] From 68a934de716f2f672b7332c9c26f55204b53bd9a Mon Sep 17 00:00:00 2001 From: andreas Date: Mon, 28 Jun 2010 22:00:35 +0200 Subject: [PATCH 78/83] - small fixes --- openlp/plugins/custom/lib/mediaitem.py | 5 ----- openlp/plugins/images/lib/mediaitem.py | 4 ++-- openlp/plugins/media/lib/mediaitem.py | 4 ++-- openlp/plugins/presentations/lib/mediaitem.py | 4 ++-- 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 1ff229e9d..f2ac04c1b 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -144,11 +144,6 @@ class CustomMediaItem(MediaManagerItem): self.parent.custommanager.delete_custom(id) for row in row_list: self.ListView.takeItem(row) - item = self.ListView.currentItem() - item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] - self.parent.custommanager.delete_object(CustomSlide, item_id) - row = self.ListView.row(item) - self.ListView.takeItem(row) def generateSlideData(self, service_item, item=None): raw_slides = [] diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index c08f530b0..bcc3a84c4 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -131,8 +131,8 @@ class ImageMediaItem(MediaManagerItem): #if not present do not worry pass self.ListView.takeItem(row) - SettingsManager.set_list(self.settingsSection, - self.settingsSection, self.getFileList()) + SettingsManager.set_list(self.settingsSection, + self.settingsSection, self.getFileList()) def loadList(self, list): for file in list: diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 64882dd5a..6cd7b175b 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -147,8 +147,8 @@ class MediaMediaItem(MediaManagerItem): row_list.sort(reverse=True) for row in row_list: self.ListView.takeItem(row) - SettingsManager.set_list(self.settingsSection, - self.settingsSection, self.getFileList()) + SettingsManager.set_list(self.settingsSection, + self.settingsSection, self.getFileList()) def loadList(self, list): for file in list: diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index 0651e429e..ee50dd556 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -194,8 +194,8 @@ class PresentationMediaItem(MediaManagerItem): doc.close_presentation() for row in row_list: self.ListView.takeItem(row) - SettingsManager.set_list(self.settingsSection, - self.settingsSection, self.getFileList()) + SettingsManager.set_list(self.settingsSection, + self.settingsSection, self.getFileList()) def generateSlideData(self, service_item, item=None): items = self.ListView.selectedIndexes() From 4a4da4ba2c0aa44fece27167341cf241d09a7b81 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Tue, 29 Jun 2010 08:07:03 +0100 Subject: [PATCH 79/83] Naming and docstrings --- openlp/core/theme/theme.py | 2 +- openlp/core/utils/languagemanager.py | 79 ++++++++++++++++++++-------- 2 files changed, 57 insertions(+), 24 deletions(-) diff --git a/openlp/core/theme/theme.py b/openlp/core/theme/theme.py index 2ea13d01b..6cddbcb45 100644 --- a/openlp/core/theme/theme.py +++ b/openlp/core/theme/theme.py @@ -168,7 +168,7 @@ class Theme(object): theme_strings.append(u'_%s_' % (getattr(self, key))) return u''.join(theme_strings) - def _set_from_XML(self, xml): + def _set_from_xml(self, xml): """ Set theme class attributes with data from XML diff --git a/openlp/core/utils/languagemanager.py b/openlp/core/utils/languagemanager.py index e556e7e7c..c0315559f 100644 --- a/openlp/core/utils/languagemanager.py +++ b/openlp/core/utils/languagemanager.py @@ -22,7 +22,10 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### - +""" +The :mod:`languagemanager` module provides all the translation settings and +language file loading for OpenLP. +""" import logging import os @@ -42,50 +45,74 @@ class LanguageManager(object): @staticmethod def get_translator(language): + """ + Set up a translator to use in this instance of OpenLP + + ``language`` + The language to load into the translator + """ if LanguageManager.AutoLanguage: language = QtCore.QLocale.system().name() lang_Path = AppLocation.get_directory(AppLocation.AppDir) lang_Path = os.path.join(lang_Path, u'resources', u'i18n') - appTranslator = QtCore.QTranslator() - if appTranslator.load("openlp_" + language, lang_Path): - return appTranslator + app_translator = QtCore.QTranslator() + if app_translator.load("openlp_" + language, lang_Path): + return app_translator @staticmethod def find_qm_files(): + """ + Find all available language files in this OpenLP install + """ trans_dir = AppLocation.get_directory(AppLocation.AppDir) trans_dir = QtCore.QDir(os.path.join(trans_dir, u'resources', u'i18n')) - fileNames = trans_dir.entryList(QtCore.QStringList("*.qm"), + file_names = trans_dir.entryList(QtCore.QStringList("*.qm"), QtCore.QDir.Files, QtCore.QDir.Name) - for name in fileNames: - fileNames.replaceInStrings(name, trans_dir.filePath(name)) - return fileNames + for name in file_names: + file_names.replaceInStrings(name, trans_dir.filePath(name)) + return file_names @staticmethod - def language_name(qmFile): + def language_name(qm_file): + """ + Load the language name from a language file + + ``qm_file`` + The file to obtain the name from + """ translator = QtCore.QTranslator() - translator.load(qmFile) + translator.load(qm_file) return translator.translate('MainWindow', 'English') @staticmethod def get_language(): + """ + Retrieve a saved language to use from settings + """ settings = QtCore.QSettings(u'OpenLP', u'OpenLP') language = unicode(settings.value( u'general/language', QtCore.QVariant(u'[en]')).toString()) log.info(u'Language file: \'%s\' Loaded from conf file' % language) - regEx = QtCore.QRegExp("^\[(.*)\]") - if regEx.exactMatch(language): + reg_ex = QtCore.QRegExp("^\[(.*)\]") + if reg_ex.exactMatch(language): LanguageManager.AutoLanguage = True - language = regEx.cap(1) + language = reg_ex.cap(1) return language @staticmethod def set_language(action): - actionName = u'%s' % action.objectName() - qmList = LanguageManager.get_qm_list() + """ + Set the language to translate OpenLP into + + ``action`` + The language menu option + """ + action_name = u'%s' % action.objectName() + qm_list = LanguageManager.get_qm_list() if LanguageManager.AutoLanguage: - language = u'[%s]' % qmList[actionName] + language = u'[%s]' % qm_list[action_name] else: - language = u'%s' % qmList[actionName] + language = u'%s' % qm_list[action_name] QtCore.QSettings().setValue( u'general/language', QtCore.QVariant(language)) log.info(u'Language file: \'%s\' written to conf file' % language) @@ -96,17 +123,23 @@ class LanguageManager(object): @staticmethod def init_qm_list(): + """ + Initialise the list of available translations + """ LanguageManager.__qmList__ = {} - qmFiles = LanguageManager.find_qm_files() - for i, qmf in enumerate(qmFiles): - regEx = QtCore.QRegExp("^.*openlp_(.*).qm") - if regEx.exactMatch(qmf): - langName = regEx.cap(1) + qm_files = LanguageManager.find_qm_files() + for i, qmf in enumerate(qm_files): + reg_ex = QtCore.QRegExp("^.*openlp_(.*).qm") + if reg_ex.exactMatch(qmf): + lang_name = reg_ex.cap(1) LanguageManager.__qmList__[u'%#2i %s' % (i+1, - LanguageManager.language_name(qmf))] = langName + LanguageManager.language_name(qmf))] = lang_name @staticmethod def get_qm_list(): + """ + Return the list of available translations + """ if LanguageManager.__qmList__ is None: LanguageManager.init_qm_list() return LanguageManager.__qmList__ From 0b8e4f2845d012b5c73e8131361ba3e97170aa99 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Tue, 29 Jun 2010 11:02:23 +0100 Subject: [PATCH 80/83] Fix filter usage (Fixes theme deletion) --- openlp/plugins/custom/customplugin.py | 2 +- openlp/plugins/songs/songsplugin.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py index 7f64aab52..362f8d64c 100644 --- a/openlp/plugins/custom/customplugin.py +++ b/openlp/plugins/custom/customplugin.py @@ -78,7 +78,7 @@ class CustomPlugin(Plugin): return about_text def can_delete_theme(self, theme): - filter_string = u'theme_name=%s' % theme + filter_string = u'theme_name=\'%s\'' % theme if not self.custommanager.get_all_objects_filtered(CustomSlide, filter_string): return True diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index d128bc6a2..c24352a91 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -199,7 +199,7 @@ class SongsPlugin(Plugin): return about_text def can_delete_theme(self, theme): - filter_string = u'theme_name=%s' % theme + filter_string = u'theme_name=\'%s\'' % theme if not self.manager.get_all_objects_filtered(Song, filter_string): return True return False From d37b4d1e8db8d3d3a1be4ba2e77dd682401697d3 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Tue, 29 Jun 2010 16:25:24 +0100 Subject: [PATCH 81/83] Plugin and other docstrings --- openlp/core/lib/renderer.py | 5 ++++- openlp/plugins/alerts/__init__.py | 2 +- openlp/plugins/bibles/__init__.py | 4 ++-- openlp/plugins/custom/__init__.py | 5 +++++ openlp/plugins/images/__init__.py | 4 ++++ openlp/plugins/media/__init__.py | 6 ++++++ openlp/plugins/presentations/__init__.py | 4 ++++ openlp/plugins/remotes/__init__.py | 4 ++++ openlp/plugins/songs/__init__.py | 4 ++++ openlp/plugins/songusage/__init__.py | 5 +++++ openlp/plugins/songusage/forms/songusagedetailform.py | 2 +- openlp/plugins/songusage/lib/manager.py | 4 +++- 12 files changed, 43 insertions(+), 6 deletions(-) diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index aa8c0a95a..c7f96528c 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -22,7 +22,10 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### - +""" +The :mod:`renderer` module enables OpenLP to take the input from plugins and +format it for the output display. +""" import logging from PyQt4 import QtGui, QtCore diff --git a/openlp/plugins/alerts/__init__.py b/openlp/plugins/alerts/__init__.py index cb376ec38..76ca202dd 100644 --- a/openlp/plugins/alerts/__init__.py +++ b/openlp/plugins/alerts/__init__.py @@ -24,5 +24,5 @@ ############################################################################### """ The :mod:`alerts` module provides the Alerts plugin for producing impromptu -on-screen announcements during a service +on-screen announcements during a service. """ diff --git a/openlp/plugins/bibles/__init__.py b/openlp/plugins/bibles/__init__.py index ca5ff7508..2491c4142 100644 --- a/openlp/plugins/bibles/__init__.py +++ b/openlp/plugins/bibles/__init__.py @@ -23,6 +23,6 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### """ -The :mod:`bibles' modules provides the Bible plugin to enable OpenLP to display -scripture +The :mod:`bibles' module provides the Bible plugin to enable OpenLP to display +scripture. """ diff --git a/openlp/plugins/custom/__init__.py b/openlp/plugins/custom/__init__.py index 1a348a0df..2b9a101f1 100644 --- a/openlp/plugins/custom/__init__.py +++ b/openlp/plugins/custom/__init__.py @@ -22,3 +22,8 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +""" +The :mod:`custom` module provides the Custom plugin which allows custom, +themed, text based items to be displayed without having to misuse another item +type. +""" diff --git a/openlp/plugins/images/__init__.py b/openlp/plugins/images/__init__.py index 1a348a0df..58cfb69b5 100644 --- a/openlp/plugins/images/__init__.py +++ b/openlp/plugins/images/__init__.py @@ -22,3 +22,7 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +""" +The :mod:`images` module provides the Images plugin. The Images plugin +provides the facility to display images from OpenLP. +""" diff --git a/openlp/plugins/media/__init__.py b/openlp/plugins/media/__init__.py index 1a348a0df..28ea0e960 100644 --- a/openlp/plugins/media/__init__.py +++ b/openlp/plugins/media/__init__.py @@ -22,3 +22,9 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +""" +The :mod:`media` module provides the Media plugin which allows OpenLP to +display videos. The media supported depends not only on the Python support +but also extensively on the codecs installed on the underlying operating system +being picked up and usable by Python. +""" diff --git a/openlp/plugins/presentations/__init__.py b/openlp/plugins/presentations/__init__.py index 1a348a0df..b7f26b39b 100644 --- a/openlp/plugins/presentations/__init__.py +++ b/openlp/plugins/presentations/__init__.py @@ -22,3 +22,7 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +""" +The :mod:`presentations` module provides the Presentations plugin which allows +OpenLP to show presentations from most popular presentation packages. +""" diff --git a/openlp/plugins/remotes/__init__.py b/openlp/plugins/remotes/__init__.py index 1a348a0df..59b771c0d 100644 --- a/openlp/plugins/remotes/__init__.py +++ b/openlp/plugins/remotes/__init__.py @@ -22,3 +22,7 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +""" +The :mod:`remotes` plugin allows OpenLP to be controlled from another machine +over a network connection. +""" diff --git a/openlp/plugins/songs/__init__.py b/openlp/plugins/songs/__init__.py index 1a348a0df..4cd5537eb 100644 --- a/openlp/plugins/songs/__init__.py +++ b/openlp/plugins/songs/__init__.py @@ -22,3 +22,7 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +""" +The :mod:`songs` module provides the Songs plugin. The Songs plugin provides +the main lyric projection function of OpenLP. +""" diff --git a/openlp/plugins/songusage/__init__.py b/openlp/plugins/songusage/__init__.py index 1a348a0df..adebb7c74 100644 --- a/openlp/plugins/songusage/__init__.py +++ b/openlp/plugins/songusage/__init__.py @@ -22,3 +22,8 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +""" +The :mod:`songusage` module contains the Song Usage plugin. The Song Usage +plugin provides auditing capabilities for reporting the songs you are using to +copyright license organisations. +""" diff --git a/openlp/plugins/songusage/forms/songusagedetailform.py b/openlp/plugins/songusage/forms/songusagedetailform.py index 3cbe46735..be1b8221c 100644 --- a/openlp/plugins/songusage/forms/songusagedetailform.py +++ b/openlp/plugins/songusage/forms/songusagedetailform.py @@ -42,7 +42,7 @@ class SongUsageDetailForm(QtGui.QDialog, Ui_SongUsageDetailDialog): def __init__(self, parent=None): """ - Constructor + Initialise the form """ QtGui.QDialog.__init__(self, None) self.parent = parent diff --git a/openlp/plugins/songusage/lib/manager.py b/openlp/plugins/songusage/lib/manager.py index 363f06fb8..2c34f3a54 100644 --- a/openlp/plugins/songusage/lib/manager.py +++ b/openlp/plugins/songusage/lib/manager.py @@ -22,7 +22,9 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### - +""" +The :mod:`manager` module provides song usage specific database query code +""" import logging from sqlalchemy.exceptions import InvalidRequestError From c0a924e3042e6eddf063c07424b76e70635efcef Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Tue, 29 Jun 2010 17:07:45 +0100 Subject: [PATCH 82/83] Fix service loading --- openlp/core/ui/servicemanager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 284d9c7e4..1ee0d13a5 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -662,7 +662,7 @@ class ServiceManager(QtGui.QWidget): name = filename.split(os.path.sep) if filename: SettingsManager.set_last_dir(self.parent.serviceSettingsSection, - os.path.split(filename)[0]) + name[0]) zip = None file_to = None try: From 5c4a835dac0f8df18fe32dd40e639ef9135ae104 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 29 Jun 2010 23:23:56 +0200 Subject: [PATCH 83/83] Added decent images for remotes, alerts and song usage. --- openlp/plugins/alerts/alertsplugin.py | 6 ++-- openlp/plugins/remotes/remoteplugin.py | 5 +-- openlp/plugins/songusage/songusageplugin.py | 4 +-- resources/images/openlp-2.qrc | 33 +++++++++++--------- resources/images/plugin_alerts.png | Bin 0 -> 762 bytes resources/images/plugin_remote.png | Bin 0 -> 830 bytes resources/images/plugin_songusage.png | Bin 0 -> 946 bytes resources/images/song_maintenance.png | Bin 719 -> 516 bytes scripts/generate_resources.sh | 0 9 files changed, 27 insertions(+), 21 deletions(-) create mode 100644 resources/images/plugin_alerts.png create mode 100644 resources/images/plugin_remote.png create mode 100644 resources/images/plugin_songusage.png mode change 100644 => 100755 scripts/generate_resources.sh diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index b442edc5b..46d4e8cb7 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -41,7 +41,7 @@ class alertsPlugin(Plugin): def __init__(self, plugin_helpers): Plugin.__init__(self, u'Alerts', u'1.9.2', plugin_helpers) self.weight = -3 - self.icon = build_icon(u':/media/media_image.png') + self.icon = build_icon(u':/plugins/plugin_alerts.png') self.alertsmanager = AlertsManager(self) self.manager = Manager(u'alerts', init_schema) self.alertForm = AlertForm(self.manager, self) @@ -65,7 +65,7 @@ class alertsPlugin(Plugin): """ log.info(u'add tools menu') self.toolsAlertItem = QtGui.QAction(tools_menu) - AlertIcon = build_icon(u':/tools/tools_alert.png') + AlertIcon = build_icon(u':/plugins/plugin_alerts.png') self.toolsAlertItem.setIcon(AlertIcon) self.toolsAlertItem.setObjectName(u'toolsAlertItem') self.toolsAlertItem.setText( @@ -102,4 +102,4 @@ class alertsPlugin(Plugin): about_text = translate('AlertsPlugin', 'Alerts Plugin
This plugin ' 'controls the displaying of alerts on the presentations screen') - return about_text \ No newline at end of file + return about_text diff --git a/openlp/plugins/remotes/remoteplugin.py b/openlp/plugins/remotes/remoteplugin.py index 7004207e4..fad7ecbe8 100644 --- a/openlp/plugins/remotes/remoteplugin.py +++ b/openlp/plugins/remotes/remoteplugin.py @@ -25,7 +25,7 @@ import logging -from openlp.core.lib import Plugin, translate +from openlp.core.lib import Plugin, translate, build_icon from openlp.plugins.remotes.lib import RemoteTab, HttpServer log = logging.getLogger(__name__) @@ -38,6 +38,7 @@ class RemotesPlugin(Plugin): remotes constructor """ Plugin.__init__(self, u'Remotes', u'1.9.2', plugin_helpers) + self.icon = build_icon(u':/plugins/plugin_remote.png') self.weight = -1 self.server = None @@ -74,4 +75,4 @@ class RemotesPlugin(Plugin): 'provides the ability to send messages to a running version of ' 'openlp on a different computer via a web browser or other app
' 'The Primary use for this would be to send alerts from a creche') - return about_text \ No newline at end of file + return about_text diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py index 06687acfe..a9994902a 100644 --- a/openlp/plugins/songusage/songusageplugin.py +++ b/openlp/plugins/songusage/songusageplugin.py @@ -42,7 +42,7 @@ class SongUsagePlugin(Plugin): def __init__(self, plugin_helpers): Plugin.__init__(self, u'SongUsage', u'1.9.2', plugin_helpers) self.weight = -4 - self.icon = build_icon(u':/media/media_image.png') + self.icon = build_icon(u':/plugins/plugin_songusage.png') self.songusagemanager = None self.songusageActive = False @@ -76,7 +76,7 @@ class SongUsagePlugin(Plugin): translate('SongUsagePlugin', 'Generate report on Song Usage')) self.SongUsageReport.setObjectName(u'SongUsageReport') #SongUsage activation - SongUsageIcon = build_icon(u':/tools/tools_alert.png') + SongUsageIcon = build_icon(u':/plugins/plugin_songusage.png') self.SongUsageStatus = QtGui.QAction(tools_menu) self.SongUsageStatus.setIcon(SongUsageIcon) self.SongUsageStatus.setCheckable(True) diff --git a/resources/images/openlp-2.qrc b/resources/images/openlp-2.qrc index 49309b8d5..ba382e0fd 100644 --- a/resources/images/openlp-2.qrc +++ b/resources/images/openlp-2.qrc @@ -1,5 +1,5 @@ - + topic_edit.png author_add.png author_delete.png @@ -17,7 +17,12 @@ song_topic_edit.png song_book_edit.png - + + plugin_alerts.png + plugin_remote.png + plugin_songusage.png + + general_preview.png general_live.png general_add.png @@ -29,7 +34,7 @@ general_open.png general_save.png - + slide_close.png slide_first.png slide_last.png @@ -42,7 +47,7 @@ media_playback_stop.png media_playback_pause.png - + openlp-logo-16x16.png openlp-logo-32x32.png openlp-logo-48x48.png @@ -50,27 +55,27 @@ openlp-logo-128x128.png openlp-logo-256x256.png - + openlp-about-logo.png openlp-splash-screen.png - + import_selectall.png import_move_to_list.png import_remove.png import_load.png - + export_selectall.png export_remove.png export_load.png export_move_to_list.png - + wizard_importsong.bmp wizard_importbible.bmp - + service_notes.png service_item_notes.png service_bottom.png @@ -78,7 +83,7 @@ service_top.png service_up.png - + system_close.png system_about.png system_help_contents.png @@ -89,7 +94,7 @@ system_exit.png system_settings.png - + media_custom.png media_presentation.png media_image.png @@ -100,16 +105,16 @@ media_stop.png image_clapperboard.png - + messagebox_critical.png messagebox_info.png messagebox_warning.png - + tools_add.png tools_alert.png - + theme_delete.png theme_new.png theme_edit.png diff --git a/resources/images/plugin_alerts.png b/resources/images/plugin_alerts.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 diff --git a/resources/images/plugin_remote.png b/resources/images/plugin_remote.png new file mode 100644 index 0000000000000000000000000000000000000000..d70f0f6decbbe811a9e6df6116068284ecdbadb2 GIT binary patch literal 830 zcmV-E1Ht@>P)K~#9!rIUL|Q&Akpe|HbN+nh>dIi}`H)TEdBk4oepJ^ZI3 zRM4OKNQan0fA*I`|MdX%`d}G>&_a4)QV51ksBJhOn=>CQak$Mb^KP=;x$eBX_jIq} z(z3ria5(4p{r%3D59fCdh7f}N49Q+%U8h462d)$_I4j~1hcJHpU=3@8XwYvx! zyXTUl9P_Y9ld3DoRAO0&WFVwHWE5uIVf58Q5mIUVp1!^~`j3IGZBivqm6>mzSLdWD zlECT=3I`dU0y~oFFsxYhVadjs)v^a~ofe9YL+vF^9*$Tdfh`bJcTC-Q@!5wamcpotu)pTTEi&|H zh1OOis_C-5x4S6RXY`_K!d@ZhzX>o*D-CL(zhBm&`0B9I6|XPD1;0K!vL>KgF6NphH%H-(&BCgGCAqWK^dvn338!*RYv z-tyV*Mc{zQnXG)xkOY z3qgPL)!dEj4E*rUHgDB5oMZ1+=6XLl)_lur8*h4>P6u}Vg=bAggFx7VD}ku8zCz=M zJ;uu~E1r1|wZYeVc0QzCv!-)Ow!Jr*ObkH~Az}Z&x$p1%3#G4>BVCt-PXGV_07*qo IM6N<$f?XSWF#rGn literal 0 HcmV?d00001 diff --git a/resources/images/plugin_songusage.png b/resources/images/plugin_songusage.png new file mode 100644 index 0000000000000000000000000000000000000000..bf110aa6dff6cbe89fe174c5e1af42facfd1194d GIT binary patch literal 946 zcmV;j15NyiP)Z zy6Lv7N=dgY`2`^L53r~dDz)8rfhs{mg>0)tRxDcDlEmWx9>DRH@nt^GOwU*aMR}z& zGmCTH@0{m+!#R$F_r-CX2w;q2CK8Fb8~ZadwW~s z0PqwO|0mC_tgJjrCX=)2bUHpcIT=+h&3&P&>UR?p6C;|Yy%GUDd`ene zT)ZpGvcMQ~JAf#P5Cj1n&!f?C@b=n5V*CSXcz8ImzP^5s4wLfvyy6<@)6>%`vmD`A zyT->61@$&iG5P=;GI9_O$e0-)g3l|1y1Ku%w)S#$b#-=YYfIw+Tx2qt2smEn+? zi9aa>GE2<_@L?)TAHO|fv3@24W2tYJDGN0M6*ln`aSsUZV<5%A4Ew&xyEq# z`WnTn9wpm|$K#{XXw(x31RMZ^b)ng8{yQXCwnrBE{F^SuS`I!8`w$=VqGnjQsCUsY zOmw;?0)D?p9ENJOnmrf+80huYrQS$Jy|8SK=!?*sCQ6kayt0FbGd`qZ3Pyt>T5Sfu z-#=6?m#udVF8BBMk3&Q|M2ktsgLp6*fG7YbdI#B)Ci2B=^jII9%|P6wN~L1mGH^j2 z92^uxs?gr{kbBjFR_Q_wN^s!{ltpXCd9??<-b1NW5~|fI69rzly~?3b=xgoG`PMHl z8kinY;0%myjQ9nNha_~(K1u|#)#-qpK66xWk^A|l@BbP=yaCzmwC(7yhmWZWv2bu& zX`@_cIIFrWctq}qP!$J1?i5+4l97MSw!XPFa6z7(mYPhOy7T*S9qB|6$thYT57@R1 zSFKiy{c&`pXR^i;D2C8}1$^N@vq5d-pTkl^zs}z}fzScS% z>PW{r(MThm=vYTO)aKFC`yiyYcW;!1zdRlg3<4 ztl5=$QW!wFB!4JlnqrM}eosXTTtyJ3Jj#GRO|@za*QLP*AtjU)89WQ5*n;*Sb4Z7KEYjr!A>1robFOsq=|46%N{= z+Bh1t3lDShTydy&0zcT^1Pf0{UR5;6x zlU+#DaTJDM-P%UkY-CKckux@^Eh@yhX-x+~(T(B4+!kRMqJKhJUDQ>n7|X1S8niV< zLTW-J?8BNd4P0|uV30;%OqjAJmJLIlbN1i-|GLR5W!roIyyw7qP8KqV!SG0?R4Q9( zLLXaRURsJoA~v^sw9{nlUP%k9Yt=_)W~O5_O_PN`3&ixqn9%ApALWX&vP_2K>a`Z* z{O?~R9$zJ1?|)bfz!?BL0Av9`b{d`uKruTz3yPw^j5Z=LXoiO zfP&gTd+3sR|e+B_;LlcV4hK+u`x~F){H8f`38*a&x)7z*Jz}^4wzFvLJ6y zUiR>aOJAWVuhi7l!t3+n=wS)gs5LN{41_{I{?=c-WLR8W?Aru4H8skJ}+@P zog|q|5ZAD4wfb!JcU4uTjmP8N2A~4K+63$M9m0_j*QD8OBIOn3#53k0{rwg{fC>P+ z{$FM5w10QBowPfwkt;2i2|u4tjHbuLG3fXVK$y;z?AG>M*PmJXs5;Gg!sT*FLt_JZ z?R+&~P>?TAYueq;J2%ZeCZf}6i9{kHHRo!G)jklH$x1aFwxu+U&*wKqSC&B~k|YPlY}l5vfW>A95z7)DKOqN)!#gGp`(W?T(3|@Jl9~Jpb8hZuGeCDo oqtX1YU%tJtSsf1ntRlnw1491o=%O}YqW}N^07*qoM6N<$g1%xuXaE2J diff --git a/scripts/generate_resources.sh b/scripts/generate_resources.sh old mode 100644 new mode 100755