diff --git a/documentation/manual/source/pics/configurethemes.png b/documentation/manual/source/pics/configurethemes.png
index 8696cfd7e..1a9dd0d40 100644
Binary files a/documentation/manual/source/pics/configurethemes.png and b/documentation/manual/source/pics/configurethemes.png differ
diff --git a/openlp.pyw b/openlp.pyw
index 425d3c874..0d4e8c200 100755
--- a/openlp.pyw
+++ b/openlp.pyw
@@ -46,7 +46,7 @@ from openlp.core.ui.firsttimeform import FirstTimeForm
from openlp.core.ui.exceptionform import ExceptionForm
from openlp.core.ui import SplashScreen, ScreenList
from openlp.core.utils import AppLocation, LanguageManager, VersionThread, \
- get_application_version
+ get_application_version, DelayStartThread
log = logging.getLogger()
@@ -130,6 +130,7 @@ class OpenLP(QtGui.QApplication):
u'general/update check', QtCore.QVariant(True)).toBool()
if update_check:
VersionThread(self.mainWindow).start()
+ DelayStartThread(self.mainWindow).start()
return self.exec_()
def isAlreadyRunning(self):
@@ -250,4 +251,4 @@ if __name__ == u'__main__':
"""
Instantiate and run the application.
"""
- main()
\ No newline at end of file
+ main()
diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py
index 89eeb6ad4..cc2a2d9ae 100644
--- a/openlp/core/lib/__init__.py
+++ b/openlp/core/lib/__init__.py
@@ -37,6 +37,7 @@ log = logging.getLogger(__name__)
base_html_expands = []
+# Hex Color tags from http://www.w3schools.com/html/html_colornames.asp
base_html_expands.append({u'desc': u'Red', u'start tag': u'{r}',
u'start html': u'',
u'end tag': u'{/r}', u'end html': u'', u'protected': True})
@@ -53,13 +54,13 @@ base_html_expands.append({u'desc': u'Green', u'start tag': u'{g}',
u'start html': u'',
u'end tag': u'{/g}', u'end html': u'', u'protected': True})
base_html_expands.append({u'desc': u'Pink', u'start tag': u'{pk}',
- u'start html': u'',
+ u'start html': u'',
u'end tag': u'{/pk}', u'end html': u'', u'protected': True})
base_html_expands.append({u'desc': u'Orange', u'start tag': u'{o}',
- u'start html': u'',
+ u'start html': u'',
u'end tag': u'{/o}', u'end html': u'', u'protected': True})
base_html_expands.append({u'desc': u'Purple', u'start tag': u'{pp}',
- u'start html': u'',
+ u'start html': u'',
u'end tag': u'{/pp}', u'end html': u'', u'protected': True})
base_html_expands.append({u'desc': u'White', u'start tag': u'{w}',
u'start html': u'',
@@ -289,6 +290,5 @@ from htmlbuilder import build_html, build_lyrics_format_css, \
from toolbar import OpenLPToolbar
from dockwidget import OpenLPDockWidget
from renderer import Renderer
-from rendermanager import RenderManager
from mediamanageritem import MediaManagerItem
from openlp.core.utils.actions import ActionList
diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py
index e7d7bc4ec..e5e8ed3b1 100644
--- a/openlp/core/lib/mediamanageritem.py
+++ b/openlp/core/lib/mediamanageritem.py
@@ -34,7 +34,7 @@ from PyQt4 import QtCore, QtGui
from openlp.core.lib import SettingsManager, OpenLPToolbar, ServiceItem, \
StringContent, build_icon, translate, Receiver, ListWidgetWithDnD
from openlp.core.lib.ui import UiStrings, context_menu_action, \
- context_menu_separator
+ context_menu_separator, critical_error_message_box
log = logging.getLogger(__name__)
@@ -333,7 +333,21 @@ class MediaManagerItem(QtGui.QWidget):
log.info(u'New files(s) %s', unicode(files))
if files:
Receiver.send_message(u'cursor_busy')
- self.loadList(files)
+ names = []
+ for count in range(0, self.listView.count()):
+ names.append(self.listView.item(count).text())
+ newFiles = []
+ for file in files:
+ filename = os.path.split(unicode(file))[1]
+ if filename in names:
+ critical_error_message_box(
+ UiStrings().Duplicate,
+ unicode(translate('OpenLP.MediaManagerItem',
+ 'Duplicate file name %s.\nFilename already exists in '
+ 'list')) % filename)
+ else:
+ newFiles.append(file)
+ self.loadList(newFiles)
lastDir = os.path.split(unicode(files[0]))[0]
SettingsManager.set_last_dir(self.settingsSection, lastDir)
SettingsManager.set_list(self.settingsSection,
@@ -554,4 +568,4 @@ class MediaManagerItem(QtGui.QWidget):
item_id = remoteItem
else:
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
- return item_id
\ No newline at end of file
+ return item_id
diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py
index 08be86541..d0d83cd0c 100644
--- a/openlp/core/lib/plugin.py
+++ b/openlp/core/lib/plugin.py
@@ -161,7 +161,7 @@ class Plugin(QtCore.QObject):
self.log = logging.getLogger(self.name)
self.previewController = plugin_helpers[u'preview']
self.liveController = plugin_helpers[u'live']
- self.renderManager = plugin_helpers[u'render']
+ self.renderer = plugin_helpers[u'renderer']
self.serviceManager = plugin_helpers[u'service']
self.settingsForm = plugin_helpers[u'settings form']
self.mediadock = plugin_helpers[u'toolbox']
@@ -359,4 +359,4 @@ class Plugin(QtCore.QObject):
use of the singular name of the plugin object so must only be called
after this has been set.
"""
- self.textStrings[name] = {u'title': title, u'tooltip': tooltip}
\ No newline at end of file
+ self.textStrings[name] = {u'title': title, u'tooltip': tooltip}
diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py
index 0eeae6abd..bba85d176 100644
--- a/openlp/core/lib/renderer.py
+++ b/openlp/core/lib/renderer.py
@@ -23,46 +23,260 @@
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
-"""
-The :mod:`renderer` module enables OpenLP to take the input from plugins and
-format it for the output display.
-"""
+
import logging
-from PyQt4 import QtWebKit
+from PyQt4 import QtCore, QtWebKit
-from openlp.core.lib import expand_tags, build_lyrics_format_css, \
- build_lyrics_outline_css, Receiver
+from openlp.core.lib import ServiceItem, ImageManager, expand_tags, \
+ build_lyrics_format_css, build_lyrics_outline_css, Receiver, \
+ ItemCapabilities
+from openlp.core.lib.theme import ThemeLevel
+from openlp.core.ui import MainDisplay
log = logging.getLogger(__name__)
+VERSE = u'The Lord said to {r}Noah{/r}: \n' \
+ 'There\'s gonna be a {su}floody{/su}, {sb}floody{/sb}\n' \
+ 'The Lord said to {g}Noah{/g}:\n' \
+ 'There\'s gonna be a {st}floody{/st}, {it}floody{/it}\n' \
+ 'Get those children out of the muddy, muddy \n' \
+ '{r}C{/r}{b}h{/b}{bl}i{/bl}{y}l{/y}{g}d{/g}{pk}' \
+ 'r{/pk}{o}e{/o}{pp}n{/pp} of the Lord\n'
+FOOTER = [u'Arky Arky (Unknown)', u'Public Domain', u'CCLI 123456']
+
+HTML_END = u'