Fix up comments from merge

More cleanups discovered
Fix Theme Copying as it was broken
This commit is contained in:
Tim Bentley 2010-11-24 21:50:51 +00:00
parent 9cc994e0e0
commit a12498e011
4 changed files with 61 additions and 51 deletions

View File

@ -32,7 +32,7 @@ import logging
from PyQt4 import QtWebKit from PyQt4 import QtWebKit
from openlp.core.lib import expand_tags, build_lyrics_format_css, \ from openlp.core.lib import expand_tags, build_lyrics_format_css, \
build_lyrics_outline_css, Receiver build_lyrics_outline_css, Receiver
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -92,7 +92,7 @@ class Renderer(object):
(build_lyrics_format_css(self._theme, self.page_width, (build_lyrics_format_css(self._theme, self.page_width,
self.page_height), build_lyrics_outline_css(self._theme)) self.page_height), build_lyrics_outline_css(self._theme))
def format_slide(self, words, line_break, forcePage=False): def format_slide(self, words, line_break, force_page=False):
""" """
Figure out how much text can appear on a slide, using the current Figure out how much text can appear on a slide, using the current
theme settings. theme settings.
@ -103,6 +103,9 @@ class Renderer(object):
``line_break`` ``line_break``
Add line endings after each line of text used for bibles. Add line endings after each line of text used for bibles.
``force_page``
Flag to tell message lines in page.
""" """
log.debug(u'format_slide - Start') log.debug(u'format_slide - Start')
line_end = u'' line_end = u''
@ -128,7 +131,7 @@ class Renderer(object):
self.web.setHtml(html) self.web.setHtml(html)
# Text too long so go to next page # Text too long so go to next page
if self.web_frame.contentsSize().height() > self.page_height: if self.web_frame.contentsSize().height() > self.page_height:
if forcePage and line_count > 0: if force_page and line_count > 0:
Receiver.send_message(u'theme_line_count', line_count) Receiver.send_message(u'theme_line_count', line_count)
line_count = -1 line_count = -1
if html_text.endswith(u'<br>'): if html_text.endswith(u'<br>'):

View File

@ -67,7 +67,7 @@ class RenderManager(object):
self.service_theme = u'' self.service_theme = u''
self.theme_level = u'' self.theme_level = u''
self.override_background = None self.override_background = None
self.themedata = None self.theme_data = None
self.alertTab = None self.alertTab = None
self.force_page = False self.force_page = False
@ -81,7 +81,7 @@ class RenderManager(object):
self.display.imageManager = self.image_manager self.display.imageManager = self.image_manager
self.display.setup() self.display.setup()
self.renderer.bg_frame = None self.renderer.bg_frame = None
self.themedata = None self.theme_data = None
self.image_manager.update_display(self.width, self.height) self.image_manager.update_display(self.width, self.height)
def set_global_theme(self, global_theme, theme_level=ThemeLevel.Global): def set_global_theme(self, global_theme, theme_level=ThemeLevel.Global):
@ -100,7 +100,7 @@ class RenderManager(object):
self.theme_level = theme_level self.theme_level = theme_level
self.global_theme_data = \ self.global_theme_data = \
self.theme_manager.getThemeData(self.global_theme) self.theme_manager.getThemeData(self.global_theme)
self.themedata = None self.theme_data = None
def set_service_theme(self, service_theme): def set_service_theme(self, service_theme):
""" """
@ -110,7 +110,7 @@ class RenderManager(object):
The service-level theme to be set. The service-level theme to be set.
""" """
self.service_theme = service_theme self.service_theme = service_theme
self.themedata = None self.theme_data = None
def set_override_theme(self, theme, overrideLevels=False): def set_override_theme(self, theme, overrideLevels=False):
""" """
@ -147,19 +147,19 @@ class RenderManager(object):
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.theme_data is None \
or overrideLevels: or overrideLevels:
log.debug(u'theme is now %s', self.theme) log.debug(u'theme is now %s', self.theme)
# Force the theme to be the one passed in. # Force the theme to be the one passed in.
if overrideLevels: if overrideLevels:
self.themedata = theme self.theme_data = theme
else: else:
self.themedata = self.theme_manager.getThemeData(self.theme) self.theme_data = self.theme_manager.getThemeData(self.theme)
self.calculate_default(self.screens.current[u'size']) self.calculate_default(self.screens.current[u'size'])
self.renderer.set_theme(self.themedata) self.renderer.set_theme(self.theme_data)
self.build_text_rectangle(self.themedata) self.build_text_rectangle(self.theme_data)
self.image_manager.add_image(self.themedata.theme_name, self.image_manager.add_image(self.theme_data.theme_name,
self.themedata.background_filename) self.theme_data.background_filename)
return self.renderer._rect, self.renderer._rect_footer return self.renderer._rect, self.renderer._rect_footer
def build_text_rectangle(self, theme): def build_text_rectangle(self, theme):
@ -188,15 +188,19 @@ class RenderManager(object):
theme.font_footer_height - 1) theme.font_footer_height - 1)
self.renderer.set_text_rectangle(main_rect, footer_rect) self.renderer.set_text_rectangle(main_rect, footer_rect)
def generate_preview(self, themedata, forcePage=False): def generate_preview(self, theme_data, force_page=False):
""" """
Generate a preview of a theme. Generate a preview of a theme.
``themedata`` ``theme_data``
The theme to generated a preview for. The theme to generated a preview for.
``force_page``
Flag to tell message lines per page need to be generated.
""" """
log.debug(u'generate preview') log.debug(u'generate preview')
self.force_page = forcePage # save value for use in format_slide
self.force_page = force_page
# 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'])
verse = u'The Lord said to {r}Noah{/r}: \n' \ verse = u'The Lord said to {r}Noah{/r}: \n' \
@ -215,7 +219,7 @@ 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.theme = theme_data
serviceItem.add_from_text(u'', verse, footer) serviceItem.add_from_text(u'', verse, footer)
serviceItem.render_manager = self serviceItem.render_manager = self
serviceItem.raw_footer = footer serviceItem.raw_footer = footer

View File

@ -628,15 +628,15 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
(QtGui.QMessageBox.Ok), (QtGui.QMessageBox.Ok),
QtGui.QMessageBox.Ok) QtGui.QMessageBox.Ok)
return return
save_from = None saveFrom = None
save_to = None saveTo = None
if self.theme.background_type == \ if self.theme.background_type == \
BackgroundType.to_string(BackgroundType.Image): BackgroundType.to_string(BackgroundType.Image):
filename = \ filename = \
os.path.split(unicode(self.theme.background_filename))[1] os.path.split(unicode(self.theme.background_filename))[1]
save_to = os.path.join(self.path, self.theme.theme_name, filename) saveTo = os.path.join(self.path, self.theme.theme_name, filename)
save_from = self.theme.background_filename saveFrom = self.theme.background_filename
if self.thememanager.saveTheme(self.theme, save_from, save_to): if self.thememanager.saveTheme(self.theme, saveFrom, saveTo):
return QtGui.QDialog.accept(self) return QtGui.QDialog.accept(self)
def _colorButton(self, field): def _colorButton(self, field):

View File

@ -181,7 +181,7 @@ class ThemeManager(QtGui.QWidget):
'%s (default)')) % newName '%s (default)')) % newName
self.themeListWidget.item(count).setText(name) self.themeListWidget.item(count).setText(name)
def changeGlobalFromScreen(self, index = -1): def changeGlobalFromScreen(self, index=-1):
""" """
Change the global theme when a theme is double clicked upon in the Change the global theme when a theme is double clicked upon in the
Theme Manager list Theme Manager list
@ -252,17 +252,14 @@ class ThemeManager(QtGui.QWidget):
Takes a theme and makes a new copy of it as well as saving it. Takes a theme and makes a new copy of it as well as saving it.
""" """
log.debug(u'cloneThemeData') log.debug(u'cloneThemeData')
themeData.new_document(newThemeName) saveTo = None
themeData.build_xml_from_attrs() saveFrom = None
save_to = None
save_from = None
if themeData.background_type == u'image': if themeData.background_type == u'image':
save_to = os.path.join(self.path, newThemeName, saveTo = os.path.join(self.path, newThemeName,
os.path.split(unicode(themeData.background_filename))[1]) os.path.split(unicode(themeData.background_filename))[1])
save_from = themeData.background_filename saveFrom = themeData.background_filename
theme = themeData.extract_xml() themeData.theme_name = newThemeName
pretty_theme = themeData.extract_formatted_xml() self.saveTheme(themeData, saveFrom, saveTo)
self.saveTheme(newThemeName, theme, pretty_theme, save_from, save_to)
def onEditTheme(self): def onEditTheme(self):
""" """
@ -462,17 +459,17 @@ class ThemeManager(QtGui.QWidget):
""" """
return self.themelist return self.themelist
def getThemeData(self, themename): def getThemeData(self, themeName):
""" """
Returns a theme object from an XML file Returns a theme object from an XML file
``themename`` ``themeName``
Name of the theme to load from file Name of the theme to load from file
""" """
log.debug(u'getthemedata for theme %s', themename) log.debug(u'getthemedata for theme %s', themeName)
xml_file = os.path.join(self.path, unicode(themename), xmlFile = os.path.join(self.path, unicode(themeName),
unicode(themename) + u'.xml') unicode(themeName) + u'.xml')
xml = get_text_file_string(xml_file) xml = get_text_file_string(xmlFile)
if not xml: if not xml:
return self.baseTheme() return self.baseTheme()
else: else:
@ -640,7 +637,7 @@ class ThemeManager(QtGui.QWidget):
newtheme.display_vertical_align = vAlignCorrection newtheme.display_vertical_align = vAlignCorrection
return newtheme.extract_xml() return newtheme.extract_xml()
def saveTheme(self, theme, image_from, image_to): def saveTheme(self, theme, imageFrom, imageTo):
""" """
Called by thememaintenance Dialog to save the theme Called by thememaintenance Dialog to save the theme
and to trigger the reload of the theme list and to trigger the reload of the theme list
@ -673,8 +670,8 @@ class ThemeManager(QtGui.QWidget):
self.deleteTheme(self.saveThemeName) self.deleteTheme(self.saveThemeName)
if result == QtGui.QMessageBox.Yes: if result == QtGui.QMessageBox.Yes:
# Save the theme, overwriting the existing theme if necessary. # Save the theme, overwriting the existing theme if necessary.
if image_to and self.oldBackgroundImage and \ if imageTo and self.oldBackgroundImage and \
image_to != self.oldBackgroundImage: imageTo != self.oldBackgroundImage:
try: try:
os.remove(self.oldBackgroundImage) os.remove(self.oldBackgroundImage)
except OSError: except OSError:
@ -688,12 +685,12 @@ class ThemeManager(QtGui.QWidget):
finally: finally:
if outfile: if outfile:
outfile.close() outfile.close()
if image_from and image_from != image_to: if imageFrom and imageFrom != imageTo:
try: try:
encoding = get_filesystem_encoding() encoding = get_filesystem_encoding()
shutil.copyfile( shutil.copyfile(
unicode(image_from).encode(encoding), unicode(imageFrom).encode(encoding),
unicode(image_to).encode(encoding)) unicode(imageTo).encode(encoding))
except IOError: except IOError:
log.exception(u'Failed to save theme image') log.exception(u'Failed to save theme image')
self.generateAndSaveImage(self.path, name, theme) self.generateAndSaveImage(self.path, name, theme)
@ -741,12 +738,18 @@ class ThemeManager(QtGui.QWidget):
pixmap.save(thumb, u'png') pixmap.save(thumb, u'png')
log.debug(u'Theme image written to %s', samplepathname) log.debug(u'Theme image written to %s', samplepathname)
def generateImage(self, themedata, forcePage=False): def generateImage(self, themeData, forcePage=False):
""" """
Call the RenderManager to build a Sample Image Call the RenderManager to build a Sample Image
``themeData``
The theme to generated a preview for.
``forcePage``
Flag to tell message lines per page need to be generated.
""" """
log.debug(u'generateImage \n%s ', themedata) log.debug(u'generateImage \n%s ', themeData)
return self.parent.RenderManager.generate_preview(themedata, forcePage) return self.parent.RenderManager.generate_preview(themeData, forcePage)
def getPreviewImage(self, theme): def getPreviewImage(self, theme):
""" """
@ -767,14 +770,14 @@ class ThemeManager(QtGui.QWidget):
newtheme = ThemeXML() newtheme = ThemeXML()
return newtheme return newtheme
def createThemeFromXml(self, theme_xml, path): def createThemeFromXml(self, themeXml, path):
""" """
Return a theme object using information parsed from XML Return a theme object using information parsed from XML
``theme_xml`` ``themeXml``
The XML data to load into the theme The XML data to load into the theme
""" """
theme = ThemeXML() theme = ThemeXML()
theme.parse(theme_xml) theme.parse(themeXml)
theme.extend_image_filename(path) theme.extend_image_filename(path)
return theme return theme