forked from openlp/openlp
Theme preview updates
This commit is contained in:
parent
efd5c60dfd
commit
45b12cf462
@ -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):
|
||||||
"""
|
"""
|
||||||
|
@ -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:
|
||||||
|
Loading…
Reference in New Issue
Block a user