From 9bace991fa4d7c87e84827667ea3b45c3ed75cb9 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 10 Mar 2010 16:57:33 +0000 Subject: [PATCH 1/4] renderer changes --- openlp/core/lib/renderer.py | 37 ++++--------------------------- openlp/core/ui/slidecontroller.py | 3 +++ 2 files changed, 7 insertions(+), 33 deletions(-) diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index ea6e849d8..817fe3311 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -466,38 +466,9 @@ class Renderer(object): self._get_extent_and_render(line, footer, tlcorner=(x + display_shadow_size, y + display_shadow_size), draw=True, color = self._theme.display_shadow_color) - if self._theme.display_outline: - self._get_extent_and_render(line, footer, - (x + display_outline_size, y), draw=True, - color = self._theme.display_outline_color) - self._get_extent_and_render(line, footer, - (x, y + display_outline_size), draw=True, - color = self._theme.display_outline_color) - self._get_extent_and_render(line, footer, - (x, y - display_outline_size), draw=True, - color = self._theme.display_outline_color) - self._get_extent_and_render(line, footer, - (x - display_outline_size, y), draw=True, - color = self._theme.display_outline_color) - if display_outline_size > 1: - self._get_extent_and_render(line, footer, - (x + display_outline_size, y + display_outline_size), - draw=True, - color = self._theme.display_outline_color) - self._get_extent_and_render(line, footer, - (x - display_outline_size, y + display_outline_size), - draw=True, - color = self._theme.display_outline_color) - self._get_extent_and_render(line, footer, - (x + display_outline_size, y - display_outline_size), - draw=True, - color = self._theme.display_outline_color) - self._get_extent_and_render(line, footer, - (x - display_outline_size, y - display_outline_size), - draw=True, - color = self._theme.display_outline_color) - self._get_extent_and_render(line, footer,tlcorner=(x, y), - draw=True) + self._get_extent_and_render(line, footer, tlcorner=(x, y), draw=True, + outline_size=display_outline_size, + outline_color=self._theme.display_outline_color) y += h if linenum == 0: self._first_line_right_extent = rightextent @@ -535,7 +506,7 @@ class Renderer(object): self.mainFont.setPixelSize(self._theme.font_main_proportion) def _get_extent_and_render(self, line, footer, tlcorner=(0, 0), draw=False, - color=None): + color=None, outline_size=0, outline_color=None): """ Find bounding box of text - as render_single_line. If draw is set, actually draw the text to the current DC as well return width and diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index ff8507f5d..58268aecb 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -449,8 +449,10 @@ class SlideController(QtGui.QWidget): #If verse handle verse number else tag only if bits[0] == self.trUtf8('Verse'): tag = u'%s%s' % (bits[0][0], bits[1][0:] ) + row = bits[1][0:] else: tag = bits[0] + row = bits[0][0:1] try: test = self.slideList[tag] except: @@ -469,6 +471,7 @@ class SlideController(QtGui.QWidget): self.PreviewListWidget.setCellWidget(framenumber, 0, label) slide_height = width * self.parent.RenderManager.screen_ratio self.PreviewListWidget.setItem(framenumber, 0, item) + print row if slide_height != 0: self.PreviewListWidget.setRowHeight(framenumber, slide_height) if self.serviceItem.is_text(): From b3ce7bf940ca29fb89e411a505abd05b30671e6a Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 11 Mar 2010 08:11:36 +0000 Subject: [PATCH 2/4] Refactor theme outlines --- openlp/core/lib/renderer.py | 42 ++++++++++++++++++------------- openlp/core/ui/slidecontroller.py | 1 - 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 63da0f156..f0da82b0e 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -506,7 +506,7 @@ class Renderer(object): self.mainFont.setPixelSize(self._theme.font_main_proportion) def _get_extent_and_render(self, line, footer, tlcorner=(0, 0), draw=False, - color=None, outline_size=0, outline_color=None): + color=None, outline_size=None, outline_color=None): """ Find bounding box of text - as render_single_line. If draw is set, actually draw the text to the current DC as well return width and @@ -532,31 +532,37 @@ class Renderer(object): font = self.footerFont else: font = self.mainFont - self.painter.setFont(font) - if color is None: - if footer: - self.painter.setPen(QtGui.QColor(self._theme.font_footer_color)) - else: - self.painter.setPen(QtGui.QColor(self._theme.font_main_color)) - else: - self.painter.setPen(QtGui.QColor(color)) - x, y = tlcorner metrics = QtGui.QFontMetrics(font) w = metrics.width(line) h = metrics.height() if draw: - self.painter.drawText(x, y + metrics.ascent(), line) - if self._theme.display_slideTransition: - # Print 2nd image with 70% weight - self.painter2.setFont(font) + self.painter.setFont(font) if color is None: if footer: - self.painter2.setPen(QtGui.QColor(self._theme.font_footer_color)) + pen = QtGui.QColor(self._theme.font_footer_color) else: - self.painter2.setPen(QtGui.QColor(self._theme.font_main_color)) + pen = QtGui.QColor(self._theme.font_main_color) else: - self.painter2.setPen(QtGui.QColor(color)) - if draw: + pen = QtGui.QColor(color) + x, y = tlcorner + if outline_size: + path = QtGui.QPainterPath() + path.addText(QtCore.QPointF(x, y + metrics.ascent()), font, line) + self.painter.setBrush(self.painter.pen().brush()) + self.painter.setPen(QtGui.QPen(QtGui.QColor(outline_color), outline_size)) + self.painter.drawPath(path) + self.painter.setPen(pen) + self.painter.drawText(x, y + metrics.ascent(), line) + if self._theme.display_slideTransition: + # Print 2nd image with 70% weight + if outline_size: + path = QtGui.QPainterPath() + path.addText(QtCore.QPointF(x, y + metrics.ascent()), font, line) + self.painter2.setBrush(self.painter2.pen().brush()) + self.painter2.setPen(QtGui.QPen(QtGui.QColor(outline_color), outline_size)) + self.painter2.drawPath(path) + self.painter2.setFont(font) + self.painter2.setPen(pen) self.painter2.drawText(x, y + metrics.ascent(), line) return (w, h) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 0fc3fe4a4..31d2e08a5 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -470,7 +470,6 @@ class SlideController(QtGui.QWidget): self.PreviewListWidget.setCellWidget(framenumber, 0, label) slide_height = width * self.parent.RenderManager.screen_ratio self.PreviewListWidget.setItem(framenumber, 0, item) - print row if slide_height != 0: self.PreviewListWidget.setRowHeight(framenumber, slide_height) if self.serviceItem.is_text(): From 27d09b8be8b0561745edc731ebcc2676a4505e54 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 11 Mar 2010 08:29:32 +0000 Subject: [PATCH 3/4] Blank text screens do not have footers --- openlp/core/lib/serviceitem.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 00d043870..1d609c318 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -134,8 +134,11 @@ class ServiceItem(object): else: self.RenderManager.set_override_theme(self.theme) format = self._display_frames[row][u'text'].split(u'\n') - frame = self.RenderManager.generate_slide(format, - self.raw_footer) + if format[0]: + frame = self.RenderManager.generate_slide(format, + self.raw_footer) + else: + frame = self.RenderManager.generate_slide(format,u'') return frame def add_from_image(self, path, title, image): From e092dc85cdcc772407ff05681260513393383962 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 11 Mar 2010 12:53:20 +0000 Subject: [PATCH 4/4] Song edit bug - save and preview on new song --- openlp/core/lib/serviceitem.py | 1 + openlp/plugins/songs/forms/editsongform.py | 2 ++ 2 files changed, 3 insertions(+) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 1d609c318..7d869a610 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -134,6 +134,7 @@ class ServiceItem(object): else: self.RenderManager.set_override_theme(self.theme) format = self._display_frames[row][u'text'].split(u'\n') + #if screen blank then do not display footer if format[0]: frame = self.RenderManager.generate_slide(format, self.raw_footer) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index dd3af03c3..183af6a44 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -169,6 +169,8 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.loadAuthors() self.loadTopics() self.loadBooks() + #it's a new song to preview is not possible + self.previewButton.setVisible(False) def loadSong(self, id, preview): log.debug(u'Load Song')