diff --git a/.bzrignore b/.bzrignore
index 073fb531a..2620fea42 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -19,3 +19,4 @@ _eric4project
*.qm
openlp/core/resources.py.old
*.qm
+resources/windows/warnOpenLP.txt
diff --git a/MANIFEST.in b/MANIFEST.in
index efccdf79d..992685bcf 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -3,6 +3,7 @@ recursive-include openlp *.sqlite
recursive-include openlp *.csv
recursive-include openlp *.html
recursive-include openlp *.js
+recursive-include openlp *.css
recursive-include openlp *.qm
recursive-include documentation *
recursive-include resources/forms *
diff --git a/openlp.pyw b/openlp.pyw
index 17743903f..f3455962d 100755
--- a/openlp.pyw
+++ b/openlp.pyw
@@ -5,8 +5,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -162,6 +162,10 @@ class OpenLP(QtGui.QApplication):
#provide a listener for widgets to reqest a screen update.
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'openlp_process_events'), self.processEvents)
+ QtCore.QObject.connect(Receiver.get_receiver(),
+ QtCore.SIGNAL(u'cursor_busy'), self.setBusyCursor)
+ QtCore.QObject.connect(Receiver.get_receiver(),
+ QtCore.SIGNAL(u'cursor_normal'), self.setNormalCursor)
self.setOrganizationName(u'OpenLP')
self.setOrganizationDomain(u'openlp.org')
self.setApplicationName(u'OpenLP')
@@ -201,8 +205,21 @@ class OpenLP(QtGui.QApplication):
self.exceptionForm = ExceptionForm(self.mainWindow)
self.exceptionForm.exceptionTextEdit.setPlainText(
''.join(format_exception(exctype, value, traceback)))
+ self.setNormalCursor()
self.exceptionForm.exec_()
+ def setBusyCursor(self):
+ """
+ Sets the Busy Cursor for the Application
+ """
+ self.setOverrideCursor(QtCore.Qt.BusyCursor)
+
+ def setNormalCursor(self):
+ """
+ Sets the Normal Cursor forthe Application
+ """
+ self.restoreOverrideCursor()
+
def main():
"""
The main function which parses command line options and then runs
diff --git a/openlp/__init__.py b/openlp/__init__.py
index f22f0ef70..b88547df6 100644
--- a/openlp/__init__.py
+++ b/openlp/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -25,4 +25,4 @@
###############################################################################
"""
The :mod:`openlp` module contains all the project produced OpenLP functionality
-"""
+"""
\ No newline at end of file
diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py
index a6cfa60c7..17db85184 100644
--- a/openlp/core/__init__.py
+++ b/openlp/core/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -28,4 +28,4 @@ The :mod:`core` module provides all core application functions
All the core functions of the OpenLP application including the GUI, settings,
logging and a plugin framework are contained within the openlp.core module.
-"""
+"""
\ No newline at end of file
diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py
index 956b6c787..ebbe31597 100644
--- a/openlp/core/lib/__init__.py
+++ b/openlp/core/lib/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -84,7 +84,8 @@ html_expands.append({u'desc': u'Underline', u'start tag': u'{u}',
u'start html': u'',
u'end tag': u'{/u}', u'end html': u'', u'protected': True})
-def translate(context, text, comment=None):
+def translate(context, text, comment=None,
+ encoding=QtCore.QCoreApplication.CodecForTr, n=-1):
"""
A special shortcut method to wrap around the Qt4 translation functions.
This abstracts the translation procedure so that we can change it if at a
@@ -101,7 +102,7 @@ def translate(context, text, comment=None):
An identifying string for when the same text is used in different roles
within the same context.
"""
- return QtCore.QCoreApplication.translate(context, text, comment)
+ return QtCore.QCoreApplication.translate(context, text, comment, encoding, n)
def get_text_file_string(text_file):
"""
diff --git a/openlp/core/lib/baselistwithdnd.py b/openlp/core/lib/baselistwithdnd.py
index 2ad500e9e..86535f6e7 100644
--- a/openlp/core/lib/baselistwithdnd.py
+++ b/openlp/core/lib/baselistwithdnd.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -52,4 +52,4 @@ class BaseListWithDnD(QtGui.QListWidget):
mimeData = QtCore.QMimeData()
drag.setMimeData(mimeData)
mimeData.setText(self.PluginName)
- drag.start(QtCore.Qt.CopyAction)
+ drag.start(QtCore.Qt.CopyAction)
\ No newline at end of file
diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py
index 8afa02111..c2e1243ce 100644
--- a/openlp/core/lib/db.py
+++ b/openlp/core/lib/db.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -295,4 +295,4 @@ class Manager(object):
if self.is_dirty:
engine = create_engine(self.db_url)
if self.db_url.startswith(u'sqlite'):
- engine.execute("vacuum")
+ engine.execute("vacuum")
\ No newline at end of file
diff --git a/openlp/core/lib/dockwidget.py b/openlp/core/lib/dockwidget.py
index 15fd74ebc..9c4187337 100644
--- a/openlp/core/lib/dockwidget.py
+++ b/openlp/core/lib/dockwidget.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -37,13 +37,15 @@ class OpenLPDockWidget(QtGui.QDockWidget):
"""
Custom DockWidget class to handle events
"""
- def __init__(self, parent=None, name=None):
+ def __init__(self, parent=None, name=None, icon=None):
"""
Initialise the DockWidget
"""
+ log.debug(u'Initialise the %s widget' % name)
QtGui.QDockWidget.__init__(self, parent)
self.parent = parent
if name:
self.setObjectName(name)
+ if icon:
+ self.setWindowIcon(icon)
self.setFloating(False)
- log.debug(u'Init done')
diff --git a/openlp/core/lib/eventreceiver.py b/openlp/core/lib/eventreceiver.py
index 1080cd2f5..63ad5b796 100644
--- a/openlp/core/lib/eventreceiver.py
+++ b/openlp/core/lib/eventreceiver.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -220,6 +220,21 @@ class EventReceiver(QtCore.QObject):
Waits for openlp to do something "interesting" and sends a
remotes_poll_response signal when it does
+ ``openlp_warning_message``
+ Displays a standalone Warning Message
+
+ ``openlp_error_message``
+ Displays a standalone Error Message
+
+ ``openlp_information_message``
+ Displays a standalone Information Message
+
+ ``cursor_busy``
+ Makes the cursor got to a busy form
+
+ ``cursor_normal``
+ Resets the cursor to default
+
"""
def __init__(self):
"""
diff --git a/openlp/core/lib/htmlbuilder.py b/openlp/core/lib/htmlbuilder.py
index 9bbaa65d1..0a26382f8 100644
--- a/openlp/core/lib/htmlbuilder.py
+++ b/openlp/core/lib/htmlbuilder.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -641,4 +641,4 @@ def build_alert_css(alertTab, width):
align = u'top'
alert = style % (width, align, alertTab.font_face, alertTab.font_size,
alertTab.font_color, alertTab.bg_color)
- return alert
+ return alert
\ No newline at end of file
diff --git a/openlp/core/lib/imagemanager.py b/openlp/core/lib/imagemanager.py
index 14de141fc..0be1a01c8 100644
--- a/openlp/core/lib/imagemanager.py
+++ b/openlp/core/lib/imagemanager.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -165,4 +165,4 @@ class ImageManager(QtCore.QObject):
image = self._cache[key]
if image.dirty:
image.image_bytes = image_to_byte(image.image)
- image.dirty = False
+ image.dirty = False
\ No newline at end of file
diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py
index acf24ae22..a9484795b 100644
--- a/openlp/core/lib/mediamanageritem.py
+++ b/openlp/core/lib/mediamanageritem.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -284,34 +284,30 @@ class MediaManagerItem(QtGui.QWidget):
self.listView.addAction(
context_menu_action(
self.listView, u':/general/general_edit.png',
- unicode(translate('OpenLP.MediaManagerItem', '&Edit %s')) %
- name_string[u'singular'],
+ self.plugin.getString(StringContent.Edit)[u'title'],
self.onEditClick))
self.listView.addAction(context_menu_separator(self.listView))
if self.hasDeleteIcon:
self.listView.addAction(
context_menu_action(
self.listView, u':/general/general_delete.png',
- unicode(translate('OpenLP.MediaManagerItem',
- '&Delete %s')) %
- name_string[u'singular'],
+ self.plugin.getString(StringContent.Delete)[u'title'],
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('OpenLP.MediaManagerItem', '&Preview %s')) %
- name_string[u'singular'],
+ self.plugin.getString(StringContent.Preview)[u'title'],
self.onPreviewClick))
self.listView.addAction(
context_menu_action(
self.listView, u':/general/general_live.png',
- translate('OpenLP.MediaManagerItem', '&Show Live'),
+ self.plugin.getString(StringContent.Live)[u'title'],
self.onLiveClick))
self.listView.addAction(
context_menu_action(
self.listView, u':/general/general_add.png',
- translate('OpenLP.MediaManagerItem', '&Add to Service'),
+ self.plugin.getString(StringContent.Service)[u'title'],
self.onAddClick))
if self.addToServiceItem:
self.listView.addAction(
@@ -353,11 +349,13 @@ class MediaManagerItem(QtGui.QWidget):
self.OnNewFileMasks)
log.info(u'New files(s) %s', unicode(files))
if files:
+ Receiver.send_message(u'cursor_busy')
self.loadList(files)
lastDir = os.path.split(unicode(files[0]))[0]
SettingsManager.set_last_dir(self.settingsSection, lastDir)
SettingsManager.set_list(self.settingsSection,
self.settingsSection, self.getFileList())
+ Receiver.send_message(u'cursor_normal')
def getFileList(self):
"""
@@ -381,7 +379,7 @@ class MediaManagerItem(QtGui.QWidget):
if os.path.exists(thumb):
filedate = os.stat(file).st_mtime
thumbdate = os.stat(thumb).st_mtime
- #if file updated rebuild icon
+ # if file updated rebuild icon
if filedate > thumbdate:
self.iconFromFile(file, thumb)
else:
@@ -445,7 +443,7 @@ class MediaManagerItem(QtGui.QWidget):
translate('OpenLP.MediaManagerItem',
'You must select one or more items to preview.'))
else:
- log.debug(self.plugin.name + u' Preview requested')
+ log.debug(u'%s Preview requested', self.plugin.name)
serviceItem = self.buildServiceItem()
if serviceItem:
serviceItem.from_plugin = True
@@ -462,7 +460,7 @@ class MediaManagerItem(QtGui.QWidget):
translate('OpenLP.MediaManagerItem',
'You must select one or more items to send live.'))
else:
- log.debug(self.plugin.name + u' Live requested')
+ log.debug(u'%s Live requested', self.plugin.name)
serviceItem = self.buildServiceItem()
if serviceItem:
serviceItem.from_plugin = True
@@ -481,7 +479,7 @@ class MediaManagerItem(QtGui.QWidget):
# Is it posssible to process multiple list items to generate
# multiple service items?
if self.singleServiceItem or self.remoteTriggered:
- log.debug(self.plugin.name + u' Add requested')
+ log.debug(u'%s Add requested', self.plugin.name)
serviceItem = self.buildServiceItem(None, True)
if serviceItem:
serviceItem.from_plugin = False
@@ -505,7 +503,7 @@ class MediaManagerItem(QtGui.QWidget):
translate('OpenLP.MediaManagerItem',
'You must select one or more items'))
else:
- log.debug(self.plugin.name + u' Add requested')
+ log.debug(u'%s Add requested', self.plugin.name)
serviceItem = self.parent.serviceManager.getServiceItem()
if not serviceItem:
QtGui.QMessageBox.information(self,
diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py
index f73b58735..8bc5fdb96 100644
--- a/openlp/core/lib/plugin.py
+++ b/openlp/core/lib/plugin.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -314,4 +314,4 @@ class Plugin(QtCore.QObject):
"""
Called to define all translatable texts of the plugin
"""
- pass
+ pass
\ No newline at end of file
diff --git a/openlp/core/lib/pluginmanager.py b/openlp/core/lib/pluginmanager.py
index 362d8c197..8081cbf71 100644
--- a/openlp/core/lib/pluginmanager.py
+++ b/openlp/core/lib/pluginmanager.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -221,4 +221,4 @@ class PluginManager(object):
for plugin in self.plugins:
if plugin.isActive():
plugin.finalise()
- log.info(u'Finalisation Complete for %s ' % plugin.name)
+ log.info(u'Finalisation Complete for %s ' % plugin.name)
\ No newline at end of file
diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py
index 68839f16d..fe118b76b 100644
--- a/openlp/core/lib/renderer.py
+++ b/openlp/core/lib/renderer.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -144,4 +144,4 @@ class Renderer(object):
html_text = html_text[:len(html_text)-4]
formatted.append(html_text)
log.debug(u'format_slide - End')
- return formatted
+ return formatted
\ No newline at end of file
diff --git a/openlp/core/lib/rendermanager.py b/openlp/core/lib/rendermanager.py
index f448217ee..5896ca4e6 100644
--- a/openlp/core/lib/rendermanager.py
+++ b/openlp/core/lib/rendermanager.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -261,4 +261,4 @@ class RenderManager(object):
log.debug(u'calculate default %d, %d, %f',
self.width, self.height, self.screen_ratio )
# 90% is start of footer
- self.footer_start = int(self.height * 0.90)
+ self.footer_start = int(self.height * 0.90)
\ No newline at end of file
diff --git a/openlp/core/lib/searchedit.py b/openlp/core/lib/searchedit.py
new file mode 100644
index 000000000..738661e14
--- /dev/null
+++ b/openlp/core/lib/searchedit.py
@@ -0,0 +1,191 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
+# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
+# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
+# Carsten Tinggaard, Frode Woldsund #
+# --------------------------------------------------------------------------- #
+# This program is free software; you can redistribute it and/or modify it #
+# under the terms of the GNU General Public License as published by the Free #
+# Software Foundation; version 2 of the License. #
+# #
+# This program is distributed in the hope that it will be useful, but WITHOUT #
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
+# more details. #
+# #
+# You should have received a copy of the GNU General Public License along #
+# with this program; if not, write to the Free Software Foundation, Inc., 59 #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+###############################################################################
+
+import logging
+
+from PyQt4 import QtCore, QtGui
+
+from openlp.core.lib import build_icon
+
+log = logging.getLogger(__name__)
+
+class SearchEdit(QtGui.QLineEdit):
+ """
+ This is a specialised QLineEdit with a "clear" button inside for searches.
+ """
+
+ def __init__(self, parent):
+ """
+ Constructor.
+ """
+ QtGui.QLineEdit.__init__(self, parent)
+ self._currentSearchType = -1
+ self.clearButton = QtGui.QToolButton(self)
+ self.clearButton.setIcon(build_icon(u':/system/clear_shortcut.png'))
+ self.clearButton.setCursor(QtCore.Qt.ArrowCursor)
+ self.clearButton.setStyleSheet(
+ u'QToolButton { border: none; padding: 0px; }')
+ self.clearButton.resize(18, 18)
+ self.clearButton.hide()
+ QtCore.QObject.connect(
+ self.clearButton,
+ QtCore.SIGNAL(u'clicked()'),
+ self._onClearButtonClicked
+ )
+ QtCore.QObject.connect(
+ self,
+ QtCore.SIGNAL(u'textChanged(const QString&)'),
+ self._onSearchEditTextChanged
+ )
+ self._updateStyleSheet()
+
+ def _updateStyleSheet(self):
+ """
+ Internal method to update the stylesheet depending on which widgets are
+ available and visible.
+ """
+ frameWidth = self.style().pixelMetric(
+ QtGui.QStyle.PM_DefaultFrameWidth)
+ rightPadding = self.clearButton.sizeHint().width() + frameWidth
+ if hasattr(self, u'menuButton'):
+ leftPadding = self.menuButton.width()
+ self.setStyleSheet(
+ u'QLineEdit { padding-left: %spx; padding-right: %spx; } ' % \
+ (leftPadding, rightPadding))
+ else:
+ self.setStyleSheet(u'QLineEdit { padding-right: %spx; } ' % \
+ rightPadding)
+ msz = self.minimumSizeHint();
+ self.setMinimumSize(
+ max(msz.width(),
+ self.clearButton.sizeHint().width() + (frameWidth * 2) + 2),
+ max(msz.height(),
+ self.clearButton.height() + (frameWidth * 2) + 2)
+ )
+
+ def resizeEvent(self, event):
+ """
+ Reimplemented method to react to resizing of the widget.
+
+ ``event``
+ The event that happened.
+ """
+ sz = self.clearButton.sizeHint()
+ frameWidth = self.style().pixelMetric(
+ QtGui.QStyle.PM_DefaultFrameWidth)
+ self.clearButton.move(self.rect().right() - frameWidth - sz.width(),
+ (self.rect().bottom() + 1 - sz.height()) / 2)
+ if hasattr(self, u'menuButton'):
+ sz = self.menuButton.sizeHint()
+ self.menuButton.move(self.rect().left() + frameWidth + 2,
+ (self.rect().bottom() + 1 - sz.height()) / 2)
+
+ def currentSearchType(self):
+ """
+ Readonly property to return the current search type.
+ """
+ return self._currentSearchType
+
+ def setSearchTypes(self, items):
+ """
+ A list of tuples to be used in the search type menu. The first item in
+ the list will be preselected as the default.
+
+ ``items``
+ The list of tuples to use. The tuples should contain an integer
+ identifier, an icon (QIcon instance or string) and a title for the
+ item in the menu. In short, they should look like this::
+
+ (, , )
+
+ For instance::
+
+ (1, , "Titles")
+
+ Or::
+
+ (2, ":/songs/authors.png", "Authors")
+ """
+ menu = QtGui.QMenu(self)
+ first = None
+ for identifier, icon, title in items:
+ action = QtGui.QAction(build_icon(icon), title, menu)
+ action.setData(QtCore.QVariant(identifier))
+ menu.addAction(action)
+ QtCore.QObject.connect(action, QtCore.SIGNAL(u'triggered(bool)'),
+ self._onMenuActionTriggered)
+ if first is None:
+ first = action
+ self._currentSearchType = identifier
+ if not hasattr(self, u'menuButton'):
+ self.menuButton = QtGui.QToolButton(self)
+ self.menuButton.setIcon(build_icon(u':/system/clear_shortcut.png'))
+ self.menuButton.setCursor(QtCore.Qt.ArrowCursor)
+ self.menuButton.setPopupMode(QtGui.QToolButton.InstantPopup)
+ self.menuButton.setStyleSheet(
+ u'QToolButton { border: none; padding: 0px 10px 0px 0px; }')
+ self.menuButton.resize(QtCore.QSize(28, 18))
+ self.menuButton.setMenu(menu)
+ self.menuButton.setDefaultAction(first)
+ self.menuButton.show()
+ self._updateStyleSheet()
+
+ def _onSearchEditTextChanged(self, text):
+ """
+ Internally implemented slot to react to when the text in the line edit
+ has changed so that we can show or hide the clear button.
+
+ ``text``
+ A :class:`~PyQt4.QtCore.QString` instance which represents the text
+ in the line edit.
+ """
+ self.clearButton.setVisible(not text.isEmpty())
+
+ def _onClearButtonClicked(self):
+ """
+ Internally implemented slot to react to the clear button being pressed
+ to clear the line edit. Once it has cleared the line edit, it emits the
+ ``cleared()`` signal so that an application can react to the clearing
+ of the line edit.
+ """
+ self.clear()
+ self.emit(QtCore.SIGNAL(u'cleared()'))
+
+ def _onMenuActionTriggered(self):
+ """
+ Internally implemented slot to react to the select of one of the search
+ types in the menu. Once it has set the correct action on the button,
+ and set the current search type (using the list of identifiers provided
+ by the developer), the ``searchTypeChanged(int)`` signal is emitted
+ with the identifier.
+ """
+ sender = self.sender()
+ for action in self.menuButton.menu().actions():
+ action.setChecked(False)
+ self.menuButton.setDefaultAction(sender)
+ self._currentSearchType = sender.data().toInt()[0]
+ self.emit(QtCore.SIGNAL(u'searchTypeChanged(int)'),
+ self._currentSearchType)
diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py
index 9b4a035a5..f18605711 100644
--- a/openlp/core/lib/serviceitem.py
+++ b/openlp/core/lib/serviceitem.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -58,7 +58,7 @@ class ItemCapabilities(object):
NoLineBreaks = 7
OnLoadUpdate = 8
AddIfNewItem = 9
-
+ ProvidesOwnDisplay = 10
class ServiceItem(object):
"""
diff --git a/openlp/core/lib/settingsmanager.py b/openlp/core/lib/settingsmanager.py
index 8d249d2cd..89d56cea2 100644
--- a/openlp/core/lib/settingsmanager.py
+++ b/openlp/core/lib/settingsmanager.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -55,7 +55,7 @@ class SettingsManager(object):
self.mainwindow_left = mainwindow_docbars
self.mainwindow_right = mainwindow_docbars
self.slidecontroller = (self.width - (
- self.mainwindow_left + self.mainwindow_right) - 100 ) / 2
+ self.mainwindow_left + self.mainwindow_right) - 100) / 2
self.slidecontroller_image = self.slidecontroller - 50
@staticmethod
@@ -178,4 +178,4 @@ class SettingsManager(object):
if extension == os.path.splitext(filename)[1]]
else:
# no filtering required
- return files
+ return files
\ No newline at end of file
diff --git a/openlp/core/lib/settingstab.py b/openlp/core/lib/settingstab.py
index 048751006..6586a50f2 100644
--- a/openlp/core/lib/settingstab.py
+++ b/openlp/core/lib/settingstab.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -31,7 +31,7 @@ class SettingsTab(QtGui.QWidget):
SettingsTab is a helper widget for plugins to define Tabs for the settings
dialog.
"""
- def __init__(self, title, visible_title=None):
+ def __init__(self, title, visible_title=None):
"""
Constructor to create the Settings tab item.
diff --git a/openlp/core/lib/spelltextedit.py b/openlp/core/lib/spelltextedit.py
index 76271b6a7..ebd4046c0 100644
--- a/openlp/core/lib/spelltextedit.py
+++ b/openlp/core/lib/spelltextedit.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -158,4 +158,4 @@ class SpellAction(QtGui.QAction):
def __init__(self, *args):
QtGui.QAction.__init__(self, *args)
self.triggered.connect(lambda x: self.correct.emit(
- unicode(self.text())))
+ unicode(self.text())))
\ No newline at end of file
diff --git a/openlp/core/lib/theme.py b/openlp/core/lib/theme.py
index 130eb817d..1e4a9854e 100644
--- a/openlp/core/lib/theme.py
+++ b/openlp/core/lib/theme.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -598,4 +598,4 @@ class ThemeXML(object):
self.font_footer_shadow_size)
self.add_display(self.display_horizontal_align,
self.display_vertical_align,
- self.display_slide_transition)
+ self.display_slide_transition)
\ No newline at end of file
diff --git a/openlp/core/lib/toolbar.py b/openlp/core/lib/toolbar.py
index a98edab9a..e37dc6f22 100644
--- a/openlp/core/lib/toolbar.py
+++ b/openlp/core/lib/toolbar.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -154,4 +154,4 @@ class OpenLPToolbar(QtGui.QToolBar):
push_button.setCheckable(True)
push_button.setFlat(True)
self.addWidget(push_button)
- return push_button
+ return push_button
\ No newline at end of file
diff --git a/openlp/core/theme/__init__.py b/openlp/core/theme/__init__.py
index 4ffcb2813..350b550a2 100644
--- a/openlp/core/theme/__init__.py
+++ b/openlp/core/theme/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -24,4 +24,4 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
-from openlp.core.theme.theme import Theme
+from openlp.core.theme.theme import Theme
\ No newline at end of file
diff --git a/openlp/core/theme/theme.py b/openlp/core/theme/theme.py
index 52dda1631..e506fc2c2 100644
--- a/openlp/core/theme/theme.py
+++ b/openlp/core/theme/theme.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -33,11 +33,11 @@ processing version 1 themes in OpenLP version 2.
from xml.etree.ElementTree import ElementTree, XML
from PyQt4 import QtGui
-DELPHI_COLORS = {"clRed":0xFF0000,
- "clBlue":0x0000FF,
- "clYellow":0xFFFF00,
- "clBlack":0x000000,
- "clWhite":0xFFFFFF}
+DELPHI_COLORS = {u'clRed': 0xFF0000,
+ u'clBlue': 0x0000FF,
+ u'clYellow': 0xFFFF00,
+ u'clBlack': 0x000000,
+ u'clWhite': 0xFFFFFF}
BLANK_STYLE_XML = \
'''
diff --git a/openlp/core/ui/__init__.py b/openlp/core/ui/__init__.py
index 377999553..c806730c8 100644
--- a/openlp/core/ui/__init__.py
+++ b/openlp/core/ui/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -58,4 +58,4 @@ from thememanager import ThemeManager
__all__ = ['SplashScreen', 'AboutForm', 'SettingsForm',
'MainDisplay', 'SlideController', 'ServiceManager', 'ThemeManager',
- 'MediaDockManager', 'ServiceItemEditForm']
+ 'MediaDockManager', 'ServiceItemEditForm']
\ No newline at end of file
diff --git a/openlp/core/ui/aboutdialog.py b/openlp/core/ui/aboutdialog.py
index 401560cf0..430ca406d 100644
--- a/openlp/core/ui/aboutdialog.py
+++ b/openlp/core/ui/aboutdialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -182,8 +182,8 @@ class Ui_AboutDialog(object):
self.aboutNotebook.indexOf(self.creditsTab),
translate('OpenLP.AboutForm', 'Credits'))
self.licenseTextEdit.setPlainText(translate('OpenLP.AboutForm',
- 'Copyright \xa9 2004-2010 Raoul Snyman\n'
- 'Portions copyright \xa9 2004-2010 '
+ 'Copyright \xa9 2004-2011 Raoul Snyman\n'
+ 'Portions copyright \xa9 2004-2011 '
'Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, '
'Christian Richter, Maikel Stuivenberg, Martin Thompson, Jon '
'Tibble, Carsten Tinggaard\n'
@@ -575,5 +575,4 @@ class Ui_AboutDialog(object):
translate('OpenLP.AboutForm', 'License'))
self.contributeButton.setText(translate('OpenLP.AboutForm',
'Contribute'))
- self.closeButton.setText(translate('OpenLP.AboutForm', 'Close'))
-
+ self.closeButton.setText(translate('OpenLP.AboutForm', 'Close'))
\ No newline at end of file
diff --git a/openlp/core/ui/aboutform.py b/openlp/core/ui/aboutform.py
index 3b49ff274..f3fcc18a8 100644
--- a/openlp/core/ui/aboutform.py
+++ b/openlp/core/ui/aboutform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -61,4 +61,4 @@ class AboutForm(QtGui.QDialog, Ui_AboutDialog):
import webbrowser
url = u'http://www.openlp.org/en/documentation/introduction/' \
+ u'contributing.html'
- webbrowser.open_new(url)
+ webbrowser.open_new(url)
\ No newline at end of file
diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py
index df3add595..0a8547837 100644
--- a/openlp/core/ui/advancedtab.py
+++ b/openlp/core/ui/advancedtab.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -204,4 +204,4 @@ class AdvancedTab(SettingsTab):
"""
self.sharedLabel.setEnabled(checked)
self.sharedTextEdit.setEnabled(checked)
- self.sharedPushButton.setEnabled(checked)
+ self.sharedPushButton.setEnabled(checked)
\ No newline at end of file
diff --git a/openlp/core/ui/exceptiondialog.py b/openlp/core/ui/exceptiondialog.py
index 03bbde764..eaed502b3 100644
--- a/openlp/core/ui/exceptiondialog.py
+++ b/openlp/core/ui/exceptiondialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -98,4 +98,4 @@ class Ui_ExceptionDialog(object):
self.sendReportButton.setText(translate('OpenLP.ExceptionDialog',
'Send E-Mail'))
self.saveReportButton.setText(translate('OpenLP.ExceptionDialog',
- 'Save to File'))
+ 'Save to File'))
\ No newline at end of file
diff --git a/openlp/core/ui/exceptionform.py b/openlp/core/ui/exceptionform.py
index 3e05ad73a..347bcf8f1 100644
--- a/openlp/core/ui/exceptionform.py
+++ b/openlp/core/ui/exceptionform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -84,7 +84,7 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog):
u'lxml: %s\n' % etree.__version__ + \
u'Chardet: %s\n' % chardet_version + \
u'PyEnchant: %s\n' % enchant_version + \
- u'PySQLite: %s\n' % sqlite_version
+ u'PySQLite: %s\n' % sqlite_version
if platform.system() == u'Linux':
if os.environ.get(u'KDE_FULL_SESSION') == u'true':
system = system + u'Desktop: KDE SC\n'
@@ -135,7 +135,9 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog):
'--- Please enter the report below this line. ---\n\n\n'
'--- Exception Traceback ---\n%s\n'
'--- System information ---\n%s\n'
- '--- Library Versions ---\n%s\n'))
+ '--- Library Versions ---\n%s\n',
+ 'Please add the information that bug reports are favoured written '
+ 'in English.'))
content = self._createReport()
for line in content[1].split(u'\n'):
if re.search(r'[/\\]openlp[/\\]', line):
diff --git a/openlp/core/ui/filerenamedialog.py b/openlp/core/ui/filerenamedialog.py
index 8bc804bb3..47d301dd9 100644
--- a/openlp/core/ui/filerenamedialog.py
+++ b/openlp/core/ui/filerenamedialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -54,4 +54,4 @@ class Ui_FileRenameDialog(object):
def retranslateUi(self, FileRenameDialog):
self.fileRenameLabel.setText(translate('OpenLP.FileRenameForm',
- 'New File Name:'))
+ 'New File Name:'))
\ No newline at end of file
diff --git a/openlp/core/ui/filerenameform.py b/openlp/core/ui/filerenameform.py
index 422d7ecb8..9ff310030 100644
--- a/openlp/core/ui/filerenameform.py
+++ b/openlp/core/ui/filerenameform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -52,4 +52,4 @@ class FileRenameForm(QtGui.QDialog, Ui_FileRenameDialog):
else:
self.setWindowTitle(translate('OpenLP.FileRenameForm',
'File Rename'))
- return QtGui.QDialog.exec_(self)
+ return QtGui.QDialog.exec_(self)
\ No newline at end of file
diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py
index f9b9f71cb..bd03cc32c 100644
--- a/openlp/core/ui/generaltab.py
+++ b/openlp/core/ui/generaltab.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -141,10 +141,10 @@ class GeneralTab(SettingsTab):
self.settingsLayout.addWidget(self.autoPreviewCheckBox, 1, 0, 1, 2)
# Moved here from image tab
self.timeoutLabel = QtGui.QLabel(self.settingsGroupBox)
- self.timeoutLabel.setObjectName("timeoutLabel")
+ self.timeoutLabel.setObjectName(u'timeoutLabel')
self.settingsLayout.addWidget(self.timeoutLabel, 2, 0, 1, 1)
self.timeoutSpinBox = QtGui.QSpinBox(self.settingsGroupBox)
- self.timeoutSpinBox.setObjectName("timeoutSpinBox")
+ self.timeoutSpinBox.setObjectName(u'timeoutSpinBox')
self.settingsLayout.addWidget(self.timeoutSpinBox, 2, 1, 1, 1)
self.generalLeftLayout.addWidget(self.settingsGroupBox)
self.generalLeftSpacer = QtGui.QSpacerItem(20, 40,
@@ -389,11 +389,11 @@ class GeneralTab(SettingsTab):
settings = QtCore.QSettings()
settings.beginGroup(self.settingsSection)
for screen in self.screens.screen_list:
- screen_name = u'%s %d' % (translate('OpenLP.GeneralTab', 'Screen'),
- screen[u'number'] + 1)
+ screen_name = unicode(translate('OpenLP.GeneralTab', 'Screen %d')) \
+ % (screen[u'number'] + 1)
if screen[u'primary']:
- screen_name = u'%s (%s)' % (screen_name,
- translate('OpenLP.GeneralTab', 'primary'))
+ screen_name = unicode(translate('OpenLP.GeneralTab',
+ '%s (primary)')) % screen_name
self.monitorComboBox.addItem(screen_name)
self.numberEdit.setText(unicode(settings.value(
u'ccli number', QtCore.QVariant(u'')).toString()))
diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py
index 69eb9305d..dd24f172d 100644
--- a/openlp/core/ui/maindisplay.py
+++ b/openlp/core/ui/maindisplay.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -209,7 +209,7 @@ class MainDisplay(DisplayWidget):
shrink = True
else:
shrink = False
- js = u'show_alert("%s", "%s")' % (
+ js = u'show_alert("%s", "%s")' % (
text.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"'),
u'top' if shrink else u'')
height = self.frame.evaluateJavaScript(js)
@@ -235,8 +235,8 @@ class MainDisplay(DisplayWidget):
def image(self, name):
"""
- Add an image as the background. The image is converted to a
- bytestream on route.
+ Add an image as the background. The image is converted to a bytestream
+ on route.
`Image`
The Image to be displayed can be QImage or QPixmap
@@ -421,8 +421,8 @@ class MainDisplay(DisplayWidget):
Display the Footer
"""
log.debug(u'footer')
- js = "show_footer('" + \
- text.replace("\\", "\\\\").replace("\'", "\\\'") + "')"
+ js = u'show_footer(\'' + \
+ text.replace(u'\\', u'\\\\').replace(u'\'', u'\\\'') + u'\')'
self.frame.evaluateJavaScript(js)
def hideDisplay(self, mode=HideMode.Screen):
@@ -541,4 +541,3 @@ class AudioPlayer(QtCore.QObject):
"""
log.debug(u'AudioPlayer Reached end of media playlist')
self.mediaObject.clearQueue()
-
diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py
index ed06877e5..8c6117955 100644
--- a/openlp/core/ui/mainwindow.py
+++ b/openlp/core/ui/mainwindow.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -76,7 +76,7 @@ class Ui_MainWindow(object):
MainIcon = build_icon(u':/icon/openlp-logo-16x16.png')
MainWindow.setWindowIcon(MainIcon)
self.setDockNestingEnabled(True)
- # Set up the main container, which contains all the other form widgets
+ # Set up the main container, which contains all the other form widgets.
self.MainContent = QtGui.QWidget(MainWindow)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
QtGui.QSizePolicy.Expanding)
@@ -141,13 +141,12 @@ class Ui_MainWindow(object):
self.DefaultThemeLabel.setObjectName(u'DefaultThemeLabel')
self.StatusBar.addPermanentWidget(self.DefaultThemeLabel)
# Create the MediaManager
- self.MediaManagerDock = OpenLPDockWidget(MainWindow)
- self.MediaManagerDock.setWindowIcon(
+ self.MediaManagerDock = OpenLPDockWidget(
+ MainWindow, u'MediaManagerDock',
build_icon(u':/system/system_mediamanager.png'))
self.MediaManagerDock.setStyleSheet(MEDIA_MANAGER_STYLE)
self.MediaManagerDock.setMinimumWidth(
self.settingsmanager.mainwindow_left)
- self.MediaManagerDock.setObjectName(u'MediaManagerDock')
self.MediaManagerContents = QtGui.QWidget(MainWindow)
self.MediaManagerContents.setObjectName(u'MediaManagerContents')
self.MediaManagerLayout = QtGui.QHBoxLayout(self.MediaManagerContents)
@@ -161,10 +160,9 @@ class Ui_MainWindow(object):
MainWindow.addDockWidget(
QtCore.Qt.DockWidgetArea(1), self.MediaManagerDock)
# Create the service manager
- self.ServiceManagerDock = OpenLPDockWidget(MainWindow)
- self.ServiceManagerDock.setWindowIcon(
+ self.ServiceManagerDock = OpenLPDockWidget(
+ MainWindow, u'ServiceManagerDock',
build_icon(u':/system/system_servicemanager.png'))
- self.ServiceManagerDock.setObjectName(u'ServiceManagerDock')
self.ServiceManagerDock.setMinimumWidth(
self.settingsmanager.mainwindow_right)
self.ServiceManagerContents = ServiceManager(self)
@@ -172,10 +170,9 @@ class Ui_MainWindow(object):
MainWindow.addDockWidget(
QtCore.Qt.DockWidgetArea(2), self.ServiceManagerDock)
# Create the theme manager
- self.ThemeManagerDock = OpenLPDockWidget(MainWindow)
- self.ThemeManagerDock.setWindowIcon(
+ self.ThemeManagerDock = OpenLPDockWidget(
+ MainWindow, u'ThemeManagerDock',
build_icon(u':/system/system_thememanager.png'))
- self.ThemeManagerDock.setObjectName(u'ThemeManagerDock')
self.ThemeManagerDock.setMinimumWidth(
self.settingsmanager.mainwindow_right)
self.ThemeManagerContents = ThemeManager(self)
@@ -272,7 +269,7 @@ class Ui_MainWindow(object):
self.SettingsPluginListItem.setObjectName(u'SettingsPluginListItem')
MainWindow.actionList.add_action(self.SettingsPluginListItem,
u'Settings')
- #i18n Language Items
+ # i18n Language Items
self.AutoLanguageItem = QtGui.QAction(MainWindow)
self.AutoLanguageItem.setObjectName(u'AutoLanguageItem')
self.AutoLanguageItem.setCheckable(True)
@@ -331,7 +328,7 @@ class Ui_MainWindow(object):
None, self.ViewMediaManagerItem, self.ViewServiceManagerItem,
self.ViewThemeManagerItem, None, self.ViewPreviewPanel,
self.ViewLivePanel))
- #i18n add Language Actions
+ # i18n add Language Actions
add_actions(self.SettingsLanguageMenu, (self.AutoLanguageItem, None))
add_actions(self.SettingsLanguageMenu, self.LanguageGroup.actions())
add_actions(self.SettingsMenu, (self.SettingsPluginListItem,
@@ -354,17 +351,8 @@ class Ui_MainWindow(object):
QtCore.SIGNAL(u'aboutToShow()'), self.updateFileMenu)
QtCore.QObject.connect(self.FileExitItem,
QtCore.SIGNAL(u'triggered()'), MainWindow.close)
- QtCore.QObject.connect(self.ControlSplitter,
- QtCore.SIGNAL(u'splitterMoved(int, int)'), self.trackSplitter)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
- def trackSplitter(self, tab, pos):
- """
- Splitter between the Preview and Live Controllers.
- """
- self.liveController.widthChanged()
- self.previewController.widthChanged()
-
def retranslateUi(self, MainWindow):
"""
Set up the translation system
@@ -594,16 +582,16 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
QtCore.QObject.connect(self.SettingsShortcutsItem,
QtCore.SIGNAL(u'triggered()'), self.onSettingsShortcutsItemClicked)
QtCore.QObject.connect(self.FileNewItem, QtCore.SIGNAL(u'triggered()'),
- self.ServiceManagerContents.onNewService)
+ self.ServiceManagerContents.onNewServiceClicked)
QtCore.QObject.connect(self.FileOpenItem,
QtCore.SIGNAL(u'triggered()'),
- self.ServiceManagerContents.onLoadService)
+ self.ServiceManagerContents.onLoadServiceClicked)
QtCore.QObject.connect(self.FileSaveItem,
QtCore.SIGNAL(u'triggered()'),
- self.ServiceManagerContents.onQuickSaveService)
+ self.ServiceManagerContents.onSaveServiceClicked)
QtCore.QObject.connect(self.FileSaveAsItem,
QtCore.SIGNAL(u'triggered()'),
- self.ServiceManagerContents.onSaveService)
+ self.ServiceManagerContents.onSaveServiceAsClicked)
# i18n set signals for languages
QtCore.QObject.connect(self.AutoLanguageItem,
QtCore.SIGNAL(u'toggled(bool)'), self.setAutoLanguage)
@@ -624,6 +612,15 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
QtCore.SIGNAL(u'config_screen_changed'), self.screenChanged)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'maindisplay_status_text'), self.showStatusMessage)
+ Receiver.send_message(u'cursor_busy')
+ # Simple message boxes
+ QtCore.QObject.connect(Receiver.get_receiver(),
+ QtCore.SIGNAL(u'openlp_error_message'), self.onErrorMessage)
+ QtCore.QObject.connect(Receiver.get_receiver(),
+ QtCore.SIGNAL(u'openlp_warning_message'), self.onWarningMessage)
+ QtCore.QObject.connect(Receiver.get_receiver(),
+ QtCore.SIGNAL(u'openlp_information_message'),
+ self.onInformationMessage)
# warning cyclic dependency
# RenderManager needs to call ThemeManager and
# ThemeManager needs to call RenderManager
@@ -671,6 +668,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
if savedPlugin != -1:
self.MediaToolBox.setCurrentIndex(savedPlugin)
self.settingsForm.postSetUp()
+ Receiver.send_message(u'cursor_normal')
def setAutoLanguage(self, value):
self.LanguageGroup.setDisabled(value)
@@ -703,7 +701,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
if QtCore.QSettings().value(
self.generalSettingsSection + u'/auto open',
QtCore.QVariant(False)).toBool():
- self.ServiceManagerContents.onLoadService(True)
+ self.ServiceManagerContents.loadLastFile()
view_mode = QtCore.QSettings().value(u'%s/view mode' % \
self.generalSettingsSection, u'default')
if view_mode == u'default':
@@ -732,6 +730,15 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
translate('OpenLP.MainWindow',
'The Main Display has been blanked out'))
+ def onErrorMessage(self, data):
+ QtGui.QMessageBox.critical(self, data[u'title'], data[u'message'])
+
+ def onWarningMessage(self, data):
+ QtGui.QMessageBox.warning(self, data[u'title'], data[u'message'])
+
+ def onInformationMessage(self, data):
+ QtGui.QMessageBox.information(self, data[u'title'], data[u'message'])
+
def onHelpWebSiteClicked(self):
"""
Load the OpenLP website
@@ -759,6 +766,13 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
"""
self.settingsForm.exec_()
+ def paintEvent(self, event):
+ """
+ We need to make sure, that the SlidePreview's size is correct.
+ """
+ self.previewController.previewSizeChanged()
+ self.liveController.previewSizeChanged()
+
def onSettingsShortcutsItemClicked(self):
"""
Show the shortcuts dialog
@@ -817,7 +831,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
"""
Hook to close the main window and display windows on exit
"""
- if self.serviceNotSaved:
+ if self.ServiceManagerContents.isModified():
ret = QtGui.QMessageBox.question(self,
translate('OpenLP.MainWindow', 'Save Changes to Service?'),
translate('OpenLP.MainWindow', 'Your service has changed. '
@@ -828,17 +842,30 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
QtGui.QMessageBox.Save),
QtGui.QMessageBox.Save)
if ret == QtGui.QMessageBox.Save:
- self.ServiceManagerContents.onSaveService(True)
- self.cleanUp()
- event.accept()
+ #self.ServiceManagerContents.onSaveService(True)
+ if self.ServiceManagerContents.saveFile():
+ self.cleanUp()
+ event.accept()
+ else:
+ event.ignore()
elif ret == QtGui.QMessageBox.Discard:
self.cleanUp()
event.accept()
else:
event.ignore()
else:
- self.cleanUp()
- event.accept()
+ ret = QtGui.QMessageBox.question(self,
+ translate('OpenLP.MainWindow', 'Close OpenLP'),
+ translate('OpenLP.MainWindow', 'Are you sure you want to close OpenLP?'),
+ QtGui.QMessageBox.StandardButtons(
+ QtGui.QMessageBox.Yes |
+ QtGui.QMessageBox.No),
+ QtGui.QMessageBox.Yes)
+ if ret == QtGui.QMessageBox.Yes:
+ self.cleanUp()
+ event.accept()
+ else:
+ event.ignore()
def cleanUp(self):
"""
@@ -880,6 +907,23 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
title = u'%s - %s*' % (self.mainTitle, service_name)
self.setWindowTitle(title)
+ def setServiceModified(self, modified, fileName):
+ """
+ This method is called from the ServiceManager to set the title of the
+ main window.
+
+ ``modified``
+ Whether or not this service has been modified.
+
+ ``fileName``
+ The file name of the service file.
+ """
+ if modified:
+ title = u'%s - %s*' % (self.mainTitle, fileName)
+ else:
+ title = u'%s - %s' % (self.mainTitle, fileName)
+ self.setWindowTitle(title)
+
def showStatusMessage(self, message):
self.StatusBar.showMessage(message)
@@ -981,11 +1025,12 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
if recentFilesToDisplay:
self.FileMenu.addSeparator()
for fileId, filename in enumerate(recentFilesToDisplay):
- action = QtGui.QAction(u'&%d %s' % (fileId +1,
+ log.debug('Recent file name: %s', filename)
+ action = QtGui.QAction(u'&%d %s' % (fileId + 1,
QtCore.QFileInfo(filename).fileName()), self)
action.setData(QtCore.QVariant(filename))
self.connect(action, QtCore.SIGNAL(u'triggered()'),
- self.ServiceManagerContents.loadService)
+ self.ServiceManagerContents.onRecentServiceClicked)
self.FileMenu.addAction(action)
self.FileMenu.addSeparator()
self.FileMenu.addAction(self.FileMenuActions[-1])
@@ -998,8 +1043,8 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
The service filename to add
"""
# The maxRecentFiles value does not have an interface and so never gets
- # actually stored in the settings therefore the default value of 20
- # will always be used.
+ # actually stored in the settings therefore the default value of 20 will
+ # always be used.
maxRecentFiles = QtCore.QSettings().value(u'advanced/max recent files',
QtCore.QVariant(20)).toInt()[0]
if filename:
diff --git a/openlp/core/ui/mediadockmanager.py b/openlp/core/ui/mediadockmanager.py
index c49d7fab3..ced3850ec 100644
--- a/openlp/core/ui/mediadockmanager.py
+++ b/openlp/core/ui/mediadockmanager.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -85,4 +85,4 @@ class MediaDockManager(object):
if self.media_dock.widget(dock_index).settingsSection == \
media_item.plugin.name.lower():
self.media_dock.widget(dock_index).hide()
- self.media_dock.removeItem(dock_index)
+ self.media_dock.removeItem(dock_index)
\ No newline at end of file
diff --git a/openlp/core/ui/plugindialog.py b/openlp/core/ui/plugindialog.py
index 45305d75c..63d7ae014 100644
--- a/openlp/core/ui/plugindialog.py
+++ b/openlp/core/ui/plugindialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -114,4 +114,3 @@ class Ui_PluginViewDialog(object):
translate('OpenLP.PluginForm', 'Active'))
self.statusComboBox.setItemText(1,
translate('OpenLP.PluginForm', 'Inactive'))
-
diff --git a/openlp/core/ui/pluginform.py b/openlp/core/ui/pluginform.py
index f3caf67a8..4d3177ef3 100644
--- a/openlp/core/ui/pluginform.py
+++ b/openlp/core/ui/pluginform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -92,7 +92,7 @@ class PluginForm(QtGui.QDialog, Ui_PluginViewDialog):
self.statusComboBox.setEnabled(False)
def _setDetails(self):
- log.debug('PluginStatus: %s', str(self.activePlugin.status))
+ log.debug(u'PluginStatus: %s', str(self.activePlugin.status))
self.versionNumberLabel.setText(self.activePlugin.version)
self.aboutTextBrowser.setHtml(self.activePlugin.about())
self.programaticChange = True
diff --git a/openlp/core/ui/screen.py b/openlp/core/ui/screen.py
index 1d4ad8c48..430426fd5 100644
--- a/openlp/core/ui/screen.py
+++ b/openlp/core/ui/screen.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -99,4 +99,4 @@ class ScreenList(object):
user wants to use the correct screen attributes
"""
log.debug(u'reset_current_display')
- self.set_current_display(self.current_display)
+ self.set_current_display(self.current_display)
\ No newline at end of file
diff --git a/openlp/core/ui/serviceitemeditdialog.py b/openlp/core/ui/serviceitemeditdialog.py
index 215cc6146..19639a7c2 100644
--- a/openlp/core/ui/serviceitemeditdialog.py
+++ b/openlp/core/ui/serviceitemeditdialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -82,4 +82,4 @@ class Ui_ServiceItemEditDialog(object):
serviceItemEditDialog.setWindowTitle(
translate('OpenLP.ServiceItemEditForm', 'Reorder Service Item'))
self.deleteButton.setText(translate('OpenLP.ServiceItemEditForm',
- 'Delete'))
+ 'Delete'))
\ No newline at end of file
diff --git a/openlp/core/ui/serviceitemeditform.py b/openlp/core/ui/serviceitemeditform.py
index e57474315..6516fa40f 100644
--- a/openlp/core/ui/serviceitemeditform.py
+++ b/openlp/core/ui/serviceitemeditform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -122,4 +122,4 @@ class ServiceItemEditForm(QtGui.QDialog, Ui_ServiceItemEditDialog):
self.itemList.remove(self.itemList[row])
self.itemList.insert(row + 1, temp)
self.loadData()
- self.listWidget.setCurrentRow(row + 1)
+ self.listWidget.setCurrentRow(row + 1)
\ No newline at end of file
diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py
index 32e46dffb..8f4e17a0c 100644
--- a/openlp/core/ui/servicemanager.py
+++ b/openlp/core/ui/servicemanager.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -37,7 +37,7 @@ from openlp.core.lib import OpenLPToolbar, ServiceItem, context_menu_action, \
Receiver, build_icon, ItemCapabilities, SettingsManager, translate, \
ThemeLevel
from openlp.core.ui import ServiceNoteForm, ServiceItemEditForm
-from openlp.core.utils import AppLocation
+from openlp.core.utils import AppLocation, split_filename
class ServiceManagerList(QtGui.QTreeWidget):
"""
@@ -90,6 +90,7 @@ class ServiceManagerList(QtGui.QTreeWidget):
mimeData.setText(u'ServiceManager')
drag.start(QtCore.Qt.CopyAction)
+
class ServiceManager(QtGui.QWidget):
"""
Manages the services. This involves taking text strings from plugins and
@@ -101,18 +102,19 @@ class ServiceManager(QtGui.QWidget):
"""
Sets up the service manager, toolbars, list view, et al.
"""
- QtGui.QWidget.__init__(self)
+ QtGui.QWidget.__init__(self, parent)
self.parent = parent
self.serviceItems = []
self.serviceName = u''
self.suffixes = []
- self.droppos = 0
+ self.dropPosition = 0
self.expandTabs = False
- #is a new service and has not been saved
- self.isNew = True
+ # is a new service and has not been saved
+ self._modified = False
+ self._fileName = u''
self.serviceNoteForm = ServiceNoteForm(self.parent)
self.serviceItemEditForm = ServiceItemEditForm(self.parent)
- #start with the layout
+ # start with the layout
self.layout = QtGui.QVBoxLayout(self)
self.layout.setSpacing(0)
self.layout.setMargin(0)
@@ -123,17 +125,17 @@ class ServiceManager(QtGui.QWidget):
translate('OpenLP.ServiceManager', 'New Service'),
u':/general/general_new.png',
translate('OpenLP.ServiceManager', 'Create a new service'),
- self.onNewService)
+ self.onNewServiceClicked)
self.toolbar.addToolbarButton(
translate('OpenLP.ServiceManager', 'Open Service'),
u':/general/general_open.png',
translate('OpenLP.ServiceManager', 'Load an existing service'),
- self.onLoadService)
+ self.onLoadServiceClicked)
self.toolbar.addToolbarButton(
translate('OpenLP.ServiceManager', 'Save Service'),
u':/general/general_save.png',
translate('OpenLP.ServiceManager', 'Save this service'),
- self.onQuickSaveService)
+ self.onSaveServiceClicked)
self.toolbar.addSeparator()
self.themeLabel = QtGui.QLabel(translate('OpenLP.ServiceManager',
'Theme:'), self)
@@ -282,6 +284,42 @@ class ServiceManager(QtGui.QWidget):
self.menu.addMenu(self.themeMenu)
self.configUpdated(True)
+ def setModified(self, modified=True):
+ """
+ Setter for property "modified". Sets whether or not the current service
+ has been modified.
+ """
+ self._modified = modified
+ serviceFile = self.shortFileName() or u'Untitled Service'
+ self.parent.setServiceModified(modified, serviceFile)
+
+ def isModified(self):
+ """
+ Getter for boolean property "modified".
+ """
+ return self._modified
+
+ def setFileName(self, fileName):
+ """
+ Setter for service file.
+ """
+ self._fileName = unicode(fileName)
+ self.parent.setServiceModified(self.isModified, self.shortFileName())
+ QtCore.QSettings(). \
+ setValue(u'service/last file',QtCore.QVariant(fileName))
+
+ def fileName(self):
+ """
+ Return the current file name including path.
+ """
+ return self._fileName
+
+ def shortFileName(self):
+ """
+ Return the current file name, excluding the path.
+ """
+ return split_filename(self._fileName)[1]
+
def configUpdated(self, firstTime=False):
"""
Triggered when Config dialog is updated.
@@ -295,6 +333,223 @@ class ServiceManager(QtGui.QWidget):
def supportedSuffixes(self, suffix):
self.suffixes.append(suffix)
+ def onNewServiceClicked(self):
+ """
+ Create a new service.
+ """
+ if self.isModified():
+ result = QtGui.QMessageBox.question(self.parent,
+ translate('OpenLP.ServiceManager', 'Save Changes'),
+ translate('OpenLP.ServiceManager', 'The current service has '
+ 'been modified, would you like to save it?'),
+ QtGui.QMessageBox.Save | QtGui.QMessageBox.Discard |
+ QtGui.QMessageBox.Cancel, QtGui.QMessageBox.Save)
+ if result == QtGui.QMessageBox.Cancel:
+ return False
+ elif result == QtGui.QMessageBox.Save:
+ if not self.saveFile():
+ return False
+ self.newFile()
+
+ def onLoadServiceClicked(self):
+ if self.isModified():
+ result = QtGui.QMessageBox.question(self.parent,
+ translate('OpenLP.ServiceManager', 'Save Changes'),
+ translate('OpenLP.ServiceManager', 'The current service has '
+ 'been modified, would you like to save it?'),
+ QtGui.QMessageBox.Save | QtGui.QMessageBox.Discard |
+ QtGui.QMessageBox.Cancel, QtGui.QMessageBox.Save)
+ if result == QtGui.QMessageBox.Cancel:
+ return False
+ elif result == QtGui.QMessageBox.Save:
+ self.saveFile()
+ fileName = unicode(QtGui.QFileDialog.getOpenFileName(self.parent,
+ translate('OpenLP.ServiceManager', 'Open File'),
+ SettingsManager.get_last_dir(self.parent.serviceSettingsSection),
+ translate('OpenLP.ServiceManager',
+ 'OpenLP Service Files (*.osz) (*.osz)')))
+ if not fileName:
+ return False
+ SettingsManager.set_last_dir(self.parent.serviceSettingsSection,
+ split_filename(fileName)[0])
+ self.loadFile(fileName)
+
+ def onSaveServiceClicked(self):
+ self.saveFile()
+
+ def onSaveServiceAsClicked(self):
+ self.saveFileAs()
+
+ def onRecentServiceClicked(self):
+ sender = self.sender()
+ self.loadFile(sender.data().toString())
+
+ def newFile(self):
+ """
+ Create a blank new service file.
+ """
+ self.serviceManagerList.clear()
+ self.serviceItems = []
+ self.setFileName(u'')
+ self.setModified(False)
+ QtCore.QSettings(). \
+ setValue(u'service/last file',QtCore.QVariant(u''))
+
+ def saveFile(self):
+ """
+ Save the current Service file.
+ """
+ if not self.fileName():
+ return self.saveFileAs()
+ else:
+ fileName = self.fileName()
+ log.debug(u'ServiceManager.saveFile - %s' % fileName)
+ SettingsManager.set_last_dir(self.parent.serviceSettingsSection,
+ split_filename(fileName)[0])
+ service = []
+ serviceFileName = fileName.replace(u'.osz', u'.osd')
+ zip = None
+ file = None
+ try:
+ write_list = []
+ zip = zipfile.ZipFile(unicode(fileName), 'w')
+ for item in self.serviceItems:
+ service.append({u'serviceitem': \
+ item[u'service_item'].get_service_repr()})
+ if item[u'service_item'].uses_file():
+ for frame in item[u'service_item'].get_frames():
+ if item[u'service_item'].is_image():
+ path_from = frame[u'path']
+ else:
+ path_from = unicode(os.path.join(
+ frame[u'path'],
+ frame[u'title']))
+ # On write a file once
+ if not path_from in write_list:
+ write_list.append(path_from)
+ zip.write(path_from.encode(u'utf-8'))
+ file = open(serviceFileName, u'wb')
+ cPickle.dump(service, file)
+ file.close()
+ zip.write(serviceFileName.encode(u'utf-8'))
+ except IOError:
+ log.exception(u'Failed to save service to disk')
+ finally:
+ if file:
+ file.close()
+ if zip:
+ zip.close()
+ try:
+ os.remove(serviceFileName)
+ except (IOError, OSError):
+ # if not present do not worry
+ pass
+ self.parent.addRecentFile(fileName)
+ self.setModified(False)
+ return True
+
+ def saveFileAs(self):
+ """
+ Get a file name and then call :function:`ServiceManager.saveFile` to
+ save the file.
+ """
+ fileName = unicode(QtGui.QFileDialog.getSaveFileName(self.parent,
+ translate('OpenLP.ServiceManager', 'Save Service'),
+ SettingsManager.get_last_dir(self.parent.serviceSettingsSection),
+ translate('OpenLP.ServiceManager',
+ 'OpenLP Service Files (*.osz) (*.osz)')))
+ if not fileName:
+ return False
+ if os.path.splitext(fileName)[1] == u'':
+ fileName += u'.osz'
+ else:
+ ext = os.path.splitext(fileName)[1]
+ fileName.replace(ext, u'.osz')
+ self.setFileName(fileName)
+ return self.saveFile()
+
+ def loadFile(self, fileName):
+ if not fileName:
+ return False
+ else:
+ fileName = unicode(fileName)
+ zip = None
+ fileTo = None
+ try:
+ zip = zipfile.ZipFile(unicode(fileName))
+ for file in zip.namelist():
+ try:
+ ucsfile = file.decode(u'utf-8')
+ except UnicodeDecodeError:
+ QtGui.QMessageBox.critical(
+ self, translate('OpenLP.ServiceManager', 'Error'),
+ translate('OpenLP.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' %
+ file.decode(u'utf-8', u'replace'))
+ continue
+ osfile = unicode(QtCore.QDir.toNativeSeparators(ucsfile))
+ filePath = os.path.join(self.servicePath,
+ os.path.split(osfile)[1])
+ fileTo = open(filePath, u'wb')
+ fileTo.write(zip.read(file))
+ fileTo.flush()
+ fileTo.close()
+ if filePath.endswith(u'osd'):
+ p_file = filePath
+ if 'p_file' in locals():
+ fileTo = open(p_file, u'r')
+ items = cPickle.load(fileTo)
+ fileTo.close()
+ self.newFile()
+ for item in items:
+ serviceItem = ServiceItem()
+ serviceItem.render_manager = self.parent.renderManager
+ serviceItem.set_from_service(item, self.servicePath)
+ self.validateItem(serviceItem)
+ self.addServiceItem(serviceItem)
+ if serviceItem.is_capable(
+ ItemCapabilities.OnLoadUpdate):
+ Receiver.send_message(u'%s_service_load' %
+ serviceItem.name.lower(), serviceItem)
+ try:
+ if os.path.isfile(p_file):
+ os.remove(p_file)
+ except (IOError, OSError):
+ log.exception(u'Failed to remove osd file')
+ else:
+ QtGui.QMessageBox.critical(
+ self, translate('OpenLP.ServiceManager', 'Error'),
+ translate('OpenLP.ServiceManager',
+ 'File is not a valid service.'))
+ log.exception(u'File contains no service data')
+ except (IOError, NameError):
+ log.exception(u'Problem loading a service file')
+ finally:
+ if fileTo:
+ fileTo.close()
+ if zip:
+ zip.close()
+ self.setFileName(fileName)
+ self.parent.addRecentFile(fileName)
+ self.setModified(False)
+ QtCore.QSettings(). \
+ setValue(u'service/last file',QtCore.QVariant(fileName))
+ # Refresh Plugin lists
+ Receiver.send_message(u'plugin_list_refresh')
+
+ def loadLastFile(self):
+ """
+ Load the last service item from the service manager when the
+ service was last closed. Can be blank if there was no service
+ present.
+ """
+ fileName = QtCore.QSettings(). \
+ value(u'service/last file',QtCore.QVariant(u'')).toString()
+ if fileName:
+ self.loadFile(fileName)
+
def contextMenu(self, point):
item = self.serviceManagerList.itemAt(point)
if item is None:
@@ -427,6 +682,7 @@ class ServiceManager(QtGui.QWidget):
# Top Item was selected so set the last one
if setLastItem:
lastItem.setSelected(True)
+ self.isModified = True
def onMoveSelectionDown(self):
"""
@@ -449,6 +705,7 @@ class ServiceManager(QtGui.QWidget):
serviceIterator += 1
if setSelected:
firstItem.setSelected(True)
+ self.isModified = True
def onCollapseAll(self):
"""
@@ -492,7 +749,7 @@ class ServiceManager(QtGui.QWidget):
self.serviceItems.remove(self.serviceItems[item])
self.serviceItems.insert(0, temp)
self.repaintServiceList(0, count)
- self.parent.serviceChanged(False, self.serviceName)
+ self.isModified = True
def onServiceUp(self):
"""
@@ -505,7 +762,7 @@ class ServiceManager(QtGui.QWidget):
self.serviceItems.remove(self.serviceItems[item])
self.serviceItems.insert(item - 1, temp)
self.repaintServiceList(item - 1, count)
- self.parent.serviceChanged(False, self.serviceName)
+ self.setModified(True)
def onServiceDown(self):
"""
@@ -518,7 +775,7 @@ class ServiceManager(QtGui.QWidget):
self.serviceItems.remove(self.serviceItems[item])
self.serviceItems.insert(item + 1, temp)
self.repaintServiceList(item + 1, count)
- self.parent.serviceChanged(False, self.serviceName)
+ self.setModified(True)
def onServiceEnd(self):
"""
@@ -530,30 +787,7 @@ class ServiceManager(QtGui.QWidget):
self.serviceItems.remove(self.serviceItems[item])
self.serviceItems.insert(len(self.serviceItems), temp)
self.repaintServiceList(len(self.serviceItems) - 1, count)
- self.parent.serviceChanged(False, self.serviceName)
-
- def onNewService(self):
- """
- Clear the list to create a new service
- """
- if self.parent.serviceNotSaved and QtCore.QSettings().value(
- self.parent.generalSettingsSection + u'/save prompt',
- QtCore.QVariant(False)).toBool():
- ret = QtGui.QMessageBox.question(self,
- translate('OpenLP.ServiceManager', 'Save Changes to Service?'),
- translate('OpenLP.ServiceManager',
- 'Your service is unsaved, do you want to save '
- 'those changes before creating a new one?'),
- QtGui.QMessageBox.StandardButtons(
- QtGui.QMessageBox.Cancel | QtGui.QMessageBox.Save),
- QtGui.QMessageBox.Save)
- if ret == QtGui.QMessageBox.Save:
- self.onSaveService()
- self.serviceManagerList.clear()
- self.serviceItems = []
- self.serviceName = u''
- self.isNew = True
- self.parent.serviceChanged(True, self.serviceName)
+ self.setModified(True)
def onDeleteFromService(self):
"""
@@ -563,13 +797,19 @@ class ServiceManager(QtGui.QWidget):
if item is not -1:
self.serviceItems.remove(self.serviceItems[item])
self.repaintServiceList(0, 0)
- self.parent.serviceChanged(False, self.serviceName)
+ self.setModified(True)
def repaintServiceList(self, serviceItem, serviceItemCount):
"""
- Clear the existing service list and prepaint all the items
- Used when moving items as the move takes place in supporting array,
- and when regenerating all the items due to theme changes
+ Clear the existing service list and prepaint all the items. This is
+ used when moving items as the move takes place in a supporting list,
+ and when regenerating all the items due to theme changes.
+
+ ``serviceItem``
+ The item which changed.
+
+ ``serviceItemCount``
+ The number of items in the service.
"""
# Correct order of items in array
count = 1
@@ -615,183 +855,6 @@ class ServiceManager(QtGui.QWidget):
item[u'expanded'] = temp
treewidgetitem.setExpanded(item[u'expanded'])
- def onSaveService(self, quick=False):
- """
- Save the current service in a zip (OSZ) file
- This file contains
- * An osd which is a pickle of the service items
- * All image, presentation and video files needed to run the service.
- """
- log.debug(u'onSaveService %s' % quick)
- if not quick or self.isNew:
- filename = QtGui.QFileDialog.getSaveFileName(self,
- translate('OpenLP.ServiceManager', 'Save Service'),
- SettingsManager.get_last_dir(self.parent.serviceSettingsSection),
- translate('OpenLP.ServiceManager', 'OpenLP Service Files (*.osz)'))
- else:
- filename = os.path.join(SettingsManager.get_last_dir(
- self.parent.serviceSettingsSection), self.serviceName)
- if filename:
- filename = QtCore.QDir.toNativeSeparators(filename)
- splittedFile = filename.split(u'.')
- if splittedFile[-1] != u'osz':
- filename = filename + u'.osz'
- filename = unicode(filename)
- self.isNew = False
- SettingsManager.set_last_dir(self.parent.serviceSettingsSection,
- os.path.split(filename)[0])
- service = []
- servicefile = filename + u'.osd'
- zip = None
- file = None
- try:
- write_list = []
- zip = zipfile.ZipFile(unicode(filename), 'w')
- for item in self.serviceItems:
- service.append({u'serviceitem':item[u'service_item']
- .get_service_repr()})
- if item[u'service_item'].uses_file():
- for frame in item[u'service_item'].get_frames():
- if item[u'service_item'].is_image():
- path_from = frame[u'path']
- else:
- path_from = unicode(os.path.join(
- frame[u'path'],
- frame[u'title']))
- # On write a file once
- if not path_from in write_list:
- write_list.append(path_from)
- zip.write(path_from.encode(u'utf-8'))
- file = open(servicefile, u'wb')
- cPickle.dump(service, file)
- file.close()
- zip.write(servicefile.encode(u'utf-8'))
- except IOError:
- log.exception(u'Failed to save service to disk')
- finally:
- if file:
- file.close()
- if zip:
- zip.close()
- try:
- os.remove(servicefile)
- except (IOError, OSError):
- pass #if not present do not worry
- name = filename.split(os.path.sep)
- self.serviceName = name[-1]
- self.parent.addRecentFile(filename)
- self.parent.serviceChanged(True, self.serviceName)
-
- def onQuickSaveService(self):
- self.onSaveService(True)
-
- def onLoadService(self, lastService=False):
- if lastService:
- if not self.parent.recentFiles:
- return
- filename = self.parent.recentFiles[0]
- else:
- filename = QtGui.QFileDialog.getOpenFileName(
- self, translate('OpenLP.ServiceManager', 'Open Service'),
- SettingsManager.get_last_dir(
- self.parent.serviceSettingsSection), u'Services (*.osz)')
- filename = QtCore.QDir.toNativeSeparators(filename)
- self.loadService(filename)
-
- def loadService(self, filename=None):
- """
- Load an existing service from disk and rebuild the serviceitems. All
- files retrieved from the zip file are placed in a temporary directory
- and will only be used for this service.
- """
- if self.parent.serviceNotSaved:
- ret = QtGui.QMessageBox.question(self,
- translate('OpenLP.ServiceManager', 'Save Changes to Service?'),
- translate('OpenLP.ServiceManager',
- 'Your current service is unsaved, do you want to '
- 'save the changes before opening a new one?'),
- QtGui.QMessageBox.StandardButtons(
- QtGui.QMessageBox.Discard | QtGui.QMessageBox.Save),
- QtGui.QMessageBox.Save)
- if ret == QtGui.QMessageBox.Save:
- self.onSaveService()
- if filename is None:
- action = self.sender()
- if isinstance(action, QtGui.QAction):
- filename = action.data().toString()
- else:
- return
- filename = unicode(filename)
- name = filename.split(os.path.sep)
- if filename:
- SettingsManager.set_last_dir(self.parent.serviceSettingsSection,
- os.path.split(filename)[0])
- zip = None
- file_to = None
- try:
- zip = zipfile.ZipFile(unicode(filename))
- for file in zip.namelist():
- try:
- ucsfile = file.decode(u'utf-8')
- except UnicodeDecodeError:
- QtGui.QMessageBox.critical(
- self, translate('OpenLP.ServiceManager', 'Error'),
- translate('OpenLP.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' %
- file.decode(u'utf-8', u'replace'))
- continue
- osfile = unicode(QtCore.QDir.toNativeSeparators(ucsfile))
- names = osfile.split(os.path.sep)
- file_path = os.path.join(self.servicePath,
- names[len(names) - 1])
- file_to = open(file_path, u'wb')
- file_to.write(zip.read(file))
- file_to.flush()
- file_to.close()
- if file_path.endswith(u'osd'):
- p_file = file_path
- if 'p_file' in locals():
- file_to = open(p_file, u'r')
- items = cPickle.load(file_to)
- file_to.close()
- self.onNewService()
- for item in items:
- serviceitem = ServiceItem()
- serviceitem.render_manager = self.parent.renderManager
- serviceitem.set_from_service(item, self.servicePath)
- self.validateItem(serviceitem)
- self.addServiceItem(serviceitem)
- if serviceitem.is_capable(
- ItemCapabilities.OnLoadUpdate):
- Receiver.send_message(u'%s_service_load' %
- serviceitem.name.lower(), serviceitem)
- try:
- if os.path.isfile(p_file):
- os.remove(p_file)
- except (IOError, OSError):
- log.exception(u'Failed to remove osd file')
- else:
- QtGui.QMessageBox.critical(
- self, translate('OpenLP.ServiceManager', 'Error'),
- translate('OpenLP.ServiceManager',
- 'File is not a valid service.'))
- log.exception(u'File contains no service data')
- except (IOError, NameError):
- log.exception(u'Problem loading a service file')
- finally:
- if file_to:
- file_to.close()
- if zip:
- zip.close()
- self.isNew = False
- self.serviceName = name[len(name) - 1]
- self.parent.addRecentFile(filename)
- self.parent.serviceChanged(True, self.serviceName)
- # Refresh Plugin lists
- Receiver.send_message(u'plugin_list_refresh')
-
def validateItem(self, serviceItem):
"""
Validates the service item and if the suffix matches an accepted
@@ -844,6 +907,7 @@ class ServiceManager(QtGui.QWidget):
Rebuild the service list as things have changed and a
repaint is the easiest way to do this.
"""
+ Receiver.send_message(u'cursor_busy')
log.debug(u'regenerateServiceItems')
# force reset of renderer as theme data has changed
self.parent.renderManager.themedata = None
@@ -857,7 +921,8 @@ class ServiceManager(QtGui.QWidget):
item[u'service_item'], False, expand=item[u'expanded'])
# Set to False as items may have changed rendering
# does not impact the saved song so True may also be valid
- self.parent.serviceChanged(False, self.serviceName)
+ self.setModified(True)
+ Receiver.send_message(u'cursor_normal')
def serviceItemUpdate(self, message):
"""
@@ -881,7 +946,7 @@ class ServiceManager(QtGui.QWidget):
item[u'service_item'] = newItem
self.repaintServiceList(itemcount + 1, 0)
self.parent.liveController.replaceServiceManagerItem(newItem)
- self.parent.serviceChanged(False, self.serviceName)
+ self.setModified(True)
def addServiceItem(self, item, rebuild=False, expand=None, replace=False):
"""
@@ -905,7 +970,7 @@ class ServiceManager(QtGui.QWidget):
self.parent.liveController.replaceServiceManagerItem(item)
else:
# nothing selected for dnd
- if self.droppos == 0:
+ if self.dropPosition == 0:
if isinstance(item, list):
for inditem in item:
self.serviceItems.append({u'service_item': inditem,
@@ -917,15 +982,15 @@ class ServiceManager(QtGui.QWidget):
u'expanded':expand})
self.repaintServiceList(len(self.serviceItems) + 1, 0)
else:
- self.serviceItems.insert(self.droppos, {u'service_item': item,
- u'order': self.droppos,
+ self.serviceItems.insert(self.dropPosition, {u'service_item': item,
+ u'order': self.dropPosition,
u'expanded':expand})
- self.repaintServiceList(self.droppos, 0)
+ self.repaintServiceList(self.dropPosition, 0)
# if rebuilding list make sure live is fixed.
if rebuild:
self.parent.liveController.replaceServiceManagerItem(item)
- self.droppos = 0
- self.parent.serviceChanged(False, self.serviceName)
+ self.dropPosition = 0
+ self.setModified(True)
def makePreview(self):
"""
@@ -1045,7 +1110,7 @@ class ServiceManager(QtGui.QWidget):
# we are not over anything so drop
replace = False
if item is None:
- self.droppos = len(self.serviceItems)
+ self.dropPosition = len(self.serviceItems)
else:
# we are over somthing so lets investigate
pos = self._getParentItemData(item) - 1
@@ -1056,14 +1121,14 @@ class ServiceManager(QtGui.QWidget):
action = self.dndMenu.exec_(QtGui.QCursor.pos())
# New action required
if action == self.newAction:
- self.droppos = self._getParentItemData(item)
+ self.dropPosition = self._getParentItemData(item)
# Append to existing action
if action == self.addToAction:
- self.droppos = self._getParentItemData(item)
+ self.dropPosition = self._getParentItemData(item)
item.setSelected(True)
replace = True
else:
- self.droppos = self._getParentItemData(item)
+ self.dropPosition = self._getParentItemData(item)
Receiver.send_message(u'%s_add_service_item' % plugin, replace)
def updateThemeList(self, theme_list):
diff --git a/openlp/core/ui/servicenotedialog.py b/openlp/core/ui/servicenotedialog.py
index 899db64be..eb3aba9d4 100644
--- a/openlp/core/ui/servicenotedialog.py
+++ b/openlp/core/ui/servicenotedialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -50,4 +50,4 @@ class Ui_ServiceNoteEdit(object):
def retranslateUi(self, serviceNoteEdit):
serviceNoteEdit.setWindowTitle(
- translate('OpenLP.ServiceNoteForm', 'Service Item Notes'))
+ translate('OpenLP.ServiceNoteForm', 'Service Item Notes'))
\ No newline at end of file
diff --git a/openlp/core/ui/servicenoteform.py b/openlp/core/ui/servicenoteform.py
index a453c863e..de689e842 100644
--- a/openlp/core/ui/servicenoteform.py
+++ b/openlp/core/ui/servicenoteform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -41,4 +41,4 @@ class ServiceNoteForm(QtGui.QDialog, Ui_ServiceNoteEdit):
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'accepted()'),
self.accept)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'),
- self.reject)
+ self.reject)
\ No newline at end of file
diff --git a/openlp/core/ui/settingsdialog.py b/openlp/core/ui/settingsdialog.py
index 93b4e6141..d4bc8e110 100644
--- a/openlp/core/ui/settingsdialog.py
+++ b/openlp/core/ui/settingsdialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -65,4 +65,4 @@ class Ui_SettingsDialog(object):
def retranslateUi(self, settingsDialog):
settingsDialog.setWindowTitle(translate('OpenLP.SettingsForm',
- 'Configure OpenLP'))
+ 'Configure OpenLP'))
\ No newline at end of file
diff --git a/openlp/core/ui/settingsform.py b/openlp/core/ui/settingsform.py
index d1cf19622..86e3c6150 100644
--- a/openlp/core/ui/settingsform.py
+++ b/openlp/core/ui/settingsform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -98,4 +98,4 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog):
Run any post-setup code for the tabs on the form
"""
for tabIndex in range(0, self.settingsTabWidget.count()):
- self.settingsTabWidget.widget(tabIndex).postSetUp()
+ self.settingsTabWidget.widget(tabIndex).postSetUp()
\ No newline at end of file
diff --git a/openlp/core/ui/shortcutlistdialog.py b/openlp/core/ui/shortcutlistdialog.py
index d64f4e2fc..f66772d9b 100644
--- a/openlp/core/ui/shortcutlistdialog.py
+++ b/openlp/core/ui/shortcutlistdialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -111,4 +111,3 @@ class Ui_ShortcutListDialog(object):
translate('OpenLP.ShortcutListDialog', 'Custom:'))
self.shortcutPushButton.setText(
translate('OpenLP.ShortcutListDialog', 'None'))
-
diff --git a/openlp/core/ui/shortcutlistform.py b/openlp/core/ui/shortcutlistform.py
index e83c2cc7d..053f2347f 100644
--- a/openlp/core/ui/shortcutlistform.py
+++ b/openlp/core/ui/shortcutlistform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -71,7 +71,7 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
if event.modifiers() & Qt.ShiftModifier == Qt.ShiftModifier:
key_string = u'Shift+' + key_string
key_sequence = QtGui.QKeySequence(key_string)
- existing_key = QtGui.QKeySequence("Ctrl+Shift+F8")
+ existing_key = QtGui.QKeySequence(u'Ctrl+Shift+F8')
if key_sequence == existing_key:
QtGui.QMessageBox.warning(
self,
@@ -107,4 +107,3 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
def onShortcutPushButtonClicked(self, toggled):
self.captureShortcut = toggled
-
diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py
index 8cf0752e2..97a02f333 100644
--- a/openlp/core/ui/slidecontroller.py
+++ b/openlp/core/ui/slidecontroller.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -73,6 +73,7 @@ class SlideList(QtGui.QTableWidget):
else:
event.ignore()
+
class SlideController(QtGui.QWidget):
"""
SlideController is the slide controller widget. This widget is what the
@@ -183,41 +184,23 @@ class SlideController(QtGui.QWidget):
translate('OpenLP.SlideController',
'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'),
translate('OpenLP.SlideController',
'Blank to Theme'), self.HideMenu)
self.ThemeScreen.setCheckable(True)
- QtCore.QObject.connect(self.ThemeScreen,
- QtCore.SIGNAL("triggered(bool)"), self.onThemeDisplay)
- if self.screens.display_count > 1:
- self.DesktopScreen = QtGui.QAction(QtGui.QIcon(
- u':/slides/slide_desktop.png'),
- translate('OpenLP.SlideController',
- 'Show Desktop'), self.HideMenu)
- self.DesktopScreen.setCheckable(True)
- 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)
if self.screens.display_count > 1:
+ self.DesktopScreen = QtGui.QAction(QtGui.QIcon(
+ u':/slides/slide_desktop.png'),
+ translate('OpenLP.SlideController',
+ 'Show Desktop'), self.HideMenu)
self.HideMenu.menu().addAction(self.DesktopScreen)
- if not self.isLive:
- self.Toolbar.addToolbarSeparator(u'Close Separator')
- self.Toolbar.addToolbarButton(
- u'Go Live', u':/general/general_live.png',
- translate('OpenLP.SlideController', 'Move to live'),
- self.onGoLive)
- self.Toolbar.addToolbarSeparator(u'Close Separator')
- self.Toolbar.addToolbarButton(
- u'Edit Song', u':/general/general_edit.png',
- translate('OpenLP.SlideController',
- 'Edit and reload song preview'),
- self.onEditSong)
- if isLive:
+ self.DesktopScreen.setCheckable(True)
+ QtCore.QObject.connect(self.DesktopScreen,
+ QtCore.SIGNAL(u'triggered(bool)'), self.onHideDisplay)
self.Toolbar.addToolbarSeparator(u'Loop Separator')
self.Toolbar.addToolbarButton(
u'Start Loop', u':/media/media_time.png',
@@ -230,12 +213,23 @@ class SlideController(QtGui.QWidget):
self.DelaySpinBox = QtGui.QSpinBox()
self.DelaySpinBox.setMinimum(1)
self.DelaySpinBox.setMaximum(180)
- self.Toolbar.addToolbarWidget(
- u'Image SpinBox', self.DelaySpinBox)
+ self.Toolbar.addToolbarWidget(u'Image SpinBox', self.DelaySpinBox)
self.DelaySpinBox.setSuffix(translate('OpenLP.SlideController',
's'))
self.DelaySpinBox.setToolTip(translate('OpenLP.SlideController',
'Delay between slides in seconds'))
+ else:
+ self.Toolbar.addToolbarSeparator(u'Close Separator')
+ self.Toolbar.addToolbarButton(
+ u'Go Live', u':/general/general_live.png',
+ translate('OpenLP.SlideController', 'Move to live'),
+ self.onGoLive)
+ self.Toolbar.addToolbarSeparator(u'Close Separator')
+ self.Toolbar.addToolbarButton(
+ u'Edit Song', u':/general/general_edit.png',
+ translate('OpenLP.SlideController',
+ 'Edit and reload song preview'),
+ self.onEditSong)
self.ControllerLayout.addWidget(self.Toolbar)
# Build a Media ToolBar
self.Mediabar = OpenLPToolbar(self)
@@ -251,42 +245,39 @@ class SlideController(QtGui.QWidget):
u'Media Stop', u':/slides/media_playback_stop.png',
translate('OpenLP.SlideController', 'Start playing media'),
self.onMediaStop)
- if not self.isLive:
- self.seekSlider = Phonon.SeekSlider()
- self.seekSlider.setGeometry(QtCore.QRect(90, 260, 221, 24))
- self.seekSlider.setObjectName(u'seekSlider')
- self.Mediabar.addToolbarWidget(
- u'Seek Slider', self.seekSlider)
- self.volumeSlider = Phonon.VolumeSlider()
- self.volumeSlider.setGeometry(QtCore.QRect(90, 260, 221, 24))
- self.volumeSlider.setObjectName(u'volumeSlider')
- self.Mediabar.addToolbarWidget(u'Audio Volume', self.volumeSlider)
- else:
- self.volumeSlider = QtGui.QSlider(QtCore.Qt.Horizontal)
- self.volumeSlider.setTickInterval(1)
- self.volumeSlider.setTickPosition(QtGui.QSlider.TicksAbove)
- self.volumeSlider.setMinimum(0)
- self.volumeSlider.setMaximum(10)
- self.volumeSlider.setGeometry(QtCore.QRect(90, 260, 221, 24))
- self.volumeSlider.setObjectName(u'volumeSlider')
- self.Mediabar.addToolbarWidget(u'Audio Volume', self.volumeSlider)
- self.ControllerLayout.addWidget(self.Mediabar)
- # Build the Song Toolbar
- if isLive:
+ if self.isLive:
+ # Build the Song Toolbar
self.SongMenu = QtGui.QToolButton(self.Toolbar)
self.SongMenu.setText(translate('OpenLP.SlideController',
'Go To'))
self.SongMenu.setPopupMode(QtGui.QToolButton.InstantPopup)
self.Toolbar.addToolbarWidget(u'Song Menu', self.SongMenu)
self.SongMenu.setMenu(QtGui.QMenu(
- translate('OpenLP.SlideController', 'Go To'),
- self.Toolbar))
+ translate('OpenLP.SlideController', 'Go To'), self.Toolbar))
self.Toolbar.makeWidgetsInvisible([u'Song Menu'])
+ # Build the volumeSlider.
+ self.volumeSlider = QtGui.QSlider(QtCore.Qt.Horizontal)
+ self.volumeSlider.setTickInterval(1)
+ self.volumeSlider.setTickPosition(QtGui.QSlider.TicksAbove)
+ self.volumeSlider.setMinimum(0)
+ self.volumeSlider.setMaximum(10)
+ else:
+ # Build the seekSlider.
+ self.seekSlider = Phonon.SeekSlider()
+ self.seekSlider.setGeometry(QtCore.QRect(90, 260, 221, 24))
+ self.seekSlider.setObjectName(u'seekSlider')
+ self.Mediabar.addToolbarWidget(u'Seek Slider', self.seekSlider)
+ self.volumeSlider = Phonon.VolumeSlider()
+ self.volumeSlider.setGeometry(QtCore.QRect(90, 260, 221, 24))
+ self.volumeSlider.setObjectName(u'volumeSlider')
+ self.Mediabar.addToolbarWidget(u'Audio Volume', self.volumeSlider)
+ self.ControllerLayout.addWidget(self.Mediabar)
# Screen preview area
self.PreviewFrame = QtGui.QFrame(self.Splitter)
- self.PreviewFrame.setGeometry(QtCore.QRect(0, 0, 300, 225))
+ self.PreviewFrame.setGeometry(QtCore.QRect(0, 0, 300, 300 * self.ratio))
+ self.PreviewFrame.setMinimumHeight(100)
self.PreviewFrame.setSizePolicy(QtGui.QSizePolicy(
- QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum,
+ QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Ignored,
QtGui.QSizePolicy.Label))
self.PreviewFrame.setFrameShape(QtGui.QFrame.StyledPanel)
self.PreviewFrame.setFrameShadow(QtGui.QFrame.Sunken)
@@ -306,7 +297,6 @@ class SlideController(QtGui.QWidget):
Phonon.createPath(self.mediaObject, self.audio)
if not self.isLive:
self.video.setGeometry(QtCore.QRect(0, 0, 300, 225))
- self.video.setVisible(False)
self.SlideLayout.insertWidget(0, self.video)
# Actual preview screen
self.SlidePreview = QtGui.QLabel(self)
@@ -330,18 +320,24 @@ class SlideController(QtGui.QWidget):
# Signals
QtCore.QObject.connect(self.PreviewListWidget,
QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSlideSelected)
- if not self.isLive:
- QtCore.QObject.connect(self.PreviewListWidget,
- QtCore.SIGNAL(u'doubleClicked(QModelIndex)'),
- self.onGoLiveClick)
- if isLive:
+ if self.isLive:
+ QtCore.QObject.connect(self.BlankScreen,
+ QtCore.SIGNAL(u'triggered(bool)'), self.onBlankDisplay)
+ QtCore.QObject.connect(self.ThemeScreen,
+ QtCore.SIGNAL(u'triggered(bool)'), self.onThemeDisplay)
+ QtCore.QObject.connect(self.volumeSlider,
+ QtCore.SIGNAL(u'sliderReleased()'), self.mediaVolume)
+ QtCore.QObject.connect(Receiver.get_receiver(),
+ QtCore.SIGNAL(u'maindisplay_active'), self.updatePreview)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'slidecontroller_live_spin_delay'),
self.receiveSpinDelay)
- if isLive:
self.Toolbar.makeWidgetsInvisible(self.loopList)
self.Toolbar.actions[u'Stop Loop'].setVisible(False)
else:
+ QtCore.QObject.connect(self.PreviewListWidget,
+ QtCore.SIGNAL(u'doubleClicked(QModelIndex)'),
+ self.onGoLiveClick)
self.Toolbar.makeWidgetsInvisible(self.songEditList)
self.Mediabar.setVisible(False)
QtCore.QObject.connect(Receiver.get_receiver(),
@@ -381,54 +377,49 @@ class SlideController(QtGui.QWidget):
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'slidecontroller_%s_text_request' % self.typePrefix),
self.onTextRequest)
- QtCore.QObject.connect(self.Splitter,
- QtCore.SIGNAL(u'splitterMoved(int, int)'), self.trackSplitter)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'config_updated'), self.refreshServiceItem)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'config_screen_changed'), self.screenSizeChanged)
- if self.isLive:
- QtCore.QObject.connect(self.volumeSlider,
- QtCore.SIGNAL(u'sliderReleased()'), self.mediaVolume)
- QtCore.QObject.connect(Receiver.get_receiver(),
- QtCore.SIGNAL(u'maindisplay_active'), self.updatePreview)
def screenSizeChanged(self):
"""
Settings dialog has changed the screen size of adjust output and
- screen previews
+ screen previews.
"""
- log.debug(u'screenSizeChanged live = %s' % self.isLive)
# rebuild display as screen size changed
self.display = MainDisplay(self, self.screens, self.isLive)
self.display.imageManager = self.parent.renderManager.image_manager
self.display.alertTab = self.alertTab
+ self.display.setup()
+ # The SlidePreview's ratio.
self.ratio = float(self.screens.current[u'size'].width()) / \
float(self.screens.current[u'size'].height())
- self.display.setup()
- self.SlidePreview.setFixedSize(
- QtCore.QSize(self.settingsmanager.slidecontroller_image,
- self.settingsmanager.slidecontroller_image / self.ratio))
+ self.previewSizeChanged()
- def widthChanged(self):
+ def previewSizeChanged(self):
"""
- Handle changes of width from the splitter between the live and preview
- controller. Event only issues when changes have finished
+ Takes care of the SlidePreview's size. Is called when one of the the
+ splitters is moved or when the screen size is changed.
"""
- log.debug(u'widthChanged live = %s' % self.isLive)
+ if self.ratio < float(self.PreviewFrame.width()) / float(
+ self.PreviewFrame.height()):
+ # We have to take the height as limit.
+ max_height = self.PreviewFrame.height() - self.grid.margin() * 2
+ self.SlidePreview.setFixedSize(QtCore.QSize(max_height * self.ratio,
+ max_height))
+ else:
+ # We have to take the width as limit.
+ max_width = self.PreviewFrame.width() - self.grid.margin() * 2
+ self.SlidePreview.setFixedSize(QtCore.QSize(max_width,
+ max_width / self.ratio))
width = self.parent.ControlSplitter.sizes()[self.split]
- height = width * self.parent.renderManager.screen_ratio
self.PreviewListWidget.setColumnWidth(0, width)
# Sort out image heights (Songs, bibles excluded)
if self.serviceItem and not self.serviceItem.is_text():
for framenumber in range(len(self.serviceItem.get_frames())):
- self.PreviewListWidget.setRowHeight(framenumber, height)
-
- def trackSplitter(self, tab, pos):
- """
- Splitter between the slide list and the preview panel
- """
- pass
+ self.PreviewListWidget.setRowHeight(
+ framenumber, width / self.ratio)
def onSongBarHandler(self):
request = unicode(self.sender().text())
@@ -554,6 +545,8 @@ class SlideController(QtGui.QWidget):
if self.serviceItem.is_media():
self.onMediaClose()
if self.isLive:
+ if serviceItem.is_capable(ItemCapabilities.ProvidesOwnDisplay):
+ self._forceUnblank()
blanked = self.BlankScreen.isChecked()
else:
blanked = False
@@ -561,8 +554,6 @@ class SlideController(QtGui.QWidget):
[serviceItem, self.isLive, blanked, slideno])
self.slideList = {}
width = self.parent.ControlSplitter.sizes()[self.split]
- # Set pointing cursor when we have something to point at
- self.PreviewListWidget.setCursor(QtCore.Qt.PointingHandCursor)
self.serviceItem = serviceItem
self.PreviewListWidget.clear()
self.PreviewListWidget.setRowCount(0)
@@ -691,7 +682,7 @@ class SlideController(QtGui.QWidget):
"""
log.debug(u'mainDisplaySetBackground live = %s' % self.isLive)
if not self.display.primary:
- self.onHideDisplay(True)
+ self.onBlankDisplay(True)
def onSlideBlank(self):
"""
@@ -1034,3 +1025,23 @@ class SlideController(QtGui.QWidget):
self.video.hide()
self.SlidePreview.clear()
self.SlidePreview.show()
+
+ def _forceUnblank(self):
+ """
+ Used by command items which provide their own displays to reset the
+ screen hide attributes
+ """
+ if self.BlankScreen.isChecked:
+ self.BlankScreen.setChecked(False)
+ self.HideMenu.setDefaultAction(self.BlankScreen)
+ QtCore.QSettings().setValue(
+ self.parent.generalSettingsSection + u'/screen blank',
+ QtCore.QVariant(False))
+ if self.ThemeScreen.isChecked:
+ self.ThemeScreen.setChecked(False)
+ self.HideMenu.setDefaultAction(self.ThemeScreen)
+ if self.screens.display_count > 1:
+ if self.DesktopScreen.isChecked:
+ self.DesktopScreen.setChecked(False)
+ self.HideMenu.setDefaultAction(self.DesktopScreen)
+
diff --git a/openlp/core/ui/splashscreen.py b/openlp/core/ui/splashscreen.py
index 95fdba841..53546a6dd 100644
--- a/openlp/core/ui/splashscreen.py
+++ b/openlp/core/ui/splashscreen.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -55,4 +55,4 @@ class SplashScreen(object):
self.splash_screen.show()
def finish(self, widget):
- self.splash_screen.finish(widget)
+ self.splash_screen.finish(widget)
\ No newline at end of file
diff --git a/openlp/core/ui/themeform.py b/openlp/core/ui/themeform.py
index 7ed58e943..5c9517b0e 100644
--- a/openlp/core/ui/themeform.py
+++ b/openlp/core/ui/themeform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -56,90 +56,70 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.registerFields()
self.accepted = False
self.updateThemeAllowed = True
- QtCore.QObject.connect(self.backgroundTypeComboBox,
+ QtCore.QObject.connect(self.backgroundComboBox,
QtCore.SIGNAL(u'currentIndexChanged(int)'),
- self.onBackgroundComboBox)
+ self.onBackgroundComboBoxCurrentIndexChanged)
QtCore.QObject.connect(self.gradientComboBox,
QtCore.SIGNAL(u'currentIndexChanged(int)'),
- self.onGradientComboBox)
+ self.onGradientComboBoxCurrentIndexChanged)
QtCore.QObject.connect(self.colorButton,
- QtCore.SIGNAL(u'pressed()'),
+ QtCore.SIGNAL(u'clicked()'),
self.onColorButtonClicked)
QtCore.QObject.connect(self.gradientStartButton,
- QtCore.SIGNAL(u'pressed()'),
+ QtCore.SIGNAL(u'clicked()'),
self.onGradientStartButtonClicked)
QtCore.QObject.connect(self.gradientEndButton,
- QtCore.SIGNAL(u'pressed()'),
+ QtCore.SIGNAL(u'clicked()'),
self.onGradientEndButtonClicked)
QtCore.QObject.connect(self.imageBrowseButton,
- QtCore.SIGNAL(u'pressed()'),
+ QtCore.SIGNAL(u'clicked()'),
self.onImageBrowseButtonClicked)
- QtCore.QObject.connect(self.mainColorPushButton,
- QtCore.SIGNAL(u'pressed()'),
- self.onMainColourPushButtonClicked)
- QtCore.QObject.connect(self.outlineColorPushButton,
- QtCore.SIGNAL(u'pressed()'),
- self.onOutlineColourPushButtonClicked)
- QtCore.QObject.connect(self.shadowColorPushButton,
- QtCore.SIGNAL(u'pressed()'),
- self.onShadowColourPushButtonClicked)
+ QtCore.QObject.connect(self.mainColorButton,
+ QtCore.SIGNAL(u'clicked()'),
+ self.onMainColorButtonClicked)
+ QtCore.QObject.connect(self.outlineColorButton,
+ QtCore.SIGNAL(u'clicked()'),
+ self.onOutlineColorButtonClicked)
+ QtCore.QObject.connect(self.shadowColorButton,
+ QtCore.SIGNAL(u'clicked()'),
+ self.onShadowColorButtonClicked)
QtCore.QObject.connect(self.outlineCheckBox,
QtCore.SIGNAL(u'stateChanged(int)'),
- self.onOutlineCheckCheckBoxChanged)
+ self.onOutlineCheckCheckBoxStateChanged)
QtCore.QObject.connect(self.shadowCheckBox,
QtCore.SIGNAL(u'stateChanged(int)'),
- self.onShadowCheckCheckBoxChanged)
- QtCore.QObject.connect(self.footerColorPushButton,
- QtCore.SIGNAL(u'pressed()'),
- self.onFooterColourPushButtonClicked)
- QtCore.QObject.connect(self.mainDefaultPositionCheckBox,
+ self.onShadowCheckCheckBoxStateChanged)
+ QtCore.QObject.connect(self.footerColorButton,
+ QtCore.SIGNAL(u'clicked()'),
+ self.onFooterColorButtonClicked)
+ QtCore.QObject.connect(self.mainPositionCheckBox,
QtCore.SIGNAL(u'stateChanged(int)'),
- self.onMainDefaultPositionCheckBox)
- QtCore.QObject.connect(self.footerDefaultPositionCheckBox,
+ self.onMainPositionCheckBoxStateChanged)
+ QtCore.QObject.connect(self.footerPositionCheckBox,
QtCore.SIGNAL(u'stateChanged(int)'),
- self.onFooterDefaultPositionCheckBox)
+ self.onFooterPositionCheckBoxStateChanged)
QtCore.QObject.connect(self,
QtCore.SIGNAL(u'currentIdChanged(int)'),
- self.pageChanged)
+ self.onCurrentIdChanged)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'theme_line_count'),
self.updateLinesText)
QtCore.QObject.connect(self.mainSizeSpinBox,
QtCore.SIGNAL(u'valueChanged(int)'),
self.calculateLines)
- QtCore.QObject.connect(self.mainSizeSpinBox,
- QtCore.SIGNAL(u'editingFinished()'),
- self.calculateLines)
QtCore.QObject.connect(self.lineSpacingSpinBox,
QtCore.SIGNAL(u'valueChanged(int)'),
self.calculateLines)
- QtCore.QObject.connect(self.lineSpacingSpinBox,
- QtCore.SIGNAL(u'editingFinished()'),
- self.calculateLines)
QtCore.QObject.connect(self.outlineSizeSpinBox,
QtCore.SIGNAL(u'valueChanged(int)'),
self.calculateLines)
- QtCore.QObject.connect(self.outlineSizeSpinBox,
- QtCore.SIGNAL(u'editingFinished()'),
- self.calculateLines)
QtCore.QObject.connect(self.shadowSizeSpinBox,
QtCore.SIGNAL(u'valueChanged(int)'),
self.calculateLines)
- QtCore.QObject.connect(self.shadowSizeSpinBox,
- QtCore.SIGNAL(u'editingFinished()'),
- self.calculateLines)
QtCore.QObject.connect(self.mainFontComboBox,
QtCore.SIGNAL(u'activated(int)'),
self.calculateLines)
-
- def pageChanged(self, pageId):
- """
- Detects Page changes and updates as approprate.
- """
- if pageId == 6:
- self.updateTheme()
- frame = self.thememanager.generateImage(self.theme)
- self.previewBoxLabel.setPixmap(QtGui.QPixmap.fromImage(frame))
+ QtCore.QObject.connect(self, QtCore.SIGNAL(u'accepted()'), self.accept)
def setDefaults(self):
"""
@@ -147,19 +127,19 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
"""
self.restart()
self.accepted = False
- self.setBackgroundTabValues()
- self.setMainAreaTabValues()
- self.setFooterAreaTabValues()
- self.setAlignmentTabValues()
- self.setPositionTabValues()
- self.setPreviewTabValues()
+ self.setBackgroundPageValues()
+ self.setMainAreaPageValues()
+ self.setFooterAreaPageValues()
+ self.setAlignmentPageValues()
+ self.setPositionPageValues()
+ self.setPreviewPageValues()
def registerFields(self):
"""
Map field names to screen names,
"""
self.backgroundPage.registerField(
- u'background_type', self.backgroundTypeComboBox)
+ u'background_type', self.backgroundComboBox)
self.backgroundPage.registerField(
u'color', self.colorButton)
self.backgroundPage.registerField(
@@ -167,11 +147,11 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.backgroundPage.registerField(
u'grandient_end', self.gradientEndButton)
self.backgroundPage.registerField(
- u'background_image', self.imageLineEdit)
+ u'background_image', self.imageFileEdit)
self.backgroundPage.registerField(
u'gradient', self.gradientComboBox)
self.mainAreaPage.registerField(
- u'mainColorPushButton', self.mainColorPushButton)
+ u'mainColorButton', self.mainColorButton)
self.mainAreaPage.registerField(
u'mainSizeSpinBox', self.mainSizeSpinBox)
self.mainAreaPage.registerField(
@@ -179,17 +159,17 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.mainAreaPage.registerField(
u'outlineCheckBox', self.outlineCheckBox)
self.mainAreaPage.registerField(
- u'outlineColorPushButton', self.outlineColorPushButton)
+ u'outlineColorButton', self.outlineColorButton)
self.mainAreaPage.registerField(
u'outlineSizeSpinBox', self.outlineSizeSpinBox)
self.mainAreaPage.registerField(
u'shadowCheckBox', self.shadowCheckBox)
self.mainAreaPage.registerField(
- u'boldCheckBox', self.boldCheckBox)
+ u'mainBoldCheckBox', self.mainBoldCheckBox)
self.mainAreaPage.registerField(
- u'italicsCheckBox', self.italicsCheckBox)
+ u'mainItalicsCheckBox', self.mainItalicsCheckBox)
self.mainAreaPage.registerField(
- u'shadowColorPushButton', self.shadowColorPushButton)
+ u'shadowColorButton', self.shadowColorButton)
self.mainAreaPage.registerField(
u'shadowSizeSpinBox', self.shadowSizeSpinBox)
self.mainAreaPage.registerField(
@@ -224,7 +204,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
Calculate the number of lines on a page by rendering text
"""
# Do not trigger on start up
- if self.page != 0:
+ if self.currentPage != self.welcomePage:
self.updateTheme()
frame = self.thememanager.generateImage(self.theme, True)
@@ -235,7 +215,37 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.mainLineCountLabel.setText(unicode(translate('OpenLP.ThemeForm', \
'(%d lines per slide)' % int(lines))))
- def onOutlineCheckCheckBoxChanged(self, state):
+ def resizeEvent(self, event=None):
+ """
+ Rescale the theme preview thumbnail on resize events.
+ """
+ if not event:
+ event = QtGui.QResizeEvent(self.size(), self.size())
+ QtGui.QWizard.resizeEvent(self, event)
+ if self.currentPage() == self.previewPage:
+ frameWidth = self.previewBoxLabel.lineWidth()
+ pixmapWidth = self.previewArea.width() - 2 * frameWidth
+ pixmapHeight = self.previewArea.height() - 2 * frameWidth
+ aspectRatio = float(pixmapWidth) / pixmapHeight
+ if aspectRatio < self.displayAspectRatio:
+ pixmapHeight = int(pixmapWidth / self.displayAspectRatio + 0.5)
+ else:
+ pixmapWidth = int(pixmapHeight * self.displayAspectRatio + 0.5)
+ self.previewBoxLabel.setFixedSize(pixmapWidth + 2 * frameWidth,
+ pixmapHeight + 2 * frameWidth)
+
+ def onCurrentIdChanged(self, pageId):
+ """
+ Detects Page changes and updates as approprate.
+ """
+ if self.page(pageId) == self.previewPage:
+ self.updateTheme()
+ frame = self.thememanager.generateImage(self.theme)
+ self.previewBoxLabel.setPixmap(QtGui.QPixmap.fromImage(frame))
+ self.displayAspectRatio = float(frame.width()) / frame.height()
+ self.resizeEvent()
+
+ def onOutlineCheckCheckBoxStateChanged(self, state):
"""
Change state as Outline check box changed
"""
@@ -243,11 +253,11 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.theme.font_main_outline = True
else:
self.theme.font_main_outline = False
- self.outlineColorPushButton.setEnabled(self.theme.font_main_outline)
+ self.outlineColorButton.setEnabled(self.theme.font_main_outline)
self.outlineSizeSpinBox.setEnabled(self.theme.font_main_outline)
self.calculateLines()
- def onShadowCheckCheckBoxChanged(self, state):
+ def onShadowCheckCheckBoxStateChanged(self, state):
"""
Change state as Shadow check box changed
"""
@@ -255,35 +265,21 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.theme.font_main_shadow = True
else:
self.theme.font_main_shadow = False
- self.shadowColorPushButton.setEnabled(self.theme.font_main_shadow)
+ self.shadowColorButton.setEnabled(self.theme.font_main_shadow)
self.shadowSizeSpinBox.setEnabled(self.theme.font_main_shadow)
self.calculateLines()
- def onMainDefaultPositionCheckBox(self, value):
+ def onMainPositionCheckBoxStateChanged(self, value):
"""
Change state as Main Area Position check box changed
"""
- if value == QtCore.Qt.Checked:
- self.theme.font_main_override = False
- else:
- self.theme.font_main_override = True
- self.mainXSpinBox.setEnabled(self.theme.font_main_override)
- self.mainYSpinBox.setEnabled(self.theme.font_main_override)
- self.mainHeightSpinBox.setEnabled(self.theme.font_main_override)
- self.mainWidthSpinBox.setEnabled(self.theme.font_main_override)
+ self.theme.font_main_override = (value == QtCore.Qt.Checked)
- def onFooterDefaultPositionCheckBox(self, value):
+ def onFooterPositionCheckBoxStateChanged(self, value):
"""
Change state as Footer Area Position check box changed
"""
- if value == QtCore.Qt.Checked:
- self.theme.font_footer_override = False
- else:
- self.theme.font_footer_override = True
- self.footerXSpinBox.setEnabled(self.theme.font_footer_override)
- self.footerYSpinBox.setEnabled(self.theme.font_footer_override)
- self.footerHeightSpinBox.setEnabled(self.theme.font_footer_override)
- self.footerWidthSpinBox.setEnabled(self.theme.font_footer_override)
+ self.theme.font_footer_override = (value == QtCore.Qt.Checked)
def exec_(self, edit=False):
"""
@@ -293,8 +289,14 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.updateThemeAllowed = False
self.setDefaults()
self.updateThemeAllowed = True
+ self.themeNameLabel.setVisible(not edit)
+ self.themeNameEdit.setVisible(not edit)
if edit:
+ self.setWindowTitle(unicode(translate('OpenLP.ThemeWizard',
+ 'Edit Theme %s')) % self.theme.theme_name)
self.next()
+ else:
+ self.setWindowTitle(translate('OpenLP.ThemeWizard', 'New Theme'))
return QtGui.QWizard.exec_(self)
def initializePage(self, id):
@@ -302,21 +304,21 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
Set up the pages for Initial run through dialog
"""
log.debug(u'initializePage %s' % id)
- self.page = id
- if id == 1:
- self.setBackgroundTabValues()
- elif id == 2:
- self.setMainAreaTabValues()
- elif id == 3:
- self.setFooterAreaTabValues()
- elif id == 4:
- self.setAlignmentTabValues()
- elif id == 5:
- self.setPositionTabValues()
+ wizardPage = self.page(id)
+ if wizardPage == self.backgroundPage:
+ self.setBackgroundPageValues()
+ elif wizardPage == self.mainAreaPage:
+ self.setMainAreaPageValues()
+ elif wizardPage == self.footerAreaPage:
+ self.setFooterAreaPageValues()
+ elif wizardPage == self.alignmentPage:
+ self.setAlignmentPageValues()
+ elif wizardPage == self.areaPositionPage:
+ self.setPositionPageValues()
- def setBackgroundTabValues(self):
+ def setBackgroundPageValues(self):
"""
- Handle the display and State of the background display tab.
+ Handle the display and state of the Background page.
"""
if self.theme.background_type == \
BackgroundType.to_string(BackgroundType.Solid):
@@ -331,7 +333,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.theme.background_end_color)
self.setField(u'background_type', QtCore.QVariant(1))
else:
- self.imageLineEdit.setText(self.theme.background_filename)
+ self.imageFileEdit.setText(self.theme.background_filename)
self.setField(u'background_type', QtCore.QVariant(2))
if self.theme.background_direction == \
BackgroundGradientType.to_string(BackgroundGradientType.Horizontal):
@@ -348,122 +350,101 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
else:
self.setField(u'gradient', QtCore.QVariant(4))
- def setMainAreaTabValues(self):
+ def setMainAreaPageValues(self):
"""
- Handle the display and State of the Main Area tab.
+ Handle the display and state of the Main Area page.
"""
self.mainFontComboBox.setCurrentFont(
QtGui.QFont(self.theme.font_main_name))
- self.mainColorPushButton.setStyleSheet(u'background-color: %s' %
+ self.mainColorButton.setStyleSheet(u'background-color: %s' %
self.theme.font_main_color)
- self.setField(u'mainSizeSpinBox', \
+ self.setField(u'mainSizeSpinBox',
QtCore.QVariant(self.theme.font_main_size))
- self.setField(u'lineSpacingSpinBox', \
+ self.setField(u'lineSpacingSpinBox',
QtCore.QVariant(self.theme.font_main_line_adjustment))
- self.setField(u'outlineCheckBox', \
+ self.setField(u'outlineCheckBox',
QtCore.QVariant(self.theme.font_main_outline))
- self.outlineColorPushButton.setStyleSheet(u'background-color: %s' %
+ self.outlineColorButton.setStyleSheet(u'background-color: %s' %
self.theme.font_main_outline_color)
- self.setField(u'outlineSizeSpinBox', \
+ self.setField(u'outlineSizeSpinBox',
QtCore.QVariant(self.theme.font_main_outline_size))
- self.setField(u'shadowCheckBox', \
+ self.setField(u'shadowCheckBox',
QtCore.QVariant(self.theme.font_main_shadow))
- self.shadowColorPushButton.setStyleSheet(u'background-color: %s' %
+ self.shadowColorButton.setStyleSheet(u'background-color: %s' %
self.theme.font_main_shadow_color)
- self.setField(u'shadowSizeSpinBox', \
+ self.setField(u'shadowSizeSpinBox',
QtCore.QVariant(self.theme.font_main_shadow_size))
- self.setField(u'boldCheckBox', \
+ self.setField(u'mainBoldCheckBox',
QtCore.QVariant(self.theme.font_main_bold))
- self.setField(u'italicsCheckBox', \
+ self.setField(u'mainItalicsCheckBox',
QtCore.QVariant(self.theme.font_main_italics))
- # Set up field states
- if self.theme.font_main_outline:
- self.setField(u'outlineCheckBox', QtCore.QVariant(False))
- else:
- self.setField(u'outlineCheckBox', QtCore.QVariant(True))
- self.outlineColorPushButton.setEnabled(self.theme.font_main_outline)
- self.outlineSizeSpinBox.setEnabled(self.theme.font_main_outline)
- if self.theme.font_main_shadow:
- self.setField(u'shadowCheckBox', QtCore.QVariant(False))
- else:
- self.setField(u'shadowCheckBox', QtCore.QVariant(True))
- self.shadowColorPushButton.setEnabled(self.theme.font_main_shadow)
- self.shadowSizeSpinBox.setEnabled(self.theme.font_main_shadow)
- def setFooterAreaTabValues(self):
+ def setFooterAreaPageValues(self):
"""
- Handle the display and State of the Footer Area tab.
+ Handle the display and state of the Footer Area page.
"""
self.footerFontComboBox.setCurrentFont(
QtGui.QFont(self.theme.font_main_name))
- self.footerColorPushButton.setStyleSheet(u'background-color: %s' %
+ self.footerColorButton.setStyleSheet(u'background-color: %s' %
self.theme.font_footer_color)
- self.setField(u'footerSizeSpinBox', \
+ self.setField(u'footerSizeSpinBox',
QtCore.QVariant(self.theme.font_footer_size))
- def setPositionTabValues(self):
+ def setPositionPageValues(self):
"""
- Handle the display and State of the Position tab.
+ Handle the display and state of the Position page.
"""
# Main Area
- if self.theme.font_main_override:
- self.mainDefaultPositionCheckBox.setChecked(False)
- else:
- self.mainDefaultPositionCheckBox.setChecked(True)
- self.setField(u'mainPositionX', \
- QtCore.QVariant(self.theme.font_main_x))
- self.setField(u'mainPositionY', \
- QtCore.QVariant(self.theme.font_main_y))
- self.setField(u'mainPositionHeight', \
+ self.mainPositionCheckBox.setChecked(not self.theme.font_main_override)
+ self.setField(u'mainPositionX', QtCore.QVariant(self.theme.font_main_x))
+ self.setField(u'mainPositionY', QtCore.QVariant(self.theme.font_main_y))
+ self.setField(u'mainPositionHeight',
QtCore.QVariant(self.theme.font_main_height))
- self.setField(u'mainPositionWidth', \
+ self.setField(u'mainPositionWidth',
QtCore.QVariant(self.theme.font_main_width))
# Footer
- if self.theme.font_footer_override:
- self.footerDefaultPositionCheckBox.setChecked(False)
- else:
- self.footerDefaultPositionCheckBox.setChecked(True)
- self.setField(u'footerPositionX', \
+ self.footerPositionCheckBox.setChecked(
+ not self.theme.font_footer_override)
+ self.setField(u'footerPositionX',
QtCore.QVariant(self.theme.font_footer_x))
- self.setField(u'footerPositionY', \
+ self.setField(u'footerPositionY',
QtCore.QVariant(self.theme.font_footer_y))
- self.setField(u'footerPositionHeight', \
+ self.setField(u'footerPositionHeight',
QtCore.QVariant(self.theme.font_footer_height))
- self.setField(u'footerPositionWidth', \
+ self.setField(u'footerPositionWidth',
QtCore.QVariant(self.theme.font_footer_width))
- def setAlignmentTabValues(self):
+ def setAlignmentPageValues(self):
"""
- Define the Tab Alignments Page
+ Handle the display and state of the Alignments page.
"""
- self.setField(u'horizontal', \
+ self.setField(u'horizontal',
QtCore.QVariant(self.theme.display_horizontal_align))
- self.setField(u'vertical', \
+ self.setField(u'vertical',
QtCore.QVariant(self.theme.display_vertical_align))
- self.setField(u'slideTransition', \
+ self.setField(u'slideTransition',
QtCore.QVariant(self.theme.display_slide_transition))
- def setPreviewTabValues(self):
+ def setPreviewPageValues(self):
+ """
+ Handle the display and state of the Preview page.
+ """
self.setField(u'name', QtCore.QVariant(self.theme.theme_name))
- if len(self.theme.theme_name) > 0:
- self.themeNameEdit.setEnabled(False)
- else:
- self.themeNameEdit.setEnabled(True)
- def onBackgroundComboBox(self, index):
+ def onBackgroundComboBoxCurrentIndexChanged(self, index):
"""
Background style Combo box has changed.
"""
self.theme.background_type = BackgroundType.to_string(index)
- self.setBackgroundTabValues()
+ self.setBackgroundPageValues()
- def onGradientComboBox(self, index):
+ def onGradientComboBoxCurrentIndexChanged(self, index):
"""
Background gradient Combo box has changed.
"""
self.theme.background_direction = \
BackgroundGradientType.to_string(index)
- self.setBackgroundTabValues()
+ self.setBackgroundPageValues()
def onColorButtonClicked(self):
"""
@@ -471,7 +452,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
"""
self.theme.background_color = \
self._colorButton(self.theme.background_color)
- self.setBackgroundTabValues()
+ self.setBackgroundPageValues()
def onGradientStartButtonClicked(self):
"""
@@ -479,7 +460,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
"""
self.theme.background_start_color = \
self._colorButton(self.theme.background_start_color)
- self.setBackgroundTabValues()
+ self.setBackgroundPageValues()
def onGradientEndButtonClicked(self):
"""
@@ -487,7 +468,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
"""
self.theme.background_end_color = \
self._colorButton(self.theme.background_end_color)
- self.setBackgroundTabValues()
+ self.setBackgroundPageValues()
def onImageBrowseButtonClicked(self):
"""
@@ -501,27 +482,27 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
images_filter)
if filename:
self.theme.background_filename = unicode(filename)
- self.setBackgroundTabValues()
+ self.setBackgroundPageValues()
- def onMainColourPushButtonClicked(self):
+ def onMainColorButtonClicked(self):
self.theme.font_main_color = \
self._colorButton(self.theme.font_main_color)
- self.setMainAreaTabValues()
+ self.setMainAreaPageValues()
- def onOutlineColourPushButtonClicked(self):
+ def onOutlineColorButtonClicked(self):
self.theme.font_main_outline_color = \
self._colorButton(self.theme.font_main_outline_color)
- self.setMainAreaTabValues()
+ self.setMainAreaPageValues()
- def onShadowColourPushButtonClicked(self):
+ def onShadowColorButtonClicked(self):
self.theme.font_main_shadow_color = \
self._colorButton(self.theme.font_main_shadow_color)
- self.setMainAreaTabValues()
+ self.setMainAreaPageValues()
- def onFooterColourPushButtonClicked(self):
+ def onFooterColorButtonClicked(self):
self.theme.font_footer_color = \
self._colorButton(self.theme.font_footer_color)
- self.setFooterAreaTabValues()
+ self.setFooterAreaPageValues()
def updateTheme(self):
"""
@@ -543,9 +524,9 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.theme.font_main_shadow_size = \
self.field(u'shadowSizeSpinBox').toInt()[0]
self.theme.font_main_bold = \
- self.field(u'boldCheckBox').toBool()
+ self.field(u'mainBoldCheckBox').toBool()
self.theme.font_main_italics = \
- self.field(u'italicsCheckBox').toBool()
+ self.field(u'mainItalicsCheckBox').toBool()
# footer page
self.theme.font_footer_name = \
unicode(self.footerFontComboBox.currentFont().family())
@@ -586,8 +567,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
QtGui.QMessageBox.critical(self,
translate('OpenLP.ThemeForm', 'Theme Name Missing'),
translate('OpenLP.ThemeForm',
- 'There is no name for this theme. '
- 'Please enter one.'),
+ 'There is no name for this theme. Please enter one.'),
(QtGui.QMessageBox.Ok),
QtGui.QMessageBox.Ok)
return
@@ -595,8 +575,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
QtGui.QMessageBox.critical(self,
translate('OpenLP.ThemeForm', 'Theme Name Invalid'),
translate('OpenLP.ThemeForm',
- 'Invalid theme name. '
- 'Please enter one.'),
+ 'Invalid theme name. Please enter one.'),
(QtGui.QMessageBox.Ok),
QtGui.QMessageBox.Ok)
return
diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py
index 477b07422..61216c161 100644
--- a/openlp/core/ui/thememanager.py
+++ b/openlp/core/ui/thememanager.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -35,7 +35,7 @@ from PyQt4 import QtCore, QtGui
from openlp.core.ui import FileRenameForm, ThemeForm
from openlp.core.theme import Theme
from openlp.core.lib import OpenLPToolbar, ThemeXML, get_text_file_string, \
- build_icon, Receiver, SettingsManager, translate, check_item_selected, \
+ build_icon, Receiver, SettingsManager, translate, check_item_selected, \
BackgroundType, BackgroundGradientType
from openlp.core.utils import AppLocation, get_filesystem_encoding
@@ -223,14 +223,17 @@ class ThemeManager(QtGui.QWidget):
"""
Renames an existing theme to a new name
"""
- action = unicode(translate('OpenLP.ThemeManager', 'Rename'))
- if self._validate_theme_action(action, False):
+ if self._validate_theme_action(unicode(translate('OpenLP.ThemeManager',
+ 'You must select a theme to rename.')),
+ unicode(translate('OpenLP.ThemeManager', 'Rename Confirmation')),
+ unicode(translate('OpenLP.ThemeManager', 'Rename %s theme?')),
+ False):
item = self.themeListWidget.currentItem()
oldThemeName = unicode(item.data(QtCore.Qt.UserRole).toString())
self.fileRenameForm.fileNameEdit.setText(oldThemeName)
self.saveThemeName = oldThemeName
if self.fileRenameForm.exec_():
- newThemeName = unicode(self.fileRenameForm.fileNameEdit.text())
+ newThemeName = unicode(self.fileRenameForm.fileNameEdit.text())
oldThemeData = self.getThemeData(oldThemeName)
self.deleteTheme(oldThemeName)
self.cloneThemeData(oldThemeData, newThemeName)
@@ -244,7 +247,7 @@ class ThemeManager(QtGui.QWidget):
self.fileRenameForm.fileNameEdit.setText(oldThemeName)
self.saveThemeName = u''
if self.fileRenameForm.exec_(True):
- newThemeName = unicode(self.fileRenameForm.fileNameEdit.text())
+ newThemeName = unicode(self.fileRenameForm.fileNameEdit.text())
themeData = self.getThemeData(oldThemeName)
self.cloneThemeData(themeData, newThemeName)
self.loadThemes()
@@ -288,8 +291,10 @@ class ThemeManager(QtGui.QWidget):
"""
Delete a theme
"""
- action = unicode(translate('OpenLP.ThemeManager', 'Delete'))
- if self._validate_theme_action(action):
+ if self._validate_theme_action(unicode(translate('OpenLP.ThemeManager',
+ 'You must select a theme to delete.')),
+ unicode(translate('OpenLP.ThemeManager', 'Delete Confirmation')),
+ unicode(translate('OpenLP.ThemeManager', 'Delete %s theme?'))):
item = self.themeListWidget.currentItem()
theme = unicode(item.text())
row = self.themeListWidget.row(item)
@@ -331,7 +336,7 @@ class ThemeManager(QtGui.QWidget):
theme = unicode(item.data(QtCore.Qt.UserRole).toString())
path = QtGui.QFileDialog.getExistingDirectory(self,
unicode(translate('OpenLP.ThemeManager',
- 'Save Theme - (%s)')) % theme,
+ 'Save Theme - (%s)')) % theme,
SettingsManager.get_last_dir(self.settingsSection, 1))
path = unicode(path)
if path:
@@ -750,7 +755,8 @@ class ThemeManager(QtGui.QWidget):
theme.extend_image_filename(path)
return theme
- def _validate_theme_action(self, action, testPlugin=True):
+ def _validate_theme_action(self, select_text, confirm_title, confirm_text,
+ testPlugin=True):
"""
Check to see if theme has been selected and the destructive action
is allowed.
@@ -758,19 +764,14 @@ class ThemeManager(QtGui.QWidget):
self.global_theme = unicode(QtCore.QSettings().value(
self.settingsSection + u'/global theme',
QtCore.QVariant(u'')).toString())
- if check_item_selected(self.themeListWidget,
- unicode(translate('OpenLP.ThemeManager',
- 'You must select a theme to %s.')) % action):
+ if check_item_selected(self.themeListWidget, select_text):
item = self.themeListWidget.currentItem()
theme = unicode(item.text())
# confirm deletion
- answer = QtGui.QMessageBox.question(self,
- unicode(translate('OpenLP.ThemeManager', '%s Confirmation'))
- % action,
- unicode(translate('OpenLP.ThemeManager', '%s %s theme?'))
- % (action, theme),
- QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes |
- QtGui.QMessageBox.No), QtGui.QMessageBox.No)
+ answer = QtGui.QMessageBox.question(self, confirm_title,
+ confirm_text % theme, QtGui.QMessageBox.StandardButtons(
+ QtGui.QMessageBox.Yes | QtGui.QMessageBox.No),
+ QtGui.QMessageBox.No)
if answer == QtGui.QMessageBox.No:
return False
# should be the same unless default
@@ -779,6 +780,7 @@ class ThemeManager(QtGui.QWidget):
translate('OpenLP.ThemeManager', 'Error'),
translate('OpenLP.ThemeManager',
'You are unable to delete the default theme.'))
+ return False
else:
if testPlugin:
for plugin in self.parent.pluginManager.plugins:
diff --git a/openlp/core/ui/themestab.py b/openlp/core/ui/themestab.py
index 294d521dc..21df94d9d 100644
--- a/openlp/core/ui/themestab.py
+++ b/openlp/core/ui/themestab.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -212,4 +212,4 @@ class ThemesTab(SettingsTab):
if not preview.isNull():
preview = preview.scaled(300, 255, QtCore.Qt.KeepAspectRatio,
QtCore.Qt.SmoothTransformation)
- self.DefaultListView.setPixmap(preview)
+ self.DefaultListView.setPixmap(preview)
\ No newline at end of file
diff --git a/openlp/core/ui/themewizard.py b/openlp/core/ui/themewizard.py
index d86792af4..691b5e568 100644
--- a/openlp/core/ui/themewizard.py
+++ b/openlp/core/ui/themewizard.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -31,592 +31,393 @@ from openlp.core.lib import translate, build_icon
class Ui_ThemeWizard(object):
def setupUi(self, ThemeWizard):
ThemeWizard.setObjectName(u'OpenLP.ThemeWizard')
- ThemeWizard.resize(550, 386)
ThemeWizard.setModal(True)
ThemeWizard.setWizardStyle(QtGui.QWizard.ModernStyle)
ThemeWizard.setOptions(
QtGui.QWizard.IndependentPages |
QtGui.QWizard.NoBackButtonOnStartPage)
+ # Welcome Page
self.welcomePage = QtGui.QWizardPage()
- self.welcomePage.setTitle(u'')
- self.welcomePage.setSubTitle(u'')
- self.welcomePage.setObjectName(u'welcomePage')
self.welcomePage.setPixmap(QtGui.QWizard.WatermarkPixmap,
QtGui.QPixmap(u':/wizards/wizard_createtheme.bmp'))
- self.welcomeLayout = QtGui.QHBoxLayout(self.welcomePage)
- self.welcomeLayout.setSpacing(8)
- self.welcomeLayout.setMargin(0)
- self.welcomeLayout.setObjectName(u'welcomeLayout')
- self.welcomePageLayout = QtGui.QVBoxLayout()
- self.welcomePageLayout.setSpacing(8)
- self.welcomePageLayout.setObjectName(u'welcomePageLayout')
+ self.welcomePage.setObjectName(u'WelcomePage')
+ self.welcomeLayout = QtGui.QVBoxLayout(self.welcomePage)
+ self.welcomeLayout.setObjectName(u'WelcomeLayout')
self.titleLabel = QtGui.QLabel(self.welcomePage)
- self.titleLabel.setObjectName(u'titleLabel')
- self.welcomePageLayout.addWidget(self.titleLabel)
- self.welcomeTopSpacer = QtGui.QSpacerItem(20, 40,
- QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
- self.welcomePageLayout.addItem(self.welcomeTopSpacer)
+ self.titleLabel.setObjectName(u'TitleLabel')
+ self.welcomeLayout.addWidget(self.titleLabel)
+ self.welcomeLayout.addSpacing(40)
self.informationLabel = QtGui.QLabel(self.welcomePage)
self.informationLabel.setWordWrap(True)
- self.informationLabel.setMargin(10)
- self.informationLabel.setObjectName(u'informationLabel')
- self.welcomePageLayout.addWidget(self.informationLabel)
- self.welcomeBottomSpacer = QtGui.QSpacerItem(20, 40,
- QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.welcomePageLayout.addItem(self.welcomeBottomSpacer)
- self.welcomeLayout.addLayout(self.welcomePageLayout)
+ self.informationLabel.setObjectName(u'InformationLabel')
+ self.welcomeLayout.addWidget(self.informationLabel)
+ self.welcomeLayout.addStretch()
ThemeWizard.addPage(self.welcomePage)
+ # Background Page
self.backgroundPage = QtGui.QWizardPage()
- self.backgroundPage.setObjectName(u'backgroundPage')
+ self.backgroundPage.setObjectName(u'BackgroundPage')
self.backgroundLayout = QtGui.QVBoxLayout(self.backgroundPage)
- self.backgroundLayout.setSpacing(8)
- self.backgroundLayout.setMargin(20)
- self.backgroundLayout.setObjectName(u'backgroundLayout')
- self.backgroundTypeLayout = QtGui.QHBoxLayout()
- self.backgroundTypeLayout.setSpacing(8)
- self.backgroundTypeLayout.setObjectName(u'backgroundTypeLayout')
- self.backgroundTypeLabel = QtGui.QLabel(self.backgroundPage)
- self.backgroundTypeLabel.setObjectName(u'backgroundTypeLabel')
- self.backgroundTypeLayout.addWidget(self.backgroundTypeLabel)
- self.backgroundTypeComboBox = QtGui.QComboBox(self.backgroundPage)
- self.backgroundTypeComboBox.setObjectName(u'backgroundTypeComboBox')
- self.backgroundTypeComboBox.addItem(u'')
- self.backgroundTypeComboBox.addItem(u'')
- self.backgroundTypeComboBox.addItem(u'')
- self.backgroundTypeLayout.addWidget(self.backgroundTypeComboBox)
- self.backgroundTypeSpacer = QtGui.QSpacerItem(40, 20,
- QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.backgroundTypeLayout.addItem(self.backgroundTypeSpacer)
+ self.backgroundLayout.setObjectName(u'BackgroundLayout')
+ self.backgroundTypeLayout = QtGui.QFormLayout()
+ self.backgroundTypeLayout.setObjectName(u'BackgroundTypeLayout')
+ self.backgroundLabel = QtGui.QLabel(self.backgroundPage)
+ self.backgroundLabel.setObjectName(u'BackgroundLabel')
+ self.backgroundComboBox = QtGui.QComboBox(self.backgroundPage)
+ self.backgroundComboBox.addItems([u'', u'', u''])
+ self.backgroundComboBox.setObjectName(u'BackgroundComboBox')
+ self.backgroundTypeLayout.addRow(self.backgroundLabel,
+ self.backgroundComboBox)
+ self.backgroundTypeSpacer = QtGui.QSpacerItem(10, 0,
+ QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Minimum)
+ self.backgroundTypeLayout.setItem(1, QtGui.QFormLayout.LabelRole,
+ self.backgroundTypeSpacer)
self.backgroundLayout.addLayout(self.backgroundTypeLayout)
- self.backgroundStackedWidget = QtGui.QStackedWidget(
- self.backgroundPage)
- self.backgroundStackedWidget.setObjectName(u'backgroundStackedWidget')
- self.colorPage = QtGui.QWidget()
- self.colorPage.setObjectName(u'colorPage')
- self.colorLayout = QtGui.QFormLayout(self.colorPage)
+ self.backgroundStack = QtGui.QStackedLayout()
+ self.backgroundStack.setObjectName(u'BackgroundStack')
+ self.colorWidget = QtGui.QWidget(self.backgroundPage)
+ self.colorWidget.setObjectName(u'ColorWidget')
+ self.colorLayout = QtGui.QFormLayout(self.colorWidget)
self.colorLayout.setMargin(0)
- self.colorLayout.setSpacing(8)
- self.colorLayout.setObjectName(u'colorLayout')
- self.colorLabel = QtGui.QLabel(self.colorPage)
- self.colorLabel.setMinimumSize(QtCore.QSize(103, 0))
- self.colorLabel.setAlignment(QtCore.Qt.AlignRight |
- QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
- self.colorLabel.setObjectName(u'colorLabel')
- self.colorLayout.setWidget(0,
- QtGui.QFormLayout.LabelRole, self.colorLabel)
- self.colorButton = QtGui.QPushButton(self.colorPage)
- self.colorButton.setText(u'')
- self.colorButton.setObjectName(u'colorButton')
- self.colorLayout.setWidget(0,
- QtGui.QFormLayout.FieldRole, self.colorButton)
- self.backgroundStackedWidget.addWidget(self.colorPage)
- self.gradientPage = QtGui.QWidget()
- self.gradientPage.setObjectName(u'gradientPage')
- self.gradientLayout = QtGui.QFormLayout(self.gradientPage)
+ self.colorLayout.setObjectName(u'ColorLayout')
+ self.colorLabel = QtGui.QLabel(self.colorWidget)
+ self.colorLabel.setObjectName(u'ColorLabel')
+ self.colorButton = QtGui.QPushButton(self.colorWidget)
+ self.colorButton.setObjectName(u'ColorButton')
+ self.colorLayout.addRow(self.colorLabel, self.colorButton)
+ self.colorSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Minimum)
+ self.colorLayout.setItem(1, QtGui.QFormLayout.LabelRole,
+ self.colorSpacer)
+ self.backgroundStack.addWidget(self.colorWidget)
+ self.gradientWidget = QtGui.QWidget(self.backgroundPage)
+ self.gradientWidget.setObjectName(u'GradientWidget')
+ self.gradientLayout = QtGui.QFormLayout(self.gradientWidget)
self.gradientLayout.setMargin(0)
- self.gradientLayout.setSpacing(8)
- self.gradientLayout.setObjectName(u'gradientLayout')
- self.gradientStartLabel = QtGui.QLabel(self.gradientPage)
- self.gradientStartLabel.setMinimumSize(QtCore.QSize(103, 0))
- self.gradientStartLabel.setAlignment(QtCore.Qt.AlignRight |
- QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
- self.gradientStartLabel.setObjectName(u'gradientStartLabel')
- self.gradientLayout.setWidget(0,
- QtGui.QFormLayout.LabelRole, self.gradientStartLabel)
- self.gradientStartButton = QtGui.QPushButton(self.gradientPage)
- self.gradientStartButton.setText(u'')
- self.gradientStartButton.setObjectName(u'gradientStartButton')
- self.gradientLayout.setWidget(0,
- QtGui.QFormLayout.FieldRole, self.gradientStartButton)
- self.gradientEndLabel = QtGui.QLabel(self.gradientPage)
- self.gradientEndLabel.setMinimumSize(QtCore.QSize(103, 0))
- self.gradientEndLabel.setAlignment(QtCore.Qt.AlignRight |
- QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
- self.gradientEndLabel.setObjectName(u'gradientEndLabel')
- self.gradientLayout.setWidget(1,
- QtGui.QFormLayout.LabelRole, self.gradientEndLabel)
- self.gradientEndButton = QtGui.QPushButton(self.gradientPage)
- self.gradientEndButton.setText(u'')
- self.gradientEndButton.setObjectName(u'gradientEndButton')
- self.gradientLayout.setWidget(1,
- QtGui.QFormLayout.FieldRole, self.gradientEndButton)
- self.gradientTypeLabel = QtGui.QLabel(self.gradientPage)
- self.gradientTypeLabel.setMinimumSize(QtCore.QSize(103, 0))
- self.gradientTypeLabel.setAlignment(QtCore.Qt.AlignRight |
- QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
- self.gradientTypeLabel.setObjectName(u'gradientTypeLabel')
- self.gradientLayout.setWidget(2,
- QtGui.QFormLayout.LabelRole, self.gradientTypeLabel)
- self.gradientComboBox = QtGui.QComboBox(self.gradientPage)
- self.gradientComboBox.setObjectName(u'gradientComboBox')
- self.gradientComboBox.addItem(u'')
- self.gradientComboBox.addItem(u'')
- self.gradientComboBox.addItem(u'')
- self.gradientComboBox.addItem(u'')
- self.gradientComboBox.addItem(u'')
- self.gradientLayout.setWidget(2,
- QtGui.QFormLayout.FieldRole, self.gradientComboBox)
- self.backgroundStackedWidget.addWidget(self.gradientPage)
- self.imagePage = QtGui.QWidget()
- self.imagePage.setObjectName(u'imagePage')
- self.imageLayout = QtGui.QFormLayout(self.imagePage)
+ self.gradientLayout.setObjectName(u'GradientLayout')
+ self.gradientStartLabel = QtGui.QLabel(self.gradientWidget)
+ self.gradientStartLabel.setObjectName(u'GradientStartLabel')
+ self.gradientStartButton = QtGui.QPushButton(self.gradientWidget)
+ self.gradientStartButton.setObjectName(u'GradientStartButton')
+ self.gradientLayout.addRow(self.gradientStartLabel,
+ self.gradientStartButton)
+ self.gradientEndLabel = QtGui.QLabel(self.gradientWidget)
+ self.gradientEndLabel.setObjectName(u'GradientEndLabel')
+ self.gradientEndButton = QtGui.QPushButton(self.gradientWidget)
+ self.gradientEndButton.setObjectName(u'GradientEndButton')
+ self.gradientLayout.addRow(self.gradientEndLabel,
+ self.gradientEndButton)
+ self.gradientTypeLabel = QtGui.QLabel(self.gradientWidget)
+ self.gradientTypeLabel.setObjectName(u'GradientTypeLabel')
+ self.gradientComboBox = QtGui.QComboBox(self.gradientWidget)
+ self.gradientComboBox.setObjectName(u'GradientComboBox')
+ self.gradientComboBox.addItems([u'', u'', u'', u'', u''])
+ self.gradientLayout.addRow(self.gradientTypeLabel,
+ self.gradientComboBox)
+ self.gradientSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Minimum)
+ self.gradientLayout.setItem(3, QtGui.QFormLayout.LabelRole,
+ self.gradientSpacer)
+ self.backgroundStack.addWidget(self.gradientWidget)
+ self.imageWidget = QtGui.QWidget(self.backgroundPage)
+ self.imageWidget.setObjectName(u'ImageWidget')
+ self.imageLayout = QtGui.QFormLayout(self.imageWidget)
self.imageLayout.setMargin(0)
- self.imageLayout.setSpacing(8)
- self.imageLayout.setObjectName(u'imageLayout')
- self.imageLabel = QtGui.QLabel(self.imagePage)
- self.imageLabel.setMinimumSize(QtCore.QSize(103, 0))
- self.imageLabel.setAlignment(QtCore.Qt.AlignRight |
- QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
- self.imageLabel.setObjectName(u'imageLabel')
- self.imageLayout.setWidget(0,
- QtGui.QFormLayout.LabelRole, self.imageLabel)
+ self.imageLayout.setObjectName(u'ImageLayout')
+ self.imageLabel = QtGui.QLabel(self.imageWidget)
+ self.imageLabel.setObjectName(u'ImageLabel')
self.imageFileLayout = QtGui.QHBoxLayout()
- self.imageFileLayout.setSpacing(8)
- self.imageFileLayout.setObjectName(u'imageFileLayout')
- self.imageLineEdit = QtGui.QLineEdit(self.imagePage)
- self.imageLineEdit.setObjectName(u'imageLineEdit')
- self.imageFileLayout.addWidget(self.imageLineEdit)
- self.imageBrowseButton = QtGui.QToolButton(self.imagePage)
- self.imageBrowseButton.setText(u'')
+ self.imageFileLayout.setObjectName(u'ImageFileLayout')
+ self.imageFileEdit = QtGui.QLineEdit(self.imageWidget)
+ self.imageFileEdit.setObjectName(u'ImageFileEdit')
+ self.imageFileLayout.addWidget(self.imageFileEdit)
+ self.imageBrowseButton = QtGui.QToolButton(self.imageWidget)
+ self.imageBrowseButton.setObjectName(u'ImageBrowseButton')
self.imageBrowseButton.setIcon(
build_icon(u':/general/general_open.png'))
- self.imageBrowseButton.setObjectName(u'imageBrowseButton')
self.imageFileLayout.addWidget(self.imageBrowseButton)
- self.imageLayout.setLayout(0,
- QtGui.QFormLayout.FieldRole, self.imageFileLayout)
- self.backgroundStackedWidget.addWidget(self.imagePage)
- self.backgroundLayout.addWidget(self.backgroundStackedWidget)
+ self.imageLayout.addRow(self.imageLabel, self.imageFileLayout)
+ self.imageSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Minimum)
+ self.imageLayout.setItem(1, QtGui.QFormLayout.LabelRole,
+ self.imageSpacer)
+ self.backgroundStack.addWidget(self.imageWidget)
+ self.backgroundLayout.addLayout(self.backgroundStack)
ThemeWizard.addPage(self.backgroundPage)
+ # Main Area Page
self.mainAreaPage = QtGui.QWizardPage()
- self.mainAreaPage.setObjectName(u'mainAreaPage')
+ self.mainAreaPage.setObjectName(u'MainAreaPage')
self.mainAreaLayout = QtGui.QFormLayout(self.mainAreaPage)
- self.mainAreaLayout.setFormAlignment(QtCore.Qt.AlignLeading |
- QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
- self.mainAreaLayout.setMargin(20)
- self.mainAreaLayout.setSpacing(8)
- self.mainAreaLayout.setObjectName(u'mainAreaLayout')
+ self.mainAreaLayout.setObjectName(u'MainAreaLayout')
self.mainFontLabel = QtGui.QLabel(self.mainAreaPage)
- self.mainFontLabel.setMinimumSize(QtCore.QSize(103, 0))
- self.mainFontLabel.setAlignment(QtCore.Qt.AlignRight |
- QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
- self.mainFontLabel.setObjectName(u'mainFontLabel')
- self.mainAreaLayout.setWidget(0,
- QtGui.QFormLayout.LabelRole, self.mainFontLabel)
+ self.mainFontLabel.setObjectName(u'MainFontLabel')
self.mainFontComboBox = QtGui.QFontComboBox(self.mainAreaPage)
- self.mainFontComboBox.setObjectName(u'mainFontComboBox')
- self.mainAreaLayout.setWidget(0,
- QtGui.QFormLayout.FieldRole, self.mainFontComboBox)
+ self.mainFontComboBox.setObjectName(u'MainFontComboBox')
+ self.mainAreaLayout.addRow(self.mainFontLabel, self.mainFontComboBox)
self.mainColorLabel = QtGui.QLabel(self.mainAreaPage)
- self.mainColorLabel.setObjectName(u'mainColorLabel')
- self.mainAreaLayout.setWidget(1,
- QtGui.QFormLayout.LabelRole, self.mainColorLabel)
- self.fontPropertiesLayout = QtGui.QHBoxLayout()
- self.fontPropertiesLayout.setSpacing(24)
- self.fontPropertiesLayout.setObjectName(u'fontPropertiesLayout')
- self.mainColorPushButton = QtGui.QPushButton(self.mainAreaPage)
- self.mainColorPushButton.setText(u'')
- self.mainColorPushButton.setObjectName(u'mainColorPushButton')
- self.fontPropertiesLayout.addWidget(self.mainColorPushButton)
- self.boldCheckBox = QtGui.QCheckBox(self.mainAreaPage)
- self.boldCheckBox.setObjectName(u'boldCheckBox')
- self.fontPropertiesLayout.addWidget(self.boldCheckBox)
- self.italicsCheckBox = QtGui.QCheckBox(self.mainAreaPage)
- self.italicsCheckBox.setObjectName(u'italicsCheckBox')
- self.fontPropertiesLayout.addWidget(self.italicsCheckBox)
- self.mainAreaLayout.setLayout(1,
- QtGui.QFormLayout.FieldRole, self.fontPropertiesLayout)
+ self.mainColorLabel.setObjectName(u'MainColorLabel')
+ self.mainPropertiesLayout = QtGui.QHBoxLayout()
+ self.mainPropertiesLayout.setObjectName(u'MainPropertiesLayout')
+ self.mainColorButton = QtGui.QPushButton(self.mainAreaPage)
+ self.mainColorButton.setObjectName(u'MainColorButton')
+ self.mainPropertiesLayout.addWidget(self.mainColorButton)
+ self.mainPropertiesLayout.addSpacing(20)
+ self.mainBoldCheckBox = QtGui.QCheckBox(self.mainAreaPage)
+ self.mainBoldCheckBox.setObjectName(u'MainBoldCheckBox')
+ self.mainPropertiesLayout.addWidget(self.mainBoldCheckBox)
+ self.mainPropertiesLayout.addSpacing(20)
+ self.mainItalicsCheckBox = QtGui.QCheckBox(self.mainAreaPage)
+ self.mainItalicsCheckBox.setObjectName(u'MainItalicsCheckBox')
+ self.mainPropertiesLayout.addWidget(self.mainItalicsCheckBox)
+ self.mainAreaLayout.addRow(self.mainColorLabel,
+ self.mainPropertiesLayout)
self.mainSizeLabel = QtGui.QLabel(self.mainAreaPage)
- self.mainSizeLabel.setObjectName(u'mainSizeLabel')
- self.mainAreaLayout.setWidget(2,
- QtGui.QFormLayout.LabelRole, self.mainSizeLabel)
+ self.mainSizeLabel.setObjectName(u'MainSizeLabel')
self.mainSizeLayout = QtGui.QHBoxLayout()
- self.mainSizeLayout.setSpacing(8)
- self.mainSizeLayout.setMargin(0)
- self.mainSizeLayout.setObjectName(u'mainSizeLayout')
+ self.mainSizeLayout.setObjectName(u'MainSizeLayout')
self.mainSizeSpinBox = QtGui.QSpinBox(self.mainAreaPage)
- sizePolicy = QtGui.QSizePolicy(
- QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(
- self.mainSizeSpinBox.sizePolicy().hasHeightForWidth())
- self.mainSizeSpinBox.setSizePolicy(sizePolicy)
- self.mainSizeSpinBox.setMinimumSize(QtCore.QSize(70, 0))
self.mainSizeSpinBox.setMaximum(999)
- self.mainSizeSpinBox.setProperty(u'value', 16)
- self.mainSizeSpinBox.setObjectName(u'mainSizeSpinBox')
+ self.mainSizeSpinBox.setValue(16)
+ self.mainSizeSpinBox.setObjectName(u'MainSizeSpinBox')
self.mainSizeLayout.addWidget(self.mainSizeSpinBox)
self.mainLineCountLabel = QtGui.QLabel(self.mainAreaPage)
- self.mainLineCountLabel.setObjectName(u'mainLineCountLabel')
+ self.mainLineCountLabel.setObjectName(u'MainLineCountLabel')
self.mainSizeLayout.addWidget(self.mainLineCountLabel)
- self.mainAreaLayout.setLayout(2,
- QtGui.QFormLayout.FieldRole, self.mainSizeLayout)
+ self.mainAreaLayout.addRow(self.mainSizeLabel, self.mainSizeLayout)
self.lineSpacingLabel = QtGui.QLabel(self.mainAreaPage)
- self.lineSpacingLabel.setObjectName(u'lineSpacingLabel')
- self.mainAreaLayout.setWidget(3,
- QtGui.QFormLayout.LabelRole, self.lineSpacingLabel)
+ self.lineSpacingLabel.setObjectName(u'LineSpacingLabel')
self.lineSpacingSpinBox = QtGui.QSpinBox(self.mainAreaPage)
self.lineSpacingSpinBox.setMinimum(-50)
self.lineSpacingSpinBox.setMaximum(50)
- self.lineSpacingSpinBox.setObjectName(u'lineSpacingSpinBox')
- self.mainAreaLayout.setWidget(3,
- QtGui.QFormLayout.FieldRole, self.lineSpacingSpinBox)
+ self.lineSpacingSpinBox.setObjectName(u'LineSpacingSpinBox')
+ self.mainAreaLayout.addRow(self.lineSpacingLabel,
+ self.lineSpacingSpinBox)
self.outlineCheckBox = QtGui.QCheckBox(self.mainAreaPage)
- self.outlineCheckBox.setObjectName(u'outlineCheckBox')
- self.mainAreaLayout.setWidget(4,
- QtGui.QFormLayout.LabelRole, self.outlineCheckBox)
+ self.outlineCheckBox.setObjectName(u'OutlineCheckBox')
self.outlineLayout = QtGui.QHBoxLayout()
- self.outlineLayout.setObjectName(u'outlineLayout')
- self.outlineColorPushButton = QtGui.QPushButton(self.mainAreaPage)
- self.outlineColorPushButton.setEnabled(True)
- self.outlineColorPushButton.setText(u'')
- self.outlineColorPushButton.setObjectName(u'outlineColorPushButton')
- self.outlineLayout.addWidget(self.outlineColorPushButton)
+ self.outlineLayout.setObjectName(u'OutlineLayout')
+ self.outlineColorButton = QtGui.QPushButton(self.mainAreaPage)
+ self.outlineColorButton.setEnabled(False)
+ self.outlineColorButton.setObjectName(u'OutlineColorButton')
+ self.outlineLayout.addWidget(self.outlineColorButton)
+ self.outlineLayout.addSpacing(20)
self.outlineSizeLabel = QtGui.QLabel(self.mainAreaPage)
- self.outlineSizeLabel.setObjectName(u'outlineSizeLabel')
+ self.outlineSizeLabel.setObjectName(u'OutlineSizeLabel')
self.outlineLayout.addWidget(self.outlineSizeLabel)
self.outlineSizeSpinBox = QtGui.QSpinBox(self.mainAreaPage)
- self.outlineSizeSpinBox.setObjectName(u'outlineSizeSpinBox')
+ self.outlineSizeSpinBox.setEnabled(False)
+ self.outlineSizeSpinBox.setObjectName(u'OutlineSizeSpinBox')
self.outlineLayout.addWidget(self.outlineSizeSpinBox)
- self.mainAreaLayout.setLayout(4,
- QtGui.QFormLayout.FieldRole, self.outlineLayout)
+ self.mainAreaLayout.addRow(self.outlineCheckBox, self.outlineLayout)
self.shadowCheckBox = QtGui.QCheckBox(self.mainAreaPage)
- self.shadowCheckBox.setObjectName(u'shadowCheckBox')
- self.mainAreaLayout.setWidget(5,
- QtGui.QFormLayout.LabelRole, self.shadowCheckBox)
+ self.shadowCheckBox.setObjectName(u'ShadowCheckBox')
self.shadowLayout = QtGui.QHBoxLayout()
- self.shadowLayout.setObjectName(u'shadowLayout')
- self.shadowColorPushButton = QtGui.QPushButton(self.mainAreaPage)
- self.shadowColorPushButton.setEnabled(True)
- self.shadowColorPushButton.setText(u'')
- self.shadowColorPushButton.setObjectName(u'shadowColorPushButton')
- self.shadowLayout.addWidget(self.shadowColorPushButton)
+ self.shadowLayout.setObjectName(u'ShadowLayout')
+ self.shadowColorButton = QtGui.QPushButton(self.mainAreaPage)
+ self.shadowColorButton.setEnabled(False)
+ self.shadowColorButton.setObjectName(u'shadowColorButton')
+ self.shadowLayout.addWidget(self.shadowColorButton)
+ self.shadowLayout.addSpacing(20)
self.shadowSizeLabel = QtGui.QLabel(self.mainAreaPage)
- self.shadowSizeLabel.setObjectName(u'shadowSizeLabel')
+ self.shadowSizeLabel.setObjectName(u'ShadowSizeLabel')
self.shadowLayout.addWidget(self.shadowSizeLabel)
self.shadowSizeSpinBox = QtGui.QSpinBox(self.mainAreaPage)
- self.shadowSizeSpinBox.setObjectName(u'shadowSizeSpinBox')
+ self.shadowSizeSpinBox.setEnabled(False)
+ self.shadowSizeSpinBox.setObjectName(u'ShadowSizeSpinBox')
self.shadowLayout.addWidget(self.shadowSizeSpinBox)
- self.mainAreaLayout.setLayout(5,
- QtGui.QFormLayout.FieldRole, self.shadowLayout)
+ self.mainAreaLayout.addRow(self.shadowCheckBox, self.shadowLayout)
ThemeWizard.addPage(self.mainAreaPage)
+ # Footer Area Page
self.footerAreaPage = QtGui.QWizardPage()
- self.footerAreaPage.setObjectName(u'footerAreaPage')
- self.footerLayout = QtGui.QFormLayout(self.footerAreaPage)
- self.footerLayout.setFieldGrowthPolicy(
- QtGui.QFormLayout.ExpandingFieldsGrow)
- self.footerLayout.setMargin(20)
- self.footerLayout.setSpacing(8)
- self.footerLayout.setObjectName(u'footerLayout')
+ self.footerAreaPage.setObjectName(u'FooterAreaPage')
+ self.footerAreaLayout = QtGui.QFormLayout(self.footerAreaPage)
+ self.footerAreaLayout.setObjectName(u'FooterAreaLayout')
self.footerFontLabel = QtGui.QLabel(self.footerAreaPage)
- self.footerFontLabel.setMinimumSize(QtCore.QSize(103, 0))
- self.footerFontLabel.setAlignment(QtCore.Qt.AlignRight |
- QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
- self.footerFontLabel.setObjectName(u'footerFontLabel')
- self.footerLayout.setWidget(0,
- QtGui.QFormLayout.LabelRole, self.footerFontLabel)
+ self.footerFontLabel.setObjectName(u'FooterFontLabel')
self.footerFontComboBox = QtGui.QFontComboBox(self.footerAreaPage)
self.footerFontComboBox.setObjectName(u'footerFontComboBox')
- self.footerLayout.setWidget(0,
- QtGui.QFormLayout.FieldRole, self.footerFontComboBox)
+ self.footerAreaLayout.addRow(self.footerFontLabel,
+ self.footerFontComboBox)
self.footerColorLabel = QtGui.QLabel(self.footerAreaPage)
- self.footerColorLabel.setObjectName(u'footerColorLabel')
- self.footerLayout.setWidget(1,
- QtGui.QFormLayout.LabelRole, self.footerColorLabel)
- self.footerColorPushButton = QtGui.QPushButton(self.footerAreaPage)
- self.footerColorPushButton.setText(u'')
- self.footerColorPushButton.setObjectName(u'footerColorPushButton')
- self.footerLayout.setWidget(1,
- QtGui.QFormLayout.FieldRole, self.footerColorPushButton)
+ self.footerColorLabel.setObjectName(u'FooterColorLabel')
+ self.footerColorButton = QtGui.QPushButton(self.footerAreaPage)
+ self.footerColorButton.setObjectName(u'footerColorButton')
+ self.footerAreaLayout.addRow(self.footerColorLabel,
+ self.footerColorButton)
self.footerSizeLabel = QtGui.QLabel(self.footerAreaPage)
- self.footerSizeLabel.setObjectName(u'footerSizeLabel')
- self.footerLayout.setWidget(2,
- QtGui.QFormLayout.LabelRole, self.footerSizeLabel)
+ self.footerSizeLabel.setObjectName(u'FooterSizeLabel')
self.footerSizeSpinBox = QtGui.QSpinBox(self.footerAreaPage)
- sizePolicy = QtGui.QSizePolicy(
- QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(
- self.footerSizeSpinBox.sizePolicy().hasHeightForWidth())
- self.footerSizeSpinBox.setSizePolicy(sizePolicy)
- self.footerSizeSpinBox.setMinimumSize(QtCore.QSize(70, 0))
self.footerSizeSpinBox.setMaximum(999)
- self.footerSizeSpinBox.setProperty(u'value', 10)
- self.footerSizeSpinBox.setObjectName(u'footerSizeSpinBox')
- self.footerLayout.setWidget(2,
- QtGui.QFormLayout.FieldRole, self.footerSizeSpinBox)
+ self.footerSizeSpinBox.setValue(10)
+ self.footerSizeSpinBox.setObjectName(u'FooterSizeSpinBox')
+ self.footerAreaLayout.addRow(self.footerSizeLabel, self.footerSizeSpinBox)
ThemeWizard.addPage(self.footerAreaPage)
+ # Alignment Page
self.alignmentPage = QtGui.QWizardPage()
- self.alignmentPage.setObjectName(u'alignmentPage')
+ self.alignmentPage.setObjectName(u'AlignmentPage')
self.alignmentLayout = QtGui.QFormLayout(self.alignmentPage)
- self.alignmentLayout.setMargin(20)
- self.alignmentLayout.setSpacing(8)
- self.alignmentLayout.setObjectName(u'alignmentLayout')
+ self.alignmentLayout.setObjectName(u'AlignmentLayout')
self.horizontalLabel = QtGui.QLabel(self.alignmentPage)
- self.horizontalLabel.setMinimumSize(QtCore.QSize(103, 0))
- self.horizontalLabel.setAlignment(QtCore.Qt.AlignRight |
- QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
- self.horizontalLabel.setObjectName(u'horizontalLabel')
- self.alignmentLayout.setWidget(0,
- QtGui.QFormLayout.LabelRole, self.horizontalLabel)
+ self.horizontalLabel.setObjectName(u'HorizontalLabel')
self.horizontalComboBox = QtGui.QComboBox(self.alignmentPage)
- self.horizontalComboBox.setEditable(False)
- self.horizontalComboBox.setObjectName(u'horizontalComboBox')
- self.horizontalComboBox.addItem(u'')
- self.horizontalComboBox.addItem(u'')
- self.horizontalComboBox.addItem(u'')
- self.alignmentLayout.setWidget(0,
- QtGui.QFormLayout.FieldRole, self.horizontalComboBox)
+ self.horizontalComboBox.addItems([u'', u'', u''])
+ self.horizontalComboBox.setObjectName(u'HorizontalComboBox')
+ self.alignmentLayout.addRow(self.horizontalLabel,
+ self.horizontalComboBox)
self.verticalLabel = QtGui.QLabel(self.alignmentPage)
- self.verticalLabel.setObjectName(u'verticalLabel')
- self.alignmentLayout.setWidget(1,
- QtGui.QFormLayout.LabelRole, self.verticalLabel)
+ self.verticalLabel.setObjectName(u'VerticalLabel')
self.verticalComboBox = QtGui.QComboBox(self.alignmentPage)
- self.verticalComboBox.setObjectName(u'verticalComboBox')
- self.verticalComboBox.addItem(u'')
- self.verticalComboBox.addItem(u'')
- self.verticalComboBox.addItem(u'')
- self.alignmentLayout.setWidget(1,
- QtGui.QFormLayout.FieldRole, self.verticalComboBox)
+ self.verticalComboBox.addItems([u'', u'', u''])
+ self.verticalComboBox.setObjectName(u'VerticalComboBox')
+ self.alignmentLayout.addRow(self.verticalLabel, self.verticalComboBox)
+ self.transitionsLabel = QtGui.QLabel(self.alignmentPage)
+ self.transitionsLabel.setObjectName(u'TransitionsLabel')
self.transitionsCheckBox = QtGui.QCheckBox(self.alignmentPage)
- self.transitionsCheckBox.setObjectName(u'transitionsCheckBox')
- self.alignmentLayout.setWidget(2,
- QtGui.QFormLayout.FieldRole, self.transitionsCheckBox)
+ self.transitionsCheckBox.setObjectName(u'TransitionsCheckBox')
+ self.alignmentLayout.addRow(self.transitionsLabel,
+ self.transitionsCheckBox)
ThemeWizard.addPage(self.alignmentPage)
+ # Area Position Page
self.areaPositionPage = QtGui.QWizardPage()
- self.areaPositionPage.setObjectName(u'areaPositionPage')
- self.areaPositionLayout = QtGui.QGridLayout(self.areaPositionPage)
- self.areaPositionLayout.setMargin(20)
- self.areaPositionLayout.setSpacing(8)
- self.areaPositionLayout.setObjectName(u'areaPositionLayout')
+ self.areaPositionPage.setObjectName(u'AreaPositionPage')
+ self.areaPositionLayout = QtGui.QHBoxLayout(self.areaPositionPage)
+ self.areaPositionLayout.setObjectName(u'AreaPositionLayout')
self.mainPositionGroupBox = QtGui.QGroupBox(self.areaPositionPage)
- self.mainPositionGroupBox.setMinimumSize(QtCore.QSize(248, 0))
- self.mainPositionGroupBox.setObjectName(u'mainPositionGroupBox')
+ self.mainPositionGroupBox.setObjectName(u'MainPositionGroupBox')
self.mainPositionLayout = QtGui.QFormLayout(self.mainPositionGroupBox)
- self.mainPositionLayout.setMargin(8)
- self.mainPositionLayout.setSpacing(8)
- self.mainPositionLayout.setObjectName(u'mainPositionLayout')
- self.mainDefaultPositionCheckBox = QtGui.QCheckBox(
- self.mainPositionGroupBox)
- self.mainDefaultPositionCheckBox.setChecked(True)
- self.mainDefaultPositionCheckBox.setTristate(False)
- self.mainDefaultPositionCheckBox.setObjectName(
- u'mainDefaultPositionCheckBox')
- self.mainPositionLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
- self.mainDefaultPositionCheckBox)
- self.nainXLabel = QtGui.QLabel(self.mainPositionGroupBox)
- self.nainXLabel.setObjectName(u'nainXLabel')
- self.mainPositionLayout.setWidget(1,
- QtGui.QFormLayout.LabelRole, self.nainXLabel)
+ self.mainPositionLayout.setObjectName(u'MainPositionLayout')
+ self.mainPositionCheckBox = QtGui.QCheckBox(self.mainPositionGroupBox)
+ self.mainPositionCheckBox.setObjectName(u'MainPositionCheckBox')
+ self.mainPositionLayout.addRow(self.mainPositionCheckBox)
+ self.mainXLabel = QtGui.QLabel(self.mainPositionGroupBox)
+ self.mainXLabel.setObjectName(u'MainXLabel')
self.mainXSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox)
- self.mainXSpinBox.setEnabled(False)
- sizePolicy = QtGui.QSizePolicy(
- QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(
- self.mainXSpinBox.sizePolicy().hasHeightForWidth())
- self.mainXSpinBox.setSizePolicy(sizePolicy)
- self.mainXSpinBox.setMinimumSize(QtCore.QSize(78, 0))
self.mainXSpinBox.setMaximum(9999)
- self.mainXSpinBox.setProperty(u'value', 0)
- self.mainXSpinBox.setObjectName(u'mainXSpinBox')
- self.mainPositionLayout.setWidget(1,
- QtGui.QFormLayout.FieldRole, self.mainXSpinBox)
- self.mainYSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox)
- self.mainYSpinBox.setEnabled(False)
- sizePolicy = QtGui.QSizePolicy(
- QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(
- self.mainYSpinBox.sizePolicy().hasHeightForWidth())
- self.mainYSpinBox.setSizePolicy(sizePolicy)
- self.mainYSpinBox.setMinimumSize(QtCore.QSize(78, 0))
- self.mainYSpinBox.setMaximum(9999)
- self.mainYSpinBox.setObjectName(u'mainYSpinBox')
- self.mainPositionLayout.setWidget(2,
- QtGui.QFormLayout.FieldRole, self.mainYSpinBox)
+ self.mainXSpinBox.setObjectName(u'MainXSpinBox')
+ self.mainPositionLayout.addRow(self.mainXLabel, self.mainXSpinBox)
self.mainYLabel = QtGui.QLabel(self.mainPositionGroupBox)
- self.mainYLabel.setObjectName(u'mainYLabel')
- self.mainPositionLayout.setWidget(2,
- QtGui.QFormLayout.LabelRole, self.mainYLabel)
- self.mainWidthSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox)
- self.mainWidthSpinBox.setEnabled(False)
- sizePolicy = QtGui.QSizePolicy(
- QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(
- self.mainWidthSpinBox.sizePolicy().hasHeightForWidth())
- self.mainWidthSpinBox.setSizePolicy(sizePolicy)
- self.mainWidthSpinBox.setMinimumSize(QtCore.QSize(78, 0))
- self.mainWidthSpinBox.setMaximum(9999)
- self.mainWidthSpinBox.setObjectName(u'mainWidthSpinBox')
- self.mainPositionLayout.setWidget(3,
- QtGui.QFormLayout.FieldRole, self.mainWidthSpinBox)
+ self.mainYLabel.setObjectName(u'MainYLabel')
+ self.mainYSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox)
+ self.mainYSpinBox.setMaximum(9999)
+ self.mainYSpinBox.setObjectName(u'MainYSpinBox')
+ self.mainPositionLayout.addRow(self.mainYLabel, self.mainYSpinBox)
self.mainWidthLabel = QtGui.QLabel(self.mainPositionGroupBox)
- self.mainWidthLabel.setObjectName(u'mainWidthLabel')
- self.mainPositionLayout.setWidget(3,
- QtGui.QFormLayout.LabelRole, self.mainWidthLabel)
- self.mainHeightSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox)
- self.mainHeightSpinBox.setEnabled(False)
- sizePolicy = QtGui.QSizePolicy(
- QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(
- self.mainHeightSpinBox.sizePolicy().hasHeightForWidth())
- self.mainHeightSpinBox.setSizePolicy(sizePolicy)
- self.mainHeightSpinBox.setMinimumSize(QtCore.QSize(78, 0))
- self.mainHeightSpinBox.setMaximum(9999)
- self.mainHeightSpinBox.setObjectName(u'mainHeightSpinBox')
- self.mainPositionLayout.setWidget(4,
- QtGui.QFormLayout.FieldRole, self.mainHeightSpinBox)
+ self.mainWidthLabel.setObjectName(u'MainWidthLabel')
+ self.mainWidthSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox)
+ self.mainWidthSpinBox.setMaximum(9999)
+ self.mainWidthSpinBox.setObjectName(u'MainWidthSpinBox')
+ self.mainPositionLayout.addRow(self.mainWidthLabel,
+ self.mainWidthSpinBox)
self.mainHeightLabel = QtGui.QLabel(self.mainPositionGroupBox)
- self.mainHeightLabel.setObjectName(u'mainHeightLabel')
- self.mainPositionLayout.setWidget(4,
- QtGui.QFormLayout.LabelRole, self.mainHeightLabel)
- self.areaPositionLayout.addWidget(
- self.mainPositionGroupBox, 1, 0, 1, 1)
+ self.mainHeightLabel.setObjectName(u'MainHeightLabel')
+ self.mainHeightSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox)
+ self.mainHeightSpinBox.setMaximum(9999)
+ self.mainHeightSpinBox.setObjectName(u'MainHeightSpinBox')
+ self.mainPositionLayout.addRow(self.mainHeightLabel,
+ self.mainHeightSpinBox)
+ self.areaPositionLayout.addWidget(self.mainPositionGroupBox)
self.footerPositionGroupBox = QtGui.QGroupBox(self.areaPositionPage)
- self.footerPositionGroupBox.setMinimumSize(QtCore.QSize(248, 0))
- self.footerPositionGroupBox.setObjectName(u'footerPositionGroupBox')
- self.footerPositionLayout = QtGui.QFormLayout(
- self.footerPositionGroupBox)
- self.footerPositionLayout.setMargin(8)
- self.footerPositionLayout.setSpacing(8)
- self.footerPositionLayout.setObjectName(u'footerPositionLayout')
+ self.footerPositionGroupBox.setObjectName(u'FooterPositionGroupBox')
+ self.footerPositionLayout = QtGui.QFormLayout(self.footerPositionGroupBox)
+ self.footerPositionLayout.setObjectName(u'FooterPositionLayout')
+ self.footerPositionCheckBox = QtGui.QCheckBox(self.footerPositionGroupBox)
+ self.footerPositionCheckBox.setObjectName(u'FooterPositionCheckBox')
+ self.footerPositionLayout.addRow(self.footerPositionCheckBox)
self.footerXLabel = QtGui.QLabel(self.footerPositionGroupBox)
- self.footerXLabel.setObjectName(u'footerXLabel')
- self.footerPositionLayout.setWidget(1,
- QtGui.QFormLayout.LabelRole, self.footerXLabel)
+ self.footerXLabel.setObjectName(u'FooterXLabel')
self.footerXSpinBox = QtGui.QSpinBox(self.footerPositionGroupBox)
- self.footerXSpinBox.setEnabled(False)
- sizePolicy = QtGui.QSizePolicy(
- QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(
- self.footerXSpinBox.sizePolicy().hasHeightForWidth())
- self.footerXSpinBox.setSizePolicy(sizePolicy)
- self.footerXSpinBox.setMinimumSize(QtCore.QSize(78, 0))
self.footerXSpinBox.setMaximum(9999)
- self.footerXSpinBox.setProperty(u'value', 0)
- self.footerXSpinBox.setObjectName(u'footerXSpinBox')
- self.footerPositionLayout.setWidget(1,
- QtGui.QFormLayout.FieldRole, self.footerXSpinBox)
+ self.footerXSpinBox.setObjectName(u'FooterXSpinBox')
+ self.footerPositionLayout.addRow(self.footerXLabel, self.footerXSpinBox)
self.footerYLabel = QtGui.QLabel(self.footerPositionGroupBox)
- self.footerYLabel.setObjectName(u'footerYLabel')
- self.footerPositionLayout.setWidget(2,
- QtGui.QFormLayout.LabelRole, self.footerYLabel)
+ self.footerYLabel.setObjectName(u'FooterYLabel')
self.footerYSpinBox = QtGui.QSpinBox(self.footerPositionGroupBox)
- self.footerYSpinBox.setEnabled(False)
- sizePolicy = QtGui.QSizePolicy(
- QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(
- self.footerYSpinBox.sizePolicy().hasHeightForWidth())
- self.footerYSpinBox.setSizePolicy(sizePolicy)
- self.footerYSpinBox.setMinimumSize(QtCore.QSize(78, 0))
self.footerYSpinBox.setMaximum(9999)
- self.footerYSpinBox.setProperty(u'value', 0)
- self.footerYSpinBox.setObjectName(u'footerYSpinBox')
- self.footerPositionLayout.setWidget(2,
- QtGui.QFormLayout.FieldRole, self.footerYSpinBox)
+ self.footerYSpinBox.setObjectName(u'FooterYSpinBox')
+ self.footerPositionLayout.addRow(self.footerYLabel, self.footerYSpinBox)
self.footerWidthLabel = QtGui.QLabel(self.footerPositionGroupBox)
- self.footerWidthLabel.setObjectName(u'footerWidthLabel')
- self.footerPositionLayout.setWidget(3,
- QtGui.QFormLayout.LabelRole, self.footerWidthLabel)
+ self.footerWidthLabel.setObjectName(u'FooterWidthLabel')
self.footerWidthSpinBox = QtGui.QSpinBox(self.footerPositionGroupBox)
- self.footerWidthSpinBox.setEnabled(False)
- self.footerWidthSpinBox.setMinimumSize(QtCore.QSize(78, 0))
self.footerWidthSpinBox.setMaximum(9999)
- self.footerWidthSpinBox.setObjectName(u'footerWidthSpinBox')
- self.footerPositionLayout.setWidget(3,
- QtGui.QFormLayout.FieldRole, self.footerWidthSpinBox)
+ self.footerWidthSpinBox.setObjectName(u'FooterWidthSpinBox')
+ self.footerPositionLayout.addRow(self.footerWidthLabel,
+ self.footerWidthSpinBox)
self.footerHeightLabel = QtGui.QLabel(self.footerPositionGroupBox)
- self.footerHeightLabel.setObjectName(u'footerHeightLabel')
- self.footerPositionLayout.setWidget(4,
- QtGui.QFormLayout.LabelRole, self.footerHeightLabel)
+ self.footerHeightLabel.setObjectName(u'FooterHeightLabel')
self.footerHeightSpinBox = QtGui.QSpinBox(self.footerPositionGroupBox)
- self.footerHeightSpinBox.setEnabled(False)
- self.footerHeightSpinBox.setMinimumSize(QtCore.QSize(78, 0))
self.footerHeightSpinBox.setMaximum(9999)
- self.footerHeightSpinBox.setObjectName(u'footerHeightSpinBox')
- self.footerPositionLayout.setWidget(4,
- QtGui.QFormLayout.FieldRole, self.footerHeightSpinBox)
- self.footerDefaultPositionCheckBox = QtGui.QCheckBox(
- self.footerPositionGroupBox)
- self.footerDefaultPositionCheckBox.setChecked(True)
- self.footerDefaultPositionCheckBox.setObjectName(
- u'footerDefaultPositionCheckBox')
- self.footerPositionLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
- self.footerDefaultPositionCheckBox)
- self.areaPositionLayout.addWidget(
- self.footerPositionGroupBox, 1, 1, 1, 1)
+ self.footerHeightSpinBox.setObjectName(u'FooterHeightSpinBox')
+ self.footerPositionLayout.addRow(self.footerHeightLabel,
+ self.footerHeightSpinBox)
+ self.areaPositionLayout.addWidget(self.footerPositionGroupBox)
ThemeWizard.addPage(self.areaPositionPage)
+ # Preview Page
self.previewPage = QtGui.QWizardPage()
- self.previewPage.setObjectName(u'previewPage')
+ self.previewPage.setObjectName(u'PreviewPage')
self.previewLayout = QtGui.QVBoxLayout(self.previewPage)
- self.previewLayout.setSpacing(8)
- self.previewLayout.setMargin(20)
- self.previewLayout.setObjectName(u'previewLayout')
- self.themeNameLayout = QtGui.QHBoxLayout()
- self.themeNameLayout.setSpacing(8)
- self.themeNameLayout.setObjectName(u'themeNameLayout')
+ self.previewLayout.setObjectName(u'PreviewLayout')
+ self.themeNameLayout = QtGui.QFormLayout()
+ self.themeNameLayout.setObjectName(u'ThemeNameLayout')
self.themeNameLabel = QtGui.QLabel(self.previewPage)
- self.themeNameLabel.setMinimumSize(QtCore.QSize(103, 0))
- self.themeNameLabel.setTextFormat(QtCore.Qt.PlainText)
- self.themeNameLabel.setAlignment(QtCore.Qt.AlignRight |
- QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
- self.themeNameLabel.setObjectName(u'themeNameLabel')
- self.themeNameLayout.addWidget(self.themeNameLabel)
+ self.themeNameLabel.setObjectName(u'ThemeNameLabel')
self.themeNameEdit = QtGui.QLineEdit(self.previewPage)
- self.themeNameEdit.setObjectName(u'themeNameEdit')
- self.themeNameLayout.addWidget(self.themeNameEdit)
+ self.themeNameEdit.setObjectName(u'ThemeNameEdit')
+ self.themeNameLayout.addRow(self.themeNameLabel, self.themeNameEdit)
self.previewLayout.addLayout(self.themeNameLayout)
- self.previewPaneLayout = QtGui.QHBoxLayout()
- self.previewPaneLayout.setSpacing(0)
- self.previewPaneLayout.setObjectName(u'previewPaneLayout')
- self.previewLeftSpacer = QtGui.QSpacerItem(58, 20,
- QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.previewPaneLayout.addItem(self.previewLeftSpacer)
- self.previewBoxLabel = QtGui.QLabel(self.previewPage)
- sizePolicy = QtGui.QSizePolicy(
- QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(
- self.previewBoxLabel.sizePolicy().hasHeightForWidth())
- self.previewBoxLabel.setSizePolicy(sizePolicy)
- self.previewBoxLabel.setMinimumSize(QtCore.QSize(100, 150))
- self.previewBoxLabel.setFrameShape(QtGui.QFrame.WinPanel)
- self.previewBoxLabel.setFrameShadow(QtGui.QFrame.Sunken)
- self.previewBoxLabel.setLineWidth(1)
- self.previewBoxLabel.setText(u'')
+ self.previewArea = QtGui.QWidget(self.previewPage)
+ self.previewArea.setObjectName(u'PreviewArea')
+ self.previewAreaLayout = QtGui.QGridLayout(self.previewArea)
+ self.previewAreaLayout.setMargin(0)
+ self.previewAreaLayout.setColumnStretch(0, 1)
+ self.previewAreaLayout.setRowStretch(0, 1)
+ self.previewAreaLayout.setObjectName(u'PreviewAreaLayout')
+ self.previewBoxLabel = QtGui.QLabel(self.previewArea)
+ self.previewBoxLabel.setFrameShape(QtGui.QFrame.Box)
self.previewBoxLabel.setScaledContents(True)
- self.previewBoxLabel.setObjectName(u'previewBoxLabel')
- self.previewPaneLayout.addWidget(self.previewBoxLabel)
- self.previewRightSpacer = QtGui.QSpacerItem(78, 20,
- QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.previewPaneLayout.addItem(self.previewRightSpacer)
- self.previewLayout.addLayout(self.previewPaneLayout)
+ self.previewBoxLabel.setObjectName(u'PreviewBoxLabel')
+ self.previewAreaLayout.addWidget(self.previewBoxLabel)
+ self.previewLayout.addWidget(self.previewArea)
ThemeWizard.addPage(self.previewPage)
- self.themeNameLabel.setBuddy(self.themeNameEdit)
self.retranslateUi(ThemeWizard)
- self.backgroundStackedWidget.setCurrentIndex(0)
- QtCore.QObject.connect(
- ThemeWizard,
- QtCore.SIGNAL(u'accepted()'),
- ThemeWizard.accept)
- QtCore.QObject.connect(
- self.backgroundTypeComboBox,
- QtCore.SIGNAL(u'currentIndexChanged(int)'),
- self.backgroundStackedWidget.setCurrentIndex)
+ QtCore.QObject.connect(self.backgroundComboBox,
+ QtCore.SIGNAL(u'currentIndexChanged(int)'), self.backgroundStack,
+ QtCore.SLOT(u'setCurrentIndex(int)'))
+ QtCore.QObject.connect(self.outlineCheckBox,
+ QtCore.SIGNAL(u'toggled(bool)'), self.outlineColorButton,
+ QtCore.SLOT(u'setEnabled(bool)'))
+ QtCore.QObject.connect(self.outlineCheckBox,
+ QtCore.SIGNAL(u'toggled(bool)'), self.outlineSizeSpinBox,
+ QtCore.SLOT(u'setEnabled(bool)'))
+ QtCore.QObject.connect(self.shadowCheckBox,
+ QtCore.SIGNAL(u'toggled(bool)'), self.shadowColorButton,
+ QtCore.SLOT(u'setEnabled(bool)'))
+ QtCore.QObject.connect(self.shadowCheckBox,
+ QtCore.SIGNAL(u'toggled(bool)'), self.shadowSizeSpinBox,
+ QtCore.SLOT(u'setEnabled(bool)'))
+ QtCore.QObject.connect(self.mainPositionCheckBox,
+ QtCore.SIGNAL(u'toggled(bool)'), self.mainXSpinBox,
+ QtCore.SLOT(u'setDisabled(bool)'))
+ QtCore.QObject.connect(self.mainPositionCheckBox,
+ QtCore.SIGNAL(u'toggled(bool)'), self.mainYSpinBox,
+ QtCore.SLOT(u'setDisabled(bool)'))
+ QtCore.QObject.connect(self.mainPositionCheckBox,
+ QtCore.SIGNAL(u'toggled(bool)'), self.mainWidthSpinBox,
+ QtCore.SLOT(u'setDisabled(bool)'))
+ QtCore.QObject.connect(self.mainPositionCheckBox,
+ QtCore.SIGNAL(u'toggled(bool)'), self.mainHeightSpinBox,
+ QtCore.SLOT(u'setDisabled(bool)'))
+ QtCore.QObject.connect(self.footerPositionCheckBox,
+ QtCore.SIGNAL(u'toggled(bool)'), self.footerXSpinBox,
+ QtCore.SLOT(u'setDisabled(bool)'))
+ QtCore.QObject.connect(self.footerPositionCheckBox,
+ QtCore.SIGNAL(u'toggled(bool)'), self.footerYSpinBox,
+ QtCore.SLOT(u'setDisabled(bool)'))
+ QtCore.QObject.connect(self.footerPositionCheckBox,
+ QtCore.SIGNAL(u'toggled(bool)'), self.footerWidthSpinBox,
+ QtCore.SLOT(u'setDisabled(bool)'))
+ QtCore.QObject.connect(self.footerPositionCheckBox,
+ QtCore.SIGNAL(u'toggled(bool)'), self.footerHeightSpinBox,
+ QtCore.SLOT(u'setDisabled(bool)'))
QtCore.QMetaObject.connectSlotsByName(ThemeWizard)
def retranslateUi(self, ThemeWizard):
@@ -627,20 +428,20 @@ class Ui_ThemeWizard(object):
translate('OpenLP.ThemeWizard', 'Welcome to the Theme Wizard'))
self.informationLabel.setText(
translate('OpenLP.ThemeWizard', 'This wizard will help you to '
- 'create and edit your themes . Click the next button below to '
+ 'create and edit your themes. Click the next button below to '
'start the process by setting up your background.'))
self.backgroundPage.setTitle(
translate('OpenLP.ThemeWizard', 'Set Up Background'))
self.backgroundPage.setSubTitle(
translate('OpenLP.ThemeWizard', 'Set up your theme\'s background '
'according to the parameters below.'))
- self.backgroundTypeLabel.setText(
+ self.backgroundLabel.setText(
translate('OpenLP.ThemeWizard', 'Background type:'))
- self.backgroundTypeComboBox.setItemText(0,
+ self.backgroundComboBox.setItemText(0,
translate('OpenLP.ThemeWizard', 'Solid Color'))
- self.backgroundTypeComboBox.setItemText(1,
+ self.backgroundComboBox.setItemText(1,
translate('OpenLP.ThemeWizard', 'Gradient'))
- self.backgroundTypeComboBox.setItemText(2,
+ self.backgroundComboBox.setItemText(2,
translate('OpenLP.ThemeWizard', 'Image'))
self.colorLabel.setText(translate('OpenLP.ThemeWizard', 'Color:'))
self.gradientStartLabel.setText(
@@ -682,9 +483,9 @@ class Ui_ThemeWizard(object):
self.shadowCheckBox.setText(translate('OpenLP.ThemeWizard', '&Shadow:'))
self.shadowSizeLabel.setText(translate('OpenLP.ThemeWizard', 'Size:'))
self.shadowSizeSpinBox.setSuffix(translate('OpenLP.ThemeWizard', 'pt'))
- self.boldCheckBox.setText(
+ self.mainBoldCheckBox.setText(
translate('OpenLP.ThemeWizard', 'Bold'))
- self.italicsCheckBox.setText(
+ self.mainItalicsCheckBox.setText(
translate('OpenLP.ThemeWizard', 'Italic'))
self.footerAreaPage.setTitle(
translate('OpenLP.ThemeWizard', 'Footer Area Font Details'))
@@ -716,8 +517,8 @@ class Ui_ThemeWizard(object):
translate('OpenLP.ThemeWizard', 'Middle'))
self.verticalComboBox.setItemText(2,
translate('OpenLP.ThemeWizard', 'Bottom'))
- self.transitionsCheckBox.setText(
- translate('OpenLP.ThemeWizard', 'Transitions'))
+ self.transitionsLabel.setText(
+ translate('OpenLP.ThemeWizard', 'Transitions:'))
self.areaPositionPage.setTitle(
translate('OpenLP.ThemeWizard', 'Output Area Locations'))
self.areaPositionPage.setSubTitle(
@@ -725,9 +526,9 @@ class Ui_ThemeWizard(object):
' main and footer areas.'))
self.mainPositionGroupBox.setTitle(
translate('OpenLP.ThemeWizard', '&Main Area'))
- self.mainDefaultPositionCheckBox.setText(
+ self.mainPositionCheckBox.setText(
translate('OpenLP.ThemeWizard', '&Use default location'))
- self.nainXLabel.setText(translate('OpenLP.ThemeWizard', 'X position:'))
+ self.mainXLabel.setText(translate('OpenLP.ThemeWizard', 'X position:'))
self.mainXSpinBox.setSuffix(translate('OpenLP.ThemeWizard', 'px'))
self.mainYSpinBox.setSuffix(translate('OpenLP.ThemeWizard', 'px'))
self.mainYLabel.setText(translate('OpenLP.ThemeWizard', 'Y position:'))
@@ -737,7 +538,7 @@ class Ui_ThemeWizard(object):
self.mainHeightLabel.setText(
translate('OpenLP.ThemeWizard', 'Height:'))
self.footerPositionGroupBox.setTitle(
- translate('OpenLP.ThemeWizard', 'Footer Area'))
+ translate('OpenLP.ThemeWizard', '&Footer Area'))
self.footerXLabel.setText(
translate('OpenLP.ThemeWizard', 'X position:'))
self.footerXSpinBox.setSuffix(translate('OpenLP.ThemeWizard', 'px'))
@@ -752,7 +553,7 @@ class Ui_ThemeWizard(object):
translate('OpenLP.ThemeWizard', 'Height:'))
self.footerHeightSpinBox.setSuffix(
translate('OpenLP.ThemeWizard', 'px'))
- self.footerDefaultPositionCheckBox.setText(
+ self.footerPositionCheckBox.setText(
translate('OpenLP.ThemeWizard', 'Use default location'))
self.previewPage.setTitle(
translate('OpenLP.ThemeWizard', 'Save and Preview'))
@@ -762,3 +563,18 @@ class Ui_ThemeWizard(object):
'new theme'))
self.themeNameLabel.setText(
translate('OpenLP.ThemeWizard', 'Theme name:'))
+ # Align all QFormLayouts towards each other.
+ width = max(self.backgroundLabel.minimumSizeHint().width(),
+ self.colorLabel.minimumSizeHint().width())
+ width = max(width, self.gradientStartLabel.minimumSizeHint().width())
+ width = max(width, self.gradientEndLabel.minimumSizeHint().width())
+ width = max(width, self.gradientTypeLabel.minimumSizeHint().width())
+ width = max(width, self.imageLabel.minimumSizeHint().width())
+ self.backgroundTypeSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Fixed)
+ self.colorSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Fixed)
+ self.gradientSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Fixed)
+ self.imageSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Fixed)
diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py
index 23f77291c..54bd78ccc 100644
--- a/openlp/core/utils/__init__.py
+++ b/openlp/core/utils/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -275,6 +275,13 @@ def get_images_filter():
visible_formats, actual_formats)
return images_filter
+def split_filename(path):
+ path = os.path.abspath(path)
+ if not os.path.isfile(path):
+ return path, u''
+ else:
+ return os.path.split(path)
+
from languagemanager import LanguageManager
from actions import ActionList
diff --git a/openlp/core/utils/actions.py b/openlp/core/utils/actions.py
index 31afe93d1..4434c416e 100644
--- a/openlp/core/utils/actions.py
+++ b/openlp/core/utils/actions.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -181,4 +181,4 @@ class ActionList(object):
if weight is None:
self.categories[category].actions.append(action)
else:
- self.categories[category].actions.add(action, weight)
+ self.categories[category].actions.add(action, weight)
\ No newline at end of file
diff --git a/openlp/core/utils/languagemanager.py b/openlp/core/utils/languagemanager.py
index 187834beb..454d14fa2 100644
--- a/openlp/core/utils/languagemanager.py
+++ b/openlp/core/utils/languagemanager.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -65,7 +65,7 @@ class LanguageManager(object):
"""
trans_dir = QtCore.QDir(AppLocation.get_directory(
AppLocation.LanguageDir))
- file_names = trans_dir.entryList(QtCore.QStringList("*.qm"),
+ file_names = trans_dir.entryList(QtCore.QStringList(u'*.qm'),
QtCore.QDir.Files, QtCore.QDir.Name)
for name in file_names:
file_names.replaceInStrings(name, trans_dir.filePath(name))
diff --git a/openlp/plugins/__init__.py b/openlp/plugins/__init__.py
index 258707016..7bf441119 100644
--- a/openlp/plugins/__init__.py
+++ b/openlp/plugins/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -25,4 +25,4 @@
###############################################################################
"""
The :mod:`plugins` module provides all the project produced plugins
-"""
+"""
\ No newline at end of file
diff --git a/openlp/plugins/alerts/__init__.py b/openlp/plugins/alerts/__init__.py
index bb06bffb0..dafae0885 100644
--- a/openlp/plugins/alerts/__init__.py
+++ b/openlp/plugins/alerts/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -26,4 +26,4 @@
"""
The :mod:`alerts` module provides the Alerts plugin for producing impromptu
on-screen announcements during a service.
-"""
+"""
\ No newline at end of file
diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py
index fbd51a13a..4a7e18cef 100644
--- a/openlp/plugins/alerts/alertsplugin.py
+++ b/openlp/plugins/alerts/alertsplugin.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -40,7 +40,7 @@ class AlertsPlugin(Plugin):
log.info(u'Alerts Plugin loaded')
def __init__(self, plugin_helpers):
- Plugin.__init__(self, u'Alerts', u'1.9.3', plugin_helpers)
+ Plugin.__init__(self, u'Alerts', u'1.9.4', plugin_helpers)
self.weight = -3
self.icon = build_icon(u':/plugins/plugin_alerts.png')
self.alertsmanager = AlertsManager(self)
@@ -114,10 +114,10 @@ class AlertsPlugin(Plugin):
"""
## Name PluginList ##
self.textStrings[StringContent.Name] = {
- u'singular': translate('AlertsPlugin', 'Alert'),
- u'plural': translate('AlertsPlugin', 'Alerts')
+ u'singular': translate('AlertsPlugin', 'Alert', 'name singular'),
+ u'plural': translate('AlertsPlugin', 'Alerts', 'name plural')
}
## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = {
- u'title': translate('AlertsPlugin', 'Alerts')
+ u'title': translate('AlertsPlugin', 'Alerts', 'container title')
}
diff --git a/openlp/plugins/alerts/forms/__init__.py b/openlp/plugins/alerts/forms/__init__.py
index 0eb49be15..da7ae6683 100644
--- a/openlp/plugins/alerts/forms/__init__.py
+++ b/openlp/plugins/alerts/forms/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -24,4 +24,4 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
-from alertform import AlertForm
+from alertform import AlertForm
\ No newline at end of file
diff --git a/openlp/plugins/alerts/forms/alertdialog.py b/openlp/plugins/alerts/forms/alertdialog.py
index 24cc4317b..ac0a5ebc8 100644
--- a/openlp/plugins/alerts/forms/alertdialog.py
+++ b/openlp/plugins/alerts/forms/alertdialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -140,4 +140,4 @@ class Ui_AlertDialog(object):
self.DisplayCloseButton.setText(
translate('AlertsPlugin.AlertForm', 'Display && Cl&ose'))
self.CloseButton.setText(
- translate('AlertsPlugin.AlertForm', '&Close'))
+ translate('AlertsPlugin.AlertForm', '&Close'))
\ No newline at end of file
diff --git a/openlp/plugins/alerts/forms/alertform.py b/openlp/plugins/alerts/forms/alertform.py
index cf9c86c27..8e0d808a0 100644
--- a/openlp/plugins/alerts/forms/alertform.py
+++ b/openlp/plugins/alerts/forms/alertform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -193,4 +193,4 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
text = text.replace(u'<>', unicode(self.ParameterEdit.text()))
self.parent.alertsmanager.displayAlert(text)
return True
- return False
+ return False
\ No newline at end of file
diff --git a/openlp/plugins/alerts/lib/__init__.py b/openlp/plugins/alerts/lib/__init__.py
index 722ee0c3d..f6a535b1b 100644
--- a/openlp/plugins/alerts/lib/__init__.py
+++ b/openlp/plugins/alerts/lib/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -25,4 +25,4 @@
###############################################################################
from alertsmanager import AlertsManager
-from alertstab import AlertsTab
+from alertstab import AlertsTab
\ No newline at end of file
diff --git a/openlp/plugins/alerts/lib/alertsmanager.py b/openlp/plugins/alerts/lib/alertsmanager.py
index 0f2eb4ec7..6fe0ae132 100644
--- a/openlp/plugins/alerts/lib/alertsmanager.py
+++ b/openlp/plugins/alerts/lib/alertsmanager.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -103,4 +103,4 @@ class AlertsManager(QtCore.QObject):
self.parent.liveController.display.alert(u'')
self.killTimer(self.timer_id)
self.timer_id = 0
- self.generateAlert()
+ self.generateAlert()
\ No newline at end of file
diff --git a/openlp/plugins/alerts/lib/alertstab.py b/openlp/plugins/alerts/lib/alertstab.py
index 625287603..4186627d8 100644
--- a/openlp/plugins/alerts/lib/alertstab.py
+++ b/openlp/plugins/alerts/lib/alertstab.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -294,4 +294,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/alerts/lib/db.py b/openlp/plugins/alerts/lib/db.py
index e71007c28..e324bc838 100644
--- a/openlp/plugins/alerts/lib/db.py
+++ b/openlp/plugins/alerts/lib/db.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -55,4 +55,4 @@ def init_schema(url):
mapper(AlertItem, alerts_table)
metadata.create_all(checkfirst=True)
- return session
+ return session
\ No newline at end of file
diff --git a/openlp/plugins/bibles/__init__.py b/openlp/plugins/bibles/__init__.py
index a1e8f5a51..59cd2afec 100644
--- a/openlp/plugins/bibles/__init__.py
+++ b/openlp/plugins/bibles/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -26,4 +26,4 @@
"""
The :mod:`bibles` module provides the Bible plugin to enable OpenLP to display
scripture.
-"""
+"""
\ No newline at end of file
diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py
index 42976cde6..15181e871 100644
--- a/openlp/plugins/bibles/bibleplugin.py
+++ b/openlp/plugins/bibles/bibleplugin.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -37,7 +37,7 @@ class BiblePlugin(Plugin):
log.info(u'Bible Plugin loaded')
def __init__(self, plugin_helpers):
- Plugin.__init__(self, u'Bibles', u'1.9.3', plugin_helpers)
+ Plugin.__init__(self, u'Bibles', u'1.9.4', plugin_helpers)
self.weight = -9
self.icon_path = u':/plugins/plugin_bibles.png'
self.icon = build_icon(self.icon_path)
@@ -126,51 +126,46 @@ class BiblePlugin(Plugin):
"""
## Name PluginList ##
self.textStrings[StringContent.Name] = {
- u'singular': translate('BiblesPlugin', 'Bible'),
- u'plural': translate('BiblesPlugin', 'Bibles')
+ u'singular': translate('BiblesPlugin', 'Bible', 'name singular'),
+ u'plural': translate('BiblesPlugin', 'Bibles', 'name plural')
}
## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = {
- u'title': translate('BiblesPlugin', 'Bibles')
+ u'title': translate('BiblesPlugin', 'Bibles', 'container title')
}
# Middle Header Bar
- ## Import Button ##
+ ## Import Action ##
self.textStrings[StringContent.Import] = {
- u'title': translate('BiblesPlugin', 'Import'),
- u'tooltip': translate('BiblesPlugin',
- 'Import a Bible')
+ u'title': translate('BiblesPlugin', '&Import'),
+ u'tooltip': translate('BiblesPlugin', 'Import a Bible')
}
- ## New Button ##
+ ## New Action ##
self.textStrings[StringContent.New] = {
- u'title': translate('BiblesPlugin', 'Add'),
- u'tooltip': translate('BiblesPlugin',
- 'Add a new Bible')
+ u'title': translate('BiblesPlugin', '&Add'),
+ u'tooltip': translate('BiblesPlugin', 'Add a new Bible')
}
- ## Edit Button ##
+ ## Edit Action ##
self.textStrings[StringContent.Edit] = {
- u'title': translate('BiblesPlugin', 'Edit'),
- u'tooltip': translate('BiblesPlugin',
- 'Edit the selected Bible')
+ u'title': translate('BiblesPlugin', '&Edit'),
+ u'tooltip': translate('BiblesPlugin', 'Edit the selected Bible')
}
- ## Delete Button ##
+ ## Delete Action ##
self.textStrings[StringContent.Delete] = {
- u'title': translate('BiblesPlugin', 'Delete'),
- u'tooltip': translate('BiblesPlugin',
- 'Delete the selected Bible')
+ u'title': translate('BiblesPlugin', '&Delete'),
+ u'tooltip': translate('BiblesPlugin', 'Delete the selected Bible')
}
- ## Preview ##
+ ## Preview Action ##
self.textStrings[StringContent.Preview] = {
u'title': translate('BiblesPlugin', 'Preview'),
- u'tooltip': translate('BiblesPlugin',
- 'Preview the selected Bible')
+ u'tooltip': translate('BiblesPlugin', 'Preview the selected Bible')
}
- ## Live Button ##
+ ## Send Live Action ##
self.textStrings[StringContent.Live] = {
u'title': translate('BiblesPlugin', 'Live'),
u'tooltip': translate('BiblesPlugin',
'Send the selected Bible live')
}
- ## Add to service Button ##
+ ## Add to Service Action ##
self.textStrings[StringContent.Service] = {
u'title': translate('BiblesPlugin', 'Service'),
u'tooltip': translate('BiblesPlugin',
diff --git a/openlp/plugins/bibles/forms/__init__.py b/openlp/plugins/bibles/forms/__init__.py
index e5d0317c5..1365dc5e0 100644
--- a/openlp/plugins/bibles/forms/__init__.py
+++ b/openlp/plugins/bibles/forms/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -53,4 +53,4 @@ from the .ui files later if necessary.
from bibleimportform import BibleImportForm
-__all__ = ['BibleImportForm']
+__all__ = ['BibleImportForm']
\ No newline at end of file
diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py
index 0cc62074c..4590ea739 100644
--- a/openlp/plugins/bibles/forms/bibleimportform.py
+++ b/openlp/plugins/bibles/forms/bibleimportform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -79,12 +79,12 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
QtGui.QWizard.__init__(self, parent)
self.setupUi(self)
self.registerFields()
- if not BibleFormat.get_availability(BibleFormat.OpenLP1):
- self.openlp1Page.setVisible(False)
- self.openlp1LocationLabel.setVisible(False)
- self.openlp1LocationEdit.setVisible(False)
- self.openlp1FileButton.setVisible(False)
- self.openlp1DisabledLabel.setVisible(True)
+ if BibleFormat.get_availability(BibleFormat.OpenLP1):
+ self.openlp1DisabledLabel.hide()
+ else:
+ self.openlp1FileLabel.hide()
+ self.openlp1FileEdit.hide()
+ self.openlp1BrowseButton.hide()
self.finishButton = self.button(QtGui.QWizard.FinishButton)
self.cancelButton = self.button(QtGui.QWizard.CancelButton)
self.manager = manager
@@ -92,24 +92,26 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
self.manager.set_process_dialog(self)
self.web_bible_list = {}
self.loadWebBibles()
- QtCore.QObject.connect(self.locationComboBox,
+ self.restart()
+ self.selectStack.setCurrentIndex(0)
+ QtCore.QObject.connect(self.webSourceComboBox,
QtCore.SIGNAL(u'currentIndexChanged(int)'),
- self.onLocationComboBoxChanged)
- QtCore.QObject.connect(self.osisFileButton,
+ self.onWebSourceComboBoxCurrentIndexChanged)
+ QtCore.QObject.connect(self.osisBrowseButton,
QtCore.SIGNAL(u'clicked()'),
- self.onOsisFileButtonClicked)
- QtCore.QObject.connect(self.booksFileButton,
+ self.onOsisBrowseButtonClicked)
+ QtCore.QObject.connect(self.csvBooksButton,
QtCore.SIGNAL(u'clicked()'),
- self.onBooksFileButtonClicked)
- QtCore.QObject.connect(self.csvVersesFileButton,
+ self.onBooksBrowseButtonClicked)
+ QtCore.QObject.connect(self.csvVersesButton,
QtCore.SIGNAL(u'clicked()'),
- self.onCsvVersesFileButtonClicked)
+ self.onCsvVersesBrowseButtonClicked)
QtCore.QObject.connect(self.openSongBrowseButton,
QtCore.SIGNAL(u'clicked()'),
self.onOpenSongBrowseButtonClicked)
- QtCore.QObject.connect(self.openlp1FileButton,
+ QtCore.QObject.connect(self.openlp1BrowseButton,
QtCore.SIGNAL(u'clicked()'),
- self.onOpenlp1FileButtonClicked)
+ self.onOpenlp1BrowseButtonClicked)
QtCore.QObject.connect(self,
QtCore.SIGNAL(u'currentIdChanged(int)'),
self.onCurrentIdChanged)
@@ -125,8 +127,8 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
"""
Stop the import on cancel button, close button or ESC key.
"""
- log.debug('Import canceled by user.')
- if self.currentId() == 3:
+ log.debug(u'Import canceled by user.')
+ if self.currentPage() == self.importPage:
Receiver.send_message(u'bibles_stop_import')
self.done(QtGui.QDialog.Rejected)
@@ -134,11 +136,9 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
"""
Validate the current page before moving on to the next page.
"""
- if self.currentId() == 0:
- # Welcome page
+ if self.currentPage() == self.welcomePage:
return True
- elif self.currentId() == 1:
- # Select page
+ elif self.currentPage() == self.selectPage:
if self.field(u'source_format').toInt()[0] == BibleFormat.OSIS:
if not self.field(u'osis_location').toString():
QtGui.QMessageBox.critical(self,
@@ -147,7 +147,7 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
translate('BiblesPlugin.ImportWizardForm',
'You need to specify a file to import your '
'Bible from.'))
- self.OSISLocationEdit.setFocus()
+ self.osisFileEdit.setFocus()
return False
elif self.field(u'source_format').toInt()[0] == BibleFormat.CSV:
if not self.field(u'csv_booksfile').toString():
@@ -157,7 +157,7 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
translate('BiblesPlugin.ImportWizardForm',
'You need to specify a file with books of '
'the Bible to use in the import.'))
- self.booksLocationEdit.setFocus()
+ self.csvBooksEdit.setFocus()
return False
elif not self.field(u'csv_versefile').toString():
QtGui.QMessageBox.critical(self,
@@ -166,7 +166,7 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
translate('BiblesPlugin.ImportWizardForm',
'You need to specify a file of Bible '
'verses to import.'))
- self.csvVerseLocationEdit.setFocus()
+ self.csvVersesEdit.setFocus()
return False
elif self.field(u'source_format').toInt()[0] == \
BibleFormat.OpenSong:
@@ -187,11 +187,10 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
translate('BiblesPlugin.ImportWizardForm',
'You need to specify a file to import your '
'Bible from.'))
- self.openlp1LocationEdit.setFocus()
+ self.openlp1FileEdit.setFocus()
return False
return True
- elif self.currentId() == 2:
- # License details
+ elif self.currentPage() == self.licenseDetailsPage:
license_version = unicode(self.field(u'license_version').toString())
license_copyright = \
unicode(self.field(u'license_copyright').toString())
@@ -221,11 +220,10 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
self.versionNameEdit.setFocus()
return False
return True
- if self.currentId() == 3:
- # Progress page
+ if self.currentPage() == self.importPage:
return True
- def onLocationComboBoxChanged(self, index):
+ def onWebSourceComboBoxCurrentIndexChanged(self, index):
"""
Setup the list of Bibles when you select a different source on the web
download page.
@@ -233,35 +231,34 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
``index``
The index of the combo box.
"""
- self.bibleComboBox.clear()
+ self.webTranslationComboBox.clear()
bibles = self.web_bible_list[index].keys()
bibles.sort()
- for bible in bibles:
- self.bibleComboBox.addItem(bible)
+ self.webTranslationComboBox.addItems(bibles)
- def onOsisFileButtonClicked(self):
+ def onOsisBrowseButtonClicked(self):
"""
Show the file open dialog for the OSIS file.
"""
self.getFileName(
translate('BiblesPlugin.ImportWizardForm', 'Open OSIS File'),
- self.OSISLocationEdit)
+ self.osisFileEdit)
- def onBooksFileButtonClicked(self):
+ def onBooksBrowseButtonClicked(self):
"""
Show the file open dialog for the books CSV file.
"""
self.getFileName(
translate('BiblesPlugin.ImportWizardForm', 'Open Books CSV File'),
- self.booksLocationEdit, u'%s (*.csv)'
+ self.csvBooksEdit, u'%s (*.csv)'
% translate('BiblesPlugin.ImportWizardForm', 'CSV File'))
- def onCsvVersesFileButtonClicked(self):
+ def onCsvVersesBrowseButtonClicked(self):
"""
Show the file open dialog for the verses CSV file.
"""
self.getFileName(translate('BiblesPlugin.ImportWizardForm',
- 'Open Verses CSV File'), self.csvVerseLocationEdit, u'%s (*.csv)'
+ 'Open Verses CSV File'), self.csvVersesEdit, u'%s (*.csv)'
% translate('BiblesPlugin.ImportWizardForm', 'CSV File'))
def onOpenSongBrowseButtonClicked(self):
@@ -272,36 +269,35 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
translate('BiblesPlugin.ImportWizardForm', 'Open OpenSong Bible'),
self.openSongFileEdit)
- def onOpenlp1FileButtonClicked(self):
+ def onOpenlp1BrowseButtonClicked(self):
"""
Show the file open dialog for the openlp.org 1.x file.
"""
self.getFileName(
translate('BiblesPlugin.ImportWizardForm',
- 'Open openlp.org 1.x Bible'), self.openlp1LocationEdit,
+ 'Open openlp.org 1.x Bible'), self.openlp1FileEdit,
u'%s (*.bible)' % translate('BiblesPlugin.ImportWizardForm',
'openlp.org 1.x bible'))
def onCurrentIdChanged(self, pageId):
- if pageId == 3:
+ if self.page(pageId) == self.importPage:
self.preImport()
self.performImport()
self.postImport()
def registerFields(self):
self.selectPage.registerField(u'source_format', self.formatComboBox)
- self.selectPage.registerField(u'osis_location', self.OSISLocationEdit)
- self.selectPage.registerField(u'csv_booksfile', self.booksLocationEdit)
- self.selectPage.registerField(
- u'csv_versefile', self.csvVerseLocationEdit)
+ self.selectPage.registerField(u'osis_location', self.osisFileEdit)
+ self.selectPage.registerField(u'csv_booksfile', self.csvBooksEdit)
+ self.selectPage.registerField(u'csv_versefile', self.csvVersesEdit)
self.selectPage.registerField(u'opensong_file', self.openSongFileEdit)
- self.selectPage.registerField(u'web_location', self.locationComboBox)
- self.selectPage.registerField(u'web_biblename', self.bibleComboBox)
- self.selectPage.registerField(u'proxy_server', self.addressEdit)
- self.selectPage.registerField(u'proxy_username', self.usernameEdit)
- self.selectPage.registerField(u'proxy_password', self.passwordEdit)
- self.selectPage.registerField(
- u'openlp1_location', self.openlp1LocationEdit)
+ self.selectPage.registerField(u'web_location', self.webSourceComboBox)
+ self.selectPage.registerField(u'web_biblename',
+ self.webTranslationComboBox)
+ self.selectPage.registerField(u'proxy_server', self.webServerEdit)
+ self.selectPage.registerField(u'proxy_username', self.webUserEdit)
+ self.selectPage.registerField(u'proxy_password', self.webPasswordEdit)
+ self.selectPage.registerField(u'openlp1_location', self.openlp1FileEdit)
self.licenseDetailsPage.registerField(
u'license_version', self.versionNameEdit)
self.licenseDetailsPage.registerField(
@@ -322,7 +318,7 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
self.setField(u'opensong_file', QtCore.QVariant(''))
self.setField(u'web_location', QtCore.QVariant(WebDownload.Crosswalk))
self.setField(u'web_biblename',
- QtCore.QVariant(self.bibleComboBox.currentIndex()))
+ QtCore.QVariant(self.webTranslationComboBox.currentIndex()))
self.setField(u'proxy_server',
settings.value(u'proxy address', QtCore.QVariant(u'')))
self.setField(u'proxy_username',
@@ -336,7 +332,7 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
QtCore.QVariant(self.copyrightEdit.text()))
self.setField(u'license_permissions',
QtCore.QVariant(self.permissionsEdit.text()))
- self.onLocationComboBoxChanged(WebDownload.Crosswalk)
+ self.onWebSourceComboBoxCurrentIndexChanged(WebDownload.Crosswalk)
settings.endGroup()
def loadWebBibles(self):
@@ -491,7 +487,7 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard):
# Import a bible from the web.
self.importProgressBar.setMaximum(1)
download_location = self.field(u'web_location').toInt()[0]
- bible_version = unicode(self.bibleComboBox.currentText())
+ bible_version = unicode(self.webTranslationComboBox.currentText())
if download_location == WebDownload.Crosswalk:
bible = \
self.web_bible_list[WebDownload.Crosswalk][bible_version]
diff --git a/openlp/plugins/bibles/forms/bibleimportwizard.py b/openlp/plugins/bibles/forms/bibleimportwizard.py
index a0b2b99b9..a85e430a1 100644
--- a/openlp/plugins/bibles/forms/bibleimportwizard.py
+++ b/openlp/plugins/bibles/forms/bibleimportwizard.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -31,269 +31,216 @@ from openlp.core.lib import build_icon, translate
class Ui_BibleImportWizard(object):
def setupUi(self, bibleImportWizard):
bibleImportWizard.setObjectName(u'bibleImportWizard')
- bibleImportWizard.resize(550, 386)
bibleImportWizard.setModal(True)
bibleImportWizard.setWizardStyle(QtGui.QWizard.ModernStyle)
bibleImportWizard.setOptions(
QtGui.QWizard.IndependentPages |
QtGui.QWizard.NoBackButtonOnStartPage |
QtGui.QWizard.NoBackButtonOnLastPage)
- # Welcome page
+ # Welcome Page
self.welcomePage = QtGui.QWizardPage()
self.welcomePage.setPixmap(QtGui.QWizard.WatermarkPixmap,
QtGui.QPixmap(u':/wizards/wizard_importbible.bmp'))
self.welcomePage.setObjectName(u'WelcomePage')
self.welcomeLayout = QtGui.QVBoxLayout(self.welcomePage)
- self.welcomeLayout.setSpacing(8)
- self.welcomeLayout.setMargin(0)
self.welcomeLayout.setObjectName(u'WelcomeLayout')
self.titleLabel = QtGui.QLabel(self.welcomePage)
self.titleLabel.setObjectName(u'TitleLabel')
self.welcomeLayout.addWidget(self.titleLabel)
- spacerItem = QtGui.QSpacerItem(20, 40,
- QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
- self.welcomeLayout.addItem(spacerItem)
+ self.welcomeLayout.addSpacing(40)
self.informationLabel = QtGui.QLabel(self.welcomePage)
self.informationLabel.setWordWrap(True)
- self.informationLabel.setMargin(10)
self.informationLabel.setObjectName(u'InformationLabel')
self.welcomeLayout.addWidget(self.informationLabel)
- spacerItem1 = QtGui.QSpacerItem(20, 40,
- QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.welcomeLayout.addItem(spacerItem1)
+ self.welcomeLayout.addStretch()
bibleImportWizard.addPage(self.welcomePage)
- # Select page
+ # Select Page
self.selectPage = QtGui.QWizardPage()
self.selectPage.setObjectName(u'SelectPage')
self.selectPageLayout = QtGui.QVBoxLayout(self.selectPage)
- self.selectPageLayout.setSpacing(8)
- self.selectPageLayout.setMargin(20)
- self.selectPageLayout.setObjectName(u'selectPageLayout')
- self.formatSelectLayout = QtGui.QHBoxLayout()
- self.formatSelectLayout.setSpacing(8)
- self.formatSelectLayout.setObjectName(u'FormatSelectLayout')
+ self.selectPageLayout.setObjectName(u'SelectPageLayout')
+ self.formatLayout = QtGui.QFormLayout()
+ self.formatLayout.setObjectName(u'FormatLayout')
self.formatLabel = QtGui.QLabel(self.selectPage)
self.formatLabel.setObjectName(u'FormatLabel')
- self.formatSelectLayout.addWidget(self.formatLabel)
self.formatComboBox = QtGui.QComboBox(self.selectPage)
+ self.formatComboBox.addItems([u'', u'', u'', u'', u''])
self.formatComboBox.setObjectName(u'FormatComboBox')
- self.formatComboBox.addItem(u'')
- self.formatComboBox.addItem(u'')
- self.formatComboBox.addItem(u'')
- self.formatComboBox.addItem(u'')
- self.formatComboBox.addItem(u'')
- self.formatSelectLayout.addWidget(self.formatComboBox)
- spacerItem2 = QtGui.QSpacerItem(40, 20,
- QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.formatSelectLayout.addItem(spacerItem2)
- self.selectPageLayout.addLayout(self.formatSelectLayout)
- self.formatWidget = QtGui.QStackedWidget(self.selectPage)
- self.formatWidget.setObjectName(u'FormatWidget')
- generalIcon = build_icon(u':/general/general_open.png')
- self.osisPage = QtGui.QWidget()
- self.osisPage.setObjectName(u'OsisPage')
- self.osisLayout = QtGui.QFormLayout(self.osisPage)
- self.osisLayout.setFieldGrowthPolicy(
- QtGui.QFormLayout.ExpandingFieldsGrow)
+ self.formatLayout.addRow(self.formatLabel, self.formatComboBox)
+ self.formatSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Minimum)
+ self.formatLayout.setItem(1, QtGui.QFormLayout.LabelRole,
+ self.formatSpacer)
+ self.selectPageLayout.addLayout(self.formatLayout)
+ self.selectStack = QtGui.QStackedLayout()
+ self.selectStack.setObjectName(u'SelectStack')
+ self.osisWidget = QtGui.QWidget(self.selectPage)
+ self.osisWidget.setObjectName(u'OsisWidget')
+ self.osisLayout = QtGui.QFormLayout(self.osisWidget)
self.osisLayout.setMargin(0)
- self.osisLayout.setSpacing(8)
self.osisLayout.setObjectName(u'OsisLayout')
- self.osisLocationLabel = QtGui.QLabel(self.osisPage)
- self.osisLocationLabel.setObjectName(u'OsisLocationLabel')
- self.osisLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
- self.osisLocationLabel)
- self.osisLocationLayout = QtGui.QHBoxLayout()
- self.osisLocationLayout.setSpacing(8)
- self.osisLocationLayout.setObjectName(u'OsisLocationLayout')
- self.OSISLocationEdit = QtGui.QLineEdit(self.osisPage)
- self.OSISLocationEdit.setObjectName(u'OSISLocationEdit')
- self.osisLocationLayout.addWidget(self.OSISLocationEdit)
- self.osisFileButton = QtGui.QToolButton(self.osisPage)
- self.osisFileButton.setMaximumSize(QtCore.QSize(32, 16777215))
- self.osisFileButton.setIcon(generalIcon)
- self.osisFileButton.setObjectName(u'OsisFileButton')
- self.osisLocationLayout.addWidget(self.osisFileButton)
- self.osisLayout.setLayout(1, QtGui.QFormLayout.FieldRole,
- self.osisLocationLayout)
- self.formatWidget.addWidget(self.osisPage)
- self.csvPage = QtGui.QWidget()
- self.csvPage.setObjectName(u'CsvPage')
- self.csvSourceLayout = QtGui.QFormLayout(self.csvPage)
- self.csvSourceLayout.setFieldGrowthPolicy(
- QtGui.QFormLayout.ExpandingFieldsGrow)
- self.csvSourceLayout.setLabelAlignment(QtCore.Qt.AlignBottom |
- QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing)
- self.csvSourceLayout.setFormAlignment(QtCore.Qt.AlignLeading |
- QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
- self.csvSourceLayout.setMargin(0)
- self.csvSourceLayout.setSpacing(8)
- self.csvSourceLayout.setObjectName(u'CsvSourceLayout')
- self.booksLocationLabel = QtGui.QLabel(self.csvPage)
- self.booksLocationLabel.setObjectName(u'BooksLocationLabel')
- self.csvSourceLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
- self.booksLocationLabel)
+ self.osisFileLabel = QtGui.QLabel(self.osisWidget)
+ self.osisFileLabel.setObjectName(u'OsisFileLabel')
+ self.osisFileLayout = QtGui.QHBoxLayout()
+ self.osisFileLayout.setObjectName(u'OsisFileLayout')
+ self.osisFileEdit = QtGui.QLineEdit(self.osisWidget)
+ self.osisFileEdit.setObjectName(u'OsisFileEdit')
+ self.osisFileLayout.addWidget(self.osisFileEdit)
+ self.osisBrowseButton = QtGui.QToolButton(self.osisWidget)
+ self.osisBrowseButton.setIcon(build_icon(u':/general/general_open.png'))
+ self.osisBrowseButton.setObjectName(u'OsisBrowseButton')
+ self.osisFileLayout.addWidget(self.osisBrowseButton)
+ self.osisLayout.addRow(self.osisFileLabel, self.osisFileLayout)
+ self.osisSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Minimum)
+ self.osisLayout.setItem(1, QtGui.QFormLayout.LabelRole, self.osisSpacer)
+ self.selectStack.addWidget(self.osisWidget)
+ self.csvWidget = QtGui.QWidget(self.selectPage)
+ self.csvWidget.setObjectName(u'CsvWidget')
+ self.csvLayout = QtGui.QFormLayout(self.csvWidget)
+ self.csvLayout.setMargin(0)
+ self.csvLayout.setObjectName(u'CsvLayout')
+ self.csvBooksLabel = QtGui.QLabel(self.csvWidget)
+ self.csvBooksLabel.setObjectName(u'CsvBooksLabel')
self.csvBooksLayout = QtGui.QHBoxLayout()
- self.csvBooksLayout.setSpacing(8)
self.csvBooksLayout.setObjectName(u'CsvBooksLayout')
- self.booksLocationEdit = QtGui.QLineEdit(self.csvPage)
- self.booksLocationEdit.setObjectName(u'BooksLocationEdit')
- self.csvBooksLayout.addWidget(self.booksLocationEdit)
- self.booksFileButton = QtGui.QToolButton(self.csvPage)
- self.booksFileButton.setMaximumSize(QtCore.QSize(32, 16777215))
- self.booksFileButton.setIcon(generalIcon)
- self.booksFileButton.setObjectName(u'BooksFileButton')
- self.csvBooksLayout.addWidget(self.booksFileButton)
- self.csvSourceLayout.setLayout(0, QtGui.QFormLayout.FieldRole,
- self.csvBooksLayout)
- self.verseLocationLabel = QtGui.QLabel(self.csvPage)
- self.verseLocationLabel.setObjectName(u'VerseLocationLabel')
- self.csvSourceLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
- self.verseLocationLabel)
- self.csvVerseLayout = QtGui.QHBoxLayout()
- self.csvVerseLayout.setSpacing(8)
- self.csvVerseLayout.setObjectName(u'CsvVerseLayout')
- self.csvVerseLocationEdit = QtGui.QLineEdit(self.csvPage)
- self.csvVerseLocationEdit.setObjectName(u'CsvVerseLocationEdit')
- self.csvVerseLayout.addWidget(self.csvVerseLocationEdit)
- self.csvVersesFileButton = QtGui.QToolButton(self.csvPage)
- self.csvVersesFileButton.setMaximumSize(QtCore.QSize(32, 16777215))
- self.csvVersesFileButton.setIcon(generalIcon)
- self.csvVersesFileButton.setObjectName(u'CsvVersesFileButton')
- self.csvVerseLayout.addWidget(self.csvVersesFileButton)
- self.csvSourceLayout.setLayout(1, QtGui.QFormLayout.FieldRole,
- self.csvVerseLayout)
- self.formatWidget.addWidget(self.csvPage)
- self.openSongPage = QtGui.QWidget()
- self.openSongPage.setObjectName(u'OpenSongPage')
- self.openSongLayout = QtGui.QFormLayout(self.openSongPage)
+ self.csvBooksEdit = QtGui.QLineEdit(self.csvWidget)
+ self.csvBooksEdit.setObjectName(u'CsvBooksEdit')
+ self.csvBooksLayout.addWidget(self.csvBooksEdit)
+ self.csvBooksButton = QtGui.QToolButton(self.csvWidget)
+ self.csvBooksButton.setIcon(build_icon(u':/general/general_open.png'))
+ self.csvBooksButton.setObjectName(u'CsvBooksButton')
+ self.csvBooksLayout.addWidget(self.csvBooksButton)
+ self.csvLayout.addRow(self.csvBooksLabel, self.csvBooksLayout)
+ self.csvVersesLabel = QtGui.QLabel(self.csvWidget)
+ self.csvVersesLabel.setObjectName(u'CsvVersesLabel')
+ self.csvVersesLayout = QtGui.QHBoxLayout()
+ self.csvVersesLayout.setObjectName(u'CsvVersesLayout')
+ self.csvVersesEdit = QtGui.QLineEdit(self.csvWidget)
+ self.csvVersesEdit.setObjectName(u'CsvVersesEdit')
+ self.csvVersesLayout.addWidget(self.csvVersesEdit)
+ self.csvVersesButton = QtGui.QToolButton(self.csvWidget)
+ self.csvVersesButton.setIcon(build_icon(u':/general/general_open.png'))
+ self.csvVersesButton.setObjectName(u'CsvVersesButton')
+ self.csvVersesLayout.addWidget(self.csvVersesButton)
+ self.csvLayout.addRow(self.csvVersesLabel, self.csvVersesLayout)
+ self.csvSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Minimum)
+ self.csvLayout.setItem(2, QtGui.QFormLayout.LabelRole, self.csvSpacer)
+ self.selectStack.addWidget(self.csvWidget)
+ self.openSongWidget = QtGui.QWidget(self.selectPage)
+ self.openSongWidget.setObjectName(u'OpenSongWidget')
+ self.openSongLayout = QtGui.QFormLayout(self.openSongWidget)
self.openSongLayout.setMargin(0)
- self.openSongLayout.setSpacing(8)
self.openSongLayout.setObjectName(u'OpenSongLayout')
- self.openSongFileLabel = QtGui.QLabel(self.openSongPage)
+ self.openSongFileLabel = QtGui.QLabel(self.openSongWidget)
self.openSongFileLabel.setObjectName(u'OpenSongFileLabel')
- self.openSongLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
- self.openSongFileLabel)
self.openSongFileLayout = QtGui.QHBoxLayout()
- self.openSongFileLayout.setSpacing(8)
self.openSongFileLayout.setObjectName(u'OpenSongFileLayout')
- self.openSongFileEdit = QtGui.QLineEdit(self.openSongPage)
+ self.openSongFileEdit = QtGui.QLineEdit(self.openSongWidget)
self.openSongFileEdit.setObjectName(u'OpenSongFileEdit')
self.openSongFileLayout.addWidget(self.openSongFileEdit)
- self.openSongBrowseButton = QtGui.QToolButton(self.openSongPage)
- self.openSongBrowseButton.setIcon(generalIcon)
+ self.openSongBrowseButton = QtGui.QToolButton(self.openSongWidget)
+ self.openSongBrowseButton.setIcon(
+ build_icon(u':/general/general_open.png'))
self.openSongBrowseButton.setObjectName(u'OpenSongBrowseButton')
self.openSongFileLayout.addWidget(self.openSongBrowseButton)
- self.openSongLayout.setLayout(0, QtGui.QFormLayout.FieldRole,
+ self.openSongLayout.addRow(self.openSongFileLabel,
self.openSongFileLayout)
- self.formatWidget.addWidget(self.openSongPage)
- self.webDownloadPage = QtGui.QWidget()
- self.webDownloadPage.setObjectName(u'WebDownloadPage')
- self.webDownloadLayout = QtGui.QVBoxLayout(self.webDownloadPage)
- self.webDownloadLayout.setSpacing(8)
- self.webDownloadLayout.setMargin(0)
- self.webDownloadLayout.setObjectName(u'WebDownloadLayout')
- self.webDownloadTabWidget = QtGui.QTabWidget(self.webDownloadPage)
- self.webDownloadTabWidget.setObjectName(u'WebDownloadTabWidget')
- self.downloadOptionsTab = QtGui.QWidget()
- self.downloadOptionsTab.setObjectName(u'DownloadOptionsTab')
- self.downloadOptionsLayout = QtGui.QFormLayout(self.downloadOptionsTab)
- self.downloadOptionsLayout.setMargin(8)
- self.downloadOptionsLayout.setSpacing(8)
- self.downloadOptionsLayout.setObjectName(u'DownloadOptionsLayout')
- self.locationLabel = QtGui.QLabel(self.downloadOptionsTab)
- self.locationLabel.setObjectName(u'LocationLabel')
- self.downloadOptionsLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
- self.locationLabel)
- self.locationComboBox = QtGui.QComboBox(self.downloadOptionsTab)
- self.locationComboBox.setObjectName(u'LocationComboBox')
- self.locationComboBox.addItem(u'')
- self.locationComboBox.addItem(u'')
- self.locationComboBox.addItem(u'')
- self.downloadOptionsLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
- self.locationComboBox)
- self.bibleLabel = QtGui.QLabel(self.downloadOptionsTab)
- self.bibleLabel.setObjectName(u'BibleLabel')
- self.downloadOptionsLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
- self.bibleLabel)
- self.bibleComboBox = QtGui.QComboBox(self.downloadOptionsTab)
- self.bibleComboBox.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContents)
- self.bibleComboBox.setObjectName(u'BibleComboBox')
- self.bibleComboBox.addItem(u'')
- self.bibleComboBox.addItem(u'')
- self.bibleComboBox.addItem(u'')
- self.downloadOptionsLayout.setWidget(1, QtGui.QFormLayout.FieldRole,
- self.bibleComboBox)
- self.webDownloadTabWidget.addTab(self.downloadOptionsTab, u'')
- self.proxyServerTab = QtGui.QWidget()
- self.proxyServerTab.setObjectName(u'ProxyServerTab')
- self.proxyServerLayout = QtGui.QFormLayout(self.proxyServerTab)
- self.proxyServerLayout.setObjectName(u'ProxyServerLayout')
- self.addressLabel = QtGui.QLabel(self.proxyServerTab)
- self.addressLabel.setObjectName(u'AddressLabel')
- self.proxyServerLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
- self.addressLabel)
- self.addressEdit = QtGui.QLineEdit(self.proxyServerTab)
- self.addressEdit.setObjectName(u'AddressEdit')
- self.proxyServerLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
- self.addressEdit)
- self.usernameLabel = QtGui.QLabel(self.proxyServerTab)
- self.usernameLabel.setObjectName(u'UsernameLabel')
- self.proxyServerLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
- self.usernameLabel)
- self.usernameEdit = QtGui.QLineEdit(self.proxyServerTab)
- self.usernameEdit.setObjectName(u'UsernameEdit')
- self.proxyServerLayout.setWidget(1, QtGui.QFormLayout.FieldRole,
- self.usernameEdit)
- self.passwordLabel = QtGui.QLabel(self.proxyServerTab)
- self.passwordLabel.setObjectName(u'PasswordLabel')
- self.proxyServerLayout.setWidget(2, QtGui.QFormLayout.LabelRole,
- self.passwordLabel)
- self.passwordEdit = QtGui.QLineEdit(self.proxyServerTab)
- self.passwordEdit.setObjectName(u'PasswordEdit')
- self.proxyServerLayout.setWidget(2, QtGui.QFormLayout.FieldRole,
- self.passwordEdit)
- self.webDownloadTabWidget.addTab(self.proxyServerTab, u'')
- self.webDownloadLayout.addWidget(self.webDownloadTabWidget)
- self.formatWidget.addWidget(self.webDownloadPage)
- self.openlp1Page = QtGui.QWidget()
- self.openlp1Page.setObjectName(u'Openlp1Page')
- self.openlp1Layout = QtGui.QFormLayout(self.openlp1Page)
- self.openlp1Layout.setFieldGrowthPolicy(
- QtGui.QFormLayout.ExpandingFieldsGrow)
+ self.openSongSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Minimum)
+ self.openSongLayout.setItem(1, QtGui.QFormLayout.LabelRole,
+ self.openSongSpacer)
+ self.selectStack.addWidget(self.openSongWidget)
+ self.webTabWidget = QtGui.QTabWidget(self.selectPage)
+ self.webTabWidget.setObjectName(u'WebTabWidget')
+ self.webBibleTab = QtGui.QWidget()
+ self.webBibleTab.setObjectName(u'WebBibleTab')
+ self.webBibleLayout = QtGui.QFormLayout(self.webBibleTab)
+ self.webBibleLayout.setObjectName(u'WebBibleLayout')
+ self.webSourceLabel = QtGui.QLabel(self.webBibleTab)
+ self.webSourceLabel.setObjectName(u'WebSourceLabel')
+ self.webBibleLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
+ self.webSourceLabel)
+ self.webSourceComboBox = QtGui.QComboBox(self.webBibleTab)
+ self.webSourceComboBox.setObjectName(u'WebSourceComboBox')
+ self.webSourceComboBox.addItems([u'', u'', u''])
+ self.webBibleLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
+ self.webSourceComboBox)
+ self.webTranslationLabel = QtGui.QLabel(self.webBibleTab)
+ self.webTranslationLabel.setObjectName(u'webTranslationLabel')
+ self.webBibleLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
+ self.webTranslationLabel)
+ self.webTranslationComboBox = QtGui.QComboBox(self.webBibleTab)
+ self.webTranslationComboBox.setSizeAdjustPolicy(
+ QtGui.QComboBox.AdjustToContents)
+ self.webTranslationComboBox.setObjectName(u'WebTranslationComboBox')
+ self.webBibleLayout.setWidget(1, QtGui.QFormLayout.FieldRole,
+ self.webTranslationComboBox)
+ self.webTabWidget.addTab(self.webBibleTab, u'')
+ self.webProxyTab = QtGui.QWidget()
+ self.webProxyTab.setObjectName(u'WebProxyTab')
+ self.webProxyLayout = QtGui.QFormLayout(self.webProxyTab)
+ self.webProxyLayout.setObjectName(u'WebProxyLayout')
+ self.webServerLabel = QtGui.QLabel(self.webProxyTab)
+ self.webServerLabel.setObjectName(u'WebServerLabel')
+ self.webProxyLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
+ self.webServerLabel)
+ self.webServerEdit = QtGui.QLineEdit(self.webProxyTab)
+ self.webServerEdit.setObjectName(u'WebServerEdit')
+ self.webProxyLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
+ self.webServerEdit)
+ self.webUserLabel = QtGui.QLabel(self.webProxyTab)
+ self.webUserLabel.setObjectName(u'WebUserLabel')
+ self.webProxyLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
+ self.webUserLabel)
+ self.webUserEdit = QtGui.QLineEdit(self.webProxyTab)
+ self.webUserEdit.setObjectName(u'WebUserEdit')
+ self.webProxyLayout.setWidget(1, QtGui.QFormLayout.FieldRole,
+ self.webUserEdit)
+ self.webPasswordLabel = QtGui.QLabel(self.webProxyTab)
+ self.webPasswordLabel.setObjectName(u'WebPasswordLabel')
+ self.webProxyLayout.setWidget(2, QtGui.QFormLayout.LabelRole,
+ self.webPasswordLabel)
+ self.webPasswordEdit = QtGui.QLineEdit(self.webProxyTab)
+ self.webPasswordEdit.setObjectName(u'WebPasswordEdit')
+ self.webProxyLayout.setWidget(2, QtGui.QFormLayout.FieldRole,
+ self.webPasswordEdit)
+ self.webTabWidget.addTab(self.webProxyTab, u'')
+ self.selectStack.addWidget(self.webTabWidget)
+ self.openlp1Widget = QtGui.QWidget(self.selectPage)
+ self.openlp1Widget.setObjectName(u'Openlp1Widget')
+ self.openlp1Layout = QtGui.QFormLayout(self.openlp1Widget)
self.openlp1Layout.setMargin(0)
- self.openlp1Layout.setSpacing(8)
self.openlp1Layout.setObjectName(u'Openlp1Layout')
- self.openlp1LocationLabel = QtGui.QLabel(self.openlp1Page)
- self.openlp1LocationLabel.setObjectName(u'Openlp1LocationLabel')
- self.openlp1Layout.setWidget(1, QtGui.QFormLayout.LabelRole,
- self.openlp1LocationLabel)
- self.openlp1LocationLayout = QtGui.QHBoxLayout()
- self.openlp1LocationLayout.setSpacing(8)
- self.openlp1LocationLayout.setObjectName(u'Openlp1LocationLayout')
- self.openlp1LocationEdit = QtGui.QLineEdit(self.openlp1Page)
- self.openlp1LocationEdit.setObjectName(u'Openlp1LocationEdit')
- self.openlp1LocationLayout.addWidget(self.openlp1LocationEdit)
- self.openlp1FileButton = QtGui.QToolButton(self.openlp1Page)
- self.openlp1FileButton.setMaximumSize(QtCore.QSize(32, 16777215))
- self.openlp1FileButton.setIcon(generalIcon)
- self.openlp1FileButton.setObjectName(u'Openlp1FileButton')
- self.openlp1LocationLayout.addWidget(self.openlp1FileButton)
- self.openlp1Layout.setLayout(1, QtGui.QFormLayout.FieldRole,
- self.openlp1LocationLayout)
- self.openlp1DisabledLabel = QtGui.QLabel(self.openlp1Page)
- self.openlp1DisabledLabel.setObjectName(u'openlp1DisabledLabel')
- self.openlp1DisabledLabel.setVisible(False)
+ self.openlp1FileLabel = QtGui.QLabel(self.openlp1Widget)
+ self.openlp1FileLabel.setObjectName(u'Openlp1FileLabel')
+ self.openlp1FileLayout = QtGui.QHBoxLayout()
+ self.openlp1FileLayout.setObjectName(u'Openlp1FileLayout')
+ self.openlp1FileEdit = QtGui.QLineEdit(self.openlp1Widget)
+ self.openlp1FileEdit.setObjectName(u'Openlp1FileEdit')
+ self.openlp1FileLayout.addWidget(self.openlp1FileEdit)
+ self.openlp1BrowseButton = QtGui.QToolButton(self.openlp1Widget)
+ self.openlp1BrowseButton.setIcon(
+ build_icon(u':/general/general_open.png'))
+ self.openlp1BrowseButton.setObjectName(u'Openlp1BrowseButton')
+ self.openlp1FileLayout.addWidget(self.openlp1BrowseButton)
+ self.openlp1Layout.addRow(self.openlp1FileLabel, self.openlp1FileLayout)
+ self.openlp1DisabledLabel = QtGui.QLabel(self.openlp1Widget)
self.openlp1DisabledLabel.setWordWrap(True)
- self.openlp1Layout.addWidget(self.openlp1DisabledLabel)
- self.formatWidget.addWidget(self.openlp1Page)
- self.selectPageLayout.addWidget(self.formatWidget)
+ self.openlp1DisabledLabel.setObjectName(u'Openlp1DisabledLabel')
+ self.openlp1Layout.addRow(self.openlp1DisabledLabel)
+ self.openlp1Spacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Minimum)
+ self.openlp1Layout.setItem(1, QtGui.QFormLayout.LabelRole,
+ self.openlp1Spacer)
+ self.selectStack.addWidget(self.openlp1Widget)
+ self.selectPageLayout.addLayout(self.selectStack)
bibleImportWizard.addPage(self.selectPage)
- # License page
+ # License Page
self.licenseDetailsPage = QtGui.QWizardPage()
self.licenseDetailsPage.setObjectName(u'LicenseDetailsPage')
self.licenseDetailsLayout = QtGui.QFormLayout(self.licenseDetailsPage)
- self.licenseDetailsLayout.setMargin(20)
- self.licenseDetailsLayout.setSpacing(8)
self.licenseDetailsLayout.setObjectName(u'LicenseDetailsLayout')
self.versionNameLabel = QtGui.QLabel(self.licenseDetailsPage)
self.versionNameLabel.setObjectName(u'VersionNameLabel')
@@ -320,29 +267,24 @@ class Ui_BibleImportWizard(object):
self.licenseDetailsLayout.setWidget(2, QtGui.QFormLayout.FieldRole,
self.permissionsEdit)
bibleImportWizard.addPage(self.licenseDetailsPage)
- # Progress page
+ # Progress Page
self.importPage = QtGui.QWizardPage()
self.importPage.setObjectName(u'ImportPage')
self.importLayout = QtGui.QVBoxLayout(self.importPage)
- self.importLayout.setSpacing(8)
- self.importLayout.setMargin(50)
+ self.importLayout.setMargin(48)
self.importLayout.setObjectName(u'ImportLayout')
self.importProgressLabel = QtGui.QLabel(self.importPage)
self.importProgressLabel.setObjectName(u'ImportProgressLabel')
self.importLayout.addWidget(self.importProgressLabel)
self.importProgressBar = QtGui.QProgressBar(self.importPage)
- self.importProgressBar.setValue(0)
self.importProgressBar.setObjectName(u'ImportProgressBar')
self.importLayout.addWidget(self.importProgressBar)
bibleImportWizard.addPage(self.importPage)
-
self.retranslateUi(bibleImportWizard)
- self.formatWidget.setCurrentIndex(0)
- self.webDownloadTabWidget.setCurrentIndex(0)
- QtCore.QObject.connect(self.formatComboBox,
- QtCore.SIGNAL(u'currentIndexChanged(int)'),
- self.formatWidget.setCurrentIndex)
QtCore.QMetaObject.connectSlotsByName(bibleImportWizard)
+ QtCore.QObject.connect(self.formatComboBox,
+ QtCore.SIGNAL(u'currentIndexChanged(int)'), self.selectStack,
+ QtCore.SLOT(u'setCurrentIndex(int)'))
def retranslateUi(self, bibleImportWizard):
bibleImportWizard.setWindowTitle(
@@ -373,37 +315,37 @@ class Ui_BibleImportWizard(object):
translate('BiblesPlugin.ImportWizardForm', 'Web Download'))
self.formatComboBox.setItemText(4,
translate('BiblesPlugin.ImportWizardForm', 'openlp.org 1.x'))
- self.openlp1LocationLabel.setText(
+ self.openlp1FileLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'File location:'))
- self.osisLocationLabel.setText(
+ self.osisFileLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'File location:'))
- self.booksLocationLabel.setText(
+ self.csvBooksLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'Books location:'))
- self.verseLocationLabel.setText(
+ self.csvVersesLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'Verse location:'))
self.openSongFileLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'Bible filename:'))
- self.locationLabel.setText(
+ self.webSourceLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'Location:'))
- self.locationComboBox.setItemText(0,
+ self.webSourceComboBox.setItemText(0,
translate('BiblesPlugin.ImportWizardForm', 'Crosswalk'))
- self.locationComboBox.setItemText(1,
+ self.webSourceComboBox.setItemText(1,
translate('BiblesPlugin.ImportWizardForm', 'BibleGateway'))
- self.locationComboBox.setItemText(2,
+ self.webSourceComboBox.setItemText(2,
translate('BiblesPlugin.ImportWizardForm', 'Bibleserver'))
- self.bibleLabel.setText(
+ self.webTranslationLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'Bible:'))
- self.webDownloadTabWidget.setTabText(
- self.webDownloadTabWidget.indexOf(self.downloadOptionsTab),
+ self.webTabWidget.setTabText(
+ self.webTabWidget.indexOf(self.webBibleTab),
translate('BiblesPlugin.ImportWizardForm', 'Download Options'))
- self.addressLabel.setText(
+ self.webServerLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'Server:'))
- self.usernameLabel.setText(
+ self.webUserLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'Username:'))
- self.passwordLabel.setText(
+ self.webPasswordLabel.setText(
translate('BiblesPlugin.ImportWizardForm', 'Password:'))
- self.webDownloadTabWidget.setTabText(
- self.webDownloadTabWidget.indexOf(self.proxyServerTab),
+ self.webTabWidget.setTabText(
+ self.webTabWidget.indexOf(self.webProxyTab),
translate('BiblesPlugin.ImportWizardForm',
'Proxy Server (Optional)'))
self.licenseDetailsPage.setTitle(
@@ -430,3 +372,20 @@ class Ui_BibleImportWizard(object):
'importer has been disabled due to a missing Python module. If '
'you want to use this importer, you will need to install the '
'"python-sqlite" module.'))
+ # Align all QFormLayouts towards each other.
+ width = max(self.formatLabel.minimumSizeHint().width(),
+ self.osisFileLabel.minimumSizeHint().width())
+ width = max(width, self.csvBooksLabel.minimumSizeHint().width())
+ width = max(width, self.csvVersesLabel.minimumSizeHint().width())
+ width = max(width, self.openSongFileLabel.minimumSizeHint().width())
+ width = max(width, self.openlp1FileLabel.minimumSizeHint().width())
+ self.formatSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Fixed)
+ self.osisSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Fixed)
+ self.csvSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Fixed)
+ self.openSongSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Fixed)
+ self.openlp1Spacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Fixed)
diff --git a/openlp/plugins/bibles/lib/__init__.py b/openlp/plugins/bibles/lib/__init__.py
index 7975bfed7..f2797e16d 100644
--- a/openlp/plugins/bibles/lib/__init__.py
+++ b/openlp/plugins/bibles/lib/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -77,9 +77,9 @@ def parse_reference(reference):
- After a verse reference all further single values are treat as verse in
the last selected chapter.
``John 3:16-18`` refers to John chapter 3 verses 16 to 18
- - After a list separator it is possible to refer to additional verses. They
- are build analog to the first ones. This way it is possible to define each
- number of verse references. It is not possible to refer to verses in
+ - After a list separator it is possible to refer to additional verses. They
+ are build analog to the first ones. This way it is possible to define
+ each number of verse references. It is not possible to refer to verses in
additional books.
``John 3:16,18`` refers to John chapter 3 verses 16 and 18
``John 3:16-18,20`` refers to John chapter 3 verses 16 to 18 and 20
@@ -96,7 +96,7 @@ def parse_reference(reference):
a verse separator.
2. ``(?P[0-9]+)``
The verse reference ``from_verse`` is manditory
- 3. ``(?P%(sep_r)s(?:`` ... ``|%(sep_e)s)?)?``
+ 3. ``(?P%(sep_r)s(?:`` ... ``|%(sep_e)s)?)?``
A ``range_to`` declaration is optional. It starts with a range separator
and contains optional a chapter and verse declaration or a end
separator.
@@ -105,15 +105,15 @@ def parse_reference(reference):
5. ``(?P[0-9]+)``
The ``to_verse`` reference is equivalent to group 2.
- The full reference is matched against get_reference_match(u'full'). This
+ The full reference is matched against get_reference_match(u'full'). This
regular expression looks like this:
1. ``^\s*(?!\s)(?P[\d]*[^\d]+)(?(?:`` + range_string + ``(?:%(sep_l)s|(?=\s*$)))+)\s*$``
- The second group contains all ``ranges``. This can be multiple
+ The second group contains all ``ranges``. This can be multiple
declarations of a range_string separated by a list separator.
The reference list is a list of tuples, with each tuple structured like
@@ -126,7 +126,7 @@ def parse_reference(reference):
Returns None or a reference list.
"""
- log.debug('parse_reference("%s")', reference)
+ log.debug(u'parse_reference("%s")', reference)
match = get_reference_match(u'full').match(reference)
if match:
log.debug(u'Matched reference %s' % reference)
@@ -194,7 +194,7 @@ def parse_reference(reference):
class SearchResults(object):
"""
- Encapsulate a set of search results. This is Bible-type independent.
+ Encapsulate a set of search results. This is Bible-type independent.
"""
def __init__(self, book, chapter, verselist):
"""
diff --git a/openlp/plugins/bibles/lib/biblestab.py b/openlp/plugins/bibles/lib/biblestab.py
index a52c31fb7..c4815f2aa 100644
--- a/openlp/plugins/bibles/lib/biblestab.py
+++ b/openlp/plugins/bibles/lib/biblestab.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -251,4 +251,4 @@ class BiblesTab(SettingsTab):
# Not Found.
index = 0
self.bible_theme = u''
- self.BibleThemeComboBox.setCurrentIndex(index)
+ self.BibleThemeComboBox.setCurrentIndex(index)
\ No newline at end of file
diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py
index d02ff2a70..8b1d70128 100644
--- a/openlp/plugins/bibles/lib/csvbible.py
+++ b/openlp/plugins/bibles/lib/csvbible.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -72,7 +72,7 @@ class CSVBible(BibleDB):
self.create_book(unicode(line[1], details['encoding']),
line[2], int(line[0]))
Receiver.send_message(u'openlp_process_events')
- except IOError:
+ except IOError, IndexError:
log.exception(u'Loading books from file failed')
success = False
finally:
@@ -86,15 +86,17 @@ class CSVBible(BibleDB):
verse_file.seek(0)
verse_reader = csv.reader(verse_file, dialect)
for line in verse_reader:
- if self.stop_import_flag: # cancel pressed
+ if self.stop_import_flag:
+ # cancel pressed
break
details = chardet.detect(line[3])
if book_ptr != line[0]:
book = self.get_book(line[0])
book_ptr = book.name
- self.wizard.incrementProgressBar(u'%s %s %s...' % (
- translate('BiblesPlugin.CSVImport', 'Importing'),
- book.name, line[1]))
+ self.wizard.incrementProgressBar(unicode(translate(
+ 'BiblesPlugin.CSVImport', 'Importing %s %s...',
+ 'Importing ...')) %
+ (book.name, int(line[1])))
self.session.commit()
self.create_verse(book.id, line[1], line[2],
unicode(line[3], details['encoding']))
diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py
index cdc81d408..62068437a 100644
--- a/openlp/plugins/bibles/lib/db.py
+++ b/openlp/plugins/bibles/lib/db.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -33,7 +33,7 @@ from sqlalchemy import Column, ForeignKey, or_, Table, types
from sqlalchemy.orm import class_mapper, mapper, relation
from sqlalchemy.orm.exc import UnmappedClassError
-from openlp.core.lib import translate
+from openlp.core.lib import Receiver, translate
from openlp.core.lib.db import BaseModel, init_db, Manager
log = logging.getLogger(__name__)
@@ -166,7 +166,7 @@ class BibleDB(QtCore.QObject, Manager):
"""
Stops the import of the Bible.
"""
- log.debug('Stopping import')
+ log.debug(u'Stopping import')
self.stop_import_flag = True
def get_name(self):
@@ -354,12 +354,12 @@ class BibleDB(QtCore.QObject, Manager):
verse_list.extend(verses)
else:
log.debug(u'OpenLP failed to find book %s', book)
- QtGui.QMessageBox.information(self.bible_plugin.mediaItem,
- translate('BiblesPlugin.BibleDB', 'Book not found'),
- translate('BiblesPlugin.BibleDB', '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.'))
+ Receiver.send_message(u'openlp_error_message', {
+ u'title': translate('BiblesPlugin', 'No Book Found'),
+ u'message': translate('BiblesPlugin', 'No matching book '
+ 'could be found in this Bible. Check that you have '
+ 'spelled the name of the book correctly.')
+ })
return verse_list
def verse_search(self, text):
@@ -430,7 +430,7 @@ class BibleDB(QtCore.QObject, Manager):
Utility debugging method to dump the contents of a bible.
"""
log.debug(u'.........Dumping Bible Database')
- log.debug('...............................Books ')
+ log.debug(u'...............................Books ')
books = self.session.query(Book).all()
log.debug(books)
log.debug(u'...............................Verses ')
diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py
index 79d3f311f..a4f93f929 100644
--- a/openlp/plugins/bibles/lib/http.py
+++ b/openlp/plugins/bibles/lib/http.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -28,13 +28,14 @@ import logging
import os
import re
import sqlite3
+import socket
import urllib
import urllib2
from HTMLParser import HTMLParseError
from BeautifulSoup import BeautifulSoup, NavigableString
-from openlp.core.lib import Receiver
+from openlp.core.lib import Receiver, translate
from openlp.core.utils import AppLocation
from openlp.plugins.bibles.lib import SearchResults
from openlp.plugins.bibles.lib.db import BibleDB, Book
@@ -184,6 +185,7 @@ class BGExtract(object):
def __init__(self, proxyurl=None):
log.debug(u'init %s', proxyurl)
self.proxyurl = proxyurl
+ socket.setdefaulttimeout(30)
def get_bible_chapter(self, version, bookname, chapter):
"""
@@ -210,6 +212,13 @@ class BGExtract(object):
Receiver.send_message(u'openlp_process_events')
except urllib2.URLError:
log.exception(u'The web bible page could not be downloaded.')
+ Receiver.send_message(u'openlp_error_message', {
+ u'title': translate('BiblePlugin.HTTPBible', 'Download Error'),
+ u'message': translate('BiblePlugin.HTTPBible', 'There was a '
+ 'problem downloading your verse selection. Please check your '
+ 'Internet connection, and if this error continues to occur '
+ 'consider reporting a bug.')
+ })
finally:
if not page:
return None
@@ -219,6 +228,7 @@ class BGExtract(object):
soup = BeautifulSoup(page, markupMassage=cleaner)
except HTMLParseError:
log.exception(u'BeautifulSoup could not parse the bible page.')
+ Receiver.send_message(u'bibles_download_error')
finally:
if not soup:
return None
@@ -247,6 +257,7 @@ class BSExtract(object):
def __init__(self, proxyurl=None):
log.debug(u'init %s', proxyurl)
self.proxyurl = proxyurl
+ socket.setdefaulttimeout(30)
def get_bible_chapter(self, version, bookname, chapter):
"""
@@ -264,7 +275,7 @@ class BSExtract(object):
log.debug(u'get_bible_chapter %s,%s,%s', version, bookname, chapter)
chapter_url = u'http://m.bibleserver.com/text/%s/%s%s' % \
(version, bookname, chapter)
-
+
log.debug(u'URL: %s', chapter_url)
page = None
try:
@@ -272,6 +283,13 @@ class BSExtract(object):
Receiver.send_message(u'openlp_process_events')
except urllib2.URLError:
log.exception(u'The web bible page could not be downloaded.')
+ Receiver.send_message(u'openlp_error_message', {
+ u'title': translate('BiblePlugin.HTTPBible', 'Download Error'),
+ u'message': translate('BiblePlugin.HTTPBible', 'There was a '
+ 'problem downloading your verse selection. Please check your '
+ 'Internet connection, and if this error continues to occur '
+ 'consider reporting a bug.')
+ })
finally:
if not page:
return None
@@ -280,9 +298,13 @@ class BSExtract(object):
soup = BeautifulSoup(page)
except HTMLParseError:
log.exception(u'BeautifulSoup could not parse the bible page.')
- finally:
- if not soup:
- return None
+ Receiver.send_message(u'openlp_error_message', {
+ u'title': translate('BiblePlugin.HTTPBible', 'Parse Error'),
+ u'message': translate('BiblePlugin.HTTPBible', 'There was a '
+ 'problem extracting your verse selection. If this error '
+ 'continues to occur consider reporting a bug.')
+ })
+ return None
Receiver.send_message(u'openlp_process_events')
content = None
try:
@@ -308,6 +330,7 @@ class CWExtract(object):
def __init__(self, proxyurl=None):
log.debug(u'init %s', proxyurl)
self.proxyurl = proxyurl
+ socket.setdefaulttimeout(30)
def get_bible_chapter(self, version, bookname, chapter):
"""
@@ -333,17 +356,26 @@ class CWExtract(object):
Receiver.send_message(u'openlp_process_events')
except urllib2.URLError:
log.exception(u'The web bible page could not be downloaded.')
- finally:
- if not page:
- return None
+ Receiver.send_message(u'openlp_error_message', {
+ u'title': translate('BiblePlugin.HTTPBible', 'Download Error'),
+ u'message': translate('BiblePlugin.HTTPBible', 'There was a '
+ 'problem downloading your verse selection. Please check your '
+ 'Internet connection, and if this error continues to occur '
+ 'consider reporting a bug.')
+ })
+ return None
soup = None
try:
soup = BeautifulSoup(page)
except HTMLParseError:
log.exception(u'BeautifulSoup could not parse the bible page.')
- finally:
- if not soup:
- return None
+ Receiver.send_message(u'openlp_error_message', {
+ u'title': translate('BiblePlugin.HTTPBible', 'Parse Error'),
+ u'message': translate('BiblePlugin.HTTPBible', 'There was a '
+ 'problem extracting your verse selection. If this error '
+ 'continues to occur consider reporting a bug.')
+ })
+ return None
Receiver.send_message(u'openlp_process_events')
htmlverses = soup.findAll(u'span', u'versetext')
verses = {}
@@ -447,13 +479,18 @@ class HTTPBible(BibleDB):
[(u'Genesis', 1, 1, 1), (u'Genesis', 2, 2, 3)]
"""
for reference in reference_list:
- log.debug('Reference: %s', reference)
+ log.debug(u'Reference: %s', reference)
book = reference[0]
db_book = self.get_book(book)
if not db_book:
book_details = self.lookup_book(book)
if not book_details:
- Receiver.send_message(u'bibles_nobook')
+ Receiver.send_message(u'openlp_error_message', {
+ u'title': translate('BiblesPlugin', 'No Book Found'),
+ u'message': translate('BiblesPlugin', 'No matching '
+ 'book could be found in this Bible. Check that you'
+ 'have spelled the name of the book correctly.')
+ })
return []
db_book = self.create_book(book_details[u'name'],
book_details[u'abbreviation'],
diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py
index 93f301713..9dc70e85a 100644
--- a/openlp/plugins/bibles/lib/manager.py
+++ b/openlp/plugins/bibles/lib/manager.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -357,4 +357,3 @@ class BibleManager(object):
BibleFormat.set_availability(BibleFormat.OpenLP1, has_openlp1)
__all__ = [u'BibleFormat']
-
diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py
index dfed1697d..d557897ed 100644
--- a/openlp/plugins/bibles/lib/mediaitem.py
+++ b/openlp/plugins/bibles/lib/mediaitem.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -259,8 +259,6 @@ class BibleMediaItem(MediaManagerItem):
QtCore.SIGNAL(u'bibles_showprogress'), self.onSearchProgressShow)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'bibles_hideprogress'), self.onSearchProgressHide)
- QtCore.QObject.connect(Receiver.get_receiver(),
- QtCore.SIGNAL(u'bibles_nobook'), self.onNoBookFound)
def addListViewToToolBar(self):
MediaManagerItem.addListViewToToolBar(self)
@@ -360,13 +358,6 @@ class BibleMediaItem(MediaManagerItem):
def onSearchProgressHide(self):
self.SearchProgress.setVisible(False)
- def onNoBookFound(self):
- QtGui.QMessageBox.critical(self,
- translate('BiblesPlugin.MediaItem', 'No Book Found'),
- translate('BiblesPlugin.MediaItem',
- 'No matching book could be found in this Bible.'))
- self.AdvancedSearchButton.setEnabled(True)
-
def onImportClick(self):
if not hasattr(self, u'import_wizard'):
self.import_wizard = BibleImportForm(self, self.parent.manager,
@@ -912,7 +903,7 @@ class BibleMediaItem(MediaManagerItem):
old_chapter != chapter:
verse_text = unicode(chapter) + verse_separator + unicode(verse)
else:
- verse_text = u'%s' % verse
+ verse_text = unicode(verse)
if self.parent.settings_tab.display_style == 1:
verse_text = u'{su}(' + verse_text + u'){/su}'
elif self.parent.settings_tab.display_style == 2:
diff --git a/openlp/plugins/bibles/lib/openlp1.py b/openlp/plugins/bibles/lib/openlp1.py
index ba9476fca..866652e5b 100644
--- a/openlp/plugins/bibles/lib/openlp1.py
+++ b/openlp/plugins/bibles/lib/openlp1.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -73,8 +73,8 @@ class OpenLP1Bible(BibleDB):
abbreviation = unicode(book[3], u'cp1252')
self.create_book(name, abbreviation, testament_id)
# Update the progess bar.
- self.wizard.incrementProgressBar(u'%s %s...' % (translate(
- 'BiblesPlugin.OpenLP1Import', 'Importing'), name))
+ self.wizard.incrementProgressBar(unicode(translate(
+ 'BiblesPlugin.OpenLP1Import', 'Importing %s...')) % name)
# Import the verses for this book.
cursor.execute(u'SELECT chapter, verse, text || \'\' AS text FROM '
'verse WHERE book_id=%s' % book_id)
diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py
index 14454a69f..c0b60f911 100644
--- a/openlp/plugins/bibles/lib/opensong.py
+++ b/openlp/plugins/bibles/lib/opensong.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -84,11 +84,12 @@ class OpenSongBible(BibleDB):
unicode(verse.text)
)
Receiver.send_message(u'openlp_process_events')
- self.wizard.incrementProgressBar(u'%s %s %s...' % (
- translate('BiblesPlugin.Opensong', 'Importing'),
- db_book.name, chapter.attrib[u'n']))
+ self.wizard.incrementProgressBar(unicode(translate(
+ 'BiblesPlugin.Opensong', 'Importing %s %s...',
+ 'Importing ...')) %
+ (db_book.name, int(chapter.attrib[u'n'])))
self.session.commit()
- except IOError:
+ except IOError, AttributeError:
log.exception(u'Loading bible from OpenSong file failed')
success = False
finally:
diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py
index f39a4ab0f..bf070c4bd 100644
--- a/openlp/plugins/bibles/lib/osis.py
+++ b/openlp/plugins/bibles/lib/osis.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -125,7 +125,7 @@ class OSISBible(BibleDB):
verse = int(match.group(3))
verse_text = match.group(4)
if not db_book or db_book.name != self.books[book][0]:
- log.debug('New book: "%s"', self.books[book][0])
+ log.debug(u'New book: "%s"', self.books[book][0])
if book == u'Matt':
testament += 1
db_book = self.create_book(
@@ -140,9 +140,10 @@ class OSISBible(BibleDB):
if last_chapter != chapter:
if last_chapter != 0:
self.session.commit()
- self.wizard.incrementProgressBar(u'%s %s %s...' % (
- translate('BiblesPlugin.OsisImport', 'Importing'),
- self.books[match.group(1)][0], chapter))
+ self.wizard.incrementProgressBar(unicode(translate(
+ 'BiblesPlugin.OsisImport', 'Importing %s %s...',
+ 'Importing ...')) %
+ (self.books[match.group(1)][0], chapter))
last_chapter = chapter
# All of this rigmarol below is because the mod2osis
# tool from the Sword library embeds XML in the OSIS
diff --git a/openlp/plugins/custom/__init__.py b/openlp/plugins/custom/__init__.py
index 2bbf2a58b..fb86201a3 100644
--- a/openlp/plugins/custom/__init__.py
+++ b/openlp/plugins/custom/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -27,4 +27,4 @@
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.
-"""
+"""
\ No newline at end of file
diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py
index ad170ea12..54cb38501 100644
--- a/openlp/plugins/custom/customplugin.py
+++ b/openlp/plugins/custom/customplugin.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -47,7 +47,7 @@ class CustomPlugin(Plugin):
log.info(u'Custom Plugin loaded')
def __init__(self, plugin_helpers):
- Plugin.__init__(self, u'Custom', u'1.9.3', plugin_helpers)
+ Plugin.__init__(self, u'Custom', u'1.9.4', plugin_helpers)
self.weight = -5
self.manager = Manager(u'custom', init_schema)
self.edit_custom_form = EditCustomForm(self.manager)
@@ -104,57 +104,57 @@ class CustomPlugin(Plugin):
"""
## Name PluginList ##
self.textStrings[StringContent.Name] = {
- u'singular': translate('CustomsPlugin', 'Custom'),
- u'plural': translate('CustomsPlugin', 'Customs')
+ u'singular': translate('CustomsPlugin', 'Custom', 'name singular'),
+ u'plural': translate('CustomsPlugin', 'Customs', 'name plural')
}
## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = {
- u'title': translate('CustomsPlugin', 'Custom')
+ u'title': translate('CustomsPlugin', 'Custom', 'container title')
}
# Middle Header Bar
- ## Import Button ##
+ ## Import Action ##
self.textStrings[StringContent.Import] = {
u'title': translate('CustomsPlugin', 'Import'),
u'tooltip': translate('CustomsPlugin',
'Import a Custom')
}
- ## Load Button ##
+ ## Load Action ##
self.textStrings[StringContent.Load] = {
u'title': translate('CustomsPlugin', 'Load'),
u'tooltip': translate('CustomsPlugin',
'Load a new Custom')
}
- ## New Button ##
+ ## New Action ##
self.textStrings[StringContent.New] = {
u'title': translate('CustomsPlugin', 'Add'),
u'tooltip': translate('CustomsPlugin',
'Add a new Custom')
}
- ## Edit Button ##
+ ## Edit Action ##
self.textStrings[StringContent.Edit] = {
u'title': translate('CustomsPlugin', 'Edit'),
u'tooltip': translate('CustomsPlugin',
'Edit the selected Custom')
}
- ## Delete Button ##
+ ## Delete Action ##
self.textStrings[StringContent.Delete] = {
u'title': translate('CustomsPlugin', 'Delete'),
u'tooltip': translate('CustomsPlugin',
'Delete the selected Custom')
}
- ## Preview ##
+ ## Preview Action ##
self.textStrings[StringContent.Preview] = {
u'title': translate('CustomsPlugin', 'Preview'),
u'tooltip': translate('CustomsPlugin',
'Preview the selected Custom')
}
- ## Live Button ##
+ ## Send Live Action ##
self.textStrings[StringContent.Live] = {
u'title': translate('CustomsPlugin', 'Live'),
u'tooltip': translate('CustomsPlugin',
'Send the selected Custom live')
}
- ## Add to service Button ##
+ ## Add to Service Action ##
self.textStrings[StringContent.Service] = {
u'title': translate('CustomsPlugin', 'Service'),
u'tooltip': translate('CustomsPlugin',
diff --git a/openlp/plugins/custom/forms/__init__.py b/openlp/plugins/custom/forms/__init__.py
index f31745e14..60f1395fb 100644
--- a/openlp/plugins/custom/forms/__init__.py
+++ b/openlp/plugins/custom/forms/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -25,4 +25,4 @@
###############################################################################
from editcustomform import EditCustomForm
-from editcustomslideform import EditCustomSlideForm
+from editcustomslideform import EditCustomSlideForm
\ No newline at end of file
diff --git a/openlp/plugins/custom/forms/editcustomdialog.py b/openlp/plugins/custom/forms/editcustomdialog.py
index 1b16c6236..266673daf 100644
--- a/openlp/plugins/custom/forms/editcustomdialog.py
+++ b/openlp/plugins/custom/forms/editcustomdialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -152,4 +152,4 @@ class Ui_CustomEditDialog(object):
self.themeLabel.setText(
translate('CustomPlugin.EditCustomForm', 'The&me:'))
self.creditLabel.setText(
- translate('CustomPlugin.EditCustomForm', '&Credits:'))
+ translate('CustomPlugin.EditCustomForm', '&Credits:'))
\ No newline at end of file
diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py
index 359cc9eae..2f005828a 100644
--- a/openlp/plugins/custom/forms/editcustomform.py
+++ b/openlp/plugins/custom/forms/editcustomform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -265,4 +265,4 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog):
if self.slideListView.count() == 0:
return False, translate('CustomPlugin.EditCustomForm',
'You need to add at least one slide')
- return True, u''
+ return True, u''
\ No newline at end of file
diff --git a/openlp/plugins/custom/forms/editcustomslidedialog.py b/openlp/plugins/custom/forms/editcustomslidedialog.py
index ce4cf6e29..d16dc67f0 100644
--- a/openlp/plugins/custom/forms/editcustomslidedialog.py
+++ b/openlp/plugins/custom/forms/editcustomslidedialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -56,4 +56,4 @@ class Ui_CustomSlideEditDialog(object):
translate('CustomPlugin.EditCustomForm', 'Split Slide'))
self.splitButton.setToolTip(
translate('CustomPlugin.EditCustomForm', 'Split a slide into two '
- 'by inserting a slide splitter.'))
+ 'by inserting a slide splitter.'))
\ No newline at end of file
diff --git a/openlp/plugins/custom/forms/editcustomslideform.py b/openlp/plugins/custom/forms/editcustomslideform.py
index 72c7dbb4a..c8b74a387 100644
--- a/openlp/plugins/custom/forms/editcustomslideform.py
+++ b/openlp/plugins/custom/forms/editcustomslideform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -72,4 +72,4 @@ class EditCustomSlideForm(QtGui.QDialog, Ui_CustomSlideEditDialog):
if self.slideTextEdit.textCursor().columnNumber() != 0:
self.slideTextEdit.insertPlainText(u'\n')
self.slideTextEdit.insertPlainText(u'[---]\n' )
- self.slideTextEdit.setFocus()
+ self.slideTextEdit.setFocus()
\ No newline at end of file
diff --git a/openlp/plugins/custom/lib/__init__.py b/openlp/plugins/custom/lib/__init__.py
index 15e764dcd..d3d8312d7 100644
--- a/openlp/plugins/custom/lib/__init__.py
+++ b/openlp/plugins/custom/lib/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -26,4 +26,4 @@
from customxmlhandler import CustomXMLBuilder, CustomXMLParser
from mediaitem import CustomMediaItem
-from customtab import CustomTab
+from customtab import CustomTab
\ No newline at end of file
diff --git a/openlp/plugins/custom/lib/customtab.py b/openlp/plugins/custom/lib/customtab.py
index 461d6af59..5063ee995 100644
--- a/openlp/plugins/custom/lib/customtab.py
+++ b/openlp/plugins/custom/lib/customtab.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -76,4 +76,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/customxmlhandler.py b/openlp/plugins/custom/lib/customxmlhandler.py
index 14ca23ee0..1171ce6bd 100644
--- a/openlp/plugins/custom/lib/customxmlhandler.py
+++ b/openlp/plugins/custom/lib/customxmlhandler.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -153,4 +153,4 @@ class CustomXMLParser(object):
"""
Debugging aid to dump XML so that we can see what we have.
"""
- return dump(self.custom_xml)
+ return dump(self.custom_xml)
\ No newline at end of file
diff --git a/openlp/plugins/custom/lib/db.py b/openlp/plugins/custom/lib/db.py
index 1977a4188..1fbc04980 100644
--- a/openlp/plugins/custom/lib/db.py
+++ b/openlp/plugins/custom/lib/db.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -59,4 +59,4 @@ def init_schema(url):
mapper(CustomSlide, custom_slide_table)
metadata.create_all(checkfirst=True)
- return session
+ return session
\ No newline at end of file
diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py
index 5d9d49a25..304773ea5 100644
--- a/openlp/plugins/custom/lib/mediaitem.py
+++ b/openlp/plugins/custom/lib/mediaitem.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -182,4 +182,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/images/__init__.py b/openlp/plugins/images/__init__.py
index a98ed8ed1..6ea473c72 100644
--- a/openlp/plugins/images/__init__.py
+++ b/openlp/plugins/images/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -26,4 +26,4 @@
"""
The :mod:`images` module provides the Images plugin. The Images plugin
provides the facility to display images from OpenLP.
-"""
+"""
\ No newline at end of file
diff --git a/openlp/plugins/images/imageplugin.py b/openlp/plugins/images/imageplugin.py
index a1e539799..ea118d3ec 100644
--- a/openlp/plugins/images/imageplugin.py
+++ b/openlp/plugins/images/imageplugin.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -41,7 +41,7 @@ class ImagePlugin(Plugin):
self.icon = build_icon(self.icon_path)
def getMediaManagerItem(self):
- # Create the MediaManagerItem object
+ # Create the MediaManagerItem object.
return ImageMediaItem(self, self, self.icon)
def about(self):
@@ -64,12 +64,12 @@ class ImagePlugin(Plugin):
"""
## Name PluginList ##
self.textStrings[StringContent.Name] = {
- u'singular': translate('ImagePlugin', 'Image'),
- u'plural': translate('ImagePlugin', 'Images')
+ u'singular': translate('ImagePlugin', 'Image', 'name singular'),
+ u'plural': translate('ImagePlugin', 'Images', 'name plural')
}
## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = {
- u'title': translate('ImagePlugin', 'Images')
+ u'title': translate('ImagePlugin', 'Images', 'container title')
}
# Middle Header Bar
## Load Button ##
@@ -113,4 +113,4 @@ class ImagePlugin(Plugin):
u'title': translate('ImagePlugin', 'Service'),
u'tooltip': translate('ImagePlugin',
'Add the selected Image to the service')
- }
\ No newline at end of file
+ }
diff --git a/openlp/plugins/images/lib/__init__.py b/openlp/plugins/images/lib/__init__.py
index fb7b0a249..6ff2a295b 100644
--- a/openlp/plugins/images/lib/__init__.py
+++ b/openlp/plugins/images/lib/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -24,4 +24,4 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
-from mediaitem import ImageMediaItem
+from mediaitem import ImageMediaItem
\ No newline at end of file
diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py
index 0774787f5..ccc432931 100644
--- a/openlp/plugins/images/lib/mediaitem.py
+++ b/openlp/plugins/images/lib/mediaitem.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -31,7 +31,7 @@ from PyQt4 import QtCore, QtGui
from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon, \
context_menu_action, ItemCapabilities, SettingsManager, translate, \
- check_item_selected, Receiver
+ check_item_selected
from openlp.core.utils import AppLocation, get_images_filter
log = logging.getLogger(__name__)
@@ -43,6 +43,7 @@ class ImageListView(BaseListWithDnD):
self.PluginName = u'Images'
BaseListWithDnD.__init__(self, parent)
+
class ImageMediaItem(MediaManagerItem):
"""
This is the custom media manager item for images.
@@ -51,8 +52,8 @@ class ImageMediaItem(MediaManagerItem):
def __init__(self, parent, plugin, icon):
self.IconPath = u'images/image'
- # this next is a class, not an instance of a class - it will
- # be instanced by the base MediaManagerItem
+ # This next is a class, not an instance of a class - it will
+ # be instanced by the base MediaManagerItem.
self.ListViewWithDnD_class = ImageListView
MediaManagerItem.__init__(self, parent, self, icon)
@@ -109,11 +110,11 @@ class ImageMediaItem(MediaManagerItem):
translate('ImagePlugin.MediaItem', 'Replace Live Background'),
self.onReplaceClick, False)
self.resetButton = self.toolbar.addToolbarButton(
- translate('ImagePlugin.MediaItem', u'Reset Background'),
+ translate('ImagePlugin.MediaItem', 'Reset Background'),
u':/system/system_close.png',
translate('ImagePlugin.MediaItem', 'Reset Live Background'),
self.onResetClick, False)
- # Add the song widget to the page layout
+ # Add the song widget to the page layout.
self.pageLayout.addWidget(self.ImageWidget)
self.resetButton.setVisible(False)
@@ -132,15 +133,13 @@ class ImageMediaItem(MediaManagerItem):
os.remove(os.path.join(self.servicePath,
unicode(text.text())))
except OSError:
- #if not present do not worry
+ # if not present do not worry
pass
self.listView.takeItem(row)
SettingsManager.set_list(self.settingsSection,
self.settingsSection, self.getFileList())
def loadList(self, list):
- self.listView.setCursor(QtCore.Qt.BusyCursor)
- Receiver.send_message(u'openlp_process_events')
for file in list:
filename = os.path.split(unicode(file))[1]
thumb = os.path.join(self.servicePath, filename)
@@ -155,8 +154,6 @@ class ImageMediaItem(MediaManagerItem):
item_name.setIcon(icon)
item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(file))
self.listView.addItem(item_name)
- self.listView.setCursor(QtCore.Qt.ArrowCursor)
- Receiver.send_message(u'openlp_process_events')
def generateSlideData(self, service_item, item=None, xmlVersion=False):
items = self.listView.selectedIndexes()
@@ -169,6 +166,34 @@ class ImageMediaItem(MediaManagerItem):
service_item.add_capability(ItemCapabilities.AllowsAdditions)
# force a nonexistent theme
service_item.theme = -1
+ missing_items = []
+ missing_items_filenames = []
+ for item in items:
+ bitem = self.listView.item(item.row())
+ filename = unicode(bitem.data(QtCore.Qt.UserRole).toString())
+ if not os.path.exists(filename):
+ missing_items.append(item)
+ missing_items_filenames.append(filename)
+ for item in missing_items:
+ items.remove(item)
+ # We cannot continue, as all images do not exist.
+ if not items:
+ QtGui.QMessageBox.critical(self,
+ translate('ImagePlugin.MediaItem', 'Missing Image(s)'),
+ unicode(translate('ImagePlugin.MediaItem',
+ 'The following image(s) no longer exist: %s')) %
+ u'\n'.join(missing_items_filenames))
+ return False
+ # We have missing as well as existing images. We ask what to do.
+ elif missing_items and QtGui.QMessageBox.question(self,
+ translate('ImagePlugin.MediaItem', 'Missing Image(s)'),
+ unicode(translate('ImagePlugin.MediaItem', 'The following '
+ 'image(s) no longer exist: %s\nDo you want to add the other '
+ 'images anyway?')) % u'\n'.join(missing_items_filenames),
+ QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No |
+ QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.No:
+ return False
+ # Continue with the existing images.
for item in items:
bitem = self.listView.item(item.row())
filename = unicode(bitem.data(QtCore.Qt.UserRole).toString())
@@ -186,12 +211,18 @@ class ImageMediaItem(MediaManagerItem):
if check_item_selected(self.listView,
translate('ImagePlugin.MediaItem',
'You must select an image to replace the background with.')):
- items = self.listView.selectedIndexes()
- for item in items:
- bitem = self.listView.item(item.row())
- filename = unicode(bitem.data(QtCore.Qt.UserRole).toString())
+ item = self.listView.selectedIndexes()[0]
+ bitem = self.listView.item(item.row())
+ filename = unicode(bitem.data(QtCore.Qt.UserRole).toString())
+ if os.path.exists(filename):
(path, name) = os.path.split(filename)
self.parent.liveController.display.directImage(name, filename)
+ else:
+ QtGui.QMessageBox.critical(self,
+ translate('ImagePlugin.MediaItem', 'Live Background Could '
+ 'Not Be Replaced'),
+ unicode(translate('ImagePlugin.MediaItem',
+ 'The image %s no longer exists.')) % filename)
self.resetButton.setVisible(True)
def onPreviewClick(self):
diff --git a/openlp/plugins/media/__init__.py b/openlp/plugins/media/__init__.py
index d45371e8d..7be6e5ea9 100644
--- a/openlp/plugins/media/__init__.py
+++ b/openlp/plugins/media/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -28,4 +28,4 @@ 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.
-"""
+"""
\ No newline at end of file
diff --git a/openlp/plugins/media/lib/__init__.py b/openlp/plugins/media/lib/__init__.py
index 8d3ba2fe4..59d7642df 100644
--- a/openlp/plugins/media/lib/__init__.py
+++ b/openlp/plugins/media/lib/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -27,4 +27,4 @@
from mediaitem import MediaMediaItem
from mediatab import MediaTab
-__all__ = ['MediaMediaItem']
+__all__ = ['MediaMediaItem']
\ No newline at end of file
diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py
index 11e00628e..49b26446f 100644
--- a/openlp/plugins/media/lib/mediaitem.py
+++ b/openlp/plugins/media/lib/mediaitem.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -30,7 +30,7 @@ import os
from PyQt4 import QtCore, QtGui
from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon, \
- ItemCapabilities, SettingsManager, translate, check_item_selected, \
+ ItemCapabilities, SettingsManager, translate, check_item_selected, \
context_menu_action
log = logging.getLogger(__name__)
@@ -60,10 +60,9 @@ class MediaMediaItem(MediaManagerItem):
def retranslateUi(self):
self.OnNewPrompt = translate('MediaPlugin.MediaItem', 'Select Media')
- self.OnNewFileMasks = translate('MediaPlugin.MediaItem',
- u'Videos (%s);;'
- u'Audio (%s);;'
- u'All files (*)' % (self.parent.video_list, self.parent.audio_list))
+ self.OnNewFileMasks = unicode(translate('MediaPlugin.MediaItem',
+ 'Videos (%s);;Audio (%s);;All files (*)')) % \
+ (self.parent.video_list, self.parent.audio_list)
def requiredIcons(self):
MediaManagerItem.requiredIcons(self)
@@ -89,7 +88,7 @@ class MediaMediaItem(MediaManagerItem):
self.ImageWidget.sizePolicy().hasHeightForWidth())
self.ImageWidget.setSizePolicy(sizePolicy)
self.ImageWidget.setObjectName(u'ImageWidget')
- #Replace backgrounds do not work at present so remove functionality.
+ # Replace backgrounds do not work at present so remove functionality.
self.blankButton = self.toolbar.addToolbarButton(
translate('MediaPlugin.MediaItem', 'Replace Background'),
u':/slides/slide_blank.png',
@@ -122,15 +121,24 @@ class MediaMediaItem(MediaManagerItem):
if item is None:
return False
filename = unicode(item.data(QtCore.Qt.UserRole).toString())
- service_item.title = unicode(
- translate('MediaPlugin.MediaItem', 'Media'))
- service_item.add_capability(ItemCapabilities.RequiresMedia)
- # force a nonexistent theme
- service_item.theme = -1
- frame = u':/media/image_clapperboard.png'
- (path, name) = os.path.split(filename)
- service_item.add_from_command(path, name, frame)
- return True
+ if os.path.exists(filename):
+ service_item.title = unicode(
+ translate('MediaPlugin.MediaItem', 'Media'))
+ service_item.add_capability(ItemCapabilities.RequiresMedia)
+ # force a nonexistent theme
+ service_item.theme = -1
+ frame = u':/media/image_clapperboard.png'
+ (path, name) = os.path.split(filename)
+ service_item.add_from_command(path, name, frame)
+ return True
+ else:
+ # File is no longer present
+ QtGui.QMessageBox.critical(
+ self, translate('MediaPlugin.MediaItem',
+ 'Missing Media File'),
+ unicode(translate('MediaPlugin.MediaItem',
+ 'The file %s no longer exists.')) % filename)
+ return False
def initialise(self):
self.listView.setSelectionMode(
diff --git a/openlp/plugins/media/lib/mediatab.py b/openlp/plugins/media/lib/mediatab.py
index e67da62df..2fc372070 100644
--- a/openlp/plugins/media/lib/mediatab.py
+++ b/openlp/plugins/media/lib/mediatab.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -79,4 +79,4 @@ class MediaTab(SettingsTab):
if oldUsePhonon != self.usePhonon:
QtCore.QSettings().setValue(self.settingsSection + u'/use phonon',
QtCore.QVariant(self.usePhonon))
- Receiver.send_message(u'config_screen_changed')
+ Receiver.send_message(u'config_screen_changed')
\ No newline at end of file
diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py
index 7660e8514..64caaa0de 100644
--- a/openlp/plugins/media/mediaplugin.py
+++ b/openlp/plugins/media/mediaplugin.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -38,7 +38,7 @@ class MediaPlugin(Plugin):
log.info(u'%s MediaPlugin loaded', __name__)
def __init__(self, plugin_helpers):
- Plugin.__init__(self, u'Media', u'1.9.3', plugin_helpers)
+ Plugin.__init__(self, u'Media', u'1.9.4', plugin_helpers)
self.weight = -6
self.icon_path = u':/plugins/plugin_media.png'
self.icon = build_icon(self.icon_path)
@@ -65,7 +65,7 @@ class MediaPlugin(Plugin):
def _addToList(self, list, value, mimetype):
# Is it a media type
if len(value) == 2:
- extensions = mimetypes.guess_all_extensions(unicode(mimetype))
+ extensions = mimetypes.guess_all_extensions(unicode(mimetype))
# we have an extension
if extensions:
for extension in extensions:
@@ -93,51 +93,51 @@ class MediaPlugin(Plugin):
"""
## Name PluginList ##
self.textStrings[StringContent.Name] = {
- u'singular': translate('MediaPlugin', 'Media'),
- u'plural': translate('MediaPlugin', 'Media')
+ u'singular': translate('MediaPlugin', 'Media', 'name singular'),
+ u'plural': translate('MediaPlugin', 'Media', 'name plural')
}
## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = {
- u'title': translate('MediaPlugin', 'Media')
+ u'title': translate('MediaPlugin', 'Media', 'container title')
}
# Middle Header Bar
- ## Load Button ##
+ ## Load Action ##
self.textStrings[StringContent.Load] = {
u'title': translate('MediaPlugin', 'Load'),
u'tooltip': translate('MediaPlugin',
'Load a new Media')
}
- ## New Button ##
+ ## New Action ##
self.textStrings[StringContent.New] = {
u'title': translate('MediaPlugin', 'Add'),
u'tooltip': translate('MediaPlugin',
'Add a new Media')
}
- ## Edit Button ##
+ ## Edit Action ##
self.textStrings[StringContent.Edit] = {
u'title': translate('MediaPlugin', 'Edit'),
u'tooltip': translate('MediaPlugin',
'Edit the selected Media')
}
- ## Delete Button ##
+ ## Delete Action ##
self.textStrings[StringContent.Delete] = {
u'title': translate('MediaPlugin', 'Delete'),
u'tooltip': translate('MediaPlugin',
'Delete the selected Media')
}
- ## Preview ##
+ ## Preview Action ##
self.textStrings[StringContent.Preview] = {
u'title': translate('MediaPlugin', 'Preview'),
u'tooltip': translate('MediaPlugin',
'Preview the selected Media')
}
- ## Live Button ##
+ ## Send Live Action ##
self.textStrings[StringContent.Live] = {
u'title': translate('MediaPlugin', 'Live'),
u'tooltip': translate('MediaPlugin',
'Send the selected Media live')
}
- ## Add to service Button ##
+ ## Add to Service Action ##
self.textStrings[StringContent.Service] = {
u'title': translate('MediaPlugin', 'Service'),
u'tooltip': translate('MediaPlugin',
diff --git a/openlp/plugins/presentations/__init__.py b/openlp/plugins/presentations/__init__.py
index 4e492fa0c..317281c23 100644
--- a/openlp/plugins/presentations/__init__.py
+++ b/openlp/plugins/presentations/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -26,4 +26,4 @@
"""
The :mod:`presentations` module provides the Presentations plugin which allows
OpenLP to show presentations from most popular presentation packages.
-"""
+"""
\ No newline at end of file
diff --git a/openlp/plugins/presentations/lib/__init__.py b/openlp/plugins/presentations/lib/__init__.py
index e64169b92..2e46cf486 100644
--- a/openlp/plugins/presentations/lib/__init__.py
+++ b/openlp/plugins/presentations/lib/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -27,4 +27,4 @@
from presentationcontroller import PresentationController
from messagelistener import MessageListener
from mediaitem import PresentationMediaItem
-from presentationtab import PresentationTab
+from presentationtab import PresentationTab
\ No newline at end of file
diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py
index 8f8e06734..d7407b729 100644
--- a/openlp/plugins/presentations/lib/impresscontroller.py
+++ b/openlp/plugins/presentations/lib/impresscontroller.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -255,8 +255,9 @@ class ImpressDocument(PresentationDocument):
self.document = desktop.loadComponentFromURL(url, u'_blank',
0, properties)
except:
- log.exception(u'Failed to load presentation')
+ log.exception(u'Failed to load presentation %s' % url)
return False
+
self.presentation = self.document.getPresentation()
self.presentation.Display = \
self.controller.plugin.renderManager.screens.current_display + 1
diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py
index 8e3a2fc36..e832f1a10 100644
--- a/openlp/plugins/presentations/lib/mediaitem.py
+++ b/openlp/plugins/presentations/lib/mediaitem.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -30,7 +30,7 @@ import os
from PyQt4 import QtCore, QtGui
from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon, \
- SettingsManager, translate, check_item_selected, Receiver
+ SettingsManager, translate, check_item_selected, Receiver, ItemCapabilities
from openlp.plugins.presentations.lib import MessageListener
log = logging.getLogger(__name__)
@@ -90,8 +90,8 @@ class PresentationMediaItem(MediaManagerItem):
if fileType.find(type) == -1:
fileType += u'*.%s ' % type
self.parent.serviceManager.supportedSuffixes(type)
- self.OnNewFileMasks = translate('PresentationPlugin.MediaItem',
- 'Presentations (%s)' % fileType)
+ self.OnNewFileMasks = unicode(translate('PresentationPlugin.MediaItem',
+ 'Presentations (%s)')) % fileType
def requiredIcons(self):
"""
@@ -153,7 +153,7 @@ class PresentationMediaItem(MediaManagerItem):
"""
self.DisplayTypeComboBox.clear()
for item in self.controllers:
- #load the drop down selection
+ # load the drop down selection
if self.controllers[item].enabled():
self.DisplayTypeComboBox.addItem(item)
if self.DisplayTypeComboBox.count() > 1:
@@ -249,28 +249,39 @@ class PresentationMediaItem(MediaManagerItem):
return False
service_item.title = unicode(self.DisplayTypeComboBox.currentText())
service_item.shortname = unicode(self.DisplayTypeComboBox.currentText())
+ service_item.add_capability(ItemCapabilities.ProvidesOwnDisplay)
shortname = service_item.shortname
if shortname:
for item in items:
bitem = self.listView.item(item.row())
filename = unicode(bitem.data(QtCore.Qt.UserRole).toString())
- if shortname == self.Automatic:
- service_item.shortname = self.findControllerByType(filename)
- if not service_item.shortname:
- return False
- controller = self.controllers[service_item.shortname]
- (path, name) = os.path.split(filename)
- doc = controller.add_doc(filename)
- if doc.get_thumbnail_path(1, True) is None:
- doc.load_presentation()
- i = 1
- img = doc.get_thumbnail_path(i, True)
- while img:
- service_item.add_from_command(path, name, img)
- i = i + 1
+ if os.path.exists(filename):
+ if shortname == self.Automatic:
+ service_item.shortname = \
+ self.findControllerByType(filename)
+ if not service_item.shortname:
+ return False
+ controller = self.controllers[service_item.shortname]
+ (path, name) = os.path.split(filename)
+ doc = controller.add_doc(filename)
+ if doc.get_thumbnail_path(1, True) is None:
+ doc.load_presentation()
+ i = 1
img = doc.get_thumbnail_path(i, True)
- doc.close_presentation()
- return True
+ while img:
+ service_item.add_from_command(path, name, img)
+ i = i + 1
+ img = doc.get_thumbnail_path(i, True)
+ doc.close_presentation()
+ return True
+ else:
+ # File is no longer present
+ QtGui.QMessageBox.critical(
+ self, translate('PresentationPlugin.MediaItem',
+ 'Missing Presentation'),
+ unicode(translate('PresentationPlugin.MediaItem',
+ 'The Presentation %s no longer exists.')) % filename)
+ return False
else:
return False
@@ -280,7 +291,7 @@ class PresentationMediaItem(MediaManagerItem):
file type. This is used if "Automatic" is set as the preferred
controller. Find the first (alphabetic) enabled controller which
"supports" the extension. If none found, then look for a controller
- which "alsosupports" it instead.
+ which "also supports" it instead.
"""
filetype = filename.split(u'.')[1]
if not filetype:
diff --git a/openlp/plugins/presentations/lib/messagelistener.py b/openlp/plugins/presentations/lib/messagelistener.py
index 535744369..19abadf0d 100644
--- a/openlp/plugins/presentations/lib/messagelistener.py
+++ b/openlp/plugins/presentations/lib/messagelistener.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -90,7 +90,7 @@ class Controller(object):
"""
Go to a specific slide
"""
- log.debug(u'Live = %s, slide' % self.is_live)
+ log.debug(u'Live = %s, slide' % self.is_live)
if not self.is_live:
return
if self.doc.is_blank():
@@ -249,7 +249,7 @@ class MessageListener(object):
self.timer = QtCore.QTimer()
self.timer.setInterval(500)
QtCore.QObject.connect(
- self.timer, QtCore.SIGNAL("timeout()"), self.timeout)
+ self.timer, QtCore.SIGNAL(u'timeout()'), self.timeout)
def startup(self, message):
"""
diff --git a/openlp/plugins/presentations/lib/powerpointcontroller.py b/openlp/plugins/presentations/lib/powerpointcontroller.py
index 58bb6b3d6..012f8534a 100644
--- a/openlp/plugins/presentations/lib/powerpointcontroller.py
+++ b/openlp/plugins/presentations/lib/powerpointcontroller.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -312,4 +312,4 @@ class PowerpointDocument(PresentationDocument):
shape = shapes(idx + 1)
if shape.HasTextFrame:
text += shape.TextFrame.TextRange.Text + '\n'
- return text
+ return text
\ No newline at end of file
diff --git a/openlp/plugins/presentations/lib/pptviewcontroller.py b/openlp/plugins/presentations/lib/pptviewcontroller.py
index 281e647de..4c8e7bf95 100644
--- a/openlp/plugins/presentations/lib/pptviewcontroller.py
+++ b/openlp/plugins/presentations/lib/pptviewcontroller.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -247,4 +247,4 @@ class PptviewDocument(PresentationDocument):
"""
Triggers the previous slide on the running presentation
"""
- self.controller.process.PrevStep(self.pptid)
+ self.controller.process.PrevStep(self.pptid)
\ No newline at end of file
diff --git a/openlp/plugins/presentations/lib/pptviewlib/ppttest.py b/openlp/plugins/presentations/lib/pptviewlib/ppttest.py
index 304c942f0..de0be3e73 100644
--- a/openlp/plugins/presentations/lib/pptviewlib/ppttest.py
+++ b/openlp/plugins/presentations/lib/pptviewlib/ppttest.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
diff --git a/openlp/plugins/presentations/lib/presentationcontroller.py b/openlp/plugins/presentations/lib/presentationcontroller.py
index 5bd0719e9..42f7b654a 100644
--- a/openlp/plugins/presentations/lib/presentationcontroller.py
+++ b/openlp/plugins/presentations/lib/presentationcontroller.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -440,4 +440,4 @@ class PresentationDocument(object):
``slide_no``
The slide the notes are required for, starting at 1
"""
- return ''
+ return ''
\ No newline at end of file
diff --git a/openlp/plugins/presentations/lib/presentationtab.py b/openlp/plugins/presentations/lib/presentationtab.py
index d1ebb570c..cd4dd7901 100644
--- a/openlp/plugins/presentations/lib/presentationtab.py
+++ b/openlp/plugins/presentations/lib/presentationtab.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -160,4 +160,4 @@ class PresentationTab(SettingsTab):
QtCore.QVariant(self.OverrideAppCheckBox.checkState()))
changed = True
if changed:
- Receiver.send_message(u'mediaitem_presentation_rebuild')
+ Receiver.send_message(u'mediaitem_presentation_rebuild')
\ No newline at end of file
diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py
index 300314bde..8afed6022 100644
--- a/openlp/plugins/presentations/presentationplugin.py
+++ b/openlp/plugins/presentations/presentationplugin.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -51,7 +51,7 @@ class PresentationPlugin(Plugin):
"""
log.debug(u'Initialised')
self.controllers = {}
- Plugin.__init__(self, u'Presentations', u'1.9.3', plugin_helpers)
+ Plugin.__init__(self, u'Presentations', u'1.9.4', plugin_helpers)
self.weight = -8
self.icon_path = u':/plugins/plugin_presentations.png'
self.icon = build_icon(self.icon_path)
@@ -152,39 +152,42 @@ class PresentationPlugin(Plugin):
"""
## Name PluginList ##
self.textStrings[StringContent.Name] = {
- u'singular': translate('PresentationPlugin', 'Presentation'),
- u'plural': translate('PresentationPlugin', 'Presentations')
+ u'singular': translate('PresentationPlugin', 'Presentation',
+ 'name singular'),
+ u'plural': translate('PresentationPlugin', 'Presentations',
+ 'name plural')
}
## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = {
- u'title': translate('PresentationPlugin', 'Presentations')
+ u'title': translate('PresentationPlugin', 'Presentations',
+ 'container title')
}
# Middle Header Bar
- ## Load Button ##
+ ## Load Action ##
self.textStrings[StringContent.Load] = {
u'title': translate('PresentationPlugin', 'Load'),
u'tooltip': translate('PresentationPlugin',
'Load a new Presentation')
}
- ## Delete Button ##
+ ## Delete Action ##
self.textStrings[StringContent.Delete] = {
u'title': translate('PresentationPlugin', 'Delete'),
u'tooltip': translate('PresentationPlugin',
'Delete the selected Presentation')
}
- ## Preview ##
+ ## Preview Action ##
self.textStrings[StringContent.Preview] = {
u'title': translate('PresentationPlugin', 'Preview'),
u'tooltip': translate('PresentationPlugin',
'Preview the selected Presentation')
}
- ## Live Button ##
+ ## Send Live Action ##
self.textStrings[StringContent.Live] = {
u'title': translate('PresentationPlugin', 'Live'),
u'tooltip': translate('PresentationPlugin',
'Send the selected Presentation live')
}
- ## Add to service Button ##
+ ## Add to Service Action ##
self.textStrings[StringContent.Service] = {
u'title': translate('PresentationPlugin', 'Service'),
u'tooltip': translate('PresentationPlugin',
diff --git a/openlp/plugins/remotes/__init__.py b/openlp/plugins/remotes/__init__.py
index 3c35beb4c..4e619fb67 100644
--- a/openlp/plugins/remotes/__init__.py
+++ b/openlp/plugins/remotes/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -26,4 +26,4 @@
"""
The :mod:`remotes` plugin allows OpenLP to be controlled from another machine
over a network connection.
-"""
+"""
\ No newline at end of file
diff --git a/openlp/plugins/remotes/lib/__init__.py b/openlp/plugins/remotes/lib/__init__.py
index 829afe759..b6f952242 100644
--- a/openlp/plugins/remotes/lib/__init__.py
+++ b/openlp/plugins/remotes/lib/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -25,4 +25,4 @@
###############################################################################
from remotetab import RemoteTab
-from httpserver import HttpServer
+from httpserver import HttpServer
\ No newline at end of file
diff --git a/openlp/plugins/remotes/lib/httpserver.py b/openlp/plugins/remotes/lib/httpserver.py
index f1796101f..6ec9476a8 100644
--- a/openlp/plugins/remotes/lib/httpserver.py
+++ b/openlp/plugins/remotes/lib/httpserver.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -347,4 +347,4 @@ class HttpConnection(object):
log.debug(u'close socket')
self.socket.close()
self.socket = None
- self.parent.close_connection(self)
+ self.parent.close_connection(self)
\ No newline at end of file
diff --git a/openlp/plugins/remotes/lib/remotetab.py b/openlp/plugins/remotes/lib/remotetab.py
index 123aa291d..e81cc99ae 100644
--- a/openlp/plugins/remotes/lib/remotetab.py
+++ b/openlp/plugins/remotes/lib/remotetab.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -78,4 +78,4 @@ class RemoteTab(SettingsTab):
QtCore.QSettings().setValue(self.settingsSection + u'/port',
QtCore.QVariant(self.portSpinBox.value()))
QtCore.QSettings().setValue(self.settingsSection + u'/ip address',
- QtCore.QVariant(self.addressEdit.text()))
+ QtCore.QVariant(self.addressEdit.text()))
\ No newline at end of file
diff --git a/openlp/plugins/remotes/remoteplugin.py b/openlp/plugins/remotes/remoteplugin.py
index 4b6a57cad..dbc56a61c 100644
--- a/openlp/plugins/remotes/remoteplugin.py
+++ b/openlp/plugins/remotes/remoteplugin.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -38,7 +38,7 @@ class RemotesPlugin(Plugin):
"""
remotes constructor
"""
- Plugin.__init__(self, u'Remotes', u'1.9.3', plugin_helpers)
+ Plugin.__init__(self, u'Remotes', u'1.9.4', plugin_helpers)
self.icon = build_icon(u':/plugins/plugin_remote.png')
self.weight = -1
self.server = None
@@ -84,10 +84,10 @@ class RemotesPlugin(Plugin):
"""
## Name PluginList ##
self.textStrings[StringContent.Name] = {
- u'singular': translate('RemotePlugin', 'Remote'),
- u'plural': translate('RemotePlugin', 'Remotes')
+ u'singular': translate('RemotePlugin', 'Remote', 'name singular'),
+ u'plural': translate('RemotePlugin', 'Remotes', 'name plural')
}
## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = {
- u'title': translate('RemotePlugin', 'Remote')
+ u'title': translate('RemotePlugin', 'Remote', 'container title')
}
diff --git a/openlp/plugins/songs/__init__.py b/openlp/plugins/songs/__init__.py
index 7631351e0..c95d29c46 100644
--- a/openlp/plugins/songs/__init__.py
+++ b/openlp/plugins/songs/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -26,4 +26,4 @@
"""
The :mod:`songs` module provides the Songs plugin. The Songs plugin provides
the main lyric projection function of OpenLP.
-"""
+"""
\ No newline at end of file
diff --git a/openlp/plugins/songs/forms/__init__.py b/openlp/plugins/songs/forms/__init__.py
index 511d82747..160a014ac 100644
--- a/openlp/plugins/songs/forms/__init__.py
+++ b/openlp/plugins/songs/forms/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -57,4 +57,4 @@ from songbookform import SongBookForm
from editverseform import EditVerseForm
from editsongform import EditSongForm
from songmaintenanceform import SongMaintenanceForm
-from songimportform import SongImportForm
+from songimportform import SongImportForm
\ No newline at end of file
diff --git a/openlp/plugins/songs/forms/authorsdialog.py b/openlp/plugins/songs/forms/authorsdialog.py
index 8141703b0..1c5191702 100644
--- a/openlp/plugins/songs/forms/authorsdialog.py
+++ b/openlp/plugins/songs/forms/authorsdialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -83,4 +83,4 @@ class Ui_AuthorsDialog(object):
self.FirstNameLabel.setText(
translate('SongsPlugin.AuthorsForm', 'First name:'))
self.LastNameLabel.setText(
- translate('SongsPlugin.AuthorsForm', 'Last name:'))
+ translate('SongsPlugin.AuthorsForm', 'Last name:'))
\ No newline at end of file
diff --git a/openlp/plugins/songs/forms/authorsform.py b/openlp/plugins/songs/forms/authorsform.py
index 1dacd82cc..6777d2f49 100644
--- a/openlp/plugins/songs/forms/authorsform.py
+++ b/openlp/plugins/songs/forms/authorsform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -108,4 +108,4 @@ class AuthorsForm(QtGui.QDialog, Ui_AuthorsDialog):
self.DisplayEdit.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/forms/editsongdialog.py b/openlp/plugins/songs/forms/editsongdialog.py
index 66ade5bcd..7765b1a26 100644
--- a/openlp/plugins/songs/forms/editsongdialog.py
+++ b/openlp/plugins/songs/forms/editsongdialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -470,4 +470,4 @@ class Ui_EditSongDialog(object):
self.SongTabWidget.setTabText(
self.SongTabWidget.indexOf(self.ThemeTab),
translate('SongsPlugin.EditSongForm',
- 'Theme, Copyright Info && Comments'))
+ 'Theme, Copyright Info && Comments'))
\ No newline at end of file
diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py
index ad4182d54..70b0e912b 100644
--- a/openlp/plugins/songs/forms/editsongform.py
+++ b/openlp/plugins/songs/forms/editsongform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -186,9 +186,11 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
self.AuthorsListView.clear()
self.TopicsListView.clear()
self.TitleEditItem.setFocus(QtCore.Qt.OtherFocusReason)
+ self.songBookNumberEdit.setText(u'')
self.loadAuthors()
self.loadTopics()
self.loadBooks()
+ self.ThemeSelectionComboItem.setCurrentIndex(0)
# it's a new song to preview is not possible
self.previewButton.setVisible(False)
diff --git a/openlp/plugins/songs/forms/editversedialog.py b/openlp/plugins/songs/forms/editversedialog.py
index 43dc8b96d..f83579044 100644
--- a/openlp/plugins/songs/forms/editversedialog.py
+++ b/openlp/plugins/songs/forms/editversedialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -104,4 +104,4 @@ class Ui_EditVerseDialog(object):
self.verseTypeComboBox.setItemText(6,
VerseType.to_string(VerseType.Other))
self.insertButton.setText(
- translate('SongsPlugin.EditVerseForm', '&Insert'))
+ translate('SongsPlugin.EditVerseForm', '&Insert'))
\ No newline at end of file
diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py
index 8f5f04194..a1a301b61 100644
--- a/openlp/plugins/songs/forms/editverseform.py
+++ b/openlp/plugins/songs/forms/editverseform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -172,4 +172,4 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
translate('SongsPlugin.EditSongForm',
'You need to type some text in to the verse.'))
return False
- QtGui.QDialog.accept(self)
+ QtGui.QDialog.accept(self)
\ No newline at end of file
diff --git a/openlp/plugins/songs/forms/songbookdialog.py b/openlp/plugins/songs/forms/songbookdialog.py
index 5a02674b3..8166453a2 100644
--- a/openlp/plugins/songs/forms/songbookdialog.py
+++ b/openlp/plugins/songs/forms/songbookdialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -74,4 +74,4 @@ class Ui_SongBookDialog(object):
translate('SongsPlugin.SongBookForm', 'Song Book Maintenance'))
self.NameLabel.setText(translate('SongsPlugin.SongBookForm', '&Name:'))
self.PublisherLabel.setText(
- translate('SongsPlugin.SongBookForm', '&Publisher:'))
+ translate('SongsPlugin.SongBookForm', '&Publisher:'))
\ No newline at end of file
diff --git a/openlp/plugins/songs/forms/songbookform.py b/openlp/plugins/songs/forms/songbookform.py
index bdec26dfe..23c8c6533 100644
--- a/openlp/plugins/songs/forms/songbookform.py
+++ b/openlp/plugins/songs/forms/songbookform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -56,4 +56,4 @@ class SongBookForm(QtGui.QDialog, Ui_SongBookDialog):
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/forms/songimportform.py b/openlp/plugins/songs/forms/songimportform.py
index 81acea00f..5ec7f45e1 100644
--- a/openlp/plugins/songs/forms/songimportform.py
+++ b/openlp/plugins/songs/forms/songimportform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -133,8 +133,8 @@ class SongImportForm(QtGui.QWizard, Ui_SongImportWizard):
"""
Stop the import on cancel button, close button or ESC key.
"""
- log.debug('Import canceled by user.')
- if self.currentId() == 2:
+ log.debug(u'Import canceled by user.')
+ if self.currentPage() == self.importPage:
Receiver.send_message(u'songs_stop_import')
self.done(QtGui.QDialog.Rejected)
@@ -142,11 +142,9 @@ class SongImportForm(QtGui.QWizard, Ui_SongImportWizard):
"""
Validate the current page before moving on to the next page.
"""
- if self.currentId() == 0:
- # Welcome page
+ if self.currentPage() == self.welcomePage:
return True
- elif self.currentId() == 1:
- # Select page
+ elif self.currentPage() == self.sourcePage:
source_format = self.formatComboBox.currentIndex()
if source_format == SongFormat.OpenLP2:
if self.openLP2FilenameEdit.text().isEmpty():
@@ -250,8 +248,7 @@ class SongImportForm(QtGui.QWizard, Ui_SongImportWizard):
self.songBeamerAddButton.setFocus()
return False
return True
- elif self.currentId() == 2:
- # Progress page
+ elif self.currentPage() == self.importPage:
return True
def getFileName(self, title, editbox, filters=u''):
@@ -275,8 +272,8 @@ class SongImportForm(QtGui.QWizard, Ui_SongImportWizard):
filters += u'%s (*)' % translate('SongsPlugin.ImportWizardForm',
'All Files')
filename = QtGui.QFileDialog.getOpenFileName(self, title,
- os.path.dirname(SettingsManager.get_last_dir(
- self.plugin.settingsSection, 1)), filters)
+ SettingsManager.get_last_dir(self.plugin.settingsSection, 1),
+ filters)
if filename:
editbox.setText(filename)
SettingsManager.set_last_dir(self.plugin.settingsSection,
@@ -303,8 +300,8 @@ class SongImportForm(QtGui.QWizard, Ui_SongImportWizard):
filters += u'%s (*)' % translate('SongsPlugin.ImportWizardForm',
'All Files')
filenames = QtGui.QFileDialog.getOpenFileNames(self, title,
- os.path.dirname(SettingsManager.get_last_dir(
- self.plugin.settingsSection, 1)), filters)
+ SettingsManager.get_last_dir(self.plugin.settingsSection, 1),
+ filters)
if filenames:
listbox.addItems(filenames)
SettingsManager.set_last_dir(
@@ -423,7 +420,7 @@ class SongImportForm(QtGui.QWizard, Ui_SongImportWizard):
self.removeSelectedItems(self.songBeamerFileListWidget)
def onCurrentIdChanged(self, id):
- if id == 2:
+ if self.page(id) == self.importPage:
self.preImport()
self.performImport()
self.postImport()
diff --git a/openlp/plugins/songs/forms/songimportwizard.py b/openlp/plugins/songs/forms/songimportwizard.py
index aafff1051..85fbb07fe 100644
--- a/openlp/plugins/songs/forms/songimportwizard.py
+++ b/openlp/plugins/songs/forms/songimportwizard.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -33,68 +33,48 @@ class Ui_SongImportWizard(object):
self.openIcon = build_icon(u':/general/general_open.png')
self.deleteIcon = build_icon(u':/general/general_delete.png')
songImportWizard.setObjectName(u'songImportWizard')
- songImportWizard.resize(550, 386)
songImportWizard.setModal(True)
songImportWizard.setWizardStyle(QtGui.QWizard.ModernStyle)
songImportWizard.setOptions(
QtGui.QWizard.IndependentPages |
QtGui.QWizard.NoBackButtonOnStartPage |
QtGui.QWizard.NoBackButtonOnLastPage)
+ # Welcome Page
self.welcomePage = QtGui.QWizardPage()
- self.welcomePage.setObjectName(u'welcomePage')
self.welcomePage.setPixmap(QtGui.QWizard.WatermarkPixmap,
QtGui.QPixmap(u':/wizards/wizard_importsong.bmp'))
- self.welcomeLayout = QtGui.QHBoxLayout(self.welcomePage)
- self.welcomeLayout.setSpacing(8)
- self.welcomeLayout.setMargin(0)
- self.welcomeLayout.setObjectName(u'welcomeLayout')
- self.welcomeTextLayout = QtGui.QVBoxLayout()
- self.welcomeTextLayout.setSpacing(8)
- self.welcomeTextLayout.setObjectName(u'welcomeTextLayout')
+ self.welcomePage.setObjectName(u'WelcomePage')
+ self.welcomeLayout = QtGui.QVBoxLayout(self.welcomePage)
+ self.welcomeLayout.setObjectName(u'WelcomeLayout')
self.titleLabel = QtGui.QLabel(self.welcomePage)
self.titleLabel.setObjectName(u'TitleLabel')
- self.welcomeTextLayout.addWidget(self.titleLabel)
- self.welcomeTopSpacer = QtGui.QSpacerItem(20, 40,
- QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
- self.welcomeTextLayout.addItem(self.welcomeTopSpacer)
+ self.welcomeLayout.addWidget(self.titleLabel)
+ self.welcomeLayout.addSpacing(40)
self.informationLabel = QtGui.QLabel(self.welcomePage)
self.informationLabel.setWordWrap(True)
- self.informationLabel.setMargin(10)
self.informationLabel.setObjectName(u'InformationLabel')
- self.welcomeTextLayout.addWidget(self.informationLabel)
- self.welcomeBottomSpacer = QtGui.QSpacerItem(20, 40,
- QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.welcomeTextLayout.addItem(self.welcomeBottomSpacer)
- self.welcomeLayout.addLayout(self.welcomeTextLayout)
+ self.welcomeLayout.addWidget(self.informationLabel)
+ self.welcomeLayout.addStretch()
songImportWizard.addPage(self.welcomePage)
+ # Source Page
self.sourcePage = QtGui.QWizardPage()
self.sourcePage.setObjectName(u'SourcePage')
self.sourceLayout = QtGui.QVBoxLayout(self.sourcePage)
- self.sourceLayout.setSpacing(8)
- self.sourceLayout.setMargin(20)
self.sourceLayout.setObjectName(u'SourceLayout')
- self.formatLayout = QtGui.QHBoxLayout()
- self.formatLayout.setSpacing(8)
+ self.formatLayout = QtGui.QFormLayout()
self.formatLayout.setObjectName(u'FormatLayout')
self.formatLabel = QtGui.QLabel(self.sourcePage)
self.formatLabel.setObjectName(u'FormatLabel')
- self.formatLayout.addWidget(self.formatLabel)
self.formatComboBox = QtGui.QComboBox(self.sourcePage)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding,
- QtGui.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(
- self.formatComboBox.sizePolicy().hasHeightForWidth())
- self.formatComboBox.setSizePolicy(sizePolicy)
- self.formatComboBox.setObjectName(u'formatComboBox')
- self.formatLayout.addWidget(self.formatComboBox)
- self.formatSpacer = QtGui.QSpacerItem(40, 20,
- QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.formatLayout.addItem(self.formatSpacer)
+ self.formatComboBox.setObjectName(u'FormatComboBox')
+ self.formatLayout.addRow(self.formatLabel, self.formatComboBox)
+ self.formatSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Minimum)
+ self.formatLayout.setItem(1, QtGui.QFormLayout.LabelRole,
+ self.formatSpacer)
self.sourceLayout.addLayout(self.formatLayout)
- self.formatStackedWidget = QtGui.QStackedWidget(self.sourcePage)
- self.formatStackedWidget.setObjectName(u'FormatStackedWidget')
+ self.formatStack = QtGui.QStackedLayout()
+ self.formatStack.setObjectName(u'FormatStack')
# OpenLP 2.0
self.addSingleFileSelectItem(u'openLP2')
# openlp.org 1.x
@@ -120,28 +100,26 @@ class Ui_SongImportWizard(object):
self.addMultiFileSelectItem(u'songBeamer')
# Commented out for future use.
# self.addSingleFileSelectItem(u'csv', u'CSV')
- self.sourceLayout.addWidget(self.formatStackedWidget)
+ self.sourceLayout.addLayout(self.formatStack)
songImportWizard.addPage(self.sourcePage)
+ # Import Page
self.importPage = QtGui.QWizardPage()
- self.importPage.setObjectName(u'importPage')
+ self.importPage.setObjectName(u'ImportPage')
self.importLayout = QtGui.QVBoxLayout(self.importPage)
- self.importLayout.setSpacing(8)
- self.importLayout.setMargin(50)
- self.importLayout.setObjectName(u'importLayout')
+ self.importLayout.setMargin(48)
+ self.importLayout.setObjectName(u'ImportLayout')
self.importProgressLabel = QtGui.QLabel(self.importPage)
- self.importProgressLabel.setObjectName(u'importProgressLabel')
+ self.importProgressLabel.setObjectName(u'ImportProgressLabel')
self.importLayout.addWidget(self.importProgressLabel)
self.importProgressBar = QtGui.QProgressBar(self.importPage)
- self.importProgressBar.setProperty(u'value', 0)
- self.importProgressBar.setInvertedAppearance(False)
- self.importProgressBar.setObjectName(u'importProgressBar')
+ self.importProgressBar.setObjectName(u'ImportProgressBar')
self.importLayout.addWidget(self.importProgressBar)
songImportWizard.addPage(self.importPage)
self.retranslateUi(songImportWizard)
- self.formatStackedWidget.setCurrentIndex(0)
+ self.formatStack.setCurrentIndex(0)
QtCore.QObject.connect(self.formatComboBox,
QtCore.SIGNAL(u'currentIndexChanged(int)'),
- self.formatStackedWidget.setCurrentIndex)
+ self.formatStack.setCurrentIndex)
QtCore.QMetaObject.connectSlotsByName(songImportWizard)
def retranslateUi(self, songImportWizard):
@@ -257,6 +235,19 @@ class Ui_SongImportWizard(object):
translate('SongsPlugin.ImportWizardForm', 'Ready.'))
self.importProgressBar.setFormat(
translate('SongsPlugin.ImportWizardForm', '%p%'))
+ # Align all QFormLayouts towards each other.
+ width = max(self.formatLabel.minimumSizeHint().width(),
+ self.openLP2FilenameLabel.minimumSizeHint().width())
+ self.formatSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Fixed)
+ self.openLP2FormLabelSpacer.changeSize(width, 0,
+ QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
+ self.openLP1FormLabelSpacer.changeSize(width, 0,
+ QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
+ self.ewFormLabelSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Fixed)
+# self.csvFormLabelSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+# QtGui.QSizePolicy.Fixed)
def addSingleFileSelectItem(self, prefix, obj_prefix=None,
can_disable=False):
@@ -270,16 +261,13 @@ class Ui_SongImportWizard(object):
importWidget = page
importLayout = QtGui.QFormLayout(importWidget)
importLayout.setMargin(0)
- importLayout.setSpacing(8)
if can_disable:
importLayout.setObjectName(obj_prefix + u'ImportLayout')
else:
importLayout.setObjectName(obj_prefix + u'Layout')
filenameLabel = QtGui.QLabel(importWidget)
filenameLabel.setObjectName(obj_prefix + u'FilenameLabel')
- importLayout.setWidget(0, QtGui.QFormLayout.LabelRole, filenameLabel)
fileLayout = QtGui.QHBoxLayout()
- fileLayout.setSpacing(8)
fileLayout.setObjectName(obj_prefix + u'FileLayout')
filenameEdit = QtGui.QLineEdit(importWidget)
filenameEdit.setObjectName(obj_prefix + u'FilenameEdit')
@@ -288,10 +276,14 @@ class Ui_SongImportWizard(object):
browseButton.setIcon(self.openIcon)
browseButton.setObjectName(obj_prefix + u'BrowseButton')
fileLayout.addWidget(browseButton)
- importLayout.setLayout(0, QtGui.QFormLayout.FieldRole, fileLayout)
- self.formatStackedWidget.addWidget(page)
+ importLayout.addRow(filenameLabel, fileLayout)
+ formSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+ QtGui.QSizePolicy.Minimum)
+ importLayout.setItem(1, QtGui.QFormLayout.LabelRole, formSpacer)
+ self.formatStack.addWidget(page)
setattr(self, prefix + u'Page', page)
setattr(self, prefix + u'FilenameLabel', filenameLabel)
+ setattr(self, prefix + u'FormLabelSpacer', formSpacer)
setattr(self, prefix + u'FileLayout', fileLayout)
setattr(self, prefix + u'FilenameEdit', filenameEdit)
setattr(self, prefix + u'BrowseButton', browseButton)
@@ -313,7 +305,6 @@ class Ui_SongImportWizard(object):
importWidget = page
importLayout = QtGui.QVBoxLayout(importWidget)
importLayout.setMargin(0)
- importLayout.setSpacing(8)
if can_disable:
importLayout.setObjectName(obj_prefix + u'ImportLayout')
else:
@@ -324,25 +315,21 @@ class Ui_SongImportWizard(object):
fileListWidget.setObjectName(obj_prefix + u'FileListWidget')
importLayout.addWidget(fileListWidget)
buttonLayout = QtGui.QHBoxLayout()
- buttonLayout.setSpacing(8)
buttonLayout.setObjectName(obj_prefix + u'ButtonLayout')
addButton = QtGui.QPushButton(importWidget)
addButton.setIcon(self.openIcon)
addButton.setObjectName(obj_prefix + u'AddButton')
buttonLayout.addWidget(addButton)
- buttonSpacer = QtGui.QSpacerItem(40, 20,
- QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- buttonLayout.addItem(buttonSpacer)
+ buttonLayout.addStretch()
removeButton = QtGui.QPushButton(importWidget)
removeButton.setIcon(self.deleteIcon)
removeButton.setObjectName(obj_prefix + u'RemoveButton')
buttonLayout.addWidget(removeButton)
importLayout.addLayout(buttonLayout)
- self.formatStackedWidget.addWidget(page)
+ self.formatStack.addWidget(page)
setattr(self, prefix + u'Page', page)
setattr(self, prefix + u'FileListWidget', fileListWidget)
setattr(self, prefix + u'ButtonLayout', buttonLayout)
- setattr(self, prefix + u'ButtonSpacer', buttonSpacer)
setattr(self, prefix + u'AddButton', addButton)
setattr(self, prefix + u'RemoveButton', removeButton)
if can_disable:
@@ -361,7 +348,6 @@ class Ui_SongImportWizard(object):
disabledWidget.setObjectName(obj_prefix + u'DisabledWidget')
disabledLayout = QtGui.QVBoxLayout(disabledWidget)
disabledLayout.setMargin(0)
- disabledLayout.setSpacing(8)
disabledLayout.setObjectName(obj_prefix + u'DisabledLayout')
disabledLabel = QtGui.QLabel(disabledWidget)
disabledLabel.setWordWrap(True)
diff --git a/openlp/plugins/songs/forms/songmaintenancedialog.py b/openlp/plugins/songs/forms/songmaintenancedialog.py
index 909294707..87d99e853 100644
--- a/openlp/plugins/songs/forms/songmaintenancedialog.py
+++ b/openlp/plugins/songs/forms/songmaintenancedialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -236,4 +236,4 @@ class Ui_SongMaintenanceDialog(object):
self.BookEditButton.setText(
translate('SongsPlugin.SongMaintenanceForm', '&Edit'))
self.BookDeleteButton.setText(
- translate('SongsPlugin.SongMaintenanceForm', '&Delete'))
+ translate('SongsPlugin.SongMaintenanceForm', '&Delete'))
\ No newline at end of file
diff --git a/openlp/plugins/songs/forms/songmaintenanceform.py b/openlp/plugins/songs/forms/songmaintenanceform.py
index f004ef026..0364a4df4 100644
--- a/openlp/plugins/songs/forms/songmaintenanceform.py
+++ b/openlp/plugins/songs/forms/songmaintenanceform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -109,7 +109,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog):
author_name = QtGui.QListWidgetItem(author.display_name)
else:
author_name = QtGui.QListWidgetItem(
- u'%s %s' % (author.first_name, author.last_name))
+ u' '.join(author.first_name, author.last_name))
author_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(author.id))
self.AuthorsListWidget.addItem(author_name)
if self.AuthorsListWidget.count() == 0:
@@ -305,12 +305,13 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog):
'Could not save your changes.'))
elif QtGui.QMessageBox.critical(self,
translate('SongsPlugin.SongMaintenanceForm', 'Error'),
- translate('SongsPlugin.SongMaintenanceForm', 'The author %s'
- ' already exists. Would you like to make songs with author '
- '%s use the existing author %s?' % (author.display_name,
- temp_display_name, author.display_name)),
- QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No |
- QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.Yes:
+ unicode(translate('SongsPlugin.SongMaintenanceForm',
+ 'The author %s already exists. Would you like to make songs'
+ ' with author %s use the existing author %s?')) %
+ (author.display_name, temp_display_name,
+ author.display_name), QtGui.QMessageBox.StandardButtons(
+ QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == \
+ QtGui.QMessageBox.Yes:
self.mergeAuthors(author)
self.resetAuthors()
Receiver.send_message(u'songs_load_list')
@@ -346,12 +347,12 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog):
'Could not save your changes.'))
elif QtGui.QMessageBox.critical(self,
translate('SongsPlugin.SongMaintenanceForm', 'Error'),
- translate('SongsPlugin.SongMaintenanceForm', 'The topic %s '
- 'already exists. Would you like to make songs with topic %s'
- ' use the existing topic %s?' % (topic.name, temp_name,
- topic.name)),
- QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No |
- QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.Yes:
+ unicode(translate('SongsPlugin.SongMaintenanceForm',
+ 'The topic %s already exists. Would you like to make songs '
+ 'with topic %s use the existing topic %s?')) % (topic.name,
+ temp_name, topic.name), QtGui.QMessageBox.StandardButtons(
+ QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == \
+ QtGui.QMessageBox.Yes:
self.mergeTopics(topic)
self.resetTopics()
else:
@@ -389,12 +390,12 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog):
'Could not save your changes.'))
elif QtGui.QMessageBox.critical(self,
translate('SongsPlugin.SongMaintenanceForm', 'Error'),
- translate('SongsPlugin.SongMaintenanceForm', 'The book %s '
- 'already exists. Would you like to make songs with book %s '
- 'use the existing book %s?' % (book.name, temp_name,
- book.name)),
- QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No |
- QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.Yes:
+ unicode(translate('SongsPlugin.SongMaintenanceForm',
+ 'The book %s already exists. Would you like to make songs '
+ 'with book %s use the existing book %s?')) % (book.name,
+ temp_name, book.name), QtGui.QMessageBox.StandardButtons(
+ QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == \
+ QtGui.QMessageBox.Yes:
self.mergeBooks(book)
self.resetBooks()
else:
diff --git a/openlp/plugins/songs/forms/topicsdialog.py b/openlp/plugins/songs/forms/topicsdialog.py
index fbb149aa8..2c1144631 100644
--- a/openlp/plugins/songs/forms/topicsdialog.py
+++ b/openlp/plugins/songs/forms/topicsdialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -65,4 +65,4 @@ class Ui_TopicsDialog(object):
TopicsDialog.setWindowTitle(
translate('SongsPlugin.TopicsForm', 'Topic Maintenance'))
self.NameLabel.setText(
- translate('SongsPlugin.TopicsForm', '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 c45228527..f15f0bba5 100644
--- a/openlp/plugins/songs/forms/topicsform.py
+++ b/openlp/plugins/songs/forms/topicsform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -55,4 +55,4 @@ class TopicsForm(QtGui.QDialog, Ui_TopicsDialog):
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 5ca5d5a0f..5093d6180 100644
--- a/openlp/plugins/songs/lib/__init__.py
+++ b/openlp/plugins/songs/lib/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -125,4 +125,4 @@ class VerseType(object):
from xml import LyricsXML, SongXMLBuilder, SongXMLParser, OpenLyricsParser
from songstab import SongsTab
-from mediaitem import SongMediaItem
+from mediaitem import SongMediaItem
\ No newline at end of file
diff --git a/openlp/plugins/songs/lib/cclifileimport.py b/openlp/plugins/songs/lib/cclifileimport.py
index 88b9a8569..1b8531755 100644
--- a/openlp/plugins/songs/lib/cclifileimport.py
+++ b/openlp/plugins/songs/lib/cclifileimport.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund, Derek Scotney #
@@ -29,6 +29,7 @@ import os
import chardet
import codecs
+from openlp.core.lib import translate
from songimport import SongImport
log = logging.getLogger(__name__)
@@ -69,8 +70,9 @@ class CCLIFileImport(SongImport):
self.import_wizard.importProgressBar.setMaximum(song_total)
song_count = 1
for filename in self.filenames:
- self.import_wizard.incrementProgressBar(
- u'Importing song %s of %s' % (song_count, song_total))
+ self.import_wizard.incrementProgressBar(unicode(translate(
+ 'SongsPlugin.CCLIFileImport', 'Importing song %d of %d')) %
+ (song_count, song_total))
filename = unicode(filename)
log.debug(u'Importing CCLI File: %s', filename)
lines = []
@@ -86,11 +88,11 @@ class CCLIFileImport(SongImport):
infile = codecs.open(filename, u'r', details['encoding'])
lines = infile.readlines()
ext = os.path.splitext(filename)[1]
- if ext.lower() == ".usr":
+ if ext.lower() == u'.usr':
log.info(u'SongSelect .usr format file found %s: ',
filename)
self.do_import_usr_file(lines)
- elif ext.lower() == ".txt":
+ elif ext.lower() == u'.txt':
log.info(u'SongSelect .txt format file found %s: ',
filename)
self.do_import_txt_file(lines)
@@ -124,7 +126,7 @@ class CCLIFileImport(SongImport):
``Title=``
Contains the song title (e.g. *Title=Above All*)
``Author=``
- Contains a | delimited list of the song authors
+ Contains a | delimited list of the song authors
e.g. *Author=LeBlanc, Lenny | Baloche, Paul*
``Copyright=``
Contains a | delimited list of the song copyrights
@@ -184,8 +186,8 @@ class CCLIFileImport(SongImport):
verse_type = u'O'
check_first_verse_line = True
verse_text = unicode(words_list[counter])
- verse_text = verse_text.replace("/n", "\n")
- verse_lines = verse_text.split(u'\n', 1)
+ verse_text = verse_text.replace(u'/n', u'\n')
+ verse_lines = verse_text.split(u'\n', 1)
if check_first_verse_line:
if verse_lines[0].startswith(u'(PRE-CHORUS'):
verse_type = u'P'
@@ -207,7 +209,7 @@ class CCLIFileImport(SongImport):
author_list = song_author.split(u'|')
for author in author_list:
seperated = author.split(u',')
- self.add_author(seperated[1].strip() + " " + seperated[0].strip())
+ self.add_author(seperated[1].strip() + u' ' + seperated[0].strip())
self.title = song_name
self.copyright = song_copyright
self.ccli_number = song_ccli
diff --git a/openlp/plugins/songs/lib/db.py b/openlp/plugins/songs/lib/db.py
index 987d1dd79..fc3aa06d1 100644
--- a/openlp/plugins/songs/lib/db.py
+++ b/openlp/plugins/songs/lib/db.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -181,4 +181,4 @@ def init_schema(url):
mapper(Topic, topics_table)
metadata.create_all(checkfirst=True)
- return session
+ return session
\ No newline at end of file
diff --git a/openlp/plugins/songs/lib/ewimport.py b/openlp/plugins/songs/lib/ewimport.py
index 6b9b675c5..cb46eb798 100644
--- a/openlp/plugins/songs/lib/ewimport.py
+++ b/openlp/plugins/songs/lib/ewimport.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund, Jeffrey Smith #
@@ -347,4 +347,4 @@ class EasyWorshipSongImport(SongImport):
return u''
return self.memo_file.read(blob_size)
else:
- return 0
+ return 0
\ No newline at end of file
diff --git a/openlp/plugins/songs/lib/importer.py b/openlp/plugins/songs/lib/importer.py
index 63d19b95c..b82e14c12 100644
--- a/openlp/plugins/songs/lib/importer.py
+++ b/openlp/plugins/songs/lib/importer.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -126,4 +126,4 @@ SongFormat.set_availability(SongFormat.OpenLP1, has_openlp1)
SongFormat.set_availability(SongFormat.SongsOfFellowship, has_sof)
SongFormat.set_availability(SongFormat.Generic, has_ooo)
-__all__ = [u'SongFormat']
+__all__ = [u'SongFormat']
\ No newline at end of file
diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py
index e42cb7fa3..cd305877c 100644
--- a/openlp/plugins/songs/lib/mediaitem.py
+++ b/openlp/plugins/songs/lib/mediaitem.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -29,6 +29,7 @@ import locale
import re
from PyQt4 import QtCore, QtGui
+from sqlalchemy.sql import or_
from openlp.core.lib import MediaManagerItem, BaseListWithDnD, Receiver, \
ItemCapabilities, translate, check_item_selected
@@ -36,6 +37,7 @@ from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm, \
SongImportForm
from openlp.plugins.songs.lib import SongXMLParser, OpenLyricsParser
from openlp.plugins.songs.lib.db import Author, Song
+from openlp.core.lib.searchedit import SearchEdit
log = logging.getLogger(__name__)
@@ -88,20 +90,10 @@ class SongMediaItem(MediaManagerItem):
self.SearchTextLabel.setObjectName(u'SearchTextLabel')
self.SearchLayout.setWidget(
0, QtGui.QFormLayout.LabelRole, self.SearchTextLabel)
- self.SearchTextEdit = QtGui.QLineEdit(self)
+ self.SearchTextEdit = SearchEdit(self)
self.SearchTextEdit.setObjectName(u'SearchTextEdit')
self.SearchLayout.setWidget(
0, QtGui.QFormLayout.FieldRole, self.SearchTextEdit)
- self.SearchTypeLabel = QtGui.QLabel(self)
- self.SearchTypeLabel.setAlignment(
- QtCore.Qt.AlignBottom|QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft)
- self.SearchTypeLabel.setObjectName(u'SearchTypeLabel')
- self.SearchLayout.setWidget(
- 1, QtGui.QFormLayout.LabelRole, self.SearchTypeLabel)
- self.SearchTypeComboBox = QtGui.QComboBox(self)
- self.SearchTypeComboBox.setObjectName(u'SearchTypeComboBox')
- self.SearchLayout.setWidget(
- 1, QtGui.QFormLayout.FieldRole, self.SearchTypeComboBox)
self.pageLayout.addLayout(self.SearchLayout)
self.SearchButtonLayout = QtGui.QHBoxLayout()
self.SearchButtonLayout.setMargin(0)
@@ -113,9 +105,6 @@ class SongMediaItem(MediaManagerItem):
self.SearchTextButton = QtGui.QPushButton(self)
self.SearchTextButton.setObjectName(u'SearchTextButton')
self.SearchButtonLayout.addWidget(self.SearchTextButton)
- self.ClearTextButton = QtGui.QPushButton(self)
- self.ClearTextButton.setObjectName(u'ClearTextButton')
- self.SearchButtonLayout.addWidget(self.ClearTextButton)
self.pageLayout.addLayout(self.SearchButtonLayout)
# Signals and slots
QtCore.QObject.connect(Receiver.get_receiver(),
@@ -124,8 +113,6 @@ class SongMediaItem(MediaManagerItem):
QtCore.SIGNAL(u'returnPressed()'), self.onSearchTextButtonClick)
QtCore.QObject.connect(self.SearchTextButton,
QtCore.SIGNAL(u'pressed()'), self.onSearchTextButtonClick)
- QtCore.QObject.connect(self.ClearTextButton,
- QtCore.SIGNAL(u'pressed()'), self.onClearTextButtonClick)
QtCore.QObject.connect(self.SearchTextEdit,
QtCore.SIGNAL(u'textChanged(const QString&)'),
self.onSearchTextEditChanged)
@@ -139,6 +126,11 @@ class SongMediaItem(MediaManagerItem):
QtCore.SIGNAL(u'songs_edit'), self.onRemoteEdit)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'songs_edit_clear'), self.onRemoteEditClear)
+ QtCore.QObject.connect(self.SearchTextEdit,
+ QtCore.SIGNAL(u'cleared()'), self.onClearTextButtonClick)
+ QtCore.QObject.connect(self.SearchTextEdit,
+ QtCore.SIGNAL(u'searchTypeChanged(int)'),
+ self.onSearchTextButtonClick)
def configUpdated(self):
self.searchAsYouType = QtCore.QSettings().value(
@@ -154,39 +146,44 @@ class SongMediaItem(MediaManagerItem):
def retranslateUi(self):
self.SearchTextLabel.setText(
translate('SongsPlugin.MediaItem', 'Search:'))
- self.SearchTypeLabel.setText(
- translate('SongsPlugin.MediaItem', 'Type:'))
- self.ClearTextButton.setText(
- translate('SongsPlugin.MediaItem', 'Clear'))
self.SearchTextButton.setText(
translate('SongsPlugin.MediaItem', 'Search'))
def initialise(self):
- self.SearchTypeComboBox.addItem(
- translate('SongsPlugin.MediaItem', 'Titles'))
- self.SearchTypeComboBox.addItem(
- translate('SongsPlugin.MediaItem', 'Lyrics'))
- self.SearchTypeComboBox.addItem(
- translate('SongsPlugin.MediaItem', 'Authors'))
+ self.SearchTextEdit.setSearchTypes([
+ (1, u':/songs/song_search_all.png', translate('SongsPlugin.MediaItem', 'Entire Song')),
+ (2, u':/songs/song_search_title.png', translate('SongsPlugin.MediaItem', 'Titles')),
+ (3, u':/songs/song_search_lyrics.png', translate('SongsPlugin.MediaItem', 'Lyrics')),
+ (4, u':/songs/song_search_author.png', translate('SongsPlugin.MediaItem', 'Authors'))
+ ])
self.configUpdated()
def onSearchTextButtonClick(self):
search_keywords = unicode(self.SearchTextEdit.displayText())
search_results = []
- search_type = self.SearchTypeComboBox.currentIndex()
- if search_type == 0:
+ # search_type = self.SearchTypeComboBox.currentIndex()
+ search_type = self.SearchTextEdit.currentSearchType()
+ if search_type == 1:
+ log.debug(u'Entire Song Search')
+ search_results = self.parent.manager.get_all_objects(Song,
+ or_(Song.search_title.like(u'%' + self.whitespace.sub(u' ',
+ search_keywords.lower()) + u'%'),
+ Song.search_lyrics.like(u'%' + search_keywords.lower() + \
+ u'%')), Song.search_title.asc())
+ self.displayResultsSong(search_results)
+ if search_type == 2:
log.debug(u'Titles Search')
search_results = self.parent.manager.get_all_objects(Song,
Song.search_title.like(u'%' + self.whitespace.sub(u' ',
search_keywords.lower()) + u'%'), Song.search_title.asc())
self.displayResultsSong(search_results)
- elif search_type == 1:
+ elif search_type == 3:
log.debug(u'Lyrics Search')
search_results = self.parent.manager.get_all_objects(Song,
Song.search_lyrics.like(u'%' + search_keywords.lower() + u'%'),
Song.search_lyrics.asc())
self.displayResultsSong(search_results)
- elif search_type == 2:
+ elif search_type == 4:
log.debug(u'Authors Search')
search_results = self.parent.manager.get_all_objects(Author,
Author.display_name.like(u'%' + search_keywords + u'%'),
@@ -235,7 +232,7 @@ class SongMediaItem(MediaManagerItem):
self.listView.clear()
for author in searchresults:
for song in author.songs:
- song_detail = '%s (%s)' % (author.display_name, song.title)
+ song_detail = u'%s (%s)' % (author.display_name, song.title)
song_name = QtGui.QListWidgetItem(song_detail)
song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id))
self.listView.addItem(song_name)
@@ -255,7 +252,9 @@ class SongMediaItem(MediaManagerItem):
"""
if self.searchAsYouType:
search_length = 1
- if self.SearchTypeComboBox.currentIndex() == 1:
+ if self.SearchTextEdit.currentSearchType() == 1:
+ search_length = 3
+ elif self.SearchTextEdit.currentSearchType() == 3:
search_length = 7
if len(text) > search_length:
self.onSearchTextButtonClick()
@@ -315,16 +314,11 @@ class SongMediaItem(MediaManagerItem):
translate('SongsPlugin.MediaItem',
'You must select an item to delete.')):
items = self.listView.selectedIndexes()
- if len(items) == 1:
- del_message = translate('SongsPlugin.MediaItem',
- 'Are you sure you want to delete the selected song?')
- else:
- del_message = unicode(translate('SongsPlugin.MediaItem',
- 'Are you sure you want to delete the %d selected '
- 'songs?')) % len(items)
ans = QtGui.QMessageBox.question(self,
translate('SongsPlugin.MediaItem', 'Delete Song(s)?'),
- del_message,
+ translate('SongsPlugin.MediaItem',
+ 'Are you sure you want to delete the %n selected song(s)?', '',
+ QtCore.QCoreApplication.CodecForTr, len(items)),
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok|
QtGui.QMessageBox.Cancel),
QtGui.QMessageBox.Ok)
diff --git a/openlp/plugins/songs/lib/olp1import.py b/openlp/plugins/songs/lib/olp1import.py
index 7c01a4c19..69714e773 100644
--- a/openlp/plugins/songs/lib/olp1import.py
+++ b/openlp/plugins/songs/lib/olp1import.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -245,4 +245,4 @@ class OpenLP1SongImport(SongImport):
if not chosen_encoding[1]:
return None
return filter(lambda item: item[1] == chosen_encoding[0],
- encodings)[0][0]
+ encodings)[0][0]
\ No newline at end of file
diff --git a/openlp/plugins/songs/lib/olpimport.py b/openlp/plugins/songs/lib/olpimport.py
index 662a94f5b..e366ddf4b 100644
--- a/openlp/plugins/songs/lib/olpimport.py
+++ b/openlp/plugins/songs/lib/olpimport.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -34,6 +34,7 @@ from sqlalchemy.orm import class_mapper, mapper, relation, scoped_session, \
sessionmaker
from sqlalchemy.orm.exc import UnmappedClassError
+from openlp.core.lib import translate
from openlp.core.lib.db import BaseModel
from openlp.plugins.songs.lib.db import Author, Book, Song, Topic #, MediaFile
from songimport import SongImport
@@ -148,8 +149,9 @@ class OpenLPSongImport(SongImport):
self.import_wizard.importProgressBar.setMaximum(song_total)
song_count = 1
for song in source_songs:
- self.import_wizard.incrementProgressBar(
- u'Importing song %s of %s' % (song_count, song_total))
+ self.import_wizard.incrementProgressBar(unicode(translate(
+ 'SongsPlugin.OpenLPSongImport', 'Importing song %d of %d.')) %
+ (song_count, song_total))
new_song = Song()
new_song.title = song.title
if has_media_files and hasattr(song, 'alternate_title'):
diff --git a/openlp/plugins/songs/lib/oooimport.py b/openlp/plugins/songs/lib/oooimport.py
index 727af2c7b..b467eab65 100644
--- a/openlp/plugins/songs/lib/oooimport.py
+++ b/openlp/plugins/songs/lib/oooimport.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -232,4 +232,4 @@ class OooImport(SongImport):
text += paratext + u'\n'
songs = SongImport.process_songs_text(self.manager, text)
for song in songs:
- song.finish()
+ song.finish()
\ No newline at end of file
diff --git a/openlp/plugins/songs/lib/opensongimport.py b/openlp/plugins/songs/lib/opensongimport.py
index 767fc012a..6a60fcc6c 100644
--- a/openlp/plugins/songs/lib/opensongimport.py
+++ b/openlp/plugins/songs/lib/opensongimport.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -128,7 +128,7 @@ class OpenSongImport(SongImport):
numfiles += len(z.infolist())
else:
numfiles += 1
- log.debug("Total number of files: %d", numfiles)
+ log.debug(u'Total number of files: %d', numfiles)
self.import_wizard.importProgressBar.setMaximum(numfiles)
for filename in self.filenames:
if self.stop_import_flag:
@@ -159,7 +159,7 @@ class OpenSongImport(SongImport):
break
else:
# not a zipfile
- log.info('Direct import %s', filename)
+ log.info(u'Direct import %s', filename)
self.import_wizard.incrementProgressBar(
unicode(translate('SongsPlugin.ImportWizardForm',
'Importing %s...')) % os.path.split(filename)[-1])
diff --git a/openlp/plugins/songs/lib/sofimport.py b/openlp/plugins/songs/lib/sofimport.py
index 320e5c88a..3e6ee8c3a 100644
--- a/openlp/plugins/songs/lib/sofimport.py
+++ b/openlp/plugins/songs/lib/sofimport.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -550,4 +550,4 @@ class SofImport(OooImport):
return 6
if song_number == 1119:
return 7
- return None
+ return None
\ No newline at end of file
diff --git a/openlp/plugins/songs/lib/songbeamerimport.py b/openlp/plugins/songs/lib/songbeamerimport.py
index 651d16a3d..f30c40a09 100644
--- a/openlp/plugins/songs/lib/songbeamerimport.py
+++ b/openlp/plugins/songs/lib/songbeamerimport.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -85,7 +85,7 @@ class SongBeamerImport(SongImport):
"""
Recieve a single file, or a list of files to import.
"""
- if isinstance(self.import_source, list):
+ if isinstance(self.import_source, list):
self.import_wizard.importProgressBar.setMaximum(
len(self.import_source))
for file in self.import_source:
@@ -96,7 +96,7 @@ class SongBeamerImport(SongImport):
read_verses = False
self.file_name = os.path.split(file)[1]
self.import_wizard.incrementProgressBar(
- "Importing %s" % (self.file_name), 0)
+ u'Importing %s' % (self.file_name), 0)
if os.path.isfile(file):
detect_file = open(file, u'r')
details = chardet.detect(detect_file.read(2048))
@@ -126,17 +126,17 @@ class SongBeamerImport(SongImport):
if verse_start:
verse_start = False
if not self.check_verse_marks(line):
- self.current_verse = u'%s\n' % line
+ self.current_verse = line + u'\n'
else:
- self.current_verse += u'%s\n' % line
+ self.current_verse += line + u'\n'
if self.current_verse:
self.replace_html_tags()
self.add_verse(self.current_verse, self.current_verse_type)
if self.check_complete():
self.finish()
- self.import_wizard.incrementProgressBar(u'%s %s...' %
- (translate('SongsPlugin.SongBeamerImport', 'Importing'),
- self.file_name))
+ self.import_wizard.incrementProgressBar(unicode(translate(
+ 'SongsPlugin.SongBeamerImport', 'Importing %s...')) %
+ self.file_name)
return True
def replace_html_tags(self):
@@ -252,7 +252,7 @@ class SongBeamerImport(SongImport):
elif tag_val[0] == u'#TextAlign':
pass
elif tag_val[0] == u'#Title':
- self.title = u'%s' % tag_val[1]
+ self.title = unicode(tag_val[1])
elif tag_val[0] == u'#TitleAlign':
pass
elif tag_val[0] == u'#TitleFontSize':
diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py
index f305b90c7..3a21a5b50 100644
--- a/openlp/plugins/songs/lib/songimport.py
+++ b/openlp/plugins/songs/lib/songimport.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -364,4 +364,4 @@ class SongImport(QtCore.QObject):
if self.theme_name:
print u'THEME: ' + self.theme_name
if self.ccli_number:
- print u'CCLI: ' + self.ccli_number
+ print u'CCLI: ' + self.ccli_number
\ No newline at end of file
diff --git a/openlp/plugins/songs/lib/songstab.py b/openlp/plugins/songs/lib/songstab.py
index 7744a28d3..25c7ba6df 100644
--- a/openlp/plugins/songs/lib/songstab.py
+++ b/openlp/plugins/songs/lib/songstab.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -139,4 +139,4 @@ class SongsTab(SettingsTab):
QtCore.QVariant(self.update_edit))
settings.setValue(u'add song from service',
QtCore.QVariant(self.update_load))
- settings.endGroup()
+ settings.endGroup()
\ No newline at end of file
diff --git a/openlp/plugins/songs/lib/wowimport.py b/openlp/plugins/songs/lib/wowimport.py
index 2f20cf20d..1d5470f9b 100644
--- a/openlp/plugins/songs/lib/wowimport.py
+++ b/openlp/plugins/songs/lib/wowimport.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -32,7 +32,7 @@ import logging
from openlp.plugins.songs.lib.songimport import SongImport
-BLOCK_TYPES = (u'V', u'C', u'B')
+BLOCK_TYPES = (u'V', u'C', u'B')
log = logging.getLogger(__name__)
@@ -111,7 +111,7 @@ class WowImport(SongImport):
Recieve a single file, or a list of files to import.
"""
- if isinstance(self.import_source, list):
+ if isinstance(self.import_source, list):
self.import_wizard.importProgressBar.setMaximum(
len(self.import_source))
for file in self.import_source:
@@ -119,7 +119,7 @@ class WowImport(SongImport):
self.copyright = u''
self.file_name = os.path.split(file)[1]
self.import_wizard.incrementProgressBar(
- "Importing %s" % (self.file_name), 0)
+ u'Importing %s' % (self.file_name), 0)
# Get the song title
self.title = self.file_name.rpartition(u'.')[0]
self.songData = open(file, 'rb')
@@ -167,6 +167,5 @@ class WowImport(SongImport):
self.songData.close()
self.finish()
self.import_wizard.incrementProgressBar(
- "Importing %s" % (self.file_name))
+ u'Importing %s' % (self.file_name))
return True
-
diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py
index 9d98737dc..f00711bb6 100644
--- a/openlp/plugins/songs/lib/xml.py
+++ b/openlp/plugins/songs/lib/xml.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -396,4 +396,4 @@ class OpenLyricsParser(object):
new_author = Author.populate(first_name=name.rsplit(u' ', 1)[0],
last_name=name.rsplit(u' ', 1)[1], display_name=name)
self.manager.save_object(new_author)
- song.authors.append(new_author)
+ song.authors.append(new_author)
\ No newline at end of file
diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py
index b55b05988..545497acb 100644
--- a/openlp/plugins/songs/songsplugin.py
+++ b/openlp/plugins/songs/songsplugin.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -51,7 +51,7 @@ class SongsPlugin(Plugin):
"""
Create and set up the Songs plugin.
"""
- Plugin.__init__(self, u'Songs', u'1.9.3', plugin_helpers)
+ Plugin.__init__(self, u'Songs', u'1.9.4', plugin_helpers)
self.weight = -10
self.manager = Manager(u'songs', init_schema)
self.icon_path = u':/plugins/plugin_songs.png'
@@ -213,45 +213,45 @@ class SongsPlugin(Plugin):
"""
## Name PluginList ##
self.textStrings[StringContent.Name] = {
- u'singular': translate('SongsPlugin', 'Song'),
- u'plural': translate('SongsPlugin', 'Songs')
+ u'singular': translate('SongsPlugin', 'Song', 'name singular'),
+ u'plural': translate('SongsPlugin', 'Songs', 'name plural')
}
## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = {
- u'title': translate('SongsPlugin', 'Songs')
+ u'title': translate('SongsPlugin', 'Songs', 'container title')
}
# Middle Header Bar
- ## New Button ##
+ ## New Action ##
self.textStrings[StringContent.New] = {
u'title': translate('SongsPlugin', 'Add'),
u'tooltip': translate('SongsPlugin',
'Add a new Song')
}
- ## Edit Button ##
+ ## Edit Action ##
self.textStrings[StringContent.Edit] = {
u'title': translate('SongsPlugin', 'Edit'),
u'tooltip': translate('SongsPlugin',
'Edit the selected Song')
}
- ## Delete Button ##
+ ## Delete Action ##
self.textStrings[StringContent.Delete] = {
u'title': translate('SongsPlugin', 'Delete'),
u'tooltip': translate('SongsPlugin',
'Delete the selected Song')
}
- ## Preview ##
+ ## Preview Action ##
self.textStrings[StringContent.Preview] = {
u'title': translate('SongsPlugin', 'Preview'),
u'tooltip': translate('SongsPlugin',
'Preview the selected Song')
}
- ## Live Button ##
+ ## Send Live Action ##
self.textStrings[StringContent.Live] = {
u'title': translate('SongsPlugin', 'Live'),
u'tooltip': translate('SongsPlugin',
'Send the selected Song live')
}
- ## Add to service Button ##
+ ## Add to Service Action ##
self.textStrings[StringContent.Service] = {
u'title': translate('SongsPlugin', 'Service'),
u'tooltip': translate('SongsPlugin',
@@ -266,4 +266,3 @@ class SongsPlugin(Plugin):
self.manager.finalise()
self.toolsReindexItem.setVisible(False)
Plugin.finalise(self)
-
diff --git a/openlp/plugins/songusage/__init__.py b/openlp/plugins/songusage/__init__.py
index 68caa18e6..7f532aada 100644
--- a/openlp/plugins/songusage/__init__.py
+++ b/openlp/plugins/songusage/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -27,4 +27,4 @@
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.
-"""
+"""
\ No newline at end of file
diff --git a/openlp/plugins/songusage/forms/__init__.py b/openlp/plugins/songusage/forms/__init__.py
index b551d7168..ef99bce89 100644
--- a/openlp/plugins/songusage/forms/__init__.py
+++ b/openlp/plugins/songusage/forms/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -25,4 +25,4 @@
###############################################################################
from songusagedeleteform import SongUsageDeleteForm
-from songusagedetailform import SongUsageDetailForm
+from songusagedetailform import SongUsageDetailForm
\ No newline at end of file
diff --git a/openlp/plugins/songusage/forms/songusagedeletedialog.py b/openlp/plugins/songusage/forms/songusagedeletedialog.py
index c29142ab8..af85ad5a9 100644
--- a/openlp/plugins/songusage/forms/songusagedeletedialog.py
+++ b/openlp/plugins/songusage/forms/songusagedeletedialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -61,4 +61,4 @@ class Ui_SongUsageDeleteDialog(object):
def retranslateUi(self, songUsageDeleteDialog):
songUsageDeleteDialog.setWindowTitle(
translate('SongUsagePlugin.SongUsageDeleteForm',
- 'Delete Song Usage Data'))
+ 'Delete Song Usage Data'))
\ No newline at end of file
diff --git a/openlp/plugins/songusage/forms/songusagedeleteform.py b/openlp/plugins/songusage/forms/songusagedeleteform.py
index 45e4e91a9..f83ec8c82 100644
--- a/openlp/plugins/songusage/forms/songusagedeleteform.py
+++ b/openlp/plugins/songusage/forms/songusagedeleteform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -55,4 +55,4 @@ class SongUsageDeleteForm(QtGui.QDialog, Ui_SongUsageDeleteDialog):
deleteDate = self.deleteCalendar.selectedDate().toPyDate()
self.manager.delete_all_objects(SongUsageItem,
SongUsageItem.usagedate <= deleteDate)
- self.close()
+ self.close()
\ No newline at end of file
diff --git a/openlp/plugins/songusage/forms/songusagedetaildialog.py b/openlp/plugins/songusage/forms/songusagedetaildialog.py
index 0eff17783..9383e147d 100644
--- a/openlp/plugins/songusage/forms/songusagedetaildialog.py
+++ b/openlp/plugins/songusage/forms/songusagedetaildialog.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -96,4 +96,4 @@ class Ui_SongUsageDetailDialog(object):
translate('SongUsagePlugin.SongUsageDetailForm', 'to'))
self.fileGroupBox.setTitle(
translate('SongUsagePlugin.SongUsageDetailForm',
- 'Report Location'))
+ 'Report Location'))
\ No newline at end of file
diff --git a/openlp/plugins/songusage/forms/songusagedetailform.py b/openlp/plugins/songusage/forms/songusagedetailform.py
index 18aa1797f..8588ddcff 100644
--- a/openlp/plugins/songusage/forms/songusagedetailform.py
+++ b/openlp/plugins/songusage/forms/songusagedetailform.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -73,7 +73,8 @@ class SongUsageDetailForm(QtGui.QDialog, Ui_SongUsageDetailDialog):
def accept(self):
log.debug(u'Detailed report generated')
- filename = u'usage_detail_%s_%s.txt' % (
+ filename = unicode(translate('SongUsagePlugin.SongUsageDetailForm',
+ 'usage_detail_%s_%s.txt')) % (
self.fromDate.selectedDate().toString(u'ddMMyyyy'),
self.toDate.selectedDate().toString(u'ddMMyyyy'))
usage = self.plugin.manager.get_all_objects(
diff --git a/openlp/plugins/songusage/lib/__init__.py b/openlp/plugins/songusage/lib/__init__.py
index d23d36e5f..c981e023b 100644
--- a/openlp/plugins/songusage/lib/__init__.py
+++ b/openlp/plugins/songusage/lib/__init__.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -25,4 +25,4 @@
###############################################################################
"""
The :mod:`lib` module contains the library functions for the songusage plugin.
-"""
+"""
\ No newline at end of file
diff --git a/openlp/plugins/songusage/lib/db.py b/openlp/plugins/songusage/lib/db.py
index 0865d8682..80079bf85 100644
--- a/openlp/plugins/songusage/lib/db.py
+++ b/openlp/plugins/songusage/lib/db.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -61,4 +61,4 @@ def init_schema(url):
mapper(SongUsageItem, songusage_table)
metadata.create_all(checkfirst=True)
- return session
+ return session
\ No newline at end of file
diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py
index a4081a10c..ec37dc65e 100644
--- a/openlp/plugins/songusage/songusageplugin.py
+++ b/openlp/plugins/songusage/songusageplugin.py
@@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -42,7 +42,7 @@ class SongUsagePlugin(Plugin):
log.info(u'SongUsage Plugin loaded')
def __init__(self, plugin_helpers):
- Plugin.__init__(self, u'SongUsage', u'1.9.3', plugin_helpers)
+ Plugin.__init__(self, u'SongUsage', u'1.9.4', plugin_helpers)
self.weight = -4
self.icon = build_icon(u':/plugins/plugin_songusage.png')
self.manager = None
@@ -175,10 +175,13 @@ class SongUsagePlugin(Plugin):
"""
## Name PluginList ##
self.textStrings[StringContent.Name] = {
- u'singular': translate('SongUsagePlugin', 'SongUsage'),
- u'plural': translate('SongUsagePlugin', 'SongUsage')
+ u'singular': translate('SongUsagePlugin', 'SongUsage',
+ 'name singular'),
+ u'plural': translate('SongUsagePlugin', 'SongUsage',
+ 'name plural')
}
## Name for MediaDockManager, SettingsManager ##
self.textStrings[StringContent.VisibleName] = {
- u'title': translate('SongUsagePlugin', 'SongUsage')
+ u'title': translate('SongUsagePlugin', 'SongUsage',
+ 'container title')
}
diff --git a/resources/i18n/af.ts b/resources/i18n/af.ts
index 72fbe938b..fdbacc00c 100644
--- a/resources/i18n/af.ts
+++ b/resources/i18n/af.ts
@@ -14,12 +14,12 @@ Do you want to continue anyway?
-
+
No Placeholder found
-
+
The alert text does not contain '<>'.
Do want to continue anyway?
@@ -1809,13 +1809,13 @@ Final Credit
OpenLP.ExceptionForm
-
+
Platform: %s
-
+
**OpenLP Bug Report**
Version: %s
@@ -1829,17 +1829,17 @@ Version: %s
-
+
Save Crash Report
-
+
Text files (*.txt *.log *.text)
-
+
*OpenLP Bug Report*
Version: %s
@@ -1859,15 +1859,20 @@ Version: %s
OpenLP.FileRenameForm
-
+
File Rename
-
+
New File Name:
+
+
+ File Copy
+
+
OpenLP.GeneralTab
@@ -1877,122 +1882,122 @@ Version: %s
Algemeen
-
+
Monitors
Monitors
-
+
Select monitor for output display:
Selekteer monitor vir uitgaande vertoning:
-
+
Display if a single screen
Vertoon as dit 'n enkel skerm is
-
+
Application Startup
Applikasie Aanskakel
-
+
Show blank screen warning
Vertoon leë skerm waarskuwing
-
+
Automatically open the last service
Maak vanself die laaste diens oop
-
+
Show the splash screen
Wys die spatsel skerm
-
+
Application Settings
Program Verstellings
-
+
Prompt to save before starting a new service
Vra om te stoor voordat 'n nuwe diens begin word
-
+
Automatically preview next item in service
Wys voorskou van volgende item in diens automaties
-
+
Slide loop delay:
Skyfie herhaal vertraging:
-
+
sec
sek
-
+
CCLI Details
CCLI Inligting
-
+
CCLI number:
CCLI nommer:
-
+
SongSelect username:
SongSelect gebruikersnaam:
-
+
SongSelect password:
SongSelect wagwoord:
-
+
Display Position
Vertoon Posisie
-
+
X
X
-
+
Y
Y
-
+
Height
Hoogte
-
+
Width
Wydte
-
+
Override display position
Oorskryf vertoon posisie
-
+
Screen
Skerm
-
+
primary
primêre
@@ -3043,104 +3048,94 @@ Die inhoud enkodering is nie UTF-8 nie.
Stel in As &Globale Standaard
-
+
%s (default)
%s (standaard)
-
+
You must select a theme to edit.
Kies 'n tema om te redigeer.
-
- You must select a theme to delete.
- Kies 'n tema om uit te wis.
-
-
-
- Delete Confirmation
- Uitwis Bevestiging
-
-
-
+
Error
Fout
-
+
You are unable to delete the default theme.
Die standaard tema kan nie uitgewis word nie.
-
+
You have not selected a theme.
Geen tema is geselekteer nie.
-
+
Save Theme - (%s)
Stoor Tema - (%s)
-
+
Theme Exported
Tema Uitvoer
-
+
Your theme has been successfully exported.
Die tema was suksesvol uitgevoer.
-
+
Theme Export Failed
Tema Uitvoer het Misluk
-
+
Your theme could not be exported due to an error.
Die tema kon nie uitgevoer word nie weens 'n fout.
-
+
Select Theme Import File
Kies Tema Invoer Lêer
-
+
Theme (*.*)
Tema (*.*)
-
+
File is not a valid theme.
The content encoding is not UTF-8.
Lêer is nie 'n geldige tema nie.
Die inhoud enkodering is nie UTF-8 nie.
-
+
File is not a valid theme.
Lêer is nie 'n geldige tema nie.
-
+
Theme Exists
Tema Bestaan Reeds
-
+
A theme with this name already exists. Would you like to overwrite it?
'n Tema met hierdie naam bestaan alreeds. Kan dit oorskryf word?
-
+
Theme %s is used in the %s plugin.
Tema %s is in gebruik deur die %s mini-program.
-
+
Theme %s is used by the service manager.
Tema %s is in gebruik deur die diens bestuurder.
@@ -3160,285 +3155,305 @@ Die inhoud enkodering is nie UTF-8 nie.
-
- Delete %s theme?
+
+ Rename
+
+
+
+
+ Delete
+ Wis uit
+
+
+
+ You must select a theme to %s.
+
+
+
+
+ %s Confirmation
+
+
+
+
+ %s %s theme?
OpenLP.ThemeWizard
-
+
Theme Wizard
-
+
Welcome to the Theme Wizard
-
+
This wizard will help you to create and edit your themes . Click the next button below to start the process by setting up your background.
-
+
Set Up Background
-
+
Set up your theme's background according to the parameters below.
-
+
Background type:
-
+
Solid Color
Soliede Kleur
-
+
Gradient
Gradiënt
-
+
Image
Beeld
-
+
Color:
Kleur:
-
+
Gradient:
Gradiënt:
-
+
Horizontal
Horisontaal
-
+
Vertical
Vertikaal
-
+
Circular
Sirkelvormig
-
+
Top Left - Bottom Right
-
+
Bottom Left - Top Right
-
+
Image:
Beeld:
-
+
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
-
+
Font:
Skrif:
-
+
Size:
Grootte:
-
+
pt
pt
-
+
(%d lines per slide)
-
+
Line Spacing:
-
+
&Outline:
-
+
&Shadow:
-
+
Bold
Vetgedruk
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
Links
-
+
Right
Regs
-
+
Center
Middel
-
+
Vertical Align:
-
+
Top
Bo
-
+
Middle
Middel
-
+
Bottom
Onder
-
+
Transitions
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
X posisie:
-
+
px
px
-
+
Y position:
Y posisie:
-
+
Width:
Wydte:
-
+
Height:
Hoogte:
-
+
Footer Area
-
+
Use default location
Gebruik verstek ligging
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
@@ -3628,12 +3643,12 @@ Die inhoud enkodering is nie UTF-8 nie.
<strong>Afgeleë Mini-program</strong><br/>Die afgeleë mini-program verskaf die vermoë om boodskappe na 'n lopende weergawe van OpenLP op 'n ander rekenaar te stuur deur 'n web-blaaier of deur die afgeleë PPK (API).
-
+
Remote
-
+
Remotes
Afstandbehere
@@ -3904,142 +3919,142 @@ Die inhoud enkodering is nie UTF-8 nie.
SongsPlugin.EditSongForm
-
+
Song Editor
Lied Redigeerder
-
+
&Title:
&Titel:
-
+
Alt&ernate title:
Alt&ernatiewe titel:
-
+
&Lyrics:
&Lirieke:
-
+
&Verse order:
&Vers orde:
-
+
&Add
&Voeg by
-
+
&Edit
R&edigeer
-
+
Ed&it All
Red&igeer Alles
-
+
&Delete
&Wis Uit
-
+
Title && Lyrics
Titel && Lirieke
-
+
Authors
Skrywers
-
+
&Add to Song
&Voeg by Lied
-
+
&Remove
Ve&rwyder
-
+
&Manage Authors, Topics, Song Books
&Bestuur Skrywers, Onderwerpe en Lied Boeke
-
+
Topic
Onderwerp
-
+
A&dd to Song
Voeg by Lie&d
-
+
R&emove
V&erwyder
-
+
Song Book
Lied Boek
-
+
Book:
Boek:
-
+
Number:
Nommer:
-
+
Authors, Topics && Song Book
Skrywers, Onderwerpe && Lied Boek
-
+
Theme
Tema
-
+
New &Theme
Nuwe &Tema
-
+
Copyright Information
Kopiereg Informasie
-
+
©
©
-
+
CCLI number:
CCLI nommer:
-
+
Comments
Kommentaar
-
+
Theme, Copyright Info && Comments
Tema, Kopiereg Informasie && Kommentaar
@@ -4927,17 +4942,17 @@ Usually you are fine with the preselected choise.
SongsPlugin.VerseType
-
+
Verse
Vers
-
+
Chorus
Koor
-
+
Bridge
Brug
@@ -4947,22 +4962,22 @@ Usually you are fine with the preselected choise.
Voor-Refrein
-
+
Intro
Inleiding
-
+
Ending
Slot
-
+
Other
Ander
-
+
PreChorus
diff --git a/resources/i18n/de.ts b/resources/i18n/de.ts
index 29c1344ae..4b544af0f 100644
--- a/resources/i18n/de.ts
+++ b/resources/i18n/de.ts
@@ -14,12 +14,12 @@ Do you want to continue anyway?
-
+
No Placeholder found
-
+
The alert text does not contain '<>'.
Do want to continue anyway?
@@ -1820,13 +1820,13 @@ Bitte senden Sie eine E-Mail an: bugs@openlp.org mit einer auführlichen Beschre
OpenLP.ExceptionForm
-
+
Platform: %s
-
+
**OpenLP Bug Report**
Version: %s
@@ -1840,17 +1840,17 @@ Version: %s
-
+
Save Crash Report
-
+
Text files (*.txt *.log *.text)
-
+
*OpenLP Bug Report*
Version: %s
@@ -1870,15 +1870,20 @@ Version: %s
OpenLP.FileRenameForm
-
+
File Rename
-
+
New File Name:
+
+
+ File Copy
+
+
OpenLP.GeneralTab
@@ -1888,122 +1893,122 @@ Version: %s
Allgemein
-
+
Monitors
Monitore
-
+
Select monitor for output display:
Projektionsbildschirm:
-
+
Display if a single screen
Anzeige, bei nur einem Bildschirm
-
+
Application Startup
Programmstart
-
+
Show blank screen warning
Warnung anzeigen, wenn die Projektion deaktiviert wurde
-
+
Automatically open the last service
Zuletzt benutzten Ablauf beim Start laden
-
+
Show the splash screen
Zeige den Startbildschirm
-
+
Application Settings
Anwendungseinstellungen
-
+
Prompt to save before starting a new service
Aufforderung zum Speichern, bevor ein ein neuer Ablauf gestartet wird
-
+
Automatically preview next item in service
Automatische Vorschau des nächsten Elementes im Ablauf
-
+
Slide loop delay:
Pause während Schleifen:
-
+
sec
sek
-
+
CCLI Details
CCLI-Details
-
+
CCLI number:
CCLI Nummer:
-
+
SongSelect username:
SongSelect Benutzername:
-
+
SongSelect password:
SongSelect Passwort:
-
+
Display Position
Position der Anzeige
-
+
X
X
-
+
Y
Y
-
+
Height
Höhe
-
+
Width
Breite
-
+
Override display position
Position der Anzeige überschreiben
-
+
Screen
Bildschirm
-
+
primary
Hauptbildschirm
@@ -3054,104 +3059,94 @@ Der Inhalt wurde nicht in UTF-8 kodiert.
Setze als &globalen Standard
-
+
%s (default)
%s (Standard)
-
+
You must select a theme to edit.
Bitte wählen Sie ein Design zum Bearbeiten aus.
-
- You must select a theme to delete.
- Bitte wählen Sie ein Design zum Löschen aus.
-
-
-
- Delete Confirmation
- Löschen Bestätigen
-
-
-
+
Error
Fehler
-
+
You are unable to delete the default theme.
Es ist nicht möglich das Standard Design zu entfernen.
-
+
You have not selected a theme.
Sie haben kein Design ausgewählt.
-
+
Save Theme - (%s)
Speichere Design - (%s)
-
+
Theme Exported
Design exportiert
-
+
Your theme has been successfully exported.
Das Design wurde erfolgreich exportiert.
-
+
Theme Export Failed
Design Export fehlgeschlagen
-
+
Your theme could not be exported due to an error.
Dieses Design konnte aufgrund eines Fehlers nicht exportiert werden.
-
+
Select Theme Import File
Wähle Datei für Design Import
-
+
Theme (*.*)
Design (*.*)
-
+
File is not a valid theme.
The content encoding is not UTF-8.
Dies ist kein gültiges Design.
Die Datei ist nicht in UTF-8 kodiert.
-
+
File is not a valid theme.
Diese Datei beinhaltet kein gültiges Design.
-
+
Theme Exists
Design existiert
-
+
A theme with this name already exists. Would you like to overwrite it?
Ein Design mit diesem Namen existiert bereits. Soll es überschrieben werden?
-
+
Theme %s is used in the %s plugin.
Design %s wird in der %s Erweiterung benutzt.
-
+
Theme %s is used by the service manager.
Design %s wird in der Ablaufverwaltung benutzt.
@@ -3171,285 +3166,305 @@ Die Datei ist nicht in UTF-8 kodiert.
-
- Delete %s theme?
+
+ Rename
+
+
+
+
+ Delete
+ Löschen
+
+
+
+ You must select a theme to %s.
+
+
+
+
+ %s Confirmation
+
+
+
+
+ %s %s theme?
OpenLP.ThemeWizard
-
+
Theme Wizard
-
+
Welcome to the Theme Wizard
-
+
This wizard will help you to create and edit your themes . Click the next button below to start the process by setting up your background.
-
+
Set Up Background
-
+
Set up your theme's background according to the parameters below.
-
+
Background type:
-
+
Solid Color
Füllfarbe
-
+
Gradient
Farbverlauf
-
+
Image
Bild
-
+
Color:
Farbe:
-
+
Gradient:
Übergang:
-
+
Horizontal
Horizontal
-
+
Vertical
Vertikal
-
+
Circular
Radial
-
+
Top Left - Bottom Right
-
+
Bottom Left - Top Right
-
+
Image:
Bild:
-
+
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
-
+
Font:
Schriftart:
-
+
Size:
Größe:
-
+
pt
pt
-
+
(%d lines per slide)
-
+
Line Spacing:
-
+
&Outline:
-
+
&Shadow:
-
+
Bold
Fett
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
Links
-
+
Right
Rechts
-
+
Center
Mitte
-
+
Vertical Align:
-
+
Top
Oben
-
+
Middle
Mittig
-
+
Bottom
Unten
-
+
Transitions
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
X position:
-
+
px
px
-
+
Y position:
Y position:
-
+
Width:
Breite:
-
+
Height:
Höhe:
-
+
Footer Area
-
+
Use default location
Benutze Standard Pfad
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
@@ -3639,12 +3654,12 @@ Die Datei ist nicht in UTF-8 kodiert.
<strong>Erweiterung Fernprojektion</strong><br/>Die Erweiterung Fernprojektion ermöglicht es eine laufende Version von OpenLP von einem anderen Computer über einen Web-Browser oder über die Fernprojektions Oberfläche zu steuern.
-
+
Remote
-
+
Remotes
Fernprojektion
@@ -3915,109 +3930,109 @@ Die Datei ist nicht in UTF-8 kodiert.
SongsPlugin.EditSongForm
-
+
Song Editor
Lied bearbeiten
-
+
&Title:
&Titel:
-
+
&Lyrics:
Noten:
-
+
&Add
Hinzufügen
-
+
&Edit
&Bearbeiten
-
+
Ed&it All
Alles Bearbeiten
-
+
&Delete
Löschen
-
+
Title && Lyrics
Titel && Liedtext
-
+
Authors
Autoren
-
+
&Add to Song
Zum Lied &hinzufügen
-
+
&Remove
Entfe&rnen
-
+
Topic
Thema
-
+
A&dd to Song
Zum Lied &hinzufügen
-
+
R&emove
&Entfernen
-
+
Song Book
Liederbuch
-
+
Theme
Design
-
+
New &Theme
Neues Design
-
+
Copyright Information
Kopierrecht Informationen
-
+
©
©
-
+
Comments
Kommentare
-
+
Theme, Copyright Info && Comments
- Design, Copyrightinformationen && Kommentare
+ Design, Copyright && Kommentare
@@ -4105,27 +4120,27 @@ Die Datei ist nicht in UTF-8 kodiert.
%s wurde nirgends in der Versfolge verwendet. Wollen Sie das Lied trotzdem so abspeichern?
-
+
Alt&ernate title:
Alt&ernativer Titel:
-
+
&Verse order:
&Versfolge:
-
+
&Manage Authors, Topics, Song Books
Verwalte Autoren, Themen, Liederbücher
-
+
Authors, Topics && Song Book
Autoren, Themen && Liederbücher
-
+
CCLI number:
CCLI-Nummer:
@@ -4140,12 +4155,12 @@ Die Datei ist nicht in UTF-8 kodiert.
Dieses Thema ist bereits vorhanden.
-
+
Book:
Buch:
-
+
Number:
Nummer:
@@ -4938,17 +4953,17 @@ Usually you are fine with the preselected choise.
SongsPlugin.VerseType
-
+
Verse
Vers
-
+
Chorus
Refrain
-
+
Bridge
Bridge
@@ -4958,22 +4973,22 @@ Usually you are fine with the preselected choise.
Vor-Refrain
-
+
Intro
Intro
-
+
Ending
Schluss
-
+
Other
Weitere
-
+
PreChorus
diff --git a/resources/i18n/en.ts b/resources/i18n/en.ts
index e7f1f6f57..72da457d4 100644
--- a/resources/i18n/en.ts
+++ b/resources/i18n/en.ts
@@ -14,12 +14,12 @@ Do you want to continue anyway?
-
+
No Placeholder found
-
+
The alert text does not contain '<>'.
Do want to continue anyway?
@@ -1674,13 +1674,13 @@ Final Credit
OpenLP.ExceptionForm
-
+
Platform: %s
-
+
**OpenLP Bug Report**
Version: %s
@@ -1694,17 +1694,17 @@ Version: %s
-
+
Save Crash Report
-
+
Text files (*.txt *.log *.text)
-
+
*OpenLP Bug Report*
Version: %s
@@ -1724,15 +1724,20 @@ Version: %s
OpenLP.FileRenameForm
-
+
File Rename
-
+
New File Name:
+
+
+ File Copy
+
+
OpenLP.GeneralTab
@@ -1742,122 +1747,122 @@ Version: %s
-
+
Monitors
-
+
Select monitor for output display:
-
+
Display if a single screen
-
+
Application Startup
-
+
Show blank screen warning
-
+
Automatically open the last service
-
+
Show the splash screen
-
+
Application Settings
-
+
Prompt to save before starting a new service
-
+
Automatically preview next item in service
-
+
Slide loop delay:
-
+
sec
-
+
CCLI Details
-
+
CCLI number:
-
+
SongSelect username:
-
+
SongSelect password:
-
+
Display Position
-
+
X
-
+
Y
-
+
Height
-
+
Width
-
+
Override display position
-
+
Screen
-
+
primary
@@ -2905,103 +2910,93 @@ The content encoding is not UTF-8.
-
+
%s (default)
-
+
You must select a theme to edit.
-
- You must select a theme to delete.
-
-
-
-
- Delete Confirmation
-
-
-
-
+
Error
-
+
You are unable to delete the default theme.
-
+
Theme %s is used in the %s plugin.
-
+
Theme %s is used by the service manager.
-
+
You have not selected a theme.
-
+
Save Theme - (%s)
-
+
Theme Exported
-
+
Your theme has been successfully exported.
-
+
Theme Export Failed
-
+
Your theme could not be exported due to an error.
-
+
Select Theme Import File
-
+
Theme (*.*)
-
+
File is not a valid theme.
The content encoding is not UTF-8.
-
+
File is not a valid theme.
-
+
Theme Exists
-
+
A theme with this name already exists. Would you like to overwrite it?
@@ -3021,285 +3016,305 @@ The content encoding is not UTF-8.
-
- Delete %s theme?
+
+ Rename
+
+
+
+
+ Delete
+
+
+
+
+ You must select a theme to %s.
+
+
+
+
+ %s Confirmation
+
+
+
+
+ %s %s theme?
OpenLP.ThemeWizard
-
+
Theme Wizard
-
+
Welcome to the Theme Wizard
-
+
This wizard will help you to create and edit your themes . Click the next button below to start the process by setting up your background.
-
+
Set Up Background
-
+
Set up your theme's background according to the parameters below.
-
+
Background type:
-
+
Solid Color
-
+
Gradient
-
+
Image
-
+
Color:
-
+
Gradient:
-
+
Horizontal
-
+
Vertical
-
+
Circular
-
+
Top Left - Bottom Right
-
+
Bottom Left - Top Right
-
+
Image:
-
+
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
-
+
Font:
-
+
Size:
-
+
pt
-
+
(%d lines per slide)
-
+
Line Spacing:
-
+
&Outline:
-
+
&Shadow:
-
+
Bold
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
-
+
Right
-
+
Center
-
+
Vertical Align:
-
+
Top
-
+
Middle
-
+
Bottom
-
+
Transitions
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
-
+
px
-
+
Y position:
-
+
Width:
-
+
Height:
-
+
Footer Area
-
+
Use default location
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
@@ -3489,12 +3504,12 @@ The content encoding is not UTF-8.
-
+
Remote
-
+
Remotes
@@ -3765,142 +3780,142 @@ The content encoding is not UTF-8.
SongsPlugin.EditSongForm
-
+
Song Editor
-
+
&Title:
-
+
Alt&ernate title:
-
+
&Lyrics:
-
+
&Verse order:
-
+
&Add
-
+
&Edit
-
+
Ed&it All
-
+
&Delete
-
+
Title && Lyrics
-
+
Authors
-
+
&Add to Song
-
+
&Remove
-
+
&Manage Authors, Topics, Song Books
-
+
Topic
-
+
A&dd to Song
-
+
R&emove
-
+
Song Book
-
+
Book:
-
+
Number:
-
+
Authors, Topics && Song Book
-
+
Theme
-
+
New &Theme
-
+
Copyright Information
-
+
©
-
+
CCLI number:
-
+
Comments
-
+
Theme, Copyright Info && Comments
@@ -4788,17 +4803,17 @@ Usually you are fine with the preselected choise.
SongsPlugin.VerseType
-
+
Verse
-
+
Chorus
-
+
Bridge
@@ -4808,22 +4823,22 @@ Usually you are fine with the preselected choise.
-
+
Intro
-
+
Ending
-
+
Other
-
+
PreChorus
diff --git a/resources/i18n/en_GB.ts b/resources/i18n/en_GB.ts
index 7bf01decf..473d192d0 100644
--- a/resources/i18n/en_GB.ts
+++ b/resources/i18n/en_GB.ts
@@ -14,12 +14,12 @@ Do you want to continue anyway?
-
+
No Placeholder found
-
+
The alert text does not contain '<>'.
Do want to continue anyway?
@@ -1811,13 +1811,13 @@ Final Credit
OpenLP.ExceptionForm
-
+
Platform: %s
-
+
**OpenLP Bug Report**
Version: %s
@@ -1831,17 +1831,17 @@ Version: %s
-
+
Save Crash Report
-
+
Text files (*.txt *.log *.text)
-
+
*OpenLP Bug Report*
Version: %s
@@ -1861,15 +1861,20 @@ Version: %s
OpenLP.FileRenameForm
-
+
File Rename
-
+
New File Name:
+
+
+ File Copy
+
+
OpenLP.GeneralTab
@@ -1879,122 +1884,122 @@ Version: %s
General
-
+
Monitors
Monitors
-
+
Select monitor for output display:
Select monitor for output display:
-
+
Display if a single screen
Display if a single screen
-
+
Application Startup
Application Startup
-
+
Show blank screen warning
Show blank screen warning
-
+
Automatically open the last service
Automatically open the last service
-
+
Show the splash screen
Show the splash screen
-
+
Application Settings
Application Settings
-
+
Prompt to save before starting a new service
Prompt to save before starting a new service
-
+
Automatically preview next item in service
Automatically preview next item in service
-
+
Slide loop delay:
Slide loop delay:
-
+
sec
sec
-
+
CCLI Details
CCLI Details
-
+
CCLI number:
CCLI number:
-
+
SongSelect username:
SongSelect username:
-
+
SongSelect password:
SongSelect password:
-
+
Display Position
Display Position
-
+
X
X
-
+
Y
Y
-
+
Height
Height
-
+
Width
Width
-
+
Override display position
Override display position
-
+
Screen
Screen
-
+
primary
primary
@@ -3044,104 +3049,94 @@ The content encoding is not UTF-8.
Set As &Global Default
-
+
%s (default)
%s (default)
-
+
You must select a theme to edit.
You must select a theme to edit.
-
- You must select a theme to delete.
- You must select a theme to delete.
-
-
-
- Delete Confirmation
- Delete Confirmation
-
-
-
+
Error
Error
-
+
You are unable to delete the default theme.
You are unable to delete the default theme.
-
+
You have not selected a theme.
You have not selected a theme.
-
+
Save Theme - (%s)
Save Theme - (%s)
-
+
Theme Exported
Theme Exported
-
+
Your theme has been successfully exported.
Your theme has been successfully exported.
-
+
Theme Export Failed
Theme Export Failed
-
+
Your theme could not be exported due to an error.
Your theme could not be exported due to an error.
-
+
Select Theme Import File
Select Theme Import File
-
+
Theme (*.*)
Theme (*.*)
-
+
File is not a valid theme.
The content encoding is not UTF-8.
File is not a valid theme.
The content encoding is not UTF-8.
-
+
File is not a valid theme.
File is not a valid theme.
-
+
Theme Exists
Theme Exists
-
+
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?
-
+
Theme %s is used in the %s plugin.
Theme %s is used in the %s plugin.
-
+
Theme %s is used by the service manager.
Theme %s is used by the service manager.
@@ -3161,285 +3156,305 @@ The content encoding is not UTF-8.
-
- Delete %s theme?
+
+ Rename
+
+
+
+
+ Delete
+ Delete
+
+
+
+ You must select a theme to %s.
+
+
+
+
+ %s Confirmation
+
+
+
+
+ %s %s theme?
OpenLP.ThemeWizard
-
+
Theme Wizard
-
+
Welcome to the Theme Wizard
-
+
This wizard will help you to create and edit your themes . Click the next button below to start the process by setting up your background.
-
+
Set Up Background
-
+
Set up your theme's background according to the parameters below.
-
+
Background type:
-
+
Solid Color
Solid Colour
-
+
Gradient
Gradient
-
+
Image
Image
-
+
Color:
Colour:
-
+
Gradient:
Gradient:
-
+
Horizontal
Horizontal
-
+
Vertical
Vertical
-
+
Circular
Circular
-
+
Top Left - Bottom Right
-
+
Bottom Left - Top Right
-
+
Image:
Image:
-
+
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
-
+
Font:
Font:
-
+
Size:
Size:
-
+
pt
pt
-
+
(%d lines per slide)
-
+
Line Spacing:
-
+
&Outline:
-
+
&Shadow:
-
+
Bold
Bold
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
Left
-
+
Right
Right
-
+
Center
Centre
-
+
Vertical Align:
-
+
Top
Top
-
+
Middle
Middle
-
+
Bottom
Bottom
-
+
Transitions
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
X position:
-
+
px
px
-
+
Y position:
Y position:
-
+
Width:
Width:
-
+
Height:
Height:
-
+
Footer Area
-
+
Use default location
Use default location
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
@@ -3629,12 +3644,12 @@ The content encoding is not UTF-8.
<strong>Remote Plugin</strong><br />The remote plugin provides the ability to send messages to a running version of OpenLP on a different computer via a web browser or through the remote API.
-
+
Remote
-
+
Remotes
Remotes
@@ -3905,142 +3920,142 @@ The content encoding is not UTF-8.
SongsPlugin.EditSongForm
-
+
Song Editor
Song Editor
-
+
&Title:
&Title:
-
+
Alt&ernate title:
Alt&ernate 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, Song Books
&Manage Authors, Topics, Song Books
-
+
Topic
Topic
-
+
A&dd to Song
A&dd to Song
-
+
R&emove
R&emove
-
+
Song Book
Song Book
-
+
Book:
Book:
-
+
Number:
Number:
-
+
Authors, Topics && Song Book
Authors, Topics && Song Book
-
+
Theme
Theme
-
+
New &Theme
New &Theme
-
+
Copyright Information
Copyright Information
-
+
©
©
-
+
CCLI number:
CCLI number:
-
+
Comments
Comments
-
+
Theme, Copyright Info && Comments
Theme, Copyright Info && Comments
@@ -4928,17 +4943,17 @@ Usually you are fine with the preselected choise.
SongsPlugin.VerseType
-
+
Verse
Verse
-
+
Chorus
Chorus
-
+
Bridge
Bridge
@@ -4948,22 +4963,22 @@ Usually you are fine with the preselected choise.
Pre-Chorus
-
+
Intro
Intro
-
+
Ending
Ending
-
+
Other
Other
-
+
PreChorus
diff --git a/resources/i18n/en_ZA.ts b/resources/i18n/en_ZA.ts
index 24aab6f39..fe24a3670 100644
--- a/resources/i18n/en_ZA.ts
+++ b/resources/i18n/en_ZA.ts
@@ -5,7 +5,7 @@
No Parameter found
-
+ No Parameter found
@@ -14,12 +14,12 @@ Do you want to continue anyway?
-
+
No Placeholder found
-
+
The alert text does not contain '<>'.
Do want to continue anyway?
@@ -1820,13 +1820,13 @@ Final Credit
OpenLP.ExceptionForm
-
+
Platform: %s
-
+
**OpenLP Bug Report**
Version: %s
@@ -1840,17 +1840,17 @@ Version: %s
-
+
Save Crash Report
-
+
Text files (*.txt *.log *.text)
-
+
*OpenLP Bug Report*
Version: %s
@@ -1870,15 +1870,20 @@ Version: %s
OpenLP.FileRenameForm
-
+
File Rename
File Rename
-
+
New File Name:
New File Name:
+
+
+ File Copy
+
+
OpenLP.GeneralTab
@@ -1888,122 +1893,122 @@ Version: %s
General
-
+
Monitors
Monitors
-
+
Select monitor for output display:
Select monitor for output display:
-
+
Display if a single screen
Display if a single screen
-
+
Application Startup
Application Startup
-
+
Show blank screen warning
Show blank screen warning
-
+
Automatically open the last service
Automatically open the last service
-
+
Show the splash screen
Show the splash screen
-
+
Application Settings
Application Settings
-
+
CCLI Details
CCLI Details
-
+
CCLI number:
CCLI number:
-
+
SongSelect username:
SongSelect username:
-
+
SongSelect password:
SongSelect password:
-
+
Display Position
Display Position
-
+
X
X
-
+
Y
Y
-
+
Height
Height
-
+
Width
Width
-
+
Override display position
Override display position
-
+
Screen
Screen
-
+
primary
primary
-
+
Prompt to save before starting a new service
Prompt to save before starting a new service
-
+
Automatically preview next item in service
Automatically preview next item in service
-
+
Slide loop delay:
Slide loop delay:
-
+
sec
sec
@@ -3054,104 +3059,94 @@ The content encoding is not UTF-8.
Set As &Global Default
-
+
%s (default)
%s (default)
-
+
You must select a theme to edit.
You must select a theme to edit.
-
- You must select a theme to delete.
- You must select a theme to delete.
-
-
-
- Delete Confirmation
- Delete Confirmation
-
-
-
+
Error
Error
-
+
You are unable to delete the default theme.
You are unable to delete the default theme.
-
+
You have not selected a theme.
You have not selected a theme.
-
+
Save Theme - (%s)
Save Theme - (%s)
-
+
Theme Exported
Theme Exported
-
+
Your theme has been successfully exported.
Your theme has been successfully exported.
-
+
Theme Export Failed
Theme Export Failed
-
+
Your theme could not be exported due to an error.
Your theme could not be exported due to an error.
-
+
Select Theme Import File
Select Theme Import File
-
+
Theme (*.*)
Theme (*.*)
-
+
File is not a valid theme.
The content encoding is not UTF-8.
File is not a valid theme.
The content encoding is not UTF-8.
-
+
File is not a valid theme.
File is not a valid theme.
-
+
Theme Exists
Theme Exists
-
+
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?
-
+
Theme %s is used in the %s plugin.
Theme %s is used in the %s plugin.
-
+
Theme %s is used by the service manager.
Theme %s is used by the service manager.
@@ -3171,285 +3166,305 @@ The content encoding is not UTF-8.
&Export Theme
-
- Delete %s theme?
- Delete %s theme?
+
+ Rename
+
+
+
+
+ Delete
+ Delete
+
+
+
+ You must select a theme to %s.
+
+
+
+
+ %s Confirmation
+
+
+
+
+ %s %s theme?
+
OpenLP.ThemeWizard
-
+
Theme Wizard
Theme Wizard
-
+
Welcome to the Theme Wizard
Welcome to the Theme Wizard
-
+
This wizard will help you to create and edit your themes . Click the next button below to start the process by setting up your background.
This wizard will help you to create and edit your themes . Click the next button below to start the process by setting up your background.
-
+
Set Up Background
Set Up Background
-
+
Set up your theme's background according to the parameters below.
Set up your theme's background according to the parameters below.
-
+
Background type:
Background type:
-
+
Solid Color
Solid Colour
-
+
Gradient
Gradient
-
+
Image
Image
-
+
Color:
Color:
-
+
Gradient:
Gradient:
-
+
Horizontal
Horizontal
-
+
Vertical
Vertical
-
+
Circular
Circular
-
+
Top Left - Bottom Right
Top Left - Bottom Right
-
+
Bottom Left - Top Right
Bottom Left - Top Right
-
+
Image:
Image:
-
+
Main Area Font Details
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
Define the font and display characteristics for the Display text
-
+
Font:
Font:
-
+
Size:
Size:
-
+
pt
pt
-
+
(%d lines per slide)
(%d lines per slide)
-
+
Line Spacing:
Line Spacing:
-
+
&Outline:
&Outline:
-
+
&Shadow:
&Shadow:
-
+
Bold
Bold
-
+
Italic
Italic
-
+
Footer Area Font Details
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
Text Formatting Details
-
+
Allows additional display formatting information to be defined
Allows additional display formatting information to be defined
-
+
Horizontal Align:
Horizontal Align:
-
+
Left
Left
-
+
Right
Right
-
+
Center
Centre
-
+
Top
Top
-
+
Middle
Middle
-
+
Bottom
Bottom
-
+
Transitions
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
X position:
-
+
px
px
-
+
Y position:
Y position:
-
+
Width:
Width:
-
+
Height:
Height:
-
+
Footer Area
-
+
Use default location
Use default location
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
-
+
Vertical Align:
@@ -3639,12 +3654,12 @@ The content encoding is not UTF-8.
<strong>Remote Plugin</strong><br />The remote plugin provides the ability to send messages to a running version of OpenLP on a different computer via a web browser or through the remote API.
-
+
Remote
-
+
Remotes
Remotes
@@ -3915,117 +3930,117 @@ The content encoding is not UTF-8.
SongsPlugin.EditSongForm
-
+
Song Editor
Song Editor
-
+
&Title:
&Title:
-
+
&Lyrics:
&Lyrics:
-
+
&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, Song Books
&Manage Authors, Topics, Song Books
-
+
Topic
Topic
-
+
A&dd to Song
A&dd to Song
-
+
R&emove
R&emove
-
+
Song Book
Song Book
-
+
Authors, Topics && Song Book
Authors, Topics && Song Book
-
+
Theme
Theme
-
+
New &Theme
New &Theme
-
+
Copyright Information
Copyright Information
-
+
©
©
-
+
Comments
Comments
-
+
Theme, Copyright Info && Comments
Theme, Copyright Info && Comments
@@ -4125,27 +4140,27 @@ The content encoding is not UTF-8.
This song book does not exist, do you want to add it?
-
+
Alt&ernate title:
Alt&ernate title:
-
+
&Verse order:
&Verse order:
-
+
CCLI number:
CCLI number:
-
+
Book:
Book:
-
+
Number:
Number:
@@ -4938,17 +4953,17 @@ Usually you are fine with the preselected choise.
SongsPlugin.VerseType
-
+
Verse
Verse
-
+
Chorus
Chorus
-
+
Bridge
Bridge
@@ -4958,22 +4973,22 @@ Usually you are fine with the preselected choise.
Pre-Chorus
-
+
Intro
Intro
-
+
Ending
Ending
-
+
Other
Other
-
+
PreChorus
diff --git a/resources/i18n/es.ts b/resources/i18n/es.ts
index a14dc033c..07fc5678b 100644
--- a/resources/i18n/es.ts
+++ b/resources/i18n/es.ts
@@ -14,12 +14,12 @@ Do you want to continue anyway?
-
+
No Placeholder found
-
+
The alert text does not contain '<>'.
Do want to continue anyway?
@@ -1674,13 +1674,13 @@ Final Credit
OpenLP.ExceptionForm
-
+
Platform: %s
-
+
**OpenLP Bug Report**
Version: %s
@@ -1694,17 +1694,17 @@ Version: %s
-
+
Save Crash Report
-
+
Text files (*.txt *.log *.text)
-
+
*OpenLP Bug Report*
Version: %s
@@ -1724,15 +1724,20 @@ Version: %s
OpenLP.FileRenameForm
-
+
File Rename
-
+
New File Name:
+
+
+ File Copy
+
+
OpenLP.GeneralTab
@@ -1742,122 +1747,122 @@ Version: %s
General
-
+
Monitors
Monitores
-
+
Select monitor for output display:
Seleccionar monitor para visualizar la salida:
-
+
Display if a single screen
-
+
Application Startup
Inicio de la Aplicación
-
+
Show blank screen warning
Mostrar advertencia de pantalla en blanco
-
+
Automatically open the last service
Abrir automáticamente el último servicio
-
+
Show the splash screen
Mostrar pantalla de bienvenida
-
+
Application Settings
Configuración del Programa
-
+
Prompt to save before starting a new service
-
+
Automatically preview next item in service
-
+
Slide loop delay:
-
+
sec
-
+
CCLI Details
Detalles de CCLI
-
+
CCLI number:
-
+
SongSelect username:
-
+
SongSelect password:
-
+
Display Position
-
+
X
-
+
Y
-
+
Height
-
+
Width
-
+
Override display position
-
+
Screen
Pantalla
-
+
primary
primario
@@ -2905,103 +2910,93 @@ The content encoding is not UTF-8.
-
+
%s (default)
-
+
You must select a theme to edit.
-
- You must select a theme to delete.
-
-
-
-
- Delete Confirmation
-
-
-
-
+
Error
Error
-
+
You are unable to delete the default theme.
-
+
You have not selected a theme.
-
+
Save Theme - (%s)
Guardar Tema - (%s)
-
+
Theme Exported
-
+
Your theme has been successfully exported.
-
+
Theme Export Failed
-
+
Your theme could not be exported due to an error.
-
+
Select Theme Import File
Seleccione el Archivo de Tema a Importar
-
+
Theme (*.*)
-
+
File is not a valid theme.
The content encoding is not UTF-8.
-
+
File is not a valid theme.
-
+
Theme Exists
Ya existe el Tema
-
+
A theme with this name already exists. Would you like to overwrite it?
-
+
Theme %s is used in the %s plugin.
-
+
Theme %s is used by the service manager.
@@ -3021,285 +3016,305 @@ The content encoding is not UTF-8.
-
- Delete %s theme?
+
+ Rename
+
+
+
+
+ Delete
+
+
+
+
+ You must select a theme to %s.
+
+
+
+
+ %s Confirmation
+
+
+
+
+ %s %s theme?
OpenLP.ThemeWizard
-
+
Theme Wizard
-
+
Welcome to the Theme Wizard
-
+
This wizard will help you to create and edit your themes . Click the next button below to start the process by setting up your background.
-
+
Set Up Background
-
+
Set up your theme's background according to the parameters below.
-
+
Background type:
-
+
Solid Color
Color Sólido
-
+
Gradient
Gradiente
-
+
Image
Imagen
-
+
Color:
-
+
Gradient:
-
+
Horizontal
Horizontal
-
+
Vertical
Vertical
-
+
Circular
Circular
-
+
Top Left - Bottom Right
-
+
Bottom Left - Top Right
-
+
Image:
Imagen:
-
+
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
-
+
Font:
Fuente:
-
+
Size:
Tamaño:
-
+
pt
pt
-
+
(%d lines per slide)
-
+
Line Spacing:
-
+
&Outline:
-
+
&Shadow:
-
+
Bold
Negrita
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
Izquierda
-
+
Right
Derecha
-
+
Center
Centro
-
+
Vertical Align:
-
+
Top
Superior
-
+
Middle
Medio
-
+
Bottom
Inferior
-
+
Transitions
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
-
+
px
px
-
+
Y position:
-
+
Width:
Ancho:
-
+
Height:
Altura:
-
+
Footer Area
-
+
Use default location
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
@@ -3489,12 +3504,12 @@ The content encoding is not UTF-8.
-
+
Remote
-
+
Remotes
Remotas
@@ -3765,142 +3780,142 @@ The content encoding is not UTF-8.
SongsPlugin.EditSongForm
-
+
Song Editor
Editor de Canción
-
+
&Title:
-
+
Alt&ernate title:
-
+
&Lyrics:
-
+
&Verse order:
-
+
&Add
-
+
&Edit
&Editar
-
+
Ed&it All
-
+
&Delete
&Eliminar
-
+
Title && Lyrics
Título && Letra
-
+
Authors
Autores
-
+
&Add to Song
&Agregar a Canción
-
+
&Remove
&Quitar
-
+
&Manage Authors, Topics, Song Books
-
+
Topic
Categoría
-
+
A&dd to Song
A&gregar a Canción
-
+
R&emove
&Quitar
-
+
Song Book
Himnario
-
+
Book:
Libro:
-
+
Number:
-
+
Authors, Topics && Song Book
-
+
Theme
Tema
-
+
New &Theme
-
+
Copyright Information
Información de Derechos de Autor
-
+
©
-
+
CCLI number:
-
+
Comments
Comentarios
-
+
Theme, Copyright Info && Comments
Tema, Derechos de Autor && Comentarios
@@ -4788,17 +4803,17 @@ Usually you are fine with the preselected choise.
SongsPlugin.VerseType
-
+
Verse
Verso
-
+
Chorus
Coro
-
+
Bridge
Puente
@@ -4808,22 +4823,22 @@ Usually you are fine with the preselected choise.
Pre-Coro
-
+
Intro
Intro
-
+
Ending
Final
-
+
Other
Otro
-
+
PreChorus
diff --git a/resources/i18n/et.ts b/resources/i18n/et.ts
index cc05aefdf..f9948ec1a 100644
--- a/resources/i18n/et.ts
+++ b/resources/i18n/et.ts
@@ -5,24 +5,26 @@
No Parameter found
-
+ Ühtegi parameetrit ei leitud
You have not entered a parameter to be replaced.
Do you want to continue anyway?
-
+ Sa ei ole sisestanud parameetrit, mida asendada.
+Kas tahad sellegipoolest jätkata?
-
+
No Placeholder found
-
+ Ühtegi kohahoidjat ei leitud
-
+
The alert text does not contain '<>'.
Do want to continue anyway?
-
+ Teate tekst ei sisalda '<>' märke.
+Kas tahad sellegipoolest jätkata?
@@ -45,7 +47,7 @@ Do want to continue anyway?
Alert
-
+ Teade
@@ -108,7 +110,7 @@ Do want to continue anyway?
&Parameter:
-
+ &Parameeter:
@@ -202,7 +204,7 @@ Do want to continue anyway?
You cannot combine single and second bible verses. Do you want to delete your search results and start a new search?
-
+ Ühe- ja kahekeelseid piiblisalme pole võimalik kombineerida. Kas sa tahad kustutada otsingutulemused ja alustada uut otsingut?
@@ -230,22 +232,22 @@ Do want to continue anyway?
Import
-
+ Impordi
Import a Bible
-
+ Piibli importimine
Add
-
+ Lisa
Add a new Bible
-
+ Uue Piibli lisamine
@@ -255,7 +257,7 @@ Do want to continue anyway?
Edit the selected Bible
-
+ Valitud Piibli muutmine
@@ -265,7 +267,7 @@ Do want to continue anyway?
Delete the selected Bible
-
+ Valitud Piibli kustutamine
@@ -275,7 +277,7 @@ Do want to continue anyway?
Preview the selected Bible
-
+ Valitud Piibli eelvaade
@@ -285,17 +287,17 @@ Do want to continue anyway?
Send the selected Bible live
-
+ Valitud Piibli saatmine ekraanile
Service
-
+ Teenistus
Add the selected Bible to the service
-
+ Valitud Piibli lisamine teenistusse
@@ -308,7 +310,7 @@ Do want to continue anyway?
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.
-
+ Nõutud raamatud ei leitud sellest Piiblist. Kontrolli õigekirja ning kas tegemist on terve Piibli või ühe testamendiga.
@@ -328,23 +330,32 @@ Book Chapter:Verse-Verse
Book Chapter:Verse-Verse,Verse-Verse
Book Chapter:Verse-Verse,Chapter:Verse-Verse
Book Chapter:Verse-Chapter:Verse
-
+ Sinu kirjakohaviide on vigane või pole OpenLP poolt toetatud vormingus. Veendu, et viide vastab ühele järgnevatest mustritest:
+
+Raamat peatükk
+Raamat peatükk-peatükk
+Raamat peatükk:salm-salm
+Raamat peatükk:salm-salm,salm-salm
+Raamat peatükk:salm-salm,peatükk:salm-salm
+Raamat peatükk:salm-peatükk:salm
+
Web Bible cannot be used
-
+ Veebipiiblit pole võimalik kasutada
Text Search is not available with Web Bibles.
-
+ Tekstiotsing veebipiiblist pole võimalik.
You did not enter a search keyword.
You can separate different keywords by a space to search for all of your keywords and you can separate them by a comma to search for one of them.
-
+ Sa ei sisestanud otsingusõna.
+Sa võid eraldada võtmesõnad tühikuga, et otsida neid kõiki, või eraldada need komaga, et otsitaks ühte neist.
@@ -419,7 +430,7 @@ Muudatused ei rakendu juba teenistusesse lisatud salmidele.
Display second Bible verses
-
+ Piiblit kuvatakse kahes keeles
@@ -690,18 +701,19 @@ Muudatused ei rakendu juba teenistusesse lisatud salmidele.
Open openlp.org 1.x Bible
-
+ Ava openlp.org 1.x Piibel
Starting Registering bible...
-
+ Piibli registreerimise alustamine...
Registered bible. Please note, that verses will be downloaded on
demand and thus an internet connection is required.
-
+ Piibel on registreeritud. Pane tähele, et salmid laaditakse alla
+vajadusel, seetõttu on vajalik internetiühendus.
@@ -711,17 +723,17 @@ demand and thus an internet connection is required.
Permissions:
-
+ Õigused:
CSV File
-
+ CSV fail
openlp.org 1.x bible
-
+ openlp.org 1.x Piibel
@@ -731,7 +743,7 @@ demand and thus an internet connection is required.
Bibleserver
-
+ Piibliserver
@@ -844,7 +856,7 @@ demand and thus an internet connection is required.
Second:
-
+ Teine:
@@ -868,7 +880,7 @@ demand and thus an internet connection is required.
Detecting encoding (this may take a few minutes)...
-
+ Kooditabeli tuvastamine (see võib võtta mõne minuti)...
@@ -1023,37 +1035,37 @@ demand and thus an internet connection is required.
Customs
-
+ Kohandatud
Import
-
+ Impordi
Import a Custom
-
+ Impordi kohandatud
Load
-
+ Laadi
Load a new Custom
-
+ Laadi uus kohandatud
Add
-
+ Lisa
Add a new Custom
-
+ Lisa uus kohandatud
@@ -1063,7 +1075,7 @@ demand and thus an internet connection is required.
Edit the selected Custom
-
+ Muuda valitud kohandatut
@@ -1073,7 +1085,7 @@ demand and thus an internet connection is required.
Delete the selected Custom
-
+ Kustuta valitud kohandatud
@@ -1083,7 +1095,7 @@ demand and thus an internet connection is required.
Preview the selected Custom
-
+ Valitud kohandatu eelvaade
@@ -1093,17 +1105,17 @@ demand and thus an internet connection is required.
Send the selected Custom live
-
+ Valitud kohandatu saatmine ekraanile
Service
-
+ Teenistus
Add the selected Custom to the service
-
+ Valitud kohandatud slaidi lisamine teenistusse
@@ -1121,27 +1133,27 @@ demand and thus an internet connection is required.
Images
-
+ Pildid
Load
-
+ Laadi
Load a new Image
-
+ Uue pildi laadimine
Add
-
+ Lisa
Add a new Image
-
+ Uue pildi lisamine
@@ -1151,7 +1163,7 @@ demand and thus an internet connection is required.
Edit the selected Image
-
+ Valitud pildi muutmine
@@ -1161,7 +1173,7 @@ demand and thus an internet connection is required.
Delete the selected Image
-
+ Valitud pildi kustutamine
@@ -1171,7 +1183,7 @@ demand and thus an internet connection is required.
Preview the selected Image
-
+ Valitud pildi eelvaatlemine
@@ -1181,17 +1193,17 @@ demand and thus an internet connection is required.
Send the selected Image live
-
+ Valitud pildi saatmine ekraanile
Service
-
+ Teenistus
Add the selected Image to the service
-
+ Valitud pildi lisamine teenistusele
@@ -1257,22 +1269,22 @@ demand and thus an internet connection is required.
Load
-
+ Laadi
Load a new Media
-
+ Uue meedia laadimine
Add
-
+ Lisa
Add a new Media
-
+ Uue meedia lisamine
@@ -1282,7 +1294,7 @@ demand and thus an internet connection is required.
Edit the selected Media
-
+ Valitud meedia muutmine
@@ -1292,7 +1304,7 @@ demand and thus an internet connection is required.
Delete the selected Media
-
+ Valitud meedia kustutamine
@@ -1302,7 +1314,7 @@ demand and thus an internet connection is required.
Preview the selected Media
-
+ Valitud meedia eelvaatlus
@@ -1312,17 +1324,17 @@ demand and thus an internet connection is required.
Send the selected Media live
-
+ Valitud meedia saatmine ekraanile
Service
-
+ Teenistus
Add the selected Media to the service
-
+ Valitud meedia lisamine teenistusse.
@@ -1363,12 +1375,12 @@ demand and thus an internet connection is required.
Media Display
-
+ Meediakuva
Use Phonon for video playback
-
+ Phononi kasutamine video esitamiseks
@@ -1749,7 +1761,54 @@ Final Credit
on the cross, setting us free from sin. We
bring this software to you for free because
He has set us free.
-
+ Projekti juht
+Raoul "superfly" Snyman
+
+Arendajad
+Tim "TRB143" Bentley
+Jonathan "gushie" Corwin
+Michael "cocooncrash" Gorven
+Scott "sguerrieri" Guerrieri
+Raoul "superfly" Snyman
+Martin "mijiti" Thompson
+Jon "Meths" Tibble
+
+Abilised
+Meinert "m2j" Jordan
+Andreas "googol" Preikschat
+Christian "crichter" Richter
+Philip "Phill" Ridout
+Maikel Stuivenberg
+Carsten "catini" Tingaard
+Frode "frodus" Woldsund
+
+Testijad
+Philip "Phill" Ridout
+Wesley "wrst" Stout (lead)
+
+Pakendajad
+Thomas "tabthorpe" Abthorpe (FreeBSD)
+Tim "TRB143" Bentley (Fedora)
+Michael "cocooncrash" Gorven (Ubuntu)
+Matthias "matthub" Hub (Mac OS X)
+Raoul "superfly" Snyman (Windows, Ubuntu)
+
+Kasutatud tehnoloogiad
+Python: http://www.python.org/
+Qt4: http://qt.nokia.com/
+PyQt4: http://www.riverbankcomputing.co.uk/software/pyqt/intro
+Oxygeni ikoonid: http://oxygen-icons.org/
+
+Lõpptänu
+"Sest nõnda on Jumal maailma armastanud,
+et ta oma ainusündinud Poja on andnud,
+et ükski, kes temasse usub, ei hukkuks,
+vaid et tal oleks igavene elu. -- Johannese 3:16
+
+Lõpuks suurim tänu kuulub Jumalale meie Isale,
+kes saatis oma Poja ristile surema, et vabastada
+meid patust. Me anname selle tarkvara sulle
+tasuta, sest Tema on teinud meid vabaks.
@@ -1777,12 +1836,12 @@ Final Credit
Double-click to send items straight to live
-
+ Topeltklõps otse ekraanile saatmiseks
Expand new service items on creation
-
+ Uued teenistuse kirjed on loomisel laiendatud
@@ -1800,24 +1859,25 @@ Final Credit
Send E-Mail
-
+ Saada e-kiri
Save to File
-
+ Salvesta faili
OpenLP.ExceptionForm
-
+
Platform: %s
-
+ Platvorm: %s
+
-
+
**OpenLP Bug Report**
Version: %s
@@ -1828,20 +1888,29 @@ Version: %s
--- Library Versions ---
%s
-
+ **OpenLP vearaport**
+versioon: %s
+
+--- Exception Traceback ---
+%s
+--- System information ---
+%s
+--- Library Versions ---
+%s
+
-
+
Save Crash Report
-
+ Vearaporti salvestamine
-
+
Text files (*.txt *.log *.text)
-
+ Tekstifailid (*.txt *.log *.text)
-
+
*OpenLP Bug Report*
Version: %s
@@ -1855,19 +1924,36 @@ Version: %s
--- Library Versions ---
%s
-
+ *OpenLP vearaport*
+versioon: %s
+
+--- Palun sisesta vea kirjeldus järgmistele ridadele. ---
+
+
+--- Exception Traceback ---
+%s
+--- System information ---
+%s
+--- Library Versions ---
+%s
+
OpenLP.FileRenameForm
-
+
File Rename
-
+ Faili ümbernimetamine
-
+
New File Name:
+ Uue faili nimi:
+
+
+
+ File Copy
@@ -1879,122 +1965,122 @@ Version: %s
Üldine
-
+
Monitors
Monitorid
-
+
Select monitor for output display:
Vali väljundkuva ekraan:
-
+
Display if a single screen
Kuvatakse, kui on ainult üks ekraan
-
+
Application Startup
Rakenduse käivitumine
-
+
Show blank screen warning
Kuvatakse tühja ekraani hoiatust
-
+
Automatically open the last service
Automaatselt avatakse viimane teenistus
-
+
Show the splash screen
Käivitumisel kuvatakse logo
-
+
Application Settings
Rakenduse sätted
-
+
Prompt to save before starting a new service
Enne uue teenistuse alustamist küsitakse, kas salvestada avatud teenistus
-
+
Automatically preview next item in service
Järgmise teenistuse elemendi automaatne eelvaade
-
+
Slide loop delay:
Slaidi näitamise pikkus korduses:
-
+
sec
sek
-
+
CCLI Details
CCLI andmed
-
+
CCLI number:
CCLI number:
-
+
SongSelect username:
SongSelecti kasutajanimi:
-
+
SongSelect password:
SongSelecti parool:
-
+
Display Position
Kuva asukoht
-
+
X
X
-
+
Y
Y
-
+
Height
Kõrgus
-
+
Width
Laius
-
+
Override display position
Kuva asukoht määratakse jõuga
-
+
Screen
Ekraan
-
+
primary
peamine
@@ -2432,7 +2518,7 @@ Sa võid viimase versiooni alla laadida aadressilt http://openlp.org/.
Configure &Shortcuts...
-
+ &Kiirklahvide seadistamine...
@@ -2771,22 +2857,22 @@ Sisu ei ole UTF-8 kodeeringus.
&Expand all
-
+ &Laienda kõik
Expand all the service items.
-
+ Kõigi teenistuse kirjete laiendamine.
&Collapse all
-
+ &Ahenda kõik
Collapse all the service items.
-
+ Kõigi teenistuse kirjete ahendamine.
@@ -2810,42 +2896,42 @@ Sisu ei ole UTF-8 kodeeringus.
Customize Shortcuts
-
+ Kiirklahvide kohandamine
Action
-
+ Tegevus
Shortcut
-
+ Kiirklahv
Default: %s
-
+ Vaikimisi: %s
Custom:
-
+ Kohandatud:
None
-
+ Pole
Duplicate Shortcut
-
+ Dubleeriv kiirklahv
The shortcut "%s" is already assigned to another action, please use a different shortcut.
-
+ Kiirklahv "%s" on juba seotud teise tegevusega, kasuta mingit muud kiirklahvi.
@@ -2918,17 +3004,17 @@ Sisu ei ole UTF-8 kodeeringus.
Blank Screen
-
+ Ekraani tühjendamine
Blank to Theme
-
+ Teematausta näitamine
Show Desktop
-
+ Töölaua näitamine
@@ -2959,22 +3045,22 @@ Sisu ei ole UTF-8 kodeeringus.
Theme Name Missing
-
+ Puudub teema nimi
There is no name for this theme. Please enter one.
-
+ Teemal ei ole nime. Palun sisesta nimi.
Theme Name Invalid
-
+ Sobimatu teema nimi
Invalid theme name. Please enter one.
-
+ Teema nimi pole sobiv. Palun sisesta sobiv nimi.
@@ -3045,402 +3131,412 @@ Sisu ei ole UTF-8 kodeeringus.
Määra &globaalseks vaikeväärtuseks
-
+
%s (default)
%s (vaikimisi)
-
+
You must select a theme to edit.
Pead valima kujunduse, mida muuta.
-
- You must select a theme to delete.
- Pead valima kujunduse, mida tahad kustutada.
-
-
-
- Delete Confirmation
- Kustutamise kinnitus
-
-
-
+
Error
Viga
-
+
You are unable to delete the default theme.
Vaikimisi kujundust pole võimalik kustutada.
-
+
Theme %s is used in the %s plugin.
Kujundust %s kasutatakse pluginas %s.
-
+
Theme %s is used by the service manager.
Teenistuse halduri nähtavuse ümberlülitamine.
-
+
You have not selected a theme.
Sa ei ole kujundust valinud.
-
+
Save Theme - (%s)
Salvesta kujundus - (%s)
-
+
Theme Exported
Kujundus eksporditud
-
+
Your theme has been successfully exported.
Sinu kujunduse on edukalt eksporditud.
-
+
Theme Export Failed
Kujunduse eksportimine nurjus
-
+
Your theme could not be exported due to an error.
Sinu kujundust polnud võimalik eksportida, kuna esines viga.
-
+
Select Theme Import File
Importimiseks kujunduse faili valimine
-
+
Theme (*.*)
Kujundus (*.*)
-
+
File is not a valid theme.
The content encoding is not UTF-8.
See fail ei ole korrektne kujundus.
Sisu kodeering ei ole UTF-8.
-
+
File is not a valid theme.
See fail ei ole sobilik kujundus.
-
+
Theme Exists
Kujundus on juba olemas
-
+
A theme with this name already exists. Would you like to overwrite it?
Sellenimeline kujundus on juba olemas. Kas tahad selle üle kirjutada?
&Copy Theme
-
+ &Kopeeri teemat
&Rename Theme
-
+ &Nimeta teema ümber
&Export Theme
+ &Ekspordi teema
+
+
+
+ Rename
-
- Delete %s theme?
+
+ Delete
+ Kustuta
+
+
+
+ You must select a theme to %s.
+
+
+
+
+ %s Confirmation
+
+
+
+
+ %s %s theme?
OpenLP.ThemeWizard
-
+
Theme Wizard
-
+ Teemanõustaja
-
+
Welcome to the Theme Wizard
-
+ Tere tulemast teemanõustajasse
-
+
This wizard will help you to create and edit your themes . Click the next button below to start the process by setting up your background.
-
+ See nõustaja aitab luua ja muuda kujundusi. Klõpsa edasi nupul, et seda alustada tausta määramisest.
-
+
Set Up Background
-
+ Tausta määramine
-
+
Set up your theme's background according to the parameters below.
-
+ Määra kujunduse taust, kasutades järgnevaid parameetreid.
-
+
Background type:
-
+ Tausta liik:
-
+
Solid Color
Ühtlane värv
-
+
Gradient
Üleminek
-
+
Image
Pilt
-
+
Color:
Värvus:
-
+
Gradient:
Üleminek:
-
+
Horizontal
Horisontaalne
-
+
Vertical
Vertikaalne
-
+
Circular
- Ümmargune
+ Radiaalne
-
+
Top Left - Bottom Right
-
+ Loodest kagusse
-
+
Bottom Left - Top Right
-
+ Edelast kirdesse
-
+
Image:
Pilt:
-
+
Main Area Font Details
-
+ Peamise kirja üksikasjad
-
+
Define the font and display characteristics for the Display text
-
+ Määra font ja teised kuvatava teksti omadused
-
+
Font:
Kirjastiil:
-
+
Size:
Suurus:
-
+
pt
pt
-
+
(%d lines per slide)
-
+ (%d rida slaidil)
-
+
Line Spacing:
-
+ Reavahe:
-
+
&Outline:
-
+ &Kontuurjoon:
-
+
&Shadow:
-
+
Bold
Rasvane
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
Vasakul
-
+
Right
Paremal
-
+
Center
Keskel
-
+
Vertical Align:
-
+
Top
Üleval
-
+
Middle
Keskel
-
+
Bottom
All
-
+
Transitions
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
X-asukoht:
-
+
px
px
-
+
Y position:
Y-asukoht:
-
+
Width:
Laius:
-
+
Height:
Kõrgus:
-
+
Footer Area
-
+
Use default location
Vaikimisi asukoht
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
@@ -3513,7 +3609,7 @@ Sisu kodeering ei ole UTF-8.
Load
-
+ Laadi
@@ -3553,7 +3649,7 @@ Sisu kodeering ei ole UTF-8.
Service
-
+ Teenistus
@@ -3630,12 +3726,12 @@ Sisu kodeering ei ole UTF-8.
<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.
-
+
Remote
-
+
Remotes
Kaugjuhtimine
@@ -3802,7 +3898,7 @@ Sisu kodeering ei ole UTF-8.
Add
-
+ Lisa
@@ -3852,7 +3948,7 @@ Sisu kodeering ei ole UTF-8.
Service
-
+ Teenistus
@@ -3906,142 +4002,142 @@ Sisu kodeering ei ole UTF-8.
SongsPlugin.EditSongForm
-
+
Song Editor
Lauluredaktor
-
+
&Title:
&Pealkiri:
-
+
Alt&ernate title:
&Alternatiivne pealkiri:
-
+
&Lyrics:
&Sõnad:
-
+
&Verse order:
&Salmide järjekord:
-
+
&Add
&Lisa
-
+
&Edit
&Muuda
-
+
Ed&it All
Muuda &kõiki
-
+
&Delete
&Kustuta
-
+
Title && Lyrics
Pealkiri && laulusõnad
-
+
Authors
Autorid
-
+
&Add to Song
&Lisa laulule
-
+
&Remove
&Eemalda
-
+
&Manage Authors, Topics, Song Books
&Autorite, teemade ja laulikute haldamine
-
+
Topic
Teema
-
+
A&dd to Song
L&isa laulule
-
+
R&emove
&Eemalda
-
+
Song Book
Laulik
-
+
Book:
Book:
-
+
Number:
Number:
-
+
Authors, Topics && Song Book
Autorid, teemad && laulik
-
+
Theme
Kujundus
-
+
New &Theme
Uus &kujundus
-
+
Copyright Information
Autoriõiguse andmed
-
+
©
©
-
+
CCLI number:
CCLI number:
-
+
Comments
Kommentaarid
-
+
Theme, Copyright Info && Comments
Kujundus, autoriõigus && kommentaarid
@@ -4929,17 +5025,17 @@ Usually you are fine with the preselected choise.
SongsPlugin.VerseType
-
+
Verse
Salm
-
+
Chorus
Refrään
-
+
Bridge
Vahemäng
@@ -4949,24 +5045,24 @@ Usually you are fine with the preselected choise.
Eelrefrään
-
+
Intro
Sissejuhatus
-
+
Ending
Lõpetus
-
+
Other
Muu
-
+
PreChorus
-
+ Eelrefrään
diff --git a/resources/i18n/hu.ts b/resources/i18n/hu.ts
index 857f1f912..ff559b636 100644
--- a/resources/i18n/hu.ts
+++ b/resources/i18n/hu.ts
@@ -14,12 +14,12 @@ Do you want to continue anyway?
Nincs megadva a cserélendő paraméter. Folytatható?
-
+
No Placeholder found
Nem található a helyjelölő
-
+
The alert text does not contain '<>'.
Do want to continue anyway?
A figyelmeztető szöveg nem tartalmaz „<>” karaktereket.
@@ -1689,13 +1689,13 @@ Final Credit
OpenLP.ExceptionForm
-
+
Platform: %s
-
+
**OpenLP Bug Report**
Version: %s
@@ -1709,17 +1709,17 @@ Version: %s
-
+
Save Crash Report
-
+
Text files (*.txt *.log *.text)
-
+
*OpenLP Bug Report*
Version: %s
@@ -1739,15 +1739,20 @@ Version: %s
OpenLP.FileRenameForm
-
+
File Rename
Fájl átnevezése
-
+
New File Name:
Új fájl neve:
+
+
+ File Copy
+
+
OpenLP.GeneralTab
@@ -1757,122 +1762,122 @@ Version: %s
Általános
-
+
Monitors
Monitorok
-
+
Select monitor for output display:
Válaszd ki a vetítési képernyőt:
-
+
Display if a single screen
Megjelenítés egy képernyő esetén
-
+
Application Startup
Alkalmazás indítása
-
+
Show blank screen warning
Figyelmeztetés megjelenítése a fekete képernyőről
-
+
Automatically open the last service
Utolsó szolgálat automatikus megnyitása
-
+
Show the splash screen
Indító képernyő megjelenítése
-
+
Application Settings
Alkalmazás beállítások
-
+
Prompt to save before starting a new service
Rákérdezés mentésre új szolgálat kezdése előtt
-
+
Automatically preview next item in service
Következő elem automatikus előnézete a szolgálatban
-
+
Slide loop delay:
Időzített diák késleltetése:
-
+
sec
mp
-
+
CCLI Details
CCLI részletek
-
+
CCLI number:
CCLI szám:
-
+
SongSelect username:
SongSelect felhasználói név:
-
+
SongSelect password:
SongSelect jelszó:
-
+
Display Position
Megjelenítés pozíciója
-
+
X
-
+
Y
-
+
Height
Magasság
-
+
Width
Szélesség
-
+
Override display position
Megjelenítési pozíció felülírása
-
+
Screen
Képernyő
-
+
primary
elsődleges
@@ -2923,104 +2928,94 @@ A tartalom kódolása nem UTF-8.
Beállítás &globális alapértelmezetté
-
+
%s (default)
%s (alapértelmezett)
-
+
You must select a theme to edit.
Ki kell választani témát a szerkesztéshez.
-
- You must select a theme to delete.
- Ki kell választani témát a törléshez.
-
-
-
- Delete Confirmation
- Törlés megerősítése
-
-
-
+
Error
Hiba
-
+
You are unable to delete the default theme.
Az alapértelmezett témát nem lehet törölni.
-
+
You have not selected a theme.
Nincs kiválasztva egy téma sem.
-
+
Save Theme - (%s)
Téma mentése – (%s)
-
+
Theme Exported
Téma exportálva
-
+
Your theme has been successfully exported.
A téma sikeresen exportálásra került.
-
+
Theme Export Failed
A téma exportálása nem sikerült
-
+
Your theme could not be exported due to an error.
A témát nem sikerült exportálni egy hiba miatt.
-
+
Select Theme Import File
Importálandó téma fájl kiválasztása
-
+
Theme (*.*)
Témák (*.*)
-
+
File is not a valid theme.
The content encoding is not UTF-8.
Nem érvényes témafájl.
A tartalom kódolása nem UTF-8.
-
+
File is not a valid theme.
Nem érvényes témafájl.
-
+
Theme Exists
A téma már létezik
-
+
A theme with this name already exists. Would you like to overwrite it?
Egy ilyen nevű téma már létezik. Szeretnéd felülírni?
-
+
Theme %s is used in the %s plugin.
A(z) %s témát a(z) %s bővítmény használja.
-
+
Theme %s is used by the service manager.
A(z) %s témát a szolgálatkezelő használja.
@@ -3040,285 +3035,305 @@ A tartalom kódolása nem UTF-8.
Téma e&xportálása
-
- Delete %s theme?
- Törölhető ez a téma: %s?
+
+ Rename
+
+
+
+
+ Delete
+ Törlés
+
+
+
+ You must select a theme to %s.
+
+
+
+
+ %s Confirmation
+
+
+
+
+ %s %s theme?
+
OpenLP.ThemeWizard
-
+
Theme Wizard
Téma tündér
-
+
Welcome to the Theme Wizard
Üdvözlet a téma tündérben
-
+
This wizard will help you to create and edit your themes . Click the next button below to start the process by setting up your background.
A tündérrel témákat lehet létrehozni és módosítani. Az alább található Tovább gombra való kattintással indítható a folyamat első lépése a háttér beállításával.
-
+
Set Up Background
Háttér beállítása
-
+
Set up your theme's background according to the parameters below.
A téma háttere az alábbi paraméterekkel állítható be.
-
+
Background type:
Háttér típusa:
-
+
Solid Color
Homogén szín
-
+
Gradient
Színátmenet
-
+
Image
Kép
-
+
Color:
Szín:
-
+
Gradient:
Színátmenet:
-
+
Horizontal
Vízszintes
-
+
Vertical
Függőleges
-
+
Circular
Körkörös
-
+
Top Left - Bottom Right
Bal felső sarokból jobb alsó sarokba
-
+
Bottom Left - Top Right
Bal alső sarokbó jobb felső sarokba
-
+
Image:
Kép:
-
+
Main Area Font Details
Fő tartalom betűkészlet jellemzői
-
+
Define the font and display characteristics for the Display text
A fő szöveg betűkészlete és a megjelenési tulajdonságai
-
+
Font:
Betűkészlet:
-
+
Size:
Méret:
-
+
pt
-
+
(%d lines per slide)
(%d sor diánként)
-
+
Line Spacing:
Sorköz:
-
+
&Outline:
&Körvonal:
-
+
&Shadow:
&Árnyék:
-
+
Bold
Félkövér
-
+
Italic
Dőlt
-
+
Footer Area Font Details
Lábléc betűkészlet jellemzői
-
+
Define the font and display characteristics for the Footer text
A lábléc szöveg betűkészlete és a megjelenési tulajdonságai
-
+
Text Formatting Details
Szövegformázás jellemzői
-
+
Allows additional display formatting information to be defined
További megjelenési formázások
-
+
Horizontal Align:
Vízszintes igazítás:
-
+
Left
Balra zárt
-
+
Right
Jobbra zárt
-
+
Center
Középre igazított
-
+
Vertical Align:
Függőleges igazítás:
-
+
Top
Felülre
-
+
Middle
Középre
-
+
Bottom
Alulra
-
+
Transitions
Átmenetek
-
+
Output Area Locations
Pozíciók
-
+
Allows you to change and move the main and footer areas.
A fő szöveg és a lábléc helyzetének mozgatása.
-
+
&Main Area
&Fő szöveg
-
+
&Use default location
&Alapértelmezett helyen
-
+
X position:
X pozíció:
-
+
px
-
+
Y position:
Y pozíció:
-
+
Width:
Szélesség:
-
+
Height:
Magasság:
-
+
Footer Area
Lábléc
-
+
Use default location
Alapértelmezett helyen
-
+
Save and Preview
Mentés és előnézet
-
+
View the theme and save it replacing the current one or change the name to create a new theme
A téma előnézete és mentése. Felülírható már egy meglévő vagy egy új név megadásával új téma hozható létre
-
+
Theme name:
Téma neve:
@@ -3508,12 +3523,12 @@ A tartalom kódolása nem UTF-8.
<strong>Távvezérlő bővítmény</strong><br />A távvezérlő bővítmény egy böngésző vagy egy távoli API segítségével lehetővé teszi egy másik számítógépen futó OpenLP számára való üzenetküldést.
-
+
Remote
Távvezérlő
-
+
Remotes
Távvezérlők
@@ -3784,142 +3799,142 @@ A tartalom kódolása nem UTF-8.
SongsPlugin.EditSongForm
-
+
Song Editor
Dalszerkesztő
-
+
&Title:
&Cím:
-
+
Alt&ernate title:
&Alternatív cím:
-
+
&Lyrics:
&Dalszöveg:
-
+
&Verse order:
Versszak &sorrend:
-
+
&Add
&Hozzáadás
-
+
&Edit
&Szerkesztés
-
+
Ed&it 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, Song Books
Szerzők, témakörök, énekeskönyvek &kezelése
-
+
Topic
Témakör
-
+
A&dd to Song
&Hozzáadás dalhoz
-
+
R&emove
&Eltávolítás
-
+
Song Book
Énekeskönyv
-
+
Book:
Könyv:
-
+
Number:
Szám:
-
+
Authors, Topics && Song Book
Szerzők, témakörök és énekeskönyvek
-
+
Theme
Téma
-
+
New &Theme
Új &téma
-
+
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
@@ -4808,17 +4823,17 @@ Usually you are fine with the preselected choise.
SongsPlugin.VerseType
-
+
Verse
Versszak
-
+
Chorus
Refrén
-
+
Bridge
Mellékdal
@@ -4828,22 +4843,22 @@ Usually you are fine with the preselected choise.
Elő-refrén
-
+
Intro
Bevezetés
-
+
Ending
Befejezés
-
+
Other
Egyéb
-
+
PreChorus
Elő-refrén
diff --git a/resources/i18n/ja.ts b/resources/i18n/ja.ts
index c010b05e7..3d08ea94f 100644
--- a/resources/i18n/ja.ts
+++ b/resources/i18n/ja.ts
@@ -14,12 +14,12 @@ Do you want to continue anyway?
-
+
No Placeholder found
-
+
The alert text does not contain '<>'.
Do want to continue anyway?
@@ -1674,13 +1674,13 @@ Final Credit
OpenLP.ExceptionForm
-
+
Platform: %s
-
+
**OpenLP Bug Report**
Version: %s
@@ -1694,17 +1694,17 @@ Version: %s
-
+
Save Crash Report
-
+
Text files (*.txt *.log *.text)
-
+
*OpenLP Bug Report*
Version: %s
@@ -1724,15 +1724,20 @@ Version: %s
OpenLP.FileRenameForm
-
+
File Rename
-
+
New File Name:
+
+
+ File Copy
+
+
OpenLP.GeneralTab
@@ -1742,122 +1747,122 @@ Version: %s
-
+
Monitors
-
+
Select monitor for output display:
-
+
Display if a single screen
-
+
Application Startup
-
+
Show blank screen warning
-
+
Automatically open the last service
-
+
Show the splash screen
-
+
Application Settings
-
+
Prompt to save before starting a new service
-
+
Automatically preview next item in service
-
+
Slide loop delay:
-
+
sec
-
+
CCLI Details
-
+
CCLI number:
-
+
SongSelect username:
-
+
SongSelect password:
-
+
Display Position
-
+
X
-
+
Y
-
+
Height
-
+
Width
-
+
Override display position
-
+
Screen
-
+
primary
@@ -2905,103 +2910,93 @@ The content encoding is not UTF-8.
-
+
%s (default)
-
+
You must select a theme to edit.
-
- You must select a theme to delete.
-
-
-
-
- Delete Confirmation
-
-
-
-
+
Error
-
+
You are unable to delete the default theme.
-
+
Theme %s is used in the %s plugin.
-
+
Theme %s is used by the service manager.
-
+
You have not selected a theme.
-
+
Save Theme - (%s)
-
+
Theme Exported
-
+
Your theme has been successfully exported.
-
+
Theme Export Failed
-
+
Your theme could not be exported due to an error.
-
+
Select Theme Import File
-
+
Theme (*.*)
-
+
File is not a valid theme.
The content encoding is not UTF-8.
-
+
File is not a valid theme.
-
+
Theme Exists
-
+
A theme with this name already exists. Would you like to overwrite it?
@@ -3021,285 +3016,305 @@ The content encoding is not UTF-8.
-
- Delete %s theme?
+
+ Rename
+
+
+
+
+ Delete
+
+
+
+
+ You must select a theme to %s.
+
+
+
+
+ %s Confirmation
+
+
+
+
+ %s %s theme?
OpenLP.ThemeWizard
-
+
Theme Wizard
-
+
Welcome to the Theme Wizard
-
+
This wizard will help you to create and edit your themes . Click the next button below to start the process by setting up your background.
-
+
Set Up Background
-
+
Set up your theme's background according to the parameters below.
-
+
Background type:
-
+
Solid Color
-
+
Gradient
-
+
Image
-
+
Color:
-
+
Gradient:
-
+
Horizontal
-
+
Vertical
-
+
Circular
-
+
Top Left - Bottom Right
-
+
Bottom Left - Top Right
-
+
Image:
-
+
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
-
+
Font:
-
+
Size:
-
+
pt
-
+
(%d lines per slide)
-
+
Line Spacing:
-
+
&Outline:
-
+
&Shadow:
-
+
Bold
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
-
+
Right
-
+
Center
-
+
Vertical Align:
-
+
Top
-
+
Middle
-
+
Bottom
-
+
Transitions
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
-
+
px
-
+
Y position:
-
+
Width:
-
+
Height:
-
+
Footer Area
-
+
Use default location
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
@@ -3489,12 +3504,12 @@ The content encoding is not UTF-8.
-
+
Remote
-
+
Remotes
@@ -3765,142 +3780,142 @@ The content encoding is not UTF-8.
SongsPlugin.EditSongForm
-
+
Song Editor
-
+
&Title:
-
+
Alt&ernate title:
-
+
&Lyrics:
-
+
&Verse order:
-
+
&Add
-
+
&Edit
-
+
Ed&it All
-
+
&Delete
削除(&D)
-
+
Title && Lyrics
-
+
Authors
-
+
&Add to Song
-
+
&Remove
-
+
&Manage Authors, Topics, Song Books
-
+
Topic
-
+
A&dd to Song
-
+
R&emove
-
+
Song Book
-
+
Book:
-
+
Number:
-
+
Authors, Topics && Song Book
-
+
Theme
-
+
New &Theme
-
+
Copyright Information
-
+
©
-
+
CCLI number:
-
+
Comments
-
+
Theme, Copyright Info && Comments
@@ -4788,17 +4803,17 @@ Usually you are fine with the preselected choise.
SongsPlugin.VerseType
-
+
Verse
-
+
Chorus
-
+
Bridge
@@ -4808,22 +4823,22 @@ Usually you are fine with the preselected choise.
-
+
Intro
-
+
Ending
-
+
Other
その他
-
+
PreChorus
diff --git a/resources/i18n/ko.ts b/resources/i18n/ko.ts
index 358235d10..d2a1e9af4 100644
--- a/resources/i18n/ko.ts
+++ b/resources/i18n/ko.ts
@@ -14,12 +14,12 @@ Do you want to continue anyway?
-
+
No Placeholder found
-
+
The alert text does not contain '<>'.
Do want to continue anyway?
@@ -1675,13 +1675,13 @@ Final Credit
OpenLP.ExceptionForm
-
+
Platform: %s
-
+
**OpenLP Bug Report**
Version: %s
@@ -1695,17 +1695,17 @@ Version: %s
-
+
Save Crash Report
-
+
Text files (*.txt *.log *.text)
-
+
*OpenLP Bug Report*
Version: %s
@@ -1725,15 +1725,20 @@ Version: %s
OpenLP.FileRenameForm
-
+
File Rename
-
+
New File Name:
+
+
+ File Copy
+
+
OpenLP.GeneralTab
@@ -1743,122 +1748,122 @@ Version: %s
-
+
Monitors
-
+
Select monitor for output display:
-
+
Display if a single screen
-
+
Application Startup
-
+
Show blank screen warning
-
+
Automatically open the last service
-
+
Show the splash screen
-
+
Application Settings
-
+
Prompt to save before starting a new service
-
+
Automatically preview next item in service
-
+
Slide loop delay:
-
+
sec
-
+
CCLI Details
-
+
CCLI number:
-
+
SongSelect username:
-
+
SongSelect password:
-
+
Display Position
-
+
X
-
+
Y
-
+
Height
-
+
Width
-
+
Override display position
-
+
Screen
-
+
primary
@@ -2906,103 +2911,93 @@ The content encoding is not UTF-8.
-
+
%s (default)
-
+
You must select a theme to edit.
-
- You must select a theme to delete.
-
-
-
-
- Delete Confirmation
-
-
-
-
+
Error
에러
-
+
You are unable to delete the default theme.
-
+
You have not selected a theme.
-
+
Save Theme - (%s)
-
+
Theme Exported
-
+
Your theme has been successfully exported.
-
+
Theme Export Failed
-
+
Your theme could not be exported due to an error.
-
+
Select Theme Import File
-
+
Theme (*.*)
-
+
File is not a valid theme.
The content encoding is not UTF-8.
-
+
File is not a valid theme.
-
+
Theme Exists
-
+
A theme with this name already exists. Would you like to overwrite it?
-
+
Theme %s is used in the %s plugin.
-
+
Theme %s is used by the service manager.
@@ -3022,285 +3017,305 @@ The content encoding is not UTF-8.
-
- Delete %s theme?
+
+ Rename
+
+
+
+
+ Delete
+
+
+
+
+ You must select a theme to %s.
+
+
+
+
+ %s Confirmation
+
+
+
+
+ %s %s theme?
OpenLP.ThemeWizard
-
+
Theme Wizard
-
+
Welcome to the Theme Wizard
-
+
This wizard will help you to create and edit your themes . Click the next button below to start the process by setting up your background.
-
+
Set Up Background
-
+
Set up your theme's background according to the parameters below.
-
+
Background type:
-
+
Solid Color
-
+
Gradient
-
+
Image
-
+
Color:
-
+
Gradient:
-
+
Horizontal
-
+
Vertical
-
+
Circular
-
+
Top Left - Bottom Right
-
+
Bottom Left - Top Right
-
+
Image:
-
+
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
-
+
Font:
-
+
Size:
-
+
pt
-
+
(%d lines per slide)
-
+
Line Spacing:
-
+
&Outline:
-
+
&Shadow:
-
+
Bold
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
-
+
Right
-
+
Center
-
+
Vertical Align:
-
+
Top
위
-
+
Middle
가운데
-
+
Bottom
아래
-
+
Transitions
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
-
+
px
-
+
Y position:
-
+
Width:
-
+
Height:
-
+
Footer Area
-
+
Use default location
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
@@ -3490,12 +3505,12 @@ The content encoding is not UTF-8.
-
+
Remote
-
+
Remotes
@@ -3766,142 +3781,142 @@ The content encoding is not UTF-8.
SongsPlugin.EditSongForm
-
+
Song Editor
-
+
&Title:
-
+
Alt&ernate title:
-
+
&Lyrics:
-
+
&Verse order:
-
+
&Add
-
+
&Edit
-
+
Ed&it All
-
+
&Delete
삭제(&D)
-
+
Title && Lyrics
-
+
Authors
-
+
&Add to Song
-
+
&Remove
-
+
&Manage Authors, Topics, Song Books
-
+
Topic
-
+
A&dd to Song
-
+
R&emove
-
+
Song Book
-
+
Book:
-
+
Number:
-
+
Authors, Topics && Song Book
-
+
Theme
-
+
New &Theme
-
+
Copyright Information
-
+
©
-
+
CCLI number:
-
+
Comments
-
+
Theme, Copyright Info && Comments
@@ -4789,17 +4804,17 @@ Usually you are fine with the preselected choise.
SongsPlugin.VerseType
-
+
Verse
-
+
Chorus
-
+
Bridge
@@ -4809,22 +4824,22 @@ Usually you are fine with the preselected choise.
-
+
Intro
-
+
Ending
-
+
Other
-
+
PreChorus
diff --git a/resources/i18n/nb.ts b/resources/i18n/nb.ts
index fc8b35776..374307ba7 100644
--- a/resources/i18n/nb.ts
+++ b/resources/i18n/nb.ts
@@ -14,12 +14,12 @@ Do you want to continue anyway?
-
+
No Placeholder found
-
+
The alert text does not contain '<>'.
Do want to continue anyway?
@@ -1674,13 +1674,13 @@ Final Credit
OpenLP.ExceptionForm
-
+
Platform: %s
-
+
**OpenLP Bug Report**
Version: %s
@@ -1694,17 +1694,17 @@ Version: %s
-
+
Save Crash Report
-
+
Text files (*.txt *.log *.text)
-
+
*OpenLP Bug Report*
Version: %s
@@ -1724,15 +1724,20 @@ Version: %s
OpenLP.FileRenameForm
-
+
File Rename
-
+
New File Name:
+
+
+ File Copy
+
+
OpenLP.GeneralTab
@@ -1742,122 +1747,122 @@ Version: %s
-
+
Monitors
-
+
Select monitor for output display:
Velg hvilken skjerm som skal brukes til fremvisning:
-
+
Display if a single screen
-
+
Application Startup
Programoppstart
-
+
Show blank screen warning
-
+
Automatically open the last service
Åpne forrige møteplan automatisk
-
+
Show the splash screen
-
+
Application Settings
Programinnstillinger
-
+
Prompt to save before starting a new service
-
+
Automatically preview next item in service
-
+
Slide loop delay:
-
+
sec
-
+
CCLI Details
CCLI-detaljer
-
+
CCLI number:
-
+
SongSelect username:
-
+
SongSelect password:
-
+
Display Position
-
+
X
-
+
Y
-
+
Height
-
+
Width
-
+
Override display position
-
+
Screen
-
+
primary
primær
@@ -2905,103 +2910,93 @@ The content encoding is not UTF-8.
-
+
%s (default)
-
+
You must select a theme to edit.
-
- You must select a theme to delete.
-
-
-
-
- Delete Confirmation
-
-
-
-
+
Error
Feil
-
+
You are unable to delete the default theme.
Du kan ikke slette det globale temaet
-
+
You have not selected a theme.
-
+
Save Theme - (%s)
-
+
Theme Exported
-
+
Your theme has been successfully exported.
-
+
Theme Export Failed
-
+
Your theme could not be exported due to an error.
-
+
Select Theme Import File
-
+
Theme (*.*)
-
+
File is not a valid theme.
The content encoding is not UTF-8.
-
+
File is not a valid theme.
Filen er ikke et gyldig tema.
-
+
Theme Exists
Temaet eksisterer
-
+
A theme with this name already exists. Would you like to overwrite it?
-
+
Theme %s is used in the %s plugin.
-
+
Theme %s is used by the service manager.
@@ -3021,285 +3016,305 @@ The content encoding is not UTF-8.
-
- Delete %s theme?
+
+ Rename
+
+
+
+
+ Delete
+
+
+
+
+ You must select a theme to %s.
+
+
+
+
+ %s Confirmation
+
+
+
+
+ %s %s theme?
OpenLP.ThemeWizard
-
+
Theme Wizard
-
+
Welcome to the Theme Wizard
-
+
This wizard will help you to create and edit your themes . Click the next button below to start the process by setting up your background.
-
+
Set Up Background
-
+
Set up your theme's background according to the parameters below.
-
+
Background type:
-
+
Solid Color
Ensfarget
-
+
Gradient
-
+
Image
-
+
Color:
-
+
Gradient:
-
+
Horizontal
-
+
Vertical
Vertikal
-
+
Circular
-
+
Top Left - Bottom Right
-
+
Bottom Left - Top Right
-
+
Image:
-
+
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
-
+
Font:
-
+
Size:
Størrelse:
-
+
pt
pt
-
+
(%d lines per slide)
-
+
Line Spacing:
-
+
&Outline:
-
+
&Shadow:
-
+
Bold
Fet
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
-
+
Right
-
+
Center
Sentrert
-
+
Vertical Align:
-
+
Top
Topp
-
+
Middle
Midtstilt
-
+
Bottom
Bunn
-
+
Transitions
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
-
+
px
-
+
Y position:
-
+
Width:
Bredde:
-
+
Height:
Høyde:
-
+
Footer Area
-
+
Use default location
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
@@ -3489,12 +3504,12 @@ The content encoding is not UTF-8.
-
+
Remote
-
+
Remotes
Fjernmeldinger
@@ -3765,142 +3780,142 @@ The content encoding is not UTF-8.
SongsPlugin.EditSongForm
-
+
Song Editor
Sangredigeringsverktøy
-
+
&Title:
&Tittel:
-
+
Alt&ernate title:
-
+
&Lyrics:
-
+
&Verse order:
-
+
&Add
-
+
&Edit
&Rediger
-
+
Ed&it All
-
+
&Delete
&Slett
-
+
Title && Lyrics
Tittel && Sangtekst
-
+
Authors
-
+
&Add to Song
-
+
&Remove
&Fjern
-
+
&Manage Authors, Topics, Song Books
-
+
Topic
Emne
-
+
A&dd to Song
-
+
R&emove
&Fjern
-
+
Song Book
-
+
Book:
Bok:
-
+
Number:
-
+
Authors, Topics && Song Book
-
+
Theme
Tema
-
+
New &Theme
-
+
Copyright Information
Copyright-informasjon
-
+
©
-
+
CCLI number:
-
+
Comments
-
+
Theme, Copyright Info && Comments
@@ -4788,17 +4803,17 @@ Usually you are fine with the preselected choise.
SongsPlugin.VerseType
-
+
Verse
Vers
-
+
Chorus
-
+
Bridge
@@ -4808,22 +4823,22 @@ Usually you are fine with the preselected choise.
Pre-Chorus
-
+
Intro
-
+
Ending
-
+
Other
Annet
-
+
PreChorus
diff --git a/resources/i18n/pt_BR.ts b/resources/i18n/pt_BR.ts
index 526cb676c..36c15980e 100644
--- a/resources/i18n/pt_BR.ts
+++ b/resources/i18n/pt_BR.ts
@@ -14,12 +14,12 @@ Do you want to continue anyway?
-
+
No Placeholder found
-
+
The alert text does not contain '<>'.
Do want to continue anyway?
@@ -1675,13 +1675,13 @@ Final Credit
OpenLP.ExceptionForm
-
+
Platform: %s
-
+
**OpenLP Bug Report**
Version: %s
@@ -1695,17 +1695,17 @@ Version: %s
-
+
Save Crash Report
-
+
Text files (*.txt *.log *.text)
-
+
*OpenLP Bug Report*
Version: %s
@@ -1725,15 +1725,20 @@ Version: %s
OpenLP.FileRenameForm
-
+
File Rename
-
+
New File Name:
+
+
+ File Copy
+
+
OpenLP.GeneralTab
@@ -1743,122 +1748,122 @@ Version: %s
Geral
-
+
Monitors
Monitores
-
+
Select monitor for output display:
Selecione um monitor para exibição:
-
+
Display if a single screen
-
+
Application Startup
Inicialização da Aplicação
-
+
Show blank screen warning
Exibir alerta de tela em branco
-
+
Automatically open the last service
Abrir a última Lista de Exibição automaticamente
-
+
Show the splash screen
Exibir a tela inicial
-
+
Application Settings
Configurações da Aplicação
-
+
Prompt to save before starting a new service
Perguntar sobre salvamento antes de iniciar uma nova lista
-
+
Automatically preview next item in service
Pré-visualizar automaticamente o próximo item na Lista de Exibição
-
+
Slide loop delay:
Atraso no loop de slide:
-
+
sec
seg
-
+
CCLI Details
Detalhes de CCLI
-
+
CCLI number:
Número CCLI:
-
+
SongSelect username:
Usuário SongSelect:
-
+
SongSelect password:
Senha do SongSelect:
-
+
Display Position
Posição do Display
-
+
X
X
-
+
Y
Y
-
+
Height
Altura
-
+
Width
Largura
-
+
Override display position
Modificar posição do display
-
+
Screen
Tela
-
+
primary
principal
@@ -2906,104 +2911,94 @@ The content encoding is not UTF-8.
-
+
%s (default)
-
+
You must select a theme to edit.
-
- You must select a theme to delete.
-
-
-
-
- Delete Confirmation
-
-
-
-
+
Error
Erro
-
+
You are unable to delete the default theme.
-
+
You have not selected a theme.
Você não selecionou um tema.
-
+
Save Theme - (%s)
Salvar Tema - (%s)
-
+
Theme Exported
-
+
Your theme has been successfully exported.
-
+
Theme Export Failed
-
+
Your theme could not be exported due to an error.
O tema não pôde ser exportado devido a um erro.
-
+
Select Theme Import File
Selecionar Arquivo de Importação de Tema
-
+
Theme (*.*)
-
+
File is not a valid theme.
The content encoding is not UTF-8.
O arquivo não é um tema válido.
A codificação do conteúdo não é UTF-8.
-
+
File is not a valid theme.
O arquivo não é um tema válido.
-
+
Theme Exists
Tema Existe
-
+
A theme with this name already exists. Would you like to overwrite it?
-
+
Theme %s is used in the %s plugin.
-
+
Theme %s is used by the service manager.
@@ -3023,285 +3018,305 @@ A codificação do conteúdo não é UTF-8.
-
- Delete %s theme?
+
+ Rename
+
+
+
+
+ Delete
+ Deletar
+
+
+
+ You must select a theme to %s.
+
+
+
+
+ %s Confirmation
+
+
+
+
+ %s %s theme?
OpenLP.ThemeWizard
-
+
Theme Wizard
-
+
Welcome to the Theme Wizard
-
+
This wizard will help you to create and edit your themes . Click the next button below to start the process by setting up your background.
-
+
Set Up Background
-
+
Set up your theme's background according to the parameters below.
-
+
Background type:
-
+
Solid Color
Cor Sólida
-
+
Gradient
Gradiente
-
+
Image
Imagem
-
+
Color:
Cor:
-
+
Gradient:
Gradiente:
-
+
Horizontal
Horizontal
-
+
Vertical
Vertical
-
+
Circular
Circular
-
+
Top Left - Bottom Right
-
+
Bottom Left - Top Right
-
+
Image:
Imagem:
-
+
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
-
+
Font:
Fonte:
-
+
Size:
Tamanho:
-
+
pt
pt
-
+
(%d lines per slide)
-
+
Line Spacing:
-
+
&Outline:
-
+
&Shadow:
-
+
Bold
Negrito
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
Esquerda
-
+
Right
Direita
-
+
Center
Centralizar
-
+
Vertical Align:
-
+
Top
Topo
-
+
Middle
Meio
-
+
Bottom
Rodapé
-
+
Transitions
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
Posição X:
-
+
px
px
-
+
Y position:
Posição Y:
-
+
Width:
Largura:
-
+
Height:
Altura:
-
+
Footer Area
-
+
Use default location
Usar local padrão
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
@@ -3491,12 +3506,12 @@ A codificação do conteúdo não é UTF-8.
-
+
Remote
-
+
Remotes
Remoto
@@ -3767,142 +3782,142 @@ A codificação do conteúdo não é UTF-8.
SongsPlugin.EditSongForm
-
+
Song Editor
Editor de Músicas
-
+
&Title:
&Título:
-
+
Alt&ernate title:
Título &Alternativo:
-
+
&Lyrics:
-
+
&Verse order:
Ordem das &estrofes:
-
+
&Add
%Adicionar
-
+
&Edit
&Editar
-
+
Ed&it All
-
+
&Delete
&Deletar
-
+
Title && Lyrics
Título && Letras
-
+
Authors
Autores
-
+
&Add to Song
&Adicionar à Música
-
+
&Remove
&Remover
-
+
&Manage Authors, Topics, Song Books
-
+
Topic
Tópico
-
+
A&dd to Song
A&dicionar uma Música
-
+
R&emove
R&emover
-
+
Song Book
Livro de Músicas
-
+
Book:
Livro:
-
+
Number:
-
+
Authors, Topics && Song Book
-
+
Theme
Tema
-
+
New &Theme
-
+
Copyright Information
Informação de Direitos Autorais
-
+
©
-
+
CCLI number:
Número CCLI:
-
+
Comments
Comentários
-
+
Theme, Copyright Info && Comments
Tema, Direitos Autorais && Comentários
@@ -4790,17 +4805,17 @@ Usually you are fine with the preselected choise.
SongsPlugin.VerseType
-
+
Verse
-
+
Chorus
-
+
Bridge
@@ -4810,22 +4825,22 @@ Usually you are fine with the preselected choise.
-
+
Intro
-
+
Ending
-
+
Other
-
+
PreChorus
diff --git a/resources/i18n/sv.ts b/resources/i18n/sv.ts
index df7cbff79..0cf1e4abc 100644
--- a/resources/i18n/sv.ts
+++ b/resources/i18n/sv.ts
@@ -14,12 +14,12 @@ Do you want to continue anyway?
-
+
No Placeholder found
-
+
The alert text does not contain '<>'.
Do want to continue anyway?
@@ -1675,13 +1675,13 @@ Final Credit
OpenLP.ExceptionForm
-
+
Platform: %s
-
+
**OpenLP Bug Report**
Version: %s
@@ -1695,17 +1695,17 @@ Version: %s
-
+
Save Crash Report
-
+
Text files (*.txt *.log *.text)
-
+
*OpenLP Bug Report*
Version: %s
@@ -1725,15 +1725,20 @@ Version: %s
OpenLP.FileRenameForm
-
+
File Rename
-
+
New File Name:
+
+
+ File Copy
+
+
OpenLP.GeneralTab
@@ -1743,122 +1748,122 @@ Version: %s
Allmänt
-
+
Monitors
Skärmar
-
+
Select monitor for output display:
Välj skärm för utsignal:
-
+
Display if a single screen
-
+
Application Startup
Programstart
-
+
Show blank screen warning
Visa varning vid tom skärm
-
+
Automatically open the last service
Öppna automatiskt den senaste planeringen
-
+
Show the splash screen
Visa startbilden
-
+
Application Settings
Programinställningar
-
+
Prompt to save before starting a new service
-
+
Automatically preview next item in service
Automatiskt förhandsgranska nästa post i planeringen
-
+
Slide loop delay:
-
+
sec
sekunder
-
+
CCLI Details
CCLI-detaljer
-
+
CCLI number:
CCLI-nummer
-
+
SongSelect username:
SongSelect användarnamn:
-
+
SongSelect password:
SongSelect lösenord:
-
+
Display Position
-
+
X
X
-
+
Y
Y
-
+
Height
Höjd
-
+
Width
Bredd
-
+
Override display position
-
+
Screen
Skärm
-
+
primary
primär
@@ -2906,103 +2911,93 @@ The content encoding is not UTF-8.
-
+
%s (default)
-
+
You must select a theme to edit.
-
- You must select a theme to delete.
-
-
-
-
- Delete Confirmation
-
-
-
-
+
Error
Fel
-
+
You are unable to delete the default theme.
Du kan inte ta bort standardtemat.
-
+
You have not selected a theme.
Du har inte valt ett tema.
-
+
Save Theme - (%s)
Spara tema - (%s)
-
+
Theme Exported
-
+
Your theme has been successfully exported.
-
+
Theme Export Failed
-
+
Your theme could not be exported due to an error.
-
+
Select Theme Import File
Välj tema importfil
-
+
Theme (*.*)
-
+
File is not a valid theme.
The content encoding is not UTF-8.
-
+
File is not a valid theme.
Filen är inte ett giltigt tema.
-
+
Theme Exists
Temat finns
-
+
A theme with this name already exists. Would you like to overwrite it?
-
+
Theme %s is used in the %s plugin.
-
+
Theme %s is used by the service manager.
@@ -3022,285 +3017,305 @@ The content encoding is not UTF-8.
-
- Delete %s theme?
+
+ Rename
+
+
+
+
+ Delete
+
+
+
+
+ You must select a theme to %s.
+
+
+
+
+ %s Confirmation
+
+
+
+
+ %s %s theme?
OpenLP.ThemeWizard
-
+
Theme Wizard
-
+
Welcome to the Theme Wizard
-
+
This wizard will help you to create and edit your themes . Click the next button below to start the process by setting up your background.
-
+
Set Up Background
-
+
Set up your theme's background according to the parameters below.
-
+
Background type:
-
+
Solid Color
Solid färg
-
+
Gradient
Stegvis
-
+
Image
Bild
-
+
Color:
Färg:
-
+
Gradient:
Stegvis:
-
+
Horizontal
Horisontal
-
+
Vertical
Vertikal
-
+
Circular
Cirkulär
-
+
Top Left - Bottom Right
-
+
Bottom Left - Top Right
-
+
Image:
Bild:
-
+
Main Area Font Details
-
+
Define the font and display characteristics for the Display text
-
+
Font:
Typsnitt:
-
+
Size:
Storlek:
-
+
pt
pt
-
+
(%d lines per slide)
-
+
Line Spacing:
-
+
&Outline:
-
+
&Shadow:
-
+
Bold
Fetstil
-
+
Italic
-
+
Footer Area Font Details
-
+
Define the font and display characteristics for the Footer text
-
+
Text Formatting Details
-
+
Allows additional display formatting information to be defined
-
+
Horizontal Align:
-
+
Left
Vänster
-
+
Right
Höger
-
+
Center
Centrera
-
+
Vertical Align:
-
+
Top
Toppen
-
+
Middle
Mitten
-
+
Bottom
Botten
-
+
Transitions
-
+
Output Area Locations
-
+
Allows you to change and move the main and footer areas.
-
+
&Main Area
-
+
&Use default location
-
+
X position:
X-position:
-
+
px
px
-
+
Y position:
Y-position:
-
+
Width:
Bredd:
-
+
Height:
Höjd:
-
+
Footer Area
-
+
Use default location
-
+
Save and Preview
-
+
View the theme and save it replacing the current one or change the name to create a new theme
-
+
Theme name:
@@ -3490,12 +3505,12 @@ The content encoding is not UTF-8.
-
+
Remote
-
+
Remotes
Fjärrstyrningar
@@ -3766,142 +3781,142 @@ The content encoding is not UTF-8.
SongsPlugin.EditSongForm
-
+
Song Editor
Sångredigerare
-
+
&Title:
&Titel:
-
+
Alt&ernate title:
-
+
&Lyrics:
-
+
&Verse order:
-
+
&Add
&Lägg till
-
+
&Edit
&Redigera
-
+
Ed&it All
-
+
&Delete
&Ta bort
-
+
Title && Lyrics
Titel && Sångtexter
-
+
Authors
Författare
-
+
&Add to Song
&Lägg till i sång
-
+
&Remove
&Ta bort
-
+
&Manage Authors, Topics, Song Books
-
+
Topic
Ämne
-
+
A&dd to Song
Lä&gg till i sång
-
+
R&emove
Ta &bort
-
+
Song Book
Sångbok
-
+
Book:
Bok:
-
+
Number:
Nummer:
-
+
Authors, Topics && Song Book
-
+
Theme
Tema
-
+
New &Theme
Nytt &tema
-
+
Copyright Information
Copyrightinformation
-
+
©
©
-
+
CCLI number:
CCLI nummer:
-
+
Comments
Kommentarer
-
+
Theme, Copyright Info && Comments
Tema, copyrightinfo && kommentarer
@@ -4789,17 +4804,17 @@ Usually you are fine with the preselected choise.
SongsPlugin.VerseType
-
+
Verse
Vers
-
+
Chorus
Refräng
-
+
Bridge
Brygga
@@ -4809,22 +4824,22 @@ Usually you are fine with the preselected choise.
Brygga
-
+
Intro
Intro
-
+
Ending
Ending
-
+
Other
Övrigt
-
+
PreChorus
diff --git a/resources/images/general_search_clear.png b/resources/images/general_search_clear.png
new file mode 100644
index 000000000..6c4b83b7a
Binary files /dev/null and b/resources/images/general_search_clear.png differ
diff --git a/resources/images/openlp-2.qrc b/resources/images/openlp-2.qrc
index e9ec5c0a3..6b9d6dd54 100644
--- a/resources/images/openlp-2.qrc
+++ b/resources/images/openlp-2.qrc
@@ -1,5 +1,9 @@
+ song_search_all.png
+ song_search_author.png
+ song_search_lyrics.png
+ song_search_title.png
topic_edit.png
author_add.png
author_delete.png
diff --git a/resources/images/song_search_all.png b/resources/images/song_search_all.png
new file mode 100644
index 000000000..cedee7700
Binary files /dev/null and b/resources/images/song_search_all.png differ
diff --git a/resources/images/song_search_author.png b/resources/images/song_search_author.png
new file mode 100644
index 000000000..c974107d2
Binary files /dev/null and b/resources/images/song_search_author.png differ
diff --git a/resources/images/song_search_lyrics.png b/resources/images/song_search_lyrics.png
new file mode 100644
index 000000000..1ab7145c6
Binary files /dev/null and b/resources/images/song_search_lyrics.png differ
diff --git a/resources/images/song_search_title.png b/resources/images/song_search_title.png
new file mode 100644
index 000000000..2323757e0
Binary files /dev/null and b/resources/images/song_search_title.png differ
diff --git a/resources/windows/warnOpenLP.txt b/resources/windows/warnOpenLP.txt
deleted file mode 100644
index 19c579942..000000000
--- a/resources/windows/warnOpenLP.txt
+++ /dev/null
@@ -1,611 +0,0 @@
-W: no module named openlp.core.lib.build_html (top-level import by openlp.core.ui.maindisplay)
-W: no module named mx (top-level import by sqlite.main)
-W: no module named ctypes.create_string_buffer (delayed import by urllib)
-W: no module named openlp.core.ui.ServiceNoteForm (top-level import by openlp.core.ui.servicemanager)
-W: no module named openlp.core.lib.MediaManagerItem (top-level import by openlp.plugins.images.lib.mediaitem)
-W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.core.ui.mainwindow)
-W: no module named email.Iterators (delayed import by email.message)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.custom.lib.mediaitem)
-W: no module named sqlalchemy.sql.join (top-level import by sqlalchemy)
-W: no module named java (conditional import by xml.sax._exceptions)
-W: no module named openlp.plugins.images.lib.ImageMediaItem (top-level import by openlp.plugins.images.imageplugin)
-W: no module named sqlalchemy.SMALLINT (top-level import by sqlalchemy.databases.sybase)
-W: no module named sqlalchemy.engine.create_engine (top-level import by sqlalchemy)
-W: no module named sqlalchemy.sql.asc (top-level import by sqlalchemy)
-W: no module named openlp.plugins.bibles.lib.BiblesTab (top-level import by openlp.plugins.bibles.bibleplugin)
-W: no module named PyQt4._qt (top-level import by PyQt4.QtCore)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.alerts.lib.alertstab)
-W: no module named sqlalchemy.Column (top-level import by openlp.plugins.custom.lib.db)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.songusage.songusageplugin)
-W: no module named openlp.plugins.alerts.lib.AlertsManager (top-level import by openlp.plugins.alerts.alertsplugin)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.ui.generaltab)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.alerts.forms.alertdialog)
-W: no module named openlp.core.lib.check_item_selected (top-level import by openlp.plugins.custom.lib.mediaitem)
-W: no module named sqlalchemy.orm.MapperExtension (top-level import by sqlalchemy.orm.scoping)
-W: no module named pyodbc (delayed import by sqlalchemy.databases.access)
-W: no module named openlp.core.lib.expand_tags (top-level import by openlp.core.lib.renderer)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.ui.servicemanager)
-W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.dynamic)
-W: no module named ctypes._SimpleCData (top-level import by ctypes.wintypes)
-W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.core.ui.generaltab)
-W: no module named simplejson (conditional import by openlp.plugins.remotes.lib.httpserver)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.alerts.forms.alertdialog)
-W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.collections)
-W: no module named openlp.core.lib.resize_image (top-level import by openlp.core.lib.serviceitem)
-W: no module named openlp.plugins.songs.lib.SongXMLParser (top-level import by openlp.plugins.songs.forms.editsongform)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.bibles.bibleplugin)
-W: no module named xml.dom.XMLNS_NAMESPACE (top-level import by xml.dom.minidom)
-W: no module named openlp.plugins.songs.lib.VerseType (top-level import by openlp.plugins.songs.lib.songimport)
-W: no module named openlp.plugins.songs.lib.SongXMLBuilder (top-level import by openlp.plugins.songs.forms.editsongform)
-W: no module named openlp.core.ui.GeneralTab (top-level import by openlp.core.ui.settingsform)
-W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.plugins.images.lib.mediaitem)
-W: no module named openlp.core.lib.BaseListWithDnD (top-level import by openlp.plugins.presentations.lib.mediaitem)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.presentations.presentationplugin)
-W: no module named informixdb (delayed import by sqlalchemy.databases.informix)
-W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.custom.customplugin)
-W: no module named cjkcodecs (top-level import by BeautifulSoup)
-W: no module named readline (delayed, conditional import by cmd)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.songs.lib.songimport)
-W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.media.mediaplugin)
-W: no module named openlp.core.lib.ThemeXML (top-level import by openlp.core.ui.amendthemeform)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.bibles.lib.manager)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.custom.lib.mediaitem)
-W: no module named openlp.core.lib.ServiceItem (top-level import by openlp.core.ui.maindisplay)
-W: no module named openlp.plugins.songs.forms.EditVerseForm (top-level import by openlp.plugins.songs.forms.editsongform)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.lib.ewimport)
-W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.plugins.songs.lib.songstab)
-W: no module named openlp.core.utils.AppLocation (top-level import by openlp.core.ui.thememanager)
-W: no module named openlp.core.ui.HideMode (top-level import by openlp.core.ui.maindisplay)
-W: no module named sqlalchemy.Column (top-level import by sqlalchemy.databases.sybase)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.ui.servicemanager)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.slidecontroller)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.songs.forms.songimportform)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.presentations.lib.mediaitem)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.aboutdialog)
-W: no module named sqlalchemy.sql.insert (top-level import by sqlalchemy)
-W: no module named openlp.core.lib.str_to_bool (top-level import by openlp.core.ui.thememanager)
-W: no module named sqlalchemy.MetaData (top-level import by sqlalchemy.databases.sybase)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.bibles.lib.biblestab)
-W: no module named openlp.plugins.bibles.lib.BibleManager (top-level import by openlp.plugins.bibles.bibleplugin)
-W: no module named openlp.core.ui.SlideController (top-level import by openlp.core.ui.mainwindow)
-W: no module named MacOS (delayed import by platform)
-W: no module named openlp.core.lib.ThemeXML (top-level import by openlp.core.ui.thememanager)
-W: no module named cx_Oracle (delayed import by sqlalchemy.databases.oracle)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.ui.slidecontroller)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.servicenotedialog)
-W: no module named sqlalchemy.sql.except_ (top-level import by sqlalchemy)
-W: no module named openlp.core.ui.AboutForm (top-level import by openlp.core.ui.mainwindow)
-W: no module named EasyDialogs (conditional import by getpass)
-W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.core.lib.mediamanageritem)
-W: no module named sqlalchemy.orm.SessionExtension (top-level import by sqlalchemy.orm.session)
-W: no module named sqlalchemy.orm.relation (top-level import by openlp.plugins.bibles.lib.db)
-W: no module named openlp.plugins.songs.lib.VerseType (top-level import by openlp.plugins.songs.forms.editsongform)
-W: no module named openlp.core.utils.AppLocation (top-level import by openlp.plugins.bibles.lib.http)
-W: no module named sqlalchemy.sql.func (top-level import by sqlalchemy)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.utils.languagemanager)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.ui.mainwindow)
-W: no module named uno (conditional import by openlp.plugins.songs.lib.oooimport)
-W: no module named kinterbasdb (delayed import by sqlalchemy.databases.firebird)
-W: no module named multiprocessing.RLock (top-level import by multiprocessing.sharedctypes)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.filerenameform)
-W: no module named sqlalchemy.ForeignKey (top-level import by sqlalchemy.databases.mssql)
-W: no module named openlp.core.lib.Renderer (top-level import by openlp.core.lib.rendermanager)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.songmaintenancedialog)
-W: no module named openlp.core.lib.check_item_selected (top-level import by openlp.plugins.songs.lib.mediaitem)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.lib.mediamanageritem)
-W: no module named openlp.core.ui.FileRenameForm (top-level import by openlp.core.ui.thememanager)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.songsplugin)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.bibles.bibleplugin)
-W: no module named vms_lib (delayed, conditional import by platform)
-W: no module named openlp.core.lib.resize_image (top-level import by openlp.core.ui.slidecontroller)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.alerts.lib.alertsmanager)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songusage.forms.songusagedetaildialog)
-W: no module named openlp.plugins.remotes.lib.RemoteTab (top-level import by openlp.plugins.remotes.remoteplugin)
-W: no module named openlp.core.ui.ServiceManager (top-level import by openlp.core.ui.mainwindow)
-W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.plugins.songusage.forms.songusagedetailform)
-W: no module named openlp.core.ui.SettingsForm (top-level import by openlp.core.ui.mainwindow)
-W: no module named openlp.plugins.alerts.lib.AlertsTab (top-level import by openlp.plugins.alerts.alertsplugin)
-W: no module named xdg (delayed, conditional import by openlp.core.utils)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.custom.customplugin)
-W: no module named openlp.core.ui.AmendThemeForm (top-level import by openlp.core.ui.thememanager)
-W: no module named openlp.core.lib.ItemCapabilities (top-level import by openlp.plugins.songs.lib.mediaitem)
-W: no module named openlp.core.lib.ItemCapabilities (top-level import by openlp.plugins.custom.lib.mediaitem)
-W: no module named posix (delayed, conditional import by iu)
-W: no module named openlp.plugins.songs.lib.VerseType (top-level import by openlp.plugins.songs.forms.editversedialog)
-W: no module named multiprocessing.dummy.Process (delayed import by __main__)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.presentations.presentationplugin)
-W: no module named sqlalchemy.String (top-level import by sqlalchemy.databases.mssql)
-W: no module named xml.dom.EMPTY_PREFIX (top-level import by xml.dom.expatbuilder)
-W: no module named openlp.core.lib.MediaManagerItem (top-level import by openlp.plugins.custom.lib.mediaitem)
-W: no module named openlp.core.lib.ServiceItem (top-level import by openlp.core.lib.mediamanageritem)
-W: no module named openlp.core.lib.PluginManager (top-level import by openlp.core.ui.mainwindow)
-W: no module named multiprocessing.current_process (top-level import by multiprocessing.reduction)
-W: no module named openlp.core.lib.MediaManagerItem (top-level import by openlp.plugins.songs.lib.mediaitem)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.songbookform)
-W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.presentations.presentationplugin)
-W: no module named xmltok (top-level import by pyexpat)
-W: no module named openlp.plugins.bibles.lib.SearchResults (top-level import by openlp.plugins.bibles.lib.http)
-W: no module named sqlalchemy.sql.delete (top-level import by sqlalchemy)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.songs.lib.oooimport)
-W: no module named _emx_link (conditional import by os)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.ui.aboutdialog)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.bibles.forms.bibleimportwizard)
-W: no module named openlp.core.lib.Plugin (top-level import by openlp.core.lib.pluginmanager)
-W: no module named openlp.plugins.songs.lib.SongsTab (top-level import by openlp.plugins.songs.songsplugin)
-W: no module named sqlalchemy.CHAR (top-level import by sqlalchemy.databases.sybase)
-W: no module named sqlalchemy.sql.collate (top-level import by sqlalchemy)
-W: no module named sqlalchemy.sql.outparam (top-level import by sqlalchemy)
-W: no module named openlp.core.utils.AppLocation (top-level import by openlp.core.lib.db)
-W: no module named openlp.core.ui.PluginForm (top-level import by openlp.core.ui.mainwindow)
-W: no module named gobject (top-level import by enchant.checker.GtkSpellCheckerDialog)
-W: no module named openlp.core.utils.VersionThread (top-level import by __main__)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.topicsform)
-W: no module named sqlalchemy.Integer (top-level import by sqlalchemy.databases.mssql)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.exceptiondialog)
-W: no module named pwd (delayed, conditional import by distutils.util)
-W: no module named uno (conditional import by openlp.plugins.presentations.lib.impresscontroller)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.utils)
-W: no module named sqlalchemy.orm.class_mapper (top-level import by openlp.plugins.songs.lib.olpimport)
-W: no module named sqlalchemy.orm.relation (top-level import by openlp.plugins.songs.lib.olpimport)
-W: no module named readline (delayed import by pdb)
-W: no module named openlp.core.ui.MainDisplay (top-level import by openlp.core.lib.rendermanager)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.media.lib.mediaitem)
-W: no module named sqlalchemy.Table (top-level import by openlp.plugins.songusage.lib.db)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.alerts.alertsplugin)
-W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.plugins.media.lib.mediaitem)
-W: no module named openlp.core.lib.BaseListWithDnD (top-level import by openlp.plugins.images.lib.mediaitem)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.bibles.forms.importwizardform)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.remotes.remoteplugin)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.images.imageplugin)
-W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.plugins.alerts.lib.alertstab)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.editversedialog)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.songusage.songusageplugin)
-W: no module named openlp.core.ui.HideMode (top-level import by openlp.core.ui.slidecontroller)
-W: no module named sqlalchemy.sql.between (top-level import by sqlalchemy)
-W: no module named xml.dom.EMPTY_PREFIX (top-level import by xml.dom.minidom)
-W: no module named pysqlite2 (delayed import by sqlalchemy.databases.sqlite)
-W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.core.ui.thememanager)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.custom.lib.customtab)
-W: no module named gtk (top-level import by enchant.checker.GtkSpellCheckerDialog)
-W: no module named xml.dom.EMPTY_NAMESPACE (top-level import by xml.dom.expatbuilder)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.remotes.lib.httpserver)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songusage.forms.songusagedeleteform)
-W: no module named sqlalchemy.orm.scoped_session (top-level import by openlp.core.lib.db)
-W: no module named openlp.core.lib.clean_tags (top-level import by openlp.core.lib.serviceitem)
-W: no module named openlp.core.utils.get_filesystem_encoding (top-level import by openlp.core.ui.thememanager)
-W: no module named xml.dom.EMPTY_NAMESPACE (top-level import by xml.dom.minidom)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.lib.toolbar)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.remotes.remoteplugin)
-W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.attributes)
-W: no module named sqlalchemy.ForeignKey (top-level import by sqlalchemy.databases.sybase)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.servicemanager)
-W: no module named sqlalchemy.Column (top-level import by openlp.plugins.alerts.lib.db)
-W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.core.ui.advancedtab)
-W: no module named AES (delayed, conditional import by archive)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.songs.forms.songmaintenanceform)
-W: no module named openlp.core.lib.context_menu_separator (top-level import by openlp.core.lib.mediamanageritem)
-W: no module named fcntl (top-level import by tempfile)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.thememanager)
-W: no module named mx (top-level import by sqlalchemy.databases.mxODBC)
-W: no module named sqlalchemy.sql.union (top-level import by sqlalchemy)
-W: no module named openlp.plugins.songs.forms.TopicsForm (top-level import by openlp.plugins.songs.forms.songmaintenanceform)
-W: no module named openlp.core.lib.ItemCapabilities (top-level import by openlp.plugins.images.lib.mediaitem)
-W: no module named MacOS (delayed import by distutils.sysconfig)
-W: no module named openlp.core.lib.SpellTextEdit (top-level import by openlp.plugins.custom.forms.editcustomdialog)
-W: no module named ic (top-level import by webbrowser)
-W: no module named com (conditional import by openlp.plugins.presentations.lib.impresscontroller)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.media.mediaplugin)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.custom.forms.editcustomform)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.lib.spelltextedit)
-W: no module named openlp.core.lib.html_expands (top-level import by openlp.core.lib.spelltextedit)
-W: no module named openlp.core.lib.context_menu_action (top-level import by openlp.plugins.images.lib.mediaitem)
-W: no module named sqlalchemy.Column (top-level import by openlp.plugins.songs.lib.db)
-W: no module named py2exe (delayed import by enchant.tests)
-W: no module named openlp.plugins.songs.forms.AuthorsForm (top-level import by openlp.plugins.songs.forms.songmaintenanceform)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.authorsform)
-W: no module named openlp.plugins.remotes.lib.HttpServer (top-level import by openlp.plugins.remotes.remoteplugin)
-W: no module named sqlalchemy.Table (top-level import by openlp.plugins.bibles.lib.db)
-W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.remotes.remoteplugin)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.filerenamedialog)
-W: no module named openlp.core.lib.BaseListWithDnD (top-level import by openlp.plugins.media.lib.mediaitem)
-W: no module named sapdb (delayed import by sqlalchemy.databases.maxdb)
-W: no module named ctypes.cdll (delayed import by ctypes.util)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.presentations.lib.presentationtab)
-W: no module named openlp.core.lib.MediaManagerItem (top-level import by openlp.plugins.presentations.lib.mediaitem)
-W: no module named sqlalchemy.sql.text (top-level import by sqlalchemy)
-W: no module named openlp.core.lib.image_to_byte (top-level import by openlp.core.lib.renderer)
-W: no module named openlp.core.utils.AppLocation (top-level import by openlp.plugins.bibles.forms.importwizardform)
-W: no module named openlp.core.lib.image_to_byte (top-level import by openlp.core.ui.maindisplay)
-W: no module named iconv_codec (top-level import by BeautifulSoup)
-W: no module named openlp.plugins.songs.forms.SongBookForm (top-level import by openlp.plugins.songs.forms.songmaintenanceform)
-W: no module named sqlalchemy.sql.not_ (top-level import by sqlalchemy)
-W: no module named multiprocessing.Pipe (top-level import by multiprocessing.queues)
-W: no module named openlp.core.lib.check_item_selected (top-level import by openlp.plugins.images.lib.mediaitem)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songusage.forms.songusagedetailform)
-W: no module named sqlalchemy.sql.subquery (top-level import by sqlalchemy)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.songs.songsplugin)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.editsongdialog)
-W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.bibles.bibleplugin)
-W: no module named openlp.plugins.songs.forms.SongMaintenanceForm (top-level import by openlp.plugins.songs.lib.mediaitem)
-W: no module named xmlparse (top-level import by pyexpat)
-W: no module named sqlalchemy.sql.exists (top-level import by sqlalchemy)
-W: no module named sqlalchemy.sql.and_ (top-level import by openlp.plugins.songs.forms.songmaintenanceform)
-W: no module named multiprocessing.Process (top-level import by multiprocessing.pool)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.settingsdialog)
-W: no module named sqlalchemy.exceptions (top-level import by openlp.core.lib.db)
-W: no module named sqlalchemy.sql.outerjoin (top-level import by sqlalchemy)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.songs.forms.editsongdialog)
-W: no module named openlp.plugins.custom.lib.CustomXMLParser (top-level import by openlp.plugins.custom.lib.mediaitem)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.custom.forms.editcustomdialog)
-W: no module named sqlalchemy.Integer (top-level import by sqlalchemy.databases.sybase)
-W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.properties)
-W: no module named multiprocessing.current_process (top-level import by multiprocessing.managers)
-W: no module named openlp.core.ui.SplashScreen (top-level import by __main__)
-W: no module named multiprocessing.TimeoutError (top-level import by multiprocessing.dummy)
-W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.plugins.songs.forms.songimportform)
-W: no module named xml.dom.XMLNS_NAMESPACE (top-level import by xml.dom.expatbuilder)
-W: no module named ctypes.c_int32 (delayed import by urllib)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.amendthemedialog)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.lib.serviceitem)
-W: no module named openlp.core.utils.LanguageManager (top-level import by __main__)
-W: no module named sqlalchemy.orm.object_mapper (top-level import by sqlalchemy.orm.properties)
-W: no module named openlp.core.utils.AppLocation (top-level import by openlp.core.utils.languagemanager)
-W: no module named sqlalchemy.sql.literal_column (top-level import by sqlalchemy)
-W: no module named openlp.plugins.songs.lib.SongXMLParser (top-level import by openlp.plugins.songs.lib.mediaitem)
-W: no module named ctypes.c_char_p (delayed import by urllib)
-W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.images.imageplugin)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.remotes.lib.remotetab)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.ui.mainwindow)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.bibles.lib.opensong)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.songimportform)
-W: no module named sqlalchemy.sql.select (top-level import by sqlalchemy)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.songbookdialog)
-W: no module named openlp.plugins.bibles.lib.BibleMediaItem (top-level import by openlp.plugins.bibles.bibleplugin)
-W: no module named PyQt4._qt (top-level import by PyQt4.QtNetwork)
-W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.songs.songsplugin)
-W: no module named sqlalchemy.sql.case (top-level import by sqlalchemy)
-W: no module named wx (top-level import by enchant.checker.wxSpellCheckerDialog)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.alerts.alertsplugin)
-W: no module named com (conditional import by openlp.plugins.songs.lib.sofimport)
-W: no module named PyQt4._qt (top-level import by PyQt4)
-W: no module named SOCKS (top-level import by ftplib)
-W: no module named openlp.plugins.songusage.forms.SongUsageDetailForm (top-level import by openlp.plugins.songusage.songusageplugin)
-W: no module named sqlalchemy.sql.null (top-level import by sqlalchemy)
-W: no module named sqlalchemy.MetaData (top-level import by openlp.core.lib.db)
-W: no module named openlp.core.lib.ItemCapabilities (top-level import by openlp.core.ui.servicemanager)
-W: no module named openlp.plugins.custom.forms.EditCustomForm (top-level import by openlp.plugins.custom.customplugin)
-W: no module named org (delayed import by xml.sax)
-W: no module named openlp.core.lib.SpellTextEdit (top-level import by openlp.plugins.songs.forms.editversedialog)
-W: no module named sqlalchemy.orm.EXT_CONTINUE (top-level import by sqlalchemy.orm.scoping)
-W: no module named openlp.core.lib.build_lyrics_outline_css (top-level import by openlp.core.lib.renderer)
-W: no module named openlp.plugins.songs.lib.VerseType (top-level import by openlp.plugins.songs.forms.editverseform)
-W: no module named com (conditional import by openlp.plugins.songs.lib.oooimport)
-W: no module named openlp.core.lib.str_to_bool (top-level import by openlp.core.lib.theme)
-W: no module named sqlalchemy.sql.literal (top-level import by sqlalchemy)
-W: no module named termios (top-level import by getpass)
-W: no module named openlp.core.lib.build_lyrics_format_css (top-level import by openlp.core.lib.renderer)
-W: no module named ctypes.byref (delayed import by urllib)
-W: no module named openlp.plugins.custom.lib.CustomTab (top-level import by openlp.plugins.custom.customplugin)
-W: no module named openlp.core.lib.BaseListWithDnD (top-level import by openlp.plugins.songs.lib.mediaitem)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.images.lib.mediaitem)
-W: no module named openlp.plugins.bibles.lib.parse_reference (top-level import by openlp.plugins.bibles.lib.manager)
-W: no module named java (delayed import by platform)
-W: no module named openlp.core.ui.ServiceItemEditForm (top-level import by openlp.core.ui.servicemanager)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.custom.customplugin)
-W: no module named openlp.core.lib.ThemeLevel (top-level import by openlp.core.lib.rendermanager)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.bibles.lib.db)
-W: no module named _xmlrpclib (top-level import by xmlrpclib)
-W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.plugins.presentations.lib.mediaitem)
-W: no module named openlp.plugins.media.lib.MediaMediaItem (top-level import by openlp.plugins.media.mediaplugin)
-W: no module named openlp.plugins.custom.lib.CustomXMLBuilder (top-level import by openlp.plugins.custom.forms.editcustomform)
-W: no module named rourl2path (conditional import by urllib)
-W: no module named pwd (delayed import by webbrowser)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.ui.themestab)
-W: no module named PyQt4._qt (top-level import by PyQt4.QtWebKit)
-W: no module named sqlalchemy.orm.class_mapper (delayed, conditional import by sqlalchemy.orm.interfaces)
-W: no module named PyQt4._qt (top-level import by PyQt4.phonon)
-W: no module named openlp.core.ui.HideMode (top-level import by openlp.plugins.presentations.lib.messagelistener)
-W: no module named openlp.plugins.songusage.forms.SongUsageDeleteForm (top-level import by openlp.plugins.songusage.songusageplugin)
-W: no module named openlp.core.lib.context_menu_separator (top-level import by openlp.core.ui.thememanager)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.media.lib.mediaitem)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.plugindialog)
-W: no module named fcntl (conditional import by subprocess)
-W: no module named openlp.core.lib.BaseListWithDnD (top-level import by openlp.plugins.bibles.lib.mediaitem)
-W: no module named openlp.core.lib.PluginStatus (top-level import by openlp.core.lib.pluginmanager)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.songs.forms.editsongform)
-W: no module named openlp.core.ui.ScreenList (top-level import by __main__)
-W: no module named sqlalchemy.or_ (top-level import by openlp.plugins.bibles.lib.db)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.editsongform)
-W: no module named openlp.plugins.songs.forms.ImportWizardForm (top-level import by openlp.plugins.songs.lib.mediaitem)
-W: no module named openlp.core.lib.check_item_selected (top-level import by openlp.core.ui.thememanager)
-W: no module named openlp.core.ui.ThemeManager (top-level import by openlp.core.ui.mainwindow)
-W: no module named pyodbc (delayed, conditional import by sqlalchemy.databases.mssql)
-W: no module named openlp.core.utils.AppLocation (top-level import by openlp.core.ui.servicemanager)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.lib.mediamanageritem)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.bibles.lib.biblestab)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songusage.songusageplugin)
-W: no module named multiprocessing.active_children (top-level import by multiprocessing.managers)
-W: no module named openlp.plugins.songs.forms.EditSongForm (top-level import by openlp.plugins.songs.lib.mediaitem)
-W: no module named email.Generator (delayed import by email.message)
-W: no module named mx (delayed import by sqlalchemy.databases.mxODBC)
-W: no module named sqlalchemy.sql.or_ (top-level import by sqlalchemy)
-W: no module named sqlalchemy.Table (top-level import by openlp.plugins.custom.lib.db)
-W: no module named sqlalchemy.Table (top-level import by sqlalchemy.databases.sybase)
-W: no module named openlp.core.lib.get_text_file_string (top-level import by openlp.core.ui.thememanager)
-W: no module named sqlalchemy.orm.object_session (top-level import by sqlalchemy.orm.scoping)
-W: no module named openlp.core.lib.MediaManagerItem (top-level import by openlp.plugins.bibles.lib.mediaitem)
-W: no module named sqlalchemy.Table (top-level import by sqlalchemy.databases.mssql)
-W: no module named openlp.core.utils.AppLocation (top-level import by openlp.core.ui.mainwindow)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.bibles.forms.bibleimportwizard)
-W: no module named openlp.core.lib.resize_image (top-level import by openlp.core.lib.renderer)
-W: no module named pymssql (delayed import by sqlalchemy.databases.mssql)
-W: no module named sqlalchemy.orm.sessionmaker (top-level import by openlp.plugins.songs.lib.olpimport)
-W: no module named openlp.core.lib.context_menu_action (top-level import by openlp.core.ui.thememanager)
-W: no module named openlp.core.lib.expand_tags (top-level import by openlp.core.lib.serviceitem)
-W: no module named gestalt (delayed import by platform)
-W: no module named enchant.checker.SpellChecker (top-level import by enchant.checker.CmdLineChecker)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.themestab)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.lib.olp1import)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.presentations.lib.messagelistener)
-W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.interfaces)
-W: no module named sqlalchemy.orm.object_mapper (top-level import by sqlalchemy.orm.query)
-W: no module named sqlalchemy.sql.distinct (top-level import by sqlalchemy)
-W: no module named openlp.core.lib.context_menu_action (top-level import by openlp.plugins.media.lib.mediaitem)
-W: no module named sqlalchemy.sql.extract (top-level import by sqlalchemy)
-W: no module named sqlalchemy.Column (top-level import by openlp.plugins.bibles.lib.db)
-W: no module named psycopg2 (delayed import by sqlalchemy.databases.postgres)
-W: no module named enchant.checker.SpellChecker (delayed import by enchant.checker.GtkSpellCheckerDialog)
-W: no module named clr (conditional import by adodbapi.adodbapi)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.images.lib.mediaitem)
-W: no module named openlp.plugins.custom.lib.CustomXMLParser (top-level import by openlp.plugins.custom.forms.editcustomform)
-W: no module named openlp.core.theme.Theme (top-level import by openlp.core.ui.thememanager)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.custom.forms.editcustomform)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.songs.lib.mediaitem)
-W: no module named openlp.core.utils.AppLocation (top-level import by openlp.core.lib.settingsmanager)
-W: no module named openlp.core.lib.Receiver (top-level import by __main__)
-W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.plugins.bibles.lib.manager)
-W: no module named org (top-level import by pickle)
-W: no module named enchant.DictNotFoundError (top-level import by openlp.core.lib.spelltextedit)
-W: no module named sqlalchemy.sql.except_all (top-level import by sqlalchemy)
-W: no module named openlp.plugins.presentations.lib.PresentationTab (top-level import by openlp.plugins.presentations.presentationplugin)
-W: no module named sqlalchemy.sql.cast (top-level import by sqlalchemy)
-W: no module named sqlalchemy.orm.relation (top-level import by openlp.plugins.songs.lib.db)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.ui.settingsdialog)
-W: no module named openlp.core.utils.LanguageManager (top-level import by openlp.core.ui.mainwindow)
-W: no module named openlp.core.lib.ItemCapabilities (top-level import by openlp.plugins.media.lib.mediaitem)
-W: no module named sqlalchemy.sql.intersect (top-level import by sqlalchemy)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.lib.songimport)
-W: no module named sqlalchemy.orm.class_mapper (top-level import by sqlalchemy.orm.scoping)
-W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.util)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.lib.opensongimport)
-W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.plugins.bibles.lib.biblestab)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.aboutform)
-W: no module named openlp.plugins.custom.lib.CustomMediaItem (top-level import by openlp.plugins.custom.customplugin)
-W: no module named sqlalchemy.orm.scoped_session (top-level import by openlp.plugins.songs.lib.olpimport)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.amendthemeform)
-W: no module named sqlalchemy.engine.engine_from_config (top-level import by sqlalchemy)
-W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.core.ui.themestab)
-W: no module named openlp.core.lib.OpenLPToolbar (top-level import by openlp.core.ui.servicemanager)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.ui.maindisplay)
-W: no module named openlp.core.lib.PluginStatus (top-level import by openlp.core.ui.pluginform)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.bibles.lib.http)
-W: no module named openlp.core.utils.AppLocation (top-level import by openlp.plugins.remotes.lib.httpserver)
-W: no module named sqlalchemy.Table (top-level import by openlp.plugins.songs.lib.db)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.utils)
-W: no module named openlp.core.lib.RenderManager (top-level import by openlp.core.ui.mainwindow)
-W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.alerts.alertsplugin)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.lib.plugin)
-W: no module named sqlalchemy.ForeignKey (top-level import by openlp.plugins.bibles.lib.db)
-W: no module named openlp.plugins.songs.lib.SongMediaItem (top-level import by openlp.plugins.songs.songsplugin)
-W: no module named sqlalchemy.Index (top-level import by openlp.plugins.songs.lib.db)
-W: no module named multiprocessing.TimeoutError (top-level import by multiprocessing.pool)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.songusage.forms.songusagedetaildialog)
-W: no module named enchant.DictWithPWL (delayed import by enchant.checker.tests)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.lib.songstab)
-W: no module named openlp.core.ui.AdvancedTab (top-level import by openlp.core.ui.settingsform)
-W: no module named MySQLdb (delayed import by sqlalchemy.databases.mysql)
-W: no module named openlp.plugins.presentations.lib.PresentationMediaItem (top-level import by openlp.plugins.presentations.presentationplugin)
-W: no module named openlp.plugins.alerts.forms.AlertForm (top-level import by openlp.plugins.alerts.alertsplugin)
-W: no module named ctypes.c_int (delayed import by urllib)
-W: no module named xml.dom.XML_NAMESPACE (delayed import by xml.dom.pulldom)
-W: no module named ctypes.c_void_p (delayed import by urllib)
-W: no module named openlp.core.utils.AppLocation (top-level import by openlp.plugins.bibles.lib.osis)
-W: no module named sqlalchemy.create_engine (top-level import by openlp.core.lib.db)
-W: no module named win32com.client._get_good_object_ (top-level import by win32com.client.util)
-W: no module named openlp.core.ui.MainDisplay (top-level import by openlp.core.ui.slidecontroller)
-W: no module named openlp.core.lib.resize_image (top-level import by openlp.plugins.presentations.lib.presentationcontroller)
-W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.plugins.remotes.lib.remotetab)
-W: no module named openlp.core.ui.MediaDockManager (top-level import by openlp.core.ui.mainwindow)
-W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.session)
-W: no module named sqlalchemy.Column (top-level import by sqlalchemy.databases.mssql)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.songs.forms.editversedialog)
-W: no module named multiprocessing.Process (top-level import by multiprocessing.managers)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.presentations.lib.presentationcontroller)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.lib.mediaitem)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.custom.forms.editcustomdialog)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.alerts.lib.alertsmanager)
-W: no module named sgmlop (top-level import by xmlrpclib)
-W: no module named MacOS (conditional import by py_compile)
-W: no module named multiprocessing.cpu_count (top-level import by multiprocessing.dummy)
-W: no module named _dummy_threading (top-level import by dummy_threading)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.mainwindow)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.songmaintenanceform)
-W: no module named openlp.plugins.presentations.lib.PresentationController (top-level import by openlp.plugins.presentations.presentationplugin)
-W: no module named openlp.core.lib.OpenLPToolbar (top-level import by openlp.core.lib.mediamanageritem)
-W: no module named sqlalchemy.sql.union_all (top-level import by sqlalchemy)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.bibles.lib.opensong)
-W: no module named openlp.core.lib.ItemCapabilities (top-level import by openlp.plugins.bibles.lib.mediaitem)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.bibles.lib.osis)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.ui.settingsform)
-W: no module named enchant.tokenize.get_tokenizer (top-level import by enchant.checker)
-W: no module named openlp.core.utils.AppLocation (top-level import by openlp.plugins.bibles.lib.manager)
-W: no module named org (top-level import by copy)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.ui.thememanager)
-W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.core.ui.servicemanager)
-W: no module named sqlalchemy.MetaData (top-level import by openlp.plugins.songs.lib.olpimport)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.songs.forms.songmaintenancedialog)
-W: no module named sqlalchemy.sql.select (top-level import by sqlalchemy.databases.mssql)
-W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.plugins.bibles.forms.importwizardform)
-W: no module named multiprocessing.current_process (top-level import by multiprocessing.connection)
-W: no module named sqlalchemy.orm.sessionmaker (top-level import by openlp.core.lib.db)
-W: no module named sqlalchemy.sql.desc (top-level import by sqlalchemy)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songusage.forms.songusagedeletedialog)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.bibles.lib.mediaitem)
-W: no module named ctypes.cdll (delayed import by urllib)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.lib)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.media.mediaplugin)
-W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.plugins.presentations.lib.presentationtab)
-W: no module named MySQLdb (delayed, conditional import by sqlalchemy.databases.mysql)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.presentations.lib.mediaitem)
-W: no module named openlp.core.lib.MediaManagerItem (top-level import by openlp.plugins.media.lib.mediaitem)
-W: no module named sqlalchemy.orm.object_session (top-level import by sqlalchemy.orm.dynamic)
-W: no module named sqlalchemy.sql.modifier (top-level import by sqlalchemy)
-W: no module named _xmlplus (top-level import by xml)
-W: no module named sqlalchemy.Column (top-level import by openlp.plugins.songusage.lib.db)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.advancedtab)
-W: no module named sqlalchemy.sql.and_ (top-level import by sqlalchemy)
-W: no module named sqlalchemy.MetaData (top-level import by sqlalchemy.databases.mssql)
-W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.dependency)
-W: no module named openlp.core.lib.ThemeLevel (top-level import by openlp.core.ui.themestab)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.presentations.lib.presentationtab)
-W: no module named openlp.core.utils.get_images_filter (top-level import by openlp.core.ui.amendthemeform)
-W: no module named openlp.core.utils.AppLocation (top-level import by openlp.plugins.presentations.presentationplugin)
-W: no module named openlp.plugins.presentations.lib.MessageListener (top-level import by openlp.plugins.presentations.lib.mediaitem)
-W: no module named openlp.plugins.bibles.forms.ImportWizardForm (top-level import by openlp.plugins.bibles.lib.mediaitem)
-W: no module named openlp.core.utils.AppLocation (top-level import by __main__)
-W: no module named sqlalchemy.ForeignKey (top-level import by openlp.plugins.songs.lib.db)
-W: no module named openlp.core.lib.OpenLPToolbar (top-level import by openlp.core.ui.thememanager)
-W: no module named ctypes.cdll (conditional import by openlp.plugins.presentations.lib.pptviewcontroller)
-W: no module named pwd (delayed import by getpass)
-W: no module named sqlalchemy.sql.and_ (top-level import by openlp.plugins.songusage.forms.songusagedetailform)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.ui.amendthemedialog)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.songs.forms.songimportwizard)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.serviceitemeditdialog)
-W: no module named openlp.core.lib.resize_image (top-level import by openlp.core.ui.maindisplay)
-W: no module named openlp.core.lib.BaseListWithDnD (top-level import by openlp.plugins.custom.lib.mediaitem)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.topicsdialog)
-W: no module named PyQt4._qt (top-level import by PyQt4.QtGui)
-W: no module named sqlalchemy.sql.update (top-level import by sqlalchemy)
-W: no module named multiprocessing.current_process (delayed, conditional import by logging)
-W: no module named multiprocessing.Pool (top-level import by multiprocessing.managers)
-W: no module named sqlalchemy.create_engine (delayed, conditional import by sqlalchemy.schema)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.bibles.forms.importwizardform)
-W: no module named openlp.core.lib.context_menu_action (top-level import by openlp.core.lib.mediamanageritem)
-W: no module named posix (conditional import by os)
-W: no module named sqlalchemy.sql.bindparam (top-level import by sqlalchemy)
-W: no module named xml.dom.DOMImplementation (top-level import by xml.dom.domreg)
-W: no module named openlp.core.utils.add_actions (top-level import by openlp.core.ui.mainwindow)
-W: no module named sqlalchemy.create_engine (top-level import by openlp.plugins.songs.lib.olpimport)
-W: no module named multiprocessing.cpu_count (top-level import by multiprocessing.pool)
-W: no module named multiprocessing.AuthenticationError (top-level import by multiprocessing.connection)
-W: no module named openlp.core.ui.ThemesTab (top-level import by openlp.core.ui.settingsform)
-W: no module named openlp.core.lib.check_item_selected (top-level import by openlp.plugins.media.lib.mediaitem)
-W: no module named sqlalchemy.orm.class_mapper (top-level import by openlp.plugins.bibles.lib.db)
-W: no module named sqlalchemy.String (top-level import by sqlalchemy.databases.sybase)
-W: no module named openlp.core.lib.context_menu_action (top-level import by openlp.core.ui.servicemanager)
-W: no module named openlp.core.utils.AppLocation (top-level import by openlp.plugins.images.lib.mediaitem)
-W: no module named pwd (delayed, conditional import by posixpath)
-W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.strategies)
-W: no module named mx (top-level import by adodbapi.adodbapi)
-W: no module named sqlalchemy.sql.alias (top-level import by sqlalchemy)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.authorsdialog)
-W: no module named sqlalchemy.Table (top-level import by openlp.plugins.alerts.lib.db)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.bibles.lib.mediaitem)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.images.imageplugin)
-W: no module named sqlalchemy.orm.mapperlib (delayed import by sqlalchemy.orm.util)
-W: no module named openlp.core.lib.ServiceItem (top-level import by openlp.core.lib.rendermanager)
-W: no module named openlp.core.lib.OpenLPDockWidget (top-level import by openlp.core.ui.mainwindow)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.songimportwizard)
-W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.songusage.songusageplugin)
-W: no module named openlp.core.utils.AppLocation (top-level import by openlp.plugins.presentations.lib.presentationcontroller)
-W: no module named openlp.core.lib.context_menu_action (top-level import by openlp.core.lib.spelltextedit)
-W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.ui.thememanager)
-W: no module named openlp.core.lib.check_item_selected (top-level import by openlp.plugins.presentations.lib.mediaitem)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.pluginform)
-W: no module named enchant.checker.SpellChecker (delayed import by enchant.checker.wxSpellCheckerDialog)
-W: no module named sqlalchemy.DefaultClause (top-level import by sqlalchemy.databases.sqlite)
-W: no module named openlp.core.lib.ServiceItem (top-level import by openlp.core.ui.servicemanager)
-W: no module named openlp.core.lib.ItemCapabilities (top-level import by openlp.core.ui.slidecontroller)
-W: no module named openlp.core.utils.get_images_filter (top-level import by openlp.plugins.images.lib.mediaitem)
-W: no module named pyodbc (delayed import by sqlalchemy.databases.mssql)
-W: no module named openlp.core.lib.OpenLPToolbar (top-level import by openlp.core.ui.slidecontroller)
-W: no module named System (conditional import by adodbapi.adodbapi)
-W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.plugins.custom.lib.customtab)
-W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.bibles.lib.csvbible)
-W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.generaltab)
-W: no module named openlp.core.lib.ThemeLevel (top-level import by openlp.core.ui.servicemanager)
-W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.scoping)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.alerts.forms.alertform)
-W: no module named mypyodbc (delayed import by sqlalchemy.databases.sybase)
-W: no module named sqlalchemy.sql.intersect_all (top-level import by sqlalchemy)
-W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.presentations.lib.mediaitem)
-W: __all__ is built strangely at line 0 - dummy_threading (C:\Python26\lib\dummy_threading.pyc)
-W: delayed exec statement detected at line 0 - bdb (C:\Python26\lib\bdb.pyc)
-W: delayed eval hack detected at line 0 - bdb (C:\Python26\lib\bdb.pyc)
-W: delayed eval hack detected at line 0 - bdb (C:\Python26\lib\bdb.pyc)
-W: delayed __import__ hack detected at line 0 - optparse (C:\Python26\lib\optparse.pyc)
-W: delayed conditional __import__ hack detected at line 0 - pkg_resources (build/bdist.linux-i686/egg/pkg_resources.pyc)
-W: delayed conditional exec statement detected at line 0 - pkg_resources (build/bdist.linux-i686/egg/pkg_resources.pyc)
-W: delayed conditional __import__ hack detected at line 0 - pkg_resources (build/bdist.linux-i686/egg/pkg_resources.pyc)
-W: delayed __import__ hack detected at line 0 - pkg_resources (build/bdist.linux-i686/egg/pkg_resources.pyc)
-W: delayed conditional __import__ hack detected at line 0 - doctest (C:\Python26\lib\doctest.pyc)
-W: delayed exec statement detected at line 0 - doctest (C:\Python26\lib\doctest.pyc)
-W: delayed conditional __import__ hack detected at line 0 - doctest (C:\Python26\lib\doctest.pyc)
-W: __all__ is built strangely at line 0 - sqlalchemy.orm.interfaces (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\orm\interfaces.pyc)
-W: __all__ is built strangely at line 0 - tokenize (C:\Python26\lib\tokenize.pyc)
-W: __all__ is built strangely at line 0 - sqlalchemy.engine (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\engine\__init__.pyc)
-W: delayed __import__ hack detected at line 0 - pickle (C:\Python26\lib\pickle.pyc)
-W: delayed __import__ hack detected at line 0 - pickle (C:\Python26\lib\pickle.pyc)
-W: top-level conditional exec statement detected at line 0 - sqlalchemy.sql.util (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\sql\util.pyc)
-W: top-level conditional exec statement detected at line 0 - sqlalchemy.sql.util (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\sql\util.pyc)
-W: delayed conditional __import__ hack detected at line 0 - openlp.core.lib.pluginmanager (c:\Documents and Settings\raoul\My Documents\My Projects\openlp\movements\openlp\core\lib\pluginmanager.pyc)
-W: delayed conditional exec statement detected at line 0 - multiprocessing.sharedctypes (C:\Python26\lib\multiprocessing\sharedctypes.pyc)
-W: delayed __import__ hack detected at line 0 - encodings (C:\Python26\lib\encodings\__init__.pyc)
-W: __all__ is built strangely at line 0 - sqlalchemy.databases.mysql (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\databases\mysql.pyc)
-W: delayed exec statement detected at line 0 - sqlalchemy.orm.attributes (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\orm\attributes.pyc)
-W: delayed conditional __import__ hack detected at line 0 - openlp.plugins.presentations.presentationplugin (c:\Documents and Settings\raoul\My Documents\My Projects\openlp\movements\openlp\plugins\presentations\presentationplugin.pyc)
-W: delayed __import__ hack detected at line 0 - enchant.tokenize (C:\Python26\lib\site-packages\enchant\tokenize\__init__.pyc)
-W: __all__ is built strangely at line 0 - multiprocessing (C:\Python26\lib\multiprocessing\__init__.pyc)
-W: __all__ is built strangely at line 0 - dis (C:\Python26\lib\dis.pyc)
-W: __all__ is built strangely at line 0 - sqlalchemy.databases (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\databases\__init__.pyc)
-W: delayed __import__ hack detected at line 0 - win32com.server.policy (C:\Python26\lib\site-packages\win32com\server\policy.pyc)
-W: __all__ is built strangely at line 0 - sqlalchemy.orm.mapper (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\orm\mapper.pyc)
-W: top-level exec statement detected at line 0 - hashlib (C:\Python26\lib\hashlib.pyc)
-W: top-level conditional exec statement detected at line 0 - hashlib (C:\Python26\lib\hashlib.pyc)
-W: delayed conditional eval hack detected at line 0 - warnings (C:\Python26\lib\warnings.pyc)
-W: delayed conditional __import__ hack detected at line 0 - warnings (C:\Python26\lib\warnings.pyc)
-W: delayed exec statement detected at line 0 - cgi (C:\Python26\lib\cgi.pyc)
-W: delayed __import__ hack detected at line 0 - email (C:\Python26\lib\email\__init__.pyc)
-W: __all__ is built strangely at line 0 - sqlalchemy.orm (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\orm\__init__.pyc)
-W: delayed __import__ hack detected at line 0 - ctypes (C:\Python26\lib\ctypes\__init__.pyc)
-W: delayed __import__ hack detected at line 0 - ctypes (C:\Python26\lib\ctypes\__init__.pyc)
-W: delayed conditional __import__ hack detected at line 0 - xml.dom.domreg (C:\Python26\lib\xml\dom\domreg.pyc)
-W: delayed exec statement detected at line 0 - pdb (C:\Python26\lib\pdb.pyc)
-W: delayed conditional eval hack detected at line 0 - pdb (C:\Python26\lib\pdb.pyc)
-W: delayed eval hack detected at line 0 - pdb (C:\Python26\lib\pdb.pyc)
-W: delayed conditional eval hack detected at line 0 - pdb (C:\Python26\lib\pdb.pyc)
-W: delayed eval hack detected at line 0 - pdb (C:\Python26\lib\pdb.pyc)
-W: delayed conditional __import__ hack detected at line 0 - unittest (C:\Python26\lib\unittest.pyc)
-W: delayed conditional __import__ hack detected at line 0 - unittest (C:\Python26\lib\unittest.pyc)
-W: delayed conditional __import__ hack detected at line 0 - pkgutil (C:\Python26\lib\pkgutil.pyc)
-W: delayed conditional __import__ hack detected at line 0 - pkgutil (C:\Python26\lib\pkgutil.pyc)
-W: __all__ is built strangely at line 0 - sqlalchemy.orm.properties (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\orm\properties.pyc)
-W: delayed conditional exec statement detected at line 0 - iu (c:\Documents and Settings\raoul\My Documents\My Projects\pyinstaller\iu.pyc)
-W: delayed conditional exec statement detected at line 0 - iu (c:\Documents and Settings\raoul\My Documents\My Projects\pyinstaller\iu.pyc)
-W: __all__ is built strangely at line 0 - sqlalchemy.sql (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\sql\__init__.pyc)
-W: __all__ is built strangely at line 0 - collections (C:\Python26\lib\collections.pyc)
-W: delayed exec statement detected at line 0 - collections (C:\Python26\lib\collections.pyc)
-W: delayed __import__ hack detected at line 0 - sqlalchemy.engine.url (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\engine\url.pyc)
-W: delayed exec statement detected at line 0 - multiprocessing.managers (C:\Python26\lib\multiprocessing\managers.pyc)
-W: delayed exec statement detected at line 0 - socket (C:\Python26\lib\socket.pyc)
-W: delayed conditional __import__ hack detected at line 0 - win32com.client.gencache (C:\Python26\lib\site-packages\win32com\client\gencache.pyc)
-W: delayed __import__ hack detected at line 0 - win32com.client.gencache (C:\Python26\lib\site-packages\win32com\client\gencache.pyc)
-W: delayed eval hack detected at line 0 - os (C:\Python26\lib\os.pyc)
-W: __all__ is built strangely at line 0 - __future__ (C:\Python26\lib\__future__.pyc)
-W: delayed __import__ hack detected at line 0 - win32com.client.makepy (C:\Python26\lib\site-packages\win32com\client\makepy.pyc)
-W: delayed exec statement detected at line 0 - win32com.client.dynamic (C:\Python26\lib\site-packages\win32com\client\dynamic.pyc)
-W: __all__ is built strangely at line 0 - sqlalchemy (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\__init__.pyc)
-W: delayed __import__ hack detected at line 0 - xml.sax (C:\Python26\lib\xml\sax\__init__.pyc)
-W: delayed eval hack detected at line 0 - gettext (C:\Python26\lib\gettext.pyc)
-W: delayed eval hack detected at line 0 - sqlalchemy.util (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\util.pyc)
-W: delayed exec statement detected at line 0 - sqlalchemy.util (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\util.pyc)
diff --git a/scripts/windows-builder.py b/scripts/windows-builder.py
index 1900fab99..1af85853d 100644
--- a/scripts/windows-builder.py
+++ b/scripts/windows-builder.py
@@ -115,17 +115,30 @@ build_path = os.path.join(branch_path, u'build', u'pyi.win32', u'OpenLP')
dist_path = os.path.join(branch_path, u'dist', u'OpenLP')
enchant_path = os.path.join(site_packages, u'enchant')
+def update_code():
+ print u'Updating the code...'
+ os.chdir(branch_path)
+ bzr = Popen((u'bzr', u'update'), stdout=PIPE)
+ output, error = bzr.communicate()
+ code = bzr.wait()
+ if code != 0:
+ print output
+ raise Exception(u'Error updating the code')
+
def clean_build_directories():
- #if not os.path.exists(build_path)
- for root, dirs, files in os.walk(build_path, topdown=False):
- print root
- for file in files:
- os.remove(os.path.join(root, file))
- #os.removedirs(build_path)
- for root, dirs, files in os.walk(dist_path, topdown=False):
- for file in files:
- os.remove(os.path.join(root, file))
- #os.removedirs(dist_path)
+ dist_dir = os.path.join(build_path, u'dist')
+ build_dir = os.path.join(build_path, u'build')
+ if os.path.exists(dist_dir):
+ for root, dirs, files in os.walk(dist_dir, topdown=False):
+ print root
+ for file in files:
+ os.remove(os.path.join(root, file))
+ os.removedirs(dist_dir)
+ if os.path.exists(build_dir):
+ for root, dirs, files in os.walk(build_dir, topdown=False):
+ for file in files:
+ os.remove(os.path.join(root, file))
+ os.removedirs(build_dir)
def run_pyinstaller():
print u'Running PyInstaller...'
@@ -239,6 +252,7 @@ def main():
print "PyInstaller:", pyi_build
print "Inno Setup path:", innosetup_path
print "Windows resources:", winres_path
+ update_code()
#clean_build_directories()
run_pyinstaller()
write_version_file()
diff --git a/setup.py b/setup.py
index c216a17c1..a435c5496 100755
--- a/setup.py
+++ b/setup.py
@@ -5,8 +5,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
+# Copyright (c) 2008-2011 Raoul Snyman #
+# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian #
# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, #
# Carsten Tinggaard, Frode Woldsund #
@@ -79,4 +79,4 @@ OpenLP (previously openlp.org) is free church presentation software, or lyrics p
entry_points="""
# -*- Entry points: -*-
"""
-)
+)
\ No newline at end of file