From 3d9fca212f12359643ab023142c2bd1dae1c004e Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 11 Jul 2010 16:53:40 +0100 Subject: [PATCH] Renderer replacement- text now outputs --- openlp/core/lib/rendermanager.py | 7 ++++--- openlp/core/lib/serviceitem.py | 8 ++++---- openlp/core/ui/maindisplay.py | 28 ++++++++++++++++++++-------- openlp/core/ui/mainwindow.py | 2 +- openlp/core/ui/slidecontroller.py | 3 ++- 5 files changed, 31 insertions(+), 17 deletions(-) diff --git a/openlp/core/lib/rendermanager.py b/openlp/core/lib/rendermanager.py index b3c46a5eb..c529d44f9 100644 --- a/openlp/core/lib/rendermanager.py +++ b/openlp/core/lib/rendermanager.py @@ -205,9 +205,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) - return self.renderer.generate_frame_from_lines(main_text, footer_text) + #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]) + 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 86694e986..2b27f8071 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -171,15 +171,15 @@ class ServiceItem(object): self.render_manager.set_override_theme(None) else: self.render_manager.set_override_theme(self.theme) - format = self._display_frames[row][u'text'].split(u'\n') + raw_html = self._display_frames[row][u'text'].split(u'\n') if self.cache.get(row): frame = self.cache[row] else: - if format[0]: - frame = self.render_manager.generate_slide(format, + if raw_html[0]: + frame = self.render_manager.generate_slide(raw_html, self.raw_footer) else: - frame = self.render_manager.generate_slide(format, u'') + frame = self.render_manager.generate_slide(raw_html, u'') self.cache[row] = frame return frame diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 017d59280..fa2f8e3c9 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -65,11 +65,13 @@ class DisplayManager(QtGui.QWidget): extra displays to be added. RenderManager is poked in by MainWindow """ - def __init__(self, screens): + def __init__(self, parent, screens): QtGui.QWidget.__init__(self) + self.parent = parent self.screens = screens self.audioPlayer = AudioPlayer(self) - self.mainDisplay = WebViewer(self, screens) + self.mainDisplay = WebViewer(self, screens, True) + self.previewDisplay = WebViewer(self, screens, False) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'maindisplay_hide'), self.hideDisplay) QtCore.QObject.connect(Receiver.get_receiver(), @@ -83,12 +85,12 @@ class DisplayManager(QtGui.QWidget): def setup(self): log.debug(u'mainDisplay - setup') + self.parent.RenderManager.previewDisplay = self.previewDisplay #Build the initial frame. self.initialFrame = QtGui.QImage( self.screens.current[u'size'].width(), self.screens.current[u'size'].height(), QtGui.QImage.Format_ARGB32_Premultiplied) - print self.screens.current splash_image = QtGui.QImage(u':/graphics/openlp-splash-screen.png') painter_image = QtGui.QPainter() painter_image.begin(self.initialFrame) @@ -98,6 +100,7 @@ class DisplayManager(QtGui.QWidget): (self.screens.current[u'size'].height() - splash_image.height()) / 2, splash_image) self.mainDisplay.setup() + self.previewDisplay.setup() self.mainDisplay.newDisplay(self.initialFrame, None, None) self.mainDisplay.show() @@ -163,11 +166,14 @@ class DisplayWidget(QtGui.QGraphicsView): """ log.info(u'Display Widget loaded') - def __init__(self, parent=None, name=None): + def __init__(self, live, parent=None, name=None): QtGui.QGraphicsView.__init__(self) self.parent = parent + self.live = live def keyPressEvent(self, event): + if not live: + return if type(event) == QtGui.QKeyEvent: #here accept the event and do something if event.key() == QtCore.Qt.Key_Down: @@ -205,8 +211,8 @@ class DisplayWidget(QtGui.QGraphicsView): class WebViewer(DisplayWidget): - def __init__(self, parent, screens): - DisplayWidget.__init__(self, parent=None) + def __init__(self, parent, screens, live): + DisplayWidget.__init__(self, live, parent=None) self.screens = screens self.setWindowTitle(u'OpenLP Display') self.setWindowFlags(QtCore.Qt.FramelessWindowHint | @@ -285,13 +291,19 @@ class WebViewer(DisplayWidget): self.frame.setScrollBarPolicy(QtCore.Qt.Horizontal, QtCore.Qt.ScrollBarAlwaysOff) - def preview(self): + def preview(self, image, text): self.setVisible(False) - preview = QtGui.QImage(QtCore.QSize(640, 480), QtGui.QImage.Format_ARGB32_Premultiplied) + html = build_html(text, self.screen, None, image) + self.webView.setHtml(html) + self.frame.findFirstElement('div#lyrics').setInnerXml(text) + preview = QtGui.QImage(self.screen[u'size'].width(), + self.screen[u'size'].height(), + QtGui.QImage.Format_ARGB32_Premultiplied) painter = QtGui.QPainter(preview) painter.setRenderHint(QtGui.QPainter.Antialiasing) self.frame.render(painter) painter.end() + #save preview for debugging preview.save("temp.png", "png") return preview diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index ccef8a5ea..b22edfcea 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -527,7 +527,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.songsSettingsSection = u'songs' self.serviceNotSaved = False self.settingsmanager = SettingsManager(screens) - self.displayManager = DisplayManager(screens) + self.displayManager = DisplayManager(self, screens) self.aboutForm = AboutForm(self, applicationVersion) self.settingsForm = SettingsForm(self.screens, self, self) self.recentFiles = QtCore.QStringList() diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 8f9242764..5fe35658a 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -783,7 +783,8 @@ class SlideController(QtGui.QWidget): 15, u'Slide Rendering took %4s' % (time.time() - before)) if self.isLive: if self.serviceItem.is_text(): - self.mainDisplay.frameView(frame, True) + pass + #self.mainDisplay.frameView(frame, True) else: self.displayManager.displayImage(frame[u'main']) self.selectedRow = row