Theme preview updates

This commit is contained in:
Tim Bentley 2010-08-07 09:50:58 +01:00
parent efd5c60dfd
commit 45b12cf462
2 changed files with 18 additions and 15 deletions

View File

@ -112,7 +112,7 @@ class RenderManager(object):
""" """
self.service_theme = service_theme self.service_theme = service_theme
def set_override_theme(self, theme): def set_override_theme(self, theme, overrideLevels=False):
""" """
Set the appropriate theme depending on the theme level. Set the appropriate theme depending on the theme level.
Called by the service item when building a display frame Called by the service item when building a display frame
@ -122,9 +122,12 @@ class RenderManager(object):
item wants to use the given value. item wants to use the given value.
""" """
log.debug(u'set override theme to %s', theme) log.debug(u'set override theme to %s', theme)
if self.theme_level == ThemeLevel.Global: theme_level = self.theme_level
if overrideLevels:
theme_level = ThemeLevel.Song
if theme_level == ThemeLevel.Global:
self.theme = self.global_theme self.theme = self.global_theme
elif self.theme_level == ThemeLevel.Service: elif theme_level == ThemeLevel.Service:
if self.service_theme == u'': if self.service_theme == u'':
self.theme = self.global_theme self.theme = self.global_theme
else: else:
@ -132,15 +135,16 @@ class RenderManager(object):
else: else:
if theme: if theme:
self.theme = theme self.theme = theme
elif self.theme_level == ThemeLevel.Song or \ elif theme_level == ThemeLevel.Song or \
self.theme_level == ThemeLevel.Service: theme_level == ThemeLevel.Service:
if self.service_theme == u'': if self.service_theme == u'':
self.theme = self.global_theme self.theme = self.global_theme
else: else:
self.theme = self.service_theme self.theme = self.service_theme
else: else:
self.theme = self.global_theme self.theme = self.global_theme
if self.theme != self.renderer.theme_name or self.themedata is None: if self.theme != self.renderer.theme_name or self.themedata is None \
or overrideLevels:
log.debug(u'theme is now %s', self.theme) log.debug(u'theme is now %s', self.theme)
self.themedata = self.theme_manager.getThemeData(self.theme) self.themedata = self.theme_manager.getThemeData(self.theme)
self.calculate_default(self.screens.current[u'size']) self.calculate_default(self.screens.current[u'size'])
@ -185,11 +189,6 @@ class RenderManager(object):
log.debug(u'generate preview') log.debug(u'generate preview')
# set the default image size for previews # set the default image size for previews
self.calculate_default(self.screens.preview[u'size']) self.calculate_default(self.screens.preview[u'size'])
self.renderer.set_theme(themedata)
self.build_text_rectangle(themedata)
self.renderer.set_frame_dest(self.width, self.height, True)
# Reset the real screen size for subsequent render requests
self.calculate_default(self.screens.current[u'size'])
verse = u'Amazing Grace!\n'\ verse = u'Amazing Grace!\n'\
'How sweet the sound\n'\ 'How sweet the sound\n'\
'To save a wretch like me;\n'\ 'To save a wretch like me;\n'\
@ -201,13 +200,17 @@ class RenderManager(object):
footer.append(u'CCLI 123456') footer.append(u'CCLI 123456')
# build a service item to generate preview # build a service item to generate preview
serviceItem = ServiceItem() serviceItem = ServiceItem()
serviceItem.theme = themedata
serviceItem.add_from_text(u'', verse, footer) serviceItem.add_from_text(u'', verse, footer)
serviceItem.render_manager = self serviceItem.render_manager = self
serviceItem.render() serviceItem.render(True)
serviceItem.raw_footer = footer serviceItem.raw_footer = footer
self.display.buildHtml(serviceItem) self.display.buildHtml(serviceItem)
frame, raw_html = serviceItem.get_rendered_frame(0) frame, raw_html = serviceItem.get_rendered_frame(0)
return self.display.text(raw_html) preview = self.display.text(raw_html)
# Reset the real screen size for subsequent render requests
self.calculate_default(self.screens.current[u'size'])
return preview
def format_slide(self, words, line_break): def format_slide(self, words, line_break):
""" """

View File

@ -131,7 +131,7 @@ class ServiceItem(object):
self.icon = icon self.icon = icon
self.iconic_representation = build_icon(icon) self.iconic_representation = build_icon(icon)
def render(self): def render(self, useOverride=False):
""" """
The render method is what generates the frames for the screen and The render method is what generates the frames for the screen and
obtains the display information from the renderemanager. obtains the display information from the renderemanager.
@ -150,7 +150,7 @@ class ServiceItem(object):
if not self.theme: if not self.theme:
theme = self.theme theme = self.theme
self.main, self.footer = \ self.main, self.footer = \
self.render_manager.set_override_theme(theme) self.render_manager.set_override_theme(theme, useOverride)
self.bg_frame = self.render_manager.renderer.bg_frame self.bg_frame = self.render_manager.renderer.bg_frame
self.themedata = self.render_manager.renderer._theme self.themedata = self.render_manager.renderer._theme
for slide in self._raw_frames: for slide in self._raw_frames: