diff --git a/openlp/core/lib/htmlbuilder.py b/openlp/core/lib/htmlbuilder.py
index 4848cf4ea..b3076bd5e 100644
--- a/openlp/core/lib/htmlbuilder.py
+++ b/openlp/core/lib/htmlbuilder.py
@@ -45,38 +45,90 @@ HTMLSRC = u"""
-
+
-
- |
+
+
+
+
+
@@ -100,6 +152,7 @@ def build_html(item, screen, alert):
"""
width = screen[u'size'].width()
height = screen[u'size'].height()
+ theme = item.themedata
html = HTMLSRC % (build_video(width, height),
build_image(width, height),
build_lyrics(item),
@@ -107,6 +160,7 @@ def build_html(item, screen, alert):
build_alert(width, alert),
build_image(width, height),
build_blank(width, height),
+ "true" if theme and theme.display_slideTransition else "false",
build_image_src(item.bg_frame))
print html
return html
@@ -172,30 +226,36 @@ def build_lyrics(item):
Service Item containing theme and location information
"""
style = """
- .lyricstable { %s }
+ .lyricscommon { position: absolute; %s }
+ .lyricstable { z-index:4; %s }
+ .lyricsoutlinetable { z-index:3; %s }
+ .lyricsshadowtable { z-index:2; %s }
.lyrics { %s }
- #lyricsmain { %s }
- #lyricsoutline { %s }
- #lyricsmaintable { z-index:4; }
- #lyricsoutlinetable { z-index:3; }
+ .lyricsoutline { %s }
+ .lyricsshadow { %s }
table {border=0; margin=0; padding=0; }
- """
+ """
theme = item.themedata
- position = u''
- outline = u'display: none;'
- shadow = u''
- fontworks = u''
+ lyricscommon = u''
+ lyricstable = u''
+ outlinetable = u''
+ shadowtable = u''
lyrics = u''
- lyricsmain = u''
- font = u''
- text = u''
+ outline = u'display: none;'
+ shadow = u'display: none;'
if theme:
- position = u'position: absolute; left: %spx; top: %spx;' \
- ' width: %spx; height: %spx; ' % \
- (item.main.x(), item.main.y(), item.main.width(),
- item.main.height())
- font = u' font-family %s; font-size: %spx;' % \
- (theme.font_main_name, theme.font_main_proportion)
+ lyricscommon = u'width: %spx; height: %spx; ' \
+ u'font-family %s; font-size: %spx; color: %s; line-height: %d%%' % \
+ (item.main.width(), item.main.height(),
+ theme.font_main_name, theme.font_main_proportion,
+ theme.font_main_color, 100 + int(theme.font_main_line_adjustment))
+ lyricstable = u'left: %spx; top: %spx;' % \
+ (item.main.x(), item.main.y())
+ outlinetable = u'left: %spx; top: %spx;' % \
+ (item.main.x(), item.main.y())
+ shadowtable = u'left: %spx; top: %spx;' % \
+ (item.main.x() + float(theme.display_shadow_size),
+ item.main.y() + float(theme.display_shadow_size))
align = u''
if theme.display_horizontalAlign == 2:
align = u'text-align:center;'
@@ -209,18 +269,21 @@ def build_lyrics(item):
valign = u'vertical-align:middle;'
else:
valign = u'vertical-align:top;'
- line_height = u'line-height: %d%%' % (100 + int(theme.font_main_line_adjustment))
- lyrics = u'%s %s %s %s' % (font, align, valign, line_height)
+ lyrics = u'%s %s' % (align, valign)
if theme.display_outline:
- outline = u'-webkit-text-stroke: %sem %s;' % \
+ outline = u'-webkit-text-stroke: %sem %s; ' % \
(float(theme.display_outline_size) / 16,
theme.display_outline_color)
- if theme.display_shadow:
- shadow_size = str(float(theme.display_shadow_size) / 16)
- shadow = u'text-shadow: %sem %sem %s;' % \
- (shadow_size, shadow_size, theme.display_shadow_color)
- lyricsmain = u'color:%s; %s' % (theme.font_main_color, shadow)
- lyrics_html = style % (position, lyrics, lyricsmain, outline)
+ if theme.display_shadow:
+ shadow = u'-webkit-text-stroke: %sem %s; ' % \
+ (float(theme.display_outline_size) / 16,
+ theme.display_shadow_color)
+ else:
+ if theme.display_shadow:
+ shadow = u'color: %s;' % (theme.display_shadow_color)
+
+ lyrics_html = style % (lyricscommon, lyricstable, outlinetable,
+ shadowtable, lyrics, outline, shadow)
print lyrics_html
return lyrics_html
diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py
index 648d05c89..94f692956 100644
--- a/openlp/core/ui/maindisplay.py
+++ b/openlp/core/ui/maindisplay.py
@@ -155,15 +155,6 @@ class MainDisplay(DisplayWidget):
else:
self.primary = True
- def next(self):
- if self.currslide:
- #self.frame.evaluateJavaScript("startfade('" + self.slide2 + "')")
- self.frame.findFirstElement('td#lyrics').setInnerXml(self.slide2)
- else:
- #self.frame.evaluateJavaScript("startfade('" + self.slide1 + "')")
- self.frame.findFirstElement('td#lyrics').setInnerXml(self.slide1)
- self.currslide = not self.currslide
-
def text(self, slide):
"""
Add the slide text from slideController
@@ -172,9 +163,9 @@ class MainDisplay(DisplayWidget):
The slide text to be displayed
"""
log.debug(u'text')
- print slide
- self.frame.findFirstElement('td#lyricsmain').setInnerXml(slide)
- self.frame.findFirstElement('td#lyricsoutline').setInnerXml(slide)
+ print slide
+ self.frame.evaluateJavaScript("startfade('" +
+ slide.replace("\\", "\\\\").replace("\'", "\\\'") + "')")
return self.preview()
def alert(self):
@@ -223,7 +214,7 @@ class MainDisplay(DisplayWidget):
"document.getElementById('image').style.visibility = 'hidden'")
self.frame.evaluateJavaScript("document.getElementById('video').play()")
if noSound:
- self.frame.evaluateJavaScript("document.getElementById('video').mute()")
+ self.frame.evaluateJavaScript("document.getElementById('video').volume = 0")
def loaded(self):
"""
@@ -268,6 +259,8 @@ class MainDisplay(DisplayWidget):
Store the images so they can be replaced when required
"""
log.debug(u'hideDisplay mode = %d', mode)
+ self.frame.evaluateJavaScript(
+ "document.getElementById('blank').style.visibility = 'visible'")
if mode == HideMode.Screen:
self.setVisible(False)
elif mode == HideMode.Blank:
@@ -292,7 +285,8 @@ class MainDisplay(DisplayWidget):
Make the stored images None to release memory.
"""
log.debug(u'showDisplay')
- self.frame.findFirstElement('img').setAttribute('src', u'')
+ self.frame.evaluateJavaScript(
+ "document.getElementById('blank').style.visibility = 'hidden'")
if self.isHidden():
self.setVisible(True)
# Trigger actions when display is active again
diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py
index 4504dc455..0207ab716 100644
--- a/openlp/plugins/media/lib/mediaitem.py
+++ b/openlp/plugins/media/lib/mediaitem.py
@@ -115,7 +115,7 @@ class MediaMediaItem(MediaManagerItem):
'You must select a media file to replace the background with.')):
item = self.listView.currentItem()
filename = unicode(item.data(QtCore.Qt.UserRole).toString())
- self.parent.liveController.display.video(filename)
+ self.parent.liveController.display.video(filename, True)
self.resetButton.setVisible(True)
def generateSlideData(self, service_item, item=None):