diff --git a/openlp/core/display/render.py b/openlp/core/display/render.py
index f7bacf263..a539be319 100644
--- a/openlp/core/display/render.py
+++ b/openlp/core/display/render.py
@@ -47,6 +47,16 @@ FIRST_CHORD_TEMPLATE = '{chord}'
CHORD_LINE_TEMPLATE = '{chord}{tail}{whitespace}{remainder}'
WHITESPACE_TEMPLATE = '{whitespaces}'
+VERSE = 'The Lord said to {r}Noah{/r}: \n' \
+ 'There\'s gonna be a {su}floody{/su}, {sb}floody{/sb}\n' \
+ 'The Lord said to {g}Noah{/g}:\n' \
+ 'There\'s gonna be a {st}floody{/st}, {it}floody{/it}\n' \
+ 'Get those children out of the muddy, muddy \n' \
+ '{r}C{/r}{b}h{/b}{bl}i{/bl}{y}l{/y}{g}d{/g}{pk}' \
+ 'r{/pk}{o}e{/o}{pp}n{/pp} of the Lord\n'
+VERSE_FOR_LINE_COUNT = '\n'.join(map(str, range(100)))
+FOOTER = ['Arky Arky (Unknown)', 'Public Domain', 'CCLI 123456']
+
def remove_tags(text, can_remove_chords=False):
"""
@@ -443,6 +453,26 @@ class Renderer(RegistryBase, LogMixin, RegistryProperties, DisplayWindow):
"""
return self.run_javascript('Display.clearSlides();')
+ def generate_preview(self, theme_data, force_page=False):
+ """
+ Generate a preview of a theme.
+
+ :param theme_data: The theme to generated a preview for.
+ :param force_page: Flag to tell message lines per page need to be generated.
+ :rtype: QtGui.QPixmap
+ """
+ # save value for use in format_slide
+ self.force_page = force_page
+ if not self.force_page:
+ self.set_theme(theme_data)
+ verses = dict()
+ verses['v1'] = VERSE
+ self.load_verses(verses)
+ self.force_page = False
+ return self.save_screenshot()
+ self.force_page = False
+ return None
+
def format_slide(self, text, item):
"""
Calculate how much text can fit on a slide.
diff --git a/openlp/core/lib/theme.py b/openlp/core/lib/theme.py
index b9a86f57c..1a319415d 100644
--- a/openlp/core/lib/theme.py
+++ b/openlp/core/lib/theme.py
@@ -199,13 +199,13 @@ class Theme(object):
Set the header and footer size into the current primary screen.
10 px on each side is removed to allow for a border.
"""
- current_screen = ScreenList().current
+ current_screen_geometry = ScreenList().current.display_geometry
self.font_main_y = 0
- self.font_main_width = current_screen['size'].width() - 20
- self.font_main_height = current_screen['size'].height() * 9 / 10
- self.font_footer_width = current_screen['size'].width() - 20
- self.font_footer_y = current_screen['size'].height() * 9 / 10
- self.font_footer_height = current_screen['size'].height() / 10
+ self.font_main_width = current_screen_geometry.width() - 20
+ self.font_main_height = current_screen_geometry.height() * 9 / 10
+ self.font_footer_width = current_screen_geometry.width() - 20
+ self.font_footer_y = current_screen_geometry.height() * 9 / 10
+ self.font_footer_height = current_screen_geometry.height() / 10
def load_theme(self, theme, theme_path=None):
"""