forked from openlp/openlp
Renderer cleanups
Remove code duplication and simplifications
This commit is contained in:
parent
6a309c43ff
commit
570a35ae65
@ -247,7 +247,7 @@ class Renderer:
|
||||
assert(0, u'Invalid value for theme.VerticalAlign:%s' % self._theme.display_verticalAlign)
|
||||
return x, y
|
||||
|
||||
def _render_lines(self, lines, lines1=None):
|
||||
def render_lines(self, lines, lines1=None):
|
||||
"""render a set of lines according to the theme, return bounding box"""
|
||||
#log.debug(u'_render_lines %s', lines)
|
||||
|
||||
|
@ -33,8 +33,9 @@ log = logging.getLogger(u'AmendThemeForm')
|
||||
|
||||
class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
def __init__(self, thememanager, parent=None):
|
||||
QtGui.QDialog.__init__(self, parent)
|
||||
self.thememanager = thememanager
|
||||
self.setupUi(self)
|
||||
|
||||
#define signals
|
||||
@ -71,28 +72,28 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||
xml = fileToXML(xml_file)
|
||||
self.theme.parse(xml)
|
||||
self.paintUi(self.theme)
|
||||
self.generateImage(self.theme)
|
||||
self.previewTheme(self.theme)
|
||||
|
||||
def onGradientComboBoxSelected(self):
|
||||
if self.GradientComboBox.currentIndex() == 0: # Horizontal
|
||||
def onGradientComboBoxSelected(self, currentIndex):
|
||||
if currentIndex == 0: # Horizontal
|
||||
self.theme.background_direction = u'horizontal'
|
||||
elif self.GradientComboBox.currentIndex() == 1: # vertical
|
||||
elif currentIndex == 1: # vertical
|
||||
self.theme.background_direction = u'vertical'
|
||||
else:
|
||||
self.theme.background_direction = u'circular'
|
||||
self.stateChanging(self.theme)
|
||||
self.generateImage(self.theme)
|
||||
self.previewTheme(self.theme)
|
||||
|
||||
def onBackgroundComboBoxSelected(self):
|
||||
if self.BackgroundComboBox.currentIndex() == 0: # Opaque
|
||||
def onBackgroundComboBoxSelected(self, currentIndex):
|
||||
if currentIndex == 0: # Opaque
|
||||
self.theme.background_mode = u'opaque'
|
||||
else:
|
||||
self.theme.background_mode = u'transparent'
|
||||
self.stateChanging(self.theme)
|
||||
self.generateImage(self.theme)
|
||||
self.previewTheme(self.theme)
|
||||
|
||||
def onBackgroundTypeComboBoxSelected(self):
|
||||
if self.BackgroundTypeComboBox.currentIndex() == 0: # Solid
|
||||
def onBackgroundTypeComboBoxSelected(self, currentIndex):
|
||||
if currentIndex == 0: # Solid
|
||||
self.theme.background_type = u'solid'
|
||||
if self.theme.background_direction == None: # never defined
|
||||
self.theme.background_direction = u'horizontal'
|
||||
@ -100,7 +101,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||
self.theme.background_startColor = u'#000000'
|
||||
if self.theme.background_endColor is None :
|
||||
self.theme.background_endColor = u'#000000'
|
||||
elif self.BackgroundTypeComboBox.currentIndex() == 1: # Gradient
|
||||
elif currentIndex == 1: # Gradient
|
||||
self.theme.background_type = u'gradient'
|
||||
if self.theme.background_direction == None: # never defined
|
||||
self.theme.background_direction = u'horizontal'
|
||||
@ -111,7 +112,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||
else:
|
||||
self.theme.background_type = u'image'
|
||||
self.stateChanging(self.theme)
|
||||
self.generateImage(self.theme)
|
||||
self.previewTheme(self.theme)
|
||||
|
||||
def onColor1PushButtonClicked(self):
|
||||
if self.theme.background_type == u'solid':
|
||||
@ -125,7 +126,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||
self.Color1PushButton.setStyleSheet(
|
||||
'background-color: %s' % str(self.theme.background_startColor))
|
||||
|
||||
self.generateImage(self.theme)
|
||||
self.previewTheme(self.theme)
|
||||
|
||||
def onColor2PushButtonClicked(self):
|
||||
self.theme.background_endColor = QtGui.QColorDialog.getColor(
|
||||
@ -133,7 +134,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||
self.Color2PushButton.setStyleSheet(
|
||||
'background-color: %s' % str(self.theme.background_endColor))
|
||||
|
||||
self.generateImage(self.theme)
|
||||
self.previewTheme(self.theme)
|
||||
|
||||
def onMainFontColorPushButtonClicked(self):
|
||||
self.theme.font_main_color = QtGui.QColorDialog.getColor(
|
||||
@ -141,7 +142,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||
|
||||
self.MainFontColorPushButton.setStyleSheet(
|
||||
'background-color: %s' % str(self.theme.font_main_color))
|
||||
self.generateImage(self.theme)
|
||||
self.previewTheme(self.theme)
|
||||
|
||||
def onFontFooterColorPushButtonClicked(self):
|
||||
self.theme.font_footer_color = QtGui.QColorDialog.getColor(
|
||||
@ -149,7 +150,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||
|
||||
self.FontFooterColorPushButton.setStyleSheet(
|
||||
'background-color: %s' % str(self.theme.font_footer_color))
|
||||
self.generateImage(self.theme)
|
||||
self.previewTheme(self.theme)
|
||||
|
||||
def baseTheme(self):
|
||||
log.debug(u'base Theme')
|
||||
@ -200,42 +201,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||
self.Color2Label.setVisible(False)
|
||||
self.Color2PushButton.setVisible(False)
|
||||
|
||||
def generateImage(self, theme):
|
||||
log.debug(u'generateImage %s ', theme)
|
||||
#theme = ThemeXML()
|
||||
#theme.parse(theme_xml)
|
||||
#print theme
|
||||
size=QtCore.QSize(800,600)
|
||||
frame=TstFrame(size)
|
||||
frame=frame
|
||||
paintdest=frame.GetPixmap()
|
||||
r=Renderer(self.path)
|
||||
r.set_paint_dest(paintdest)
|
||||
|
||||
r.set_theme(theme) # set default theme
|
||||
r._render_background()
|
||||
r.set_text_rectangle(QtCore.QRect(0,0, size.width()-1, size.height()-1), QtCore.QRect(10,560, size.width()-1, size.height()-1))
|
||||
|
||||
lines=[]
|
||||
lines.append(u'Amazing Grace!')
|
||||
lines.append(u'How sweet the sound')
|
||||
lines.append(u'To save a wretch like me;')
|
||||
lines.append(u'I once was lost but now am found,')
|
||||
lines.append(u'Was blind, but now I see.')
|
||||
lines1=[]
|
||||
lines1.append(u'Amazing Grace (John Newton)' )
|
||||
lines1.append(u'CCLI xxx (c)Openlp.org')
|
||||
|
||||
answer=r._render_lines(lines, lines1)
|
||||
|
||||
self.ThemePreview.setPixmap(frame.GetPixmap())
|
||||
|
||||
class TstFrame:
|
||||
def __init__(self, size):
|
||||
"""Create the DemoPanel."""
|
||||
self.width=size.width();
|
||||
self.height=size.height();
|
||||
# create something to be painted into
|
||||
self._Buffer = QtGui.QPixmap(self.width, self.height)
|
||||
def GetPixmap(self):
|
||||
return self._Buffer
|
||||
def previewTheme(self, theme):
|
||||
frame = self.thememanager.generateImage(theme)
|
||||
self.ThemePreview.setPixmap(frame)
|
||||
|
@ -154,7 +154,7 @@ class ThemeManager(QWidget):
|
||||
self.Layout = QtGui.QVBoxLayout(self)
|
||||
self.Layout.setSpacing(0)
|
||||
self.Layout.setMargin(0)
|
||||
self.amendThemeForm = AmendThemeForm()
|
||||
self.amendThemeForm = AmendThemeForm(self)
|
||||
self.Toolbar = OpenLPToolbar(self)
|
||||
self.Toolbar.addToolbarButton(translate('ThemeManager',u'New Theme'), ":/themes/theme_new.png",
|
||||
translate('ThemeManager',u'Allows a Theme to be created'), self.onAddTheme)
|
||||
@ -247,6 +247,11 @@ class ThemeManager(QWidget):
|
||||
os.mkdir(dir)
|
||||
|
||||
def unzipTheme(self, filename, dir):
|
||||
"""
|
||||
Unzip the theme , remove the preview file if stored
|
||||
Generate a new preview fileCheck the XML theme version and upgrade if
|
||||
necessary.
|
||||
"""
|
||||
log.debug(u'Unzipping theme %s', filename)
|
||||
zip = zipfile.ZipFile(str(filename))
|
||||
filexml = None
|
||||
@ -265,7 +270,7 @@ class ThemeManager(QWidget):
|
||||
xml_data = zip.read(file)
|
||||
if os.path.splitext (file) [1].lower () in [u'.xml']:
|
||||
if self.checkVersion1(xml_data):
|
||||
filexml = self.migrateVersion122(filename, fullpath, xml_data)
|
||||
filexml = self.migrateVersion122(filename, fullpath, xml_data) # upgrade theme xml
|
||||
else:
|
||||
file_xml = xml_data
|
||||
outfile = open(fullpath, 'w')
|
||||
@ -275,7 +280,7 @@ class ThemeManager(QWidget):
|
||||
outfile = open(fullpath, 'w')
|
||||
outfile.write(zip.read(file))
|
||||
outfile.close()
|
||||
self.generateImage(dir,themename, filexml)
|
||||
self.generateAndSaveImage(dir,themename, filexml)
|
||||
|
||||
def checkVersion1(self, xmlfile):
|
||||
log.debug(u'checkVersion1 ')
|
||||
@ -314,20 +319,30 @@ class ThemeManager(QWidget):
|
||||
str(t.HorizontalAlign), str(t.VerticalAlign), str(t.WrapStyle))
|
||||
return newtheme.extract_xml()
|
||||
|
||||
def generateImage(self, dir, name, theme_xml):
|
||||
def generateAndSaveImage(self, dir, name, theme_xml):
|
||||
log.debug(u'generateImage %s %s %s', dir, name, theme_xml)
|
||||
theme = ThemeXML()
|
||||
theme.parse(theme_xml)
|
||||
#print theme
|
||||
size=QtCore.QSize(800,600)
|
||||
frame=TstFrame(size)
|
||||
frame=frame
|
||||
paintdest=frame.GetPixmap()
|
||||
r=Renderer(dir)
|
||||
r.set_paint_dest(paintdest)
|
||||
|
||||
r.set_theme(theme) # set default theme
|
||||
r.set_text_rectangle(QtCore.QRect(0,0, size.width()-1, size.height()-1), QtCore.QRect(10,560, size.width()-1, size.height()-1))
|
||||
frame = self.generateImage(theme)
|
||||
|
||||
im=frame.toImage()
|
||||
samplepathname=os.path.join(dir, name+u'.png')
|
||||
if os.path.exists(samplepathname):
|
||||
os.unlink(samplepathname)
|
||||
im.save(samplepathname, u'png')
|
||||
log.debug(u'Theme image written to %s',samplepathname)
|
||||
|
||||
def generateImage(self, theme):
|
||||
log.debug(u'generateImage %s ', theme)
|
||||
size=QtCore.QSize(800,600)
|
||||
frame = QtGui.QPixmap(size.width(), size.height())
|
||||
renderer=Renderer(self.path)
|
||||
renderer.set_paint_dest(frame)
|
||||
|
||||
renderer.set_theme(theme) # set default theme
|
||||
#renderer._render_background()
|
||||
renderer.set_text_rectangle(QtCore.QRect(0,0, size.width()-1, size.height()-1), QtCore.QRect(10,560, size.width()-1, size.height()-1))
|
||||
|
||||
lines=[]
|
||||
lines.append(u'Amazing Grace!')
|
||||
@ -338,23 +353,6 @@ class ThemeManager(QWidget):
|
||||
lines1=[]
|
||||
lines1.append(u'Amazing Grace (John Newton)' )
|
||||
lines1.append(u'CCLI xxx (c)Openlp.org')
|
||||
answer=renderer.render_lines(lines, lines1)
|
||||
return frame
|
||||
|
||||
answer=r._render_lines(lines, lines1)
|
||||
|
||||
im=frame.GetPixmap().toImage()
|
||||
samplepathname=os.path.join(dir, name+u'.png')
|
||||
if os.path.exists(samplepathname):
|
||||
os.unlink(samplepathname)
|
||||
im.save(samplepathname, u'png')
|
||||
log.debug(u'Theme image written to %s',samplepathname)
|
||||
|
||||
|
||||
class TstFrame:
|
||||
def __init__(self, size):
|
||||
"""Create the DemoPanel."""
|
||||
self.width=size.width();
|
||||
self.height=size.height();
|
||||
# create something to be painted into
|
||||
self._Buffer = QtGui.QPixmap(self.width, self.height)
|
||||
def GetPixmap(self):
|
||||
return self._Buffer
|
||||
|
Loading…
Reference in New Issue
Block a user