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):