diff --git a/openlp.pyw b/openlp.pyw index 4e5e7736a..3909046c7 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -27,7 +27,7 @@ from openlp.core.lib import Receiver logging.basicConfig(level=logging.DEBUG, format=u'%(asctime)s %(name)-12s %(levelname)-8s %(message)s', - datefmt=u'%m-%d %H:%M', + datefmt=u'%m-%d %H:%M:%S', filename=u'openlp.log', filemode=u'w') diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 1c2de9e04..c49943e0f 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -114,7 +114,6 @@ class Renderer: def render_screen(self, screennum): log.debug(u'render screen\n %s %s ', screennum, self.words[screennum]) - import time t=0.0 words=self.words[screennum] retval=self._render_lines(words) @@ -173,7 +172,6 @@ class Renderer: else: p.fillRect(self._paint.rect(), QtGui.QColor(u'#000000')) p.end() - log.debug(u'render background done') def split_set_of_lines(self, lines, footer): @@ -252,7 +250,7 @@ class Renderer: def render_lines(self, lines, footer_lines=None): """render a set of lines according to the theme, return bounding box""" - #log.debug(u'_render_lines %s', lines) + log.debug(u'_render_lines %s', lines) bbox=self._render_lines_unaligned(lines, False) # Main font if footer_lines is not None: @@ -264,11 +262,8 @@ class Renderer: bbox=self._render_lines_unaligned(lines, False, (x, y)) if footer_lines is not None: - #x, y = self._correctAlignment(self._rect_footer, bbox1) bbox=self._render_lines_unaligned(footer_lines, True, (self._rect_footer.left(), self._rect_footer.top()) ) - log.debug(u'render lines DONE') - return bbox def _render_lines_unaligned(self, lines, footer, tlcorner=(0,0)): @@ -279,7 +274,7 @@ class Renderer: than a screenful (eg. by using split_set_of_lines) Returns the bounding box of the text as QRect""" - log.debug(u'render unaligned %s', lines) + log.debug(u'render lines unaligned %s', lines) x, y=tlcorner brx=x bry=y @@ -298,7 +293,7 @@ class Renderer: p.setPen(QtGui.QPen(QtGui.QColor(0,0,255))) p.drawRect(retval) p.end() - log.debug(u'render unaligned DONE') + return retval @@ -410,7 +405,7 @@ class Renderer: return width and height of text as a tuple (w,h)""" # setup defaults - #log.debug(u"_get_extent_and_render %s %s %s ", [line], tlcorner, draw) + log.debug(u'_get_extent_and_render %s %s %s ', [line], tlcorner, draw) p=QtGui.QPainter() p.begin(self._paint) # 'twould be more efficient to set this once when theme changes diff --git a/openlp/core/lib/rendermanager.py b/openlp/core/lib/rendermanager.py index b891ce0a0..dbb7ead2a 100644 --- a/openlp/core/lib/rendermanager.py +++ b/openlp/core/lib/rendermanager.py @@ -18,6 +18,7 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA """ import logging +import time import os, os.path import sys from PyQt4 import QtGui, QtCore, Qt @@ -41,21 +42,20 @@ class RenderManager: self.current_display = 0 self.renderer = Renderer(None) self.calculate_default(self.screen_list[self.current_display]['size']) - self.frame = None def set_override_theme(self, theme): - log.debug("set override theme to %s", theme) + log.debug(u'set override theme to %s', theme) if theme is not None: self.theme = theme else: self.theme = self.default_theme - log.debug("theme is now %s", self.theme) + log.debug(u'theme is now %s', self.theme) self.themedata = self.theme_manager.getThemeData(self.theme) self.renderer.set_theme(self.themedata) self.build_text_rectangle(self.themedata) def build_text_rectangle(self, theme): - + log.debug(u'build_text_rectangle ') main_rect = None footer_rect = None @@ -74,6 +74,7 @@ class RenderManager: self.renderer.set_text_rectangle(main_rect,footer_rect) def generate_preview(self, themedata): + log.debug(u'generate preview ') self.calculate_default(QtCore.QSize(800,600)) self.renderer.set_theme(themedata) self.build_text_rectangle(themedata) @@ -94,25 +95,23 @@ class RenderManager: return frame def format_slide(self, words, footer): - self.calculate_default(QtCore.QSize(800,600)) - frame = QtGui.QPixmap(self.width, self.height) - self.renderer.set_paint_dest(frame) + log.debug(u'format slide') + self.calculate_default(self.screen_list[self.current_display]['size']) + self.renderer.set_paint_dest(QtGui.QPixmap(self.width, self.height)) return self.renderer.format_slide(words, footer) - def generate_slide(self,main_text, footer_text, preview=True): - if preview == True: - self.calculate_default(QtCore.QSize(800,600)) + def generate_slide(self,main_text, footer_text): + log.debug(u'generate slide') + self.calculate_default(self.screen_list[self.current_display]['size']) frame = QtGui.QPixmap(self.width, self.height) self.renderer.set_paint_dest(frame) - answer=self.renderer.render_lines(main_text, footer_text) return frame def calculate_default(self, screen): + log.debug(u'calculate default %s' , screen) self.width = screen.width() self.height = screen.height() + log.debug(u'calculate default %d,%d' , self.width, self.height) self.footer_start = int(self.height*0.95) # 95% is start of footer - #update the rederer frame - self.frame = QtGui.QPixmap(self.width, self.height) - self.renderer.set_paint_dest(self.frame) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 1e438ff1c..543fa41ca 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -19,7 +19,8 @@ Place, Suite 330, Boston, MA 02111-1307 USA """ import logging import types -from PyQt4 import QtCore, QtGui +import time + from PyQt4.QtCore import * from PyQt4.QtGui import * @@ -51,34 +52,34 @@ class ServiceItem(): def addIcon(self, icon): ButtonIcon = None - if type(icon) is QtGui.QIcon: + if type(icon) is QIcon: ButtonIcon = icon elif type(icon) is types.StringType or type(icon) is types.UnicodeType: - ButtonIcon = QtGui.QIcon() + ButtonIcon = QIcon() if icon.startswith(u':/'): - ButtonIcon.addPixmap(QtGui.QPixmap(icon), QtGui.QIcon.Normal, - QtGui.QIcon.Off) + ButtonIcon.addPixmap(QPixmap(icon), QIcon.Normal, + QIcon.Off) else: - ButtonIcon.addPixmap(QtGui.QPixmap.fromImage(QtGui.QImage(icon)), - QtGui.QIcon.Normal, QtGui.QIcon.Off) + ButtonIcon.addPixmap(QPixmap.fromImage(QImage(icon)), + QIcon.Normal, QIcon.Off) self.iconic_representation = ButtonIcon def render(self): """ - The render method is what the plugin uses to render it's meda to the - screen. + The render method is what renders the frames for the screen. """ log.debug(u'Render called') if self.theme == None: self.render_manager.set_override_theme(None) else: self.render_manager.set_override_theme(self.theme) - + log.debug(u'Formatting slides') for slide in self.raw_slides: self.format_slides.append(self.render_manager.format_slide(slide, False)) + log.debug(u'Rendering slides') for slide in self.format_slides: + self.frames.append(self.render_manager.generate_slide(slide, self.raw_footer)) - self.frames.append(self.render_manager.generate_slide(slide, self.raw_footer, False)) def get_parent_node(self): """ diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 628dcff1e..c2df08cf8 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -29,6 +29,9 @@ class MainDisplay(QtGui.QWidget): self.setWindowTitle(u'OpenLP Display') self.screens = screens self.display = QtGui.QLabel(self) + self.display.setScaledContents(True) + self.displayBlank = False + self.blankFrame= None def setup(self, screenNumber): """ @@ -51,8 +54,25 @@ class MainDisplay(QtGui.QWidget): else: self.showMinimized() + painter=QtGui.QPainter() + self.blankFrame = QtGui.QPixmap(800, 600) + painter.begin(self.blankFrame) + painter.fillRect(self.blankFrame.rect(), QtGui.QColor(u'#000000')) + def frameView(self, frame): - self.display.setPixmap(frame) + if self.displayBlank == False: + self.display.setPixmap(frame) + + def blankDisplay(self): + if self.displayBlank == False: + self.displayBlank = True + self.tempPixmap = self.display.pixmap() + self.display.setPixmap(self.blankFrame) + else: + self.displayBlank = False + self.frameView(self.tempPixmap) + self.tempPixmap = None + def kill(self): pass diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 46f7d5e3f..079d2f64e 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -206,7 +206,7 @@ class SlideController(QWidget): self.onSlideSelected(row) def onBlankScreen(self): - pass + self.mainDisplay.blankDisplay() def onSlideSelected(self, index): frame = self.PreviewListData.getValue(index) @@ -218,6 +218,7 @@ class SlideController(QWidget): self.mainDisplay.frameView(frame) def addServiceItem(self, serviceitem): + log.debug(u'addServiceItem') self.serviceitem = serviceitem self.serviceitem.render() self.PreviewListData.clearItems() diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index c92935532..0e6a73e3d 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -187,6 +187,7 @@ class CustomMediaItem(MediaManagerItem): self.CustomListData.deleteRow(index) def onCustomPreviewClick(self): + log.debug(u'Custom Preview Requested') service_item = ServiceItem(self.parent) service_item.addIcon( ":/media/media_song.png") service_item.render_manager = self.parent.render_manager @@ -194,6 +195,7 @@ class CustomMediaItem(MediaManagerItem): self.parent.preview_controller.addServiceItem(service_item) def onCustomLiveClick(self): + log.debug(u'Custom Live Requested') service_item = ServiceItem(self.parent) service_item.addIcon( ":/media/media_song.png") service_item.render_manager = self.parent.render_manager @@ -201,6 +203,7 @@ class CustomMediaItem(MediaManagerItem): self.parent.live_controller.addServiceItem(service_item) def onCustomAddClick(self): + log.debug(u'Custom Add Requested') service_item = ServiceItem(self.parent) service_item.addIcon( ":/media/media_song.png") service_item.render_manager = self.parent.render_manager