From 5989140c0d847f996b15ee609bc412168b687ecd Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Mon, 12 Jul 2010 17:49:38 +0100 Subject: [PATCH] More updates --- openlp/core/lib/htmlbuilder.py | 10 +++++++--- openlp/core/lib/rendermanager.py | 16 ++++++++++------ openlp/core/lib/serviceitem.py | 2 +- openlp/core/ui/maindisplay.py | 11 ++++++++--- 4 files changed, 26 insertions(+), 13 deletions(-) diff --git a/openlp/core/lib/htmlbuilder.py b/openlp/core/lib/htmlbuilder.py index 0521b0272..ce0489dc0 100644 --- a/openlp/core/lib/htmlbuilder.py +++ b/openlp/core/lib/htmlbuilder.py @@ -123,7 +123,7 @@ def build_image_src(theme, width, height, alert, image): def build_lyrics(theme, width, height, alert): lyrics = """ - .lyrics { + #lyrics { position: absolute; left: 0px; top: 0px; @@ -131,10 +131,14 @@ def build_lyrics(theme, width, height, alert): height: 480px; z-index:3; text-shadow: 2px 2px 2px green; - font-size: 40px; + font-size: %spx; } """ - return lyrics + lyrics_html = u'' + if theme: + lyrics_html = lyrics % theme.font_main_proportion + print lyrics_html + return lyrics_html def build_alert(theme, width, height, alert): alert = """ diff --git a/openlp/core/lib/rendermanager.py b/openlp/core/lib/rendermanager.py index c529d44f9..c8c9983c2 100644 --- a/openlp/core/lib/rendermanager.py +++ b/openlp/core/lib/rendermanager.py @@ -98,9 +98,11 @@ class RenderManager(object): def set_override_theme(self, theme): """ Set the appropriate theme depending on the theme level. + Called by the service item when building a display frame ``theme`` - The name of the song-level theme. + The name of the song-level theme. None means the service + item wants to use the given value. """ log.debug(u'set override theme to %s', theme) if self.theme_level == ThemeLevel.Global: @@ -180,8 +182,9 @@ class RenderManager(object): footer.append(u'CCLI 123456') formatted = self.renderer.format_slide(verse, False) #Only Render the first slide page returned - return self.renderer.generate_frame_from_lines(formatted[0], - footer)[u'main'] + image = self.previewDisplay.preview(self.renderer.bg_frame, main_text[0]) + return image #self.renderer.generate_frame_from_lines(formatted[0], + #footer)[u'main'] def format_slide(self, words): """ @@ -205,9 +208,10 @@ class RenderManager(object): The text for the slide footer. """ log.debug(u'generate slide') - #self.build_text_rectangle(self.themedata) - #self.renderer.set_frame_dest(self.width, self.height) - image = self.previewDisplay.preview(self.renderer.bg_image, main_text[0]) + self.build_text_rectangle(self.themedata) + self.renderer.set_frame_dest(self.width, self.height) + image = self.previewDisplay.preview(self.renderer.bg_frame, + main_text[0], self.themedata) return image #self.renderer.generate_frame_from_lines(main_text, footer_text) def calculate_default(self, screen): diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 1a7f3eba8..c24dc994c 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -370,7 +370,7 @@ class ServiceItem(object): if self.service_item_type == ServiceItemType.Text: return self.render_individual(row) else: - return {u'main':self._raw_frames[row][u'image'], u'trans':None} + return self._raw_frames[row][u'image'] def get_frame_title(self, row=0): """ diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 30d5d954f..a99e393df 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -70,7 +70,9 @@ class DisplayManager(QtGui.QWidget): self.parent = parent self.screens = screens self.audioPlayer = AudioPlayer(self) + # Live display self.mainDisplay = WebViewer(self, screens, True) + # Display for Preview and Theme previews self.previewDisplay = WebViewer(self, screens, False) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'maindisplay_hide'), self.hideDisplay) @@ -85,6 +87,7 @@ class DisplayManager(QtGui.QWidget): def setup(self): log.debug(u'mainDisplay - setup') + # let the render manager have the preview display. self.parent.RenderManager.previewDisplay = self.previewDisplay #Build the initial frame. self.initialFrame = QtGui.QImage( @@ -213,6 +216,7 @@ class WebViewer(DisplayWidget): def __init__(self, parent, screens, live): DisplayWidget.__init__(self, live, parent=None) + self.parent = parent self.screens = screens self.setWindowTitle(u'OpenLP Display') self.setWindowFlags(QtCore.Qt.FramelessWindowHint | @@ -251,6 +255,7 @@ class WebViewer(DisplayWidget): self.currslide = not self.currslide def text(self, slide): + print slide self.frame.findFirstElement('div#lyrics').setInnerXml(slide) def alert(self): @@ -291,9 +296,9 @@ class WebViewer(DisplayWidget): self.frame.setScrollBarPolicy(QtCore.Qt.Horizontal, QtCore.Qt.ScrollBarAlwaysOff) - def preview(self, image, text): + def preview(self, image, text, theme): self.setVisible(False) - html = build_html(text, self.screen, None, image) + html = build_html(theme, self.screen, None, image) self.webView.setHtml(html) self.frame.findFirstElement('div#lyrics').setInnerXml(text) preview = QtGui.QImage(self.screen[u'size'].width(), @@ -309,7 +314,7 @@ class WebViewer(DisplayWidget): def newDisplay(self, image, text, video=None): if not video: - html = build_html(None, self.screen, None, image) + html = build_html(self.parent.renderManager.themedata, self.screen, None, image) self.webView.setHtml(html) #class DisplayWidget(QtGui.QGraphicsView):