From 166fabbd5fa47118cd540bc7a482b341e3e14d10 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Mon, 12 Jul 2010 20:36:42 +0100 Subject: [PATCH] Output now on main screen --- openlp/core/lib/htmlbuilder.py | 12 +++++++++--- openlp/core/lib/renderer.py | 3 +-- openlp/core/lib/rendermanager.py | 3 ++- openlp/core/lib/serviceitem.py | 7 ++++--- openlp/core/ui/maindisplay.py | 23 +++++++++++++++++++++-- openlp/core/ui/slidecontroller.py | 6 ++++-- 6 files changed, 41 insertions(+), 13 deletions(-) diff --git a/openlp/core/lib/htmlbuilder.py b/openlp/core/lib/htmlbuilder.py index ce0489dc0..b9152c9ec 100644 --- a/openlp/core/lib/htmlbuilder.py +++ b/openlp/core/lib/htmlbuilder.py @@ -86,6 +86,7 @@ def build_html(theme, screen, alert, image): build_alert(theme, width, height, alert), build_image(theme, width, height, alert), build_image_src(theme, width, height, alert, image)) + print html return html def build_video(theme, width, height, alert): @@ -119,7 +120,7 @@ def build_image_src(theme, width, height, alert, image): image_src = """ "; """ - return str(image_src % image_to_byte(image)) + return image_src % image_to_byte(image) def build_lyrics(theme, width, height, alert): lyrics = """ @@ -130,13 +131,18 @@ def build_lyrics(theme, width, height, alert): width: 640px; height: 480px; z-index:3; - text-shadow: 2px 2px 2px green; + %s; + font-family %s; font-size: %spx; } """ lyrics_html = u'' + shadow = u'' + outline = u'' if theme: - lyrics_html = lyrics % theme.font_main_proportion + if theme.display_shadow: + shadow = u'text-shadow: %spx %spx %spx %s' % (theme.display_shadow_size, theme.display_shadow_size, theme.display_shadow_size, theme.display_shadow_color) + lyrics_html = lyrics % (shadow,theme. font_main_name, theme.font_main_proportion) print lyrics_html return lyrics_html diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index ab4ce3d74..57dbdd602 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -181,8 +181,7 @@ class Renderer(object): old_html_text = temp_text page.append(shell % old_html_text) formatted.append(page) - print "ft", formatted - print "st", split_text + log.debug(u'format_slide - End') #return split_text return formatted diff --git a/openlp/core/lib/rendermanager.py b/openlp/core/lib/rendermanager.py index c8c9983c2..a08a1ac77 100644 --- a/openlp/core/lib/rendermanager.py +++ b/openlp/core/lib/rendermanager.py @@ -129,6 +129,7 @@ class RenderManager(object): self.calculate_default(self.screens.current[u'size']) self.renderer.set_theme(self.themedata) self.build_text_rectangle(self.themedata) + return self.renderer.bg_frame def build_text_rectangle(self, theme): """ @@ -212,7 +213,7 @@ class RenderManager(object): 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) + return image def calculate_default(self, screen): """ diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index c24dc994c..1818de7f1 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -167,10 +167,11 @@ class ServiceItem(object): has generated by the render method above. """ log.debug(u'render individual') + changed = False if self.theme is None: - self.render_manager.set_override_theme(None) + bg_image = self.render_manager.set_override_theme(None) else: - self.render_manager.set_override_theme(self.theme) + bg_image = self.render_manager.set_override_theme(self.theme) raw_html = self._display_frames[row][u'text'].split(u'\n') if self.cache.get(row): frame = self.cache[row] @@ -181,7 +182,7 @@ class ServiceItem(object): else: frame = self.render_manager.generate_slide(raw_html, u'') self.cache[row] = frame - return frame, raw_html[0] + return bg_image, frame, raw_html[0] def add_from_image(self, path, title, image): """ diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index a99e393df..0e2f9475a 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -104,7 +104,7 @@ class DisplayManager(QtGui.QWidget): splash_image) self.mainDisplay.setup() self.previewDisplay.setup() - self.mainDisplay.newDisplay(self.initialFrame, None, None) + self.mainDisplay.buildHtml(self.initialFrame) self.mainDisplay.show() def hideDisplay(self, message): @@ -131,6 +131,18 @@ class DisplayManager(QtGui.QWidget): """ self.mainDisplay.addImageWithText(frame) + def buildHtml(self, image=None): + """ + Handles the addition of a background Image to the displays + """ + self.mainDisplay.buildHtml(image) + + def text(self, text): + """ + Handles the addition of a background Image to the displays + """ + self.mainDisplay.text(text) + def displayImage(self, frame): """ Handles the addition of a background Image to the displays @@ -312,11 +324,18 @@ class WebViewer(DisplayWidget): preview.save("temp.png", "png") return preview - def newDisplay(self, image, text, video=None): + def initialDisplay(self, image, video=False): if not video: html = build_html(self.parent.renderManager.themedata, self.screen, None, image) self.webView.setHtml(html) + def buildHtml(self, image=None): + if not image: + html = build_html(self.parent.renderManager.themedata, self.screen, None, self.parent.renderManager.renderer.bg_frame) + else: + html = build_html(self.parent.renderManager.themedata, self.screen, None, image) + self.webView.setHtml(html) + #class DisplayWidget(QtGui.QGraphicsView): # """ # Customised version of QTableWidget which can respond to keyboard diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 593964b25..f8e9f2fae 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -590,6 +590,7 @@ class SlideController(QtGui.QWidget): else: self.PreviewListWidget.selectRow(slideno) self.enableToolBar(serviceItem) + #Reset the display html self.onSlideSelected() self.PreviewListWidget.setFocus() Receiver.send_message(u'slidecontroller_%s_started' % self.typePrefix, @@ -769,7 +770,7 @@ class SlideController(QtGui.QWidget): self.updatePreview() else: before = time.time() - frame, raw_html = self.serviceItem.get_rendered_frame(row) + changed, frame, raw_html = self.serviceItem.get_rendered_frame(row) if isinstance(frame, QtGui.QImage): self.SlidePreview.setPixmap(QtGui.QPixmap.fromImage(frame)) else: @@ -778,7 +779,8 @@ class SlideController(QtGui.QWidget): 15, u'Slide Rendering took %4s' % (time.time() - before)) if self.isLive: if self.serviceItem.is_text(): - self.mainDisplay.text(raw_html) + self.displayManager.buildHtml(changed) + self.displayManager.text(raw_html) else: self.displayManager.displayImage(frame) self.selectedRow = row