diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index e3e275193..30f5c2dee 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -42,7 +42,7 @@ class Renderer(object): Initialise the renderer. """ self._rect = None - self._debug = 0 + self._debug = True self._right_margin = 64 # the amount of right indent self._display_shadow_size_footer = 0 self._display_outline_size_footer = 0 @@ -148,17 +148,22 @@ class Renderer(object): def pre_render_text(self, text): metrics = QtGui.QFontMetrics(self.mainFont) - #take the width work out approx how many characters and add 50% + #work out line width line_width = self._rect.width() - self._right_margin #number of lines on a page - adjust for rounding up. - page_length = int(self._rect.height() / metrics.height() - 2 ) - 1 + line_height = metrics.height() + if self._theme.display_shadow: + line_height += int(self._theme.display_shadow_size) + if self._theme.display_outline: + # pixels top/bottom + line_height += 2 * int(self._theme.display_outline_size) + page_length = int(self._rect.height() / line_height ) #Average number of characters in line ave_line_width = line_width / metrics.averageCharWidth() #Maximum size of a character max_char_width = metrics.maxWidth() - #Min size of a character - min_char_width = metrics.width(u'i') - char_per_line = line_width / min_char_width + #Max characters pre line based on min size of a character + char_per_line = line_width / metrics.width(u'i') log.debug(u'Page Length area height %s , metrics %s , lines %s' % (int(self._rect.height()), metrics.height(), page_length )) split_pages = [] @@ -221,6 +226,7 @@ class Renderer(object): """ self._rect = rect_main self._rect_footer = rect_footer + print "render = ", self._rect def generate_frame_from_lines(self, lines, footer_lines=None): """ @@ -567,7 +573,7 @@ class Renderer(object): x, y = tlcorner metrics = QtGui.QFontMetrics(font) w = metrics.width(line) - h = metrics.height() - 2 + h = metrics.height() if draw: self.painter.drawText(x, y + metrics.ascent(), line) if self._theme.display_slideTransition: diff --git a/openlp/core/lib/rendermanager.py b/openlp/core/lib/rendermanager.py index 1bd2b1400..cbbc6be26 100644 --- a/openlp/core/lib/rendermanager.py +++ b/openlp/core/lib/rendermanager.py @@ -160,8 +160,8 @@ class RenderManager(object): def build_text_rectangle(self, theme): """ - Builds a text block using the settings in ``theme``. - One is needed per slide + Builds a text block using the settings in ``theme`` + and the size of the display screen.height. ``theme`` The theme to build a text block for. @@ -170,14 +170,14 @@ class RenderManager(object): main_rect = None footer_rect = None if not theme.font_main_override: - main_rect = QtCore.QRect(10, 0, self.width - 1, - self.footer_start - 20) + main_rect = QtCore.QRect(10, 0, + self.width - 1, self.footer_start) else: main_rect = QtCore.QRect(theme.font_main_x, theme.font_main_y, theme.font_main_width - 1, theme.font_main_height - 1) if not theme.font_footer_override: - footer_rect = QtCore.QRect(10, self.footer_start, self.width - 1, - self.height-self.footer_start) + footer_rect = QtCore.QRect(10, self.footer_start, + self.width - 1, self.height - self.footer_start) else: footer_rect = QtCore.QRect(theme.font_footer_x, theme.font_footer_y, theme.font_footer_width - 1, @@ -192,7 +192,7 @@ class RenderManager(object): The theme to generated a preview for. """ log.debug(u'generate preview') - #set the defaukt image size for previews + #set the default image size for previews self.calculate_default(QtCore.QSize(1024, 768)) self.renderer.set_theme(themedata) self.build_text_rectangle(themedata) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 19cbe37c2..603d7cadb 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -102,11 +102,13 @@ class ServiceItem(object): formated = self.RenderManager.format_slide(slide[u'raw_slide']) for format in formated: lines = u'' + title = u'' for line in format: + if title == u'': + title = line lines += line + u'\n' - title = lines.split(u'\n')[0] self._display_frames.append({u'title': title, \ - u'text': lines, u'verseTag': slide[u'verseTag'] }) + u'text': lines.rstrip(), u'verseTag': slide[u'verseTag'] }) log.log(15, u'Formatting took %4s' % (time.time() - before)) elif self.service_item_type == ServiceItemType.Image: for slide in self._raw_frames: diff --git a/openlp/core/ui/amendthemeform.py b/openlp/core/ui/amendthemeform.py index 24a22a7cf..97eecd1e8 100644 --- a/openlp/core/ui/amendthemeform.py +++ b/openlp/core/ui/amendthemeform.py @@ -694,8 +694,14 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): if self.allowPreview: #calculate main number of rows metrics = self._getThemeMetrics() + line_height = metrics.height() + if self.theme.display_shadow: + line_height += int(self.theme.display_shadow_size) + if self.theme.display_outline: + # pixels top/bottom + line_height += 2 * int(self.theme.display_outline_size) page_length = \ - (self.FontMainHeightSpinBox.value() / metrics.height() - 2) - 1 + ((self.FontMainHeightSpinBox.value()) / line_height ) log.debug(u'Page Length area height %s, metrics %s, lines %s' % (self.FontMainHeightSpinBox.value(), metrics.height(), page_length)) @@ -719,4 +725,4 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): if self.theme.font_main_width < metrics.maxWidth() * 2 + 64: self.theme.font_main_width = metrics.maxWidth() * 2 + 64 self.FontMainWidthSpinBox.setValue(self.theme.font_main_width) - return metrics \ No newline at end of file + return metrics diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 4ad334f8b..019c614d7 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -139,6 +139,7 @@ class MainDisplay(DisplayWidget): @param (integer) screen This is the screen number. """ log.debug(u'Setup %s for %s ' %(self.screens, screenNumber)) + print "all the screen ", self.screens self.setVisible(False) self.screen = self.screens[screenNumber] if self.screen[u'number'] != screenNumber: @@ -190,7 +191,12 @@ class MainDisplay(DisplayWidget): The alert displays are set to 10% of the screen as the video display is unable to handle transparent pixmaps. This is a problem with QT. """ + print "--------- Set screen geom ------------" + print "display ", self.screen[u'size'] + print "main geom before ", self.geometry() self.setGeometry(self.screen[u'size']) + print "main geom after ", self.geometry() + print "display geom", self.display.geometry() self.alertScreenPosition = self.screen[u'size'].height() * 0.9 self.alertHeight = self.screen[u'size'].height() - self.alertScreenPosition self.alertDisplay.setGeometry( @@ -221,6 +227,7 @@ class MainDisplay(DisplayWidget): elif not self.displayBlank: if transition: if self.hasTransition: + print len(self.frame[u'trans']) if self.frame[u'trans'] is not None: self.display.setPixmap(QtGui.QPixmap.fromImage(self.frame[u'trans'])) self.repaint() diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 854811484..a508189de 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -614,6 +614,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.settingsForm.exec_() updated_display = self.getMonitorNumber() if updated_display != self.RenderManager.current_display: + print "main display screen changed to ", updated_display self.RenderManager.update_display(updated_display) self.mainDisplay.setup(updated_display) self.activateWindow() @@ -704,4 +705,4 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): def togglePreviewPanel(self): previewBool = self.PreviewController.Panel.isVisible() self.PreviewController.Panel.setVisible(not previewBool) - self.settingsmanager.togglePreviewPanel(not previewBool) \ No newline at end of file + self.settingsmanager.togglePreviewPanel(not previewBool) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index c4d52ff57..34c66eacd 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -441,6 +441,7 @@ class SlideController(QtGui.QWidget): self.SongMenu.menu().addAction(self.trUtf8(u'%s'%tag), self.onSongBarHandler) item.setText(frame[u'text']) + #print {u'x':frame[u'text']} else: label = QtGui.QLabel() label.setMargin(4)