diff --git a/openlp.pyw b/openlp.pyw
index 4bba69e59..3ba640de2 100755
--- a/openlp.pyw
+++ b/openlp.pyw
@@ -46,15 +46,15 @@ class OpenLP(QtGui.QApplication):
self.setApplicationName(u'openlp.org')
self.setApplicationVersion(u'1.9.0')
- self.splash = SplashScreen()
+ self.splash = SplashScreen(self.applicationVersion())
self.splash.show()
# make sure Qt really display the splash screen
self.processEvents()
screens = []
# Decide how many screens we have and their size
- for i in range (0 , self.desktop().numScreens()):
- screens.insert(i, (i+1, self.desktop().availableGeometry(i+1)))
- log.info(u'Screen %d found with resolution %s', i+1, self.desktop().availableGeometry(i+1))
+ for screen in xrange (0 , self.desktop().numScreens()):
+ screens.insert(screen, (screen+1, self.desktop().availableGeometry(screen+1)))
+ log.info(u'Screen %d found with resolution %s', screen+1, self.desktop().availableGeometry(screen+1))
# start the main app window
self.main_window = MainWindow(screens)
self.main_window.show()
diff --git a/openlp/__init__.py b/openlp/__init__.py
index b16ed4f5a..1870f3b96 100644
--- a/openlp/__init__.py
+++ b/openlp/__init__.py
@@ -15,3 +15,10 @@ You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
"""
+__all__ = ['convertStringToBoolean']
+
+def convertStringToBoolean(stringvalue):
+ if stringvalue.lower() == 'true':
+ return True
+ else:
+ return False
diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py
index b19fe8fdf..fce0d08c4 100644
--- a/openlp/core/__init__.py
+++ b/openlp/core/__init__.py
@@ -3,7 +3,7 @@
"""
OpenLP - Open Source Lyrics Projection
Copyright (c) 2008 Raoul Snyman
-Portions copyright (c) 2008 Martin Thompson, Tim Bentley
+Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@@ -19,15 +19,14 @@ Place, Suite 330, Boston, MA 02111-1307 USA
"""
from PyQt4 import QtCore, QtGui
-from render import Renderer
from settingsmanager import SettingsManager
-from pluginmanager import PluginManager
+from openlp.core.lib.pluginmanager import PluginManager
-__all__ = ['Renderer', 'SettingsManager', 'PluginManager', 'translate', 'fileToXML']
+__all__ = ['SettingsManager', 'PluginManager', 'translate',
+ 'fileToXML' ]
def translate(context, text):
return QtGui.QApplication.translate(context, text, None, QtGui.QApplication.UnicodeUTF8)
def fileToXML(xmlfile):
return open(xmlfile).read()
-
diff --git a/openlp/core/interpolate.py b/openlp/core/interpolate.py
deleted file mode 100644
index f2a48dd06..000000000
--- a/openlp/core/interpolate.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# -*- coding: utf-8 -*-
-# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
-"""
-OpenLP - Open Source Lyrics Projection
-Copyright (c) 2008 Raoul Snyman
-Portions copyright (c) 2008 Martin Thompson, Tim Bentley
-
-This program is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation; version 2 of the License.
-
-This program is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program; if not, write to the Free Software Foundation, Inc., 59 Temple
-Place, Suite 330, Boston, MA 02111-1307 USA
-"""
-
-# useful linear interpolation routines
-
-def interp1(val1, val2, fraction):
- """return a linear 1d interpolation between val1 and val2 by fraction
- if fraction=0.0, returns val1
- if fraction=1.0, returns val2"""
- return val1+((val2-val1)*fraction)
-def interpolate(val1, val2, fraction):
- "vals can be list/tuples - if so, will return a tuple of interpolated values for each element."
- assert (fraction >= 0.0)
- assert (fraction <= 1.0)
- assert (type(val1) == type(val2))
- if (type(val1) == type(()) or
- type (val1) == type([])):
- assert(len(val1) == len(val2))
- retval=[]
- for i in range(len(val1)):
- retval.append(interp1(val1[i], val2[i], fraction))
- return tuple(retval)
- else:
- return interp1(val1, val2, fraction)
diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py
index 721437d6e..306c1d5fd 100644
--- a/openlp/core/lib/__init__.py
+++ b/openlp/core/lib/__init__.py
@@ -3,7 +3,7 @@
"""
OpenLP - Open Source Lyrics Projection
Copyright (c) 2008 Raoul Snyman
-Portions copyright (c) 2008 Martin Thompson, Tim Bentley,
+Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley,
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@@ -32,7 +32,9 @@ from toolbar import OpenLPToolbar
from songxmlhandler import SongXMLBuilder
from songxmlhandler import SongXMLParser
from themexmlhandler import ThemeXML
+from renderer import Renderer
+from rendermanager import RenderManager
-__all__ = ['PluginConfig', 'Plugin', 'SettingsTab', 'MediaManagerItem', 'Event', 'EventType'
+__all__ = ['Renderer','PluginConfig', 'Plugin', 'SettingsTab', 'MediaManagerItem', 'Event', 'EventType'
'XmlRootClass', 'ServiceItem', 'Receiver', 'OpenLPToolbar', 'SongXMLBuilder',
- 'SongXMLParser', 'EventManager', 'ThemeXML']
+ 'SongXMLParser', 'EventManager', 'ThemeXML', 'RenderManager']
diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py
index 8436bc8d3..b4edc06fd 100644
--- a/openlp/core/lib/plugin.py
+++ b/openlp/core/lib/plugin.py
@@ -91,8 +91,9 @@ class Plugin(object):
self.preview_controller=plugin_helpers[u'preview']
self.live_controller=plugin_helpers[u'live']
self.theme_manager=plugin_helpers[u'theme']
- self.event_manager=plugin_helpers[u'event']
-
+ self.event_manager=plugin_helpers[u'event']
+ self.render_manager=plugin_helpers[u'render']
+
def check_pre_conditions(self):
"""
Provides the Plugin with a handle to check if it can be loaded.
@@ -118,7 +119,7 @@ class Plugin(object):
Create a menu item and add it to the "Export" menu.
"""
pass
-
+
def get_settings_tab(self):
"""
Create a menu item and add it to the "Import" menu.
diff --git a/openlp/core/pluginmanager.py b/openlp/core/lib/pluginmanager.py
similarity index 99%
rename from openlp/core/pluginmanager.py
rename to openlp/core/lib/pluginmanager.py
index 03749139e..94a858b2a 100644
--- a/openlp/core/pluginmanager.py
+++ b/openlp/core/lib/pluginmanager.py
@@ -17,7 +17,6 @@ You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
"""
-
import os
import sys
import logging
diff --git a/openlp/core/render.py b/openlp/core/lib/renderer.py
similarity index 85%
rename from openlp/core/render.py
rename to openlp/core/lib/renderer.py
index 640663e82..0356e084a 100644
--- a/openlp/core/render.py
+++ b/openlp/core/lib/renderer.py
@@ -3,7 +3,7 @@
"""
OpenLP - Open Source Lyrics Projection
Copyright (c) 2008 Raoul Snyman
-Portions copyright (c) 2008 Martin Thompson, Tim Bentley
+Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@@ -18,12 +18,12 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
"""
import logging
+import os, os.path
import sys
from PyQt4 import QtGui, QtCore, Qt
from copy import copy
-#from interpolate import interpolate
class Renderer:
@@ -40,7 +40,7 @@ class Renderer:
tell it to render a particular screenfull with render_screen(n)
"""
- def __init__(self):
+ def __init__(self, path=None):
self._rect=None
self._debug=0
self.words=None
@@ -50,6 +50,7 @@ class Renderer:
self._theme=None
self._bg_image_filename=None
self._paint=None
+ self._path = path
def set_debug(self, debug):
self._debug=debug
@@ -61,7 +62,9 @@ class Renderer:
def set_bg_image(self, filename):
log.debug(u'set bg image %s', filename)
- self._bg_image_filename=filename
+
+ self._bg_image_filename=os.path.join(self._path, self._theme.theme_name, filename)
+ print self._bg_image_filename
if self._paint is not None:
self.scale_bg_image()
@@ -71,6 +74,7 @@ class Renderer:
# rescale and offset
imw=i.width()
imh=i.height()
+ print imw, imh
dcw=self._paint.width()+1
dch=self._paint.height()
imratio=imw/float(imh)
@@ -93,19 +97,18 @@ class Renderer:
if self._bg_image_filename is not None:
self.scale_bg_image()
- def set_words_openlp(self, words):
-# log.debug(u" "set words openlp", words
+ def format_slide(self, words, footer):
+ log.debug(u'format_slide %s', words)
verses=[]
words=words.replace(u'\r\n', u'\n')
- verses_text=words.split(u'\n\n')
+ verses_text = words.split(u'\n')
for v in verses_text:
lines=v.split(u'\n')
- verses.append(self.split_set_of_lines(lines)[0])
- self.words=verses
+ verses.append(self.split_set_of_lines(lines, footer)[0])
+ self.words = verses
verses_text=[]
for v in verses:
verses_text.append(u'\n'.join(v).lstrip()) # remove first \n
-
return verses_text
def render_screen(self, screennum):
@@ -128,13 +131,13 @@ class Renderer:
p=QtGui.QPainter()
p.begin(self._paint)
if self._theme.background_type == u'solid':
- p.fillRect(self._paint.rect(), QtGui.QColor(self._theme.background_color1))
+ p.fillRect(self._paint.rect(), QtGui.QColor(self._theme.background_color))
elif self._theme.background_type == u'gradient' : # gradient
gradient = None
- if self._theme.background_direction == u'vertical':
+ if self._theme.background_direction == u'horizontal':
w = int(self._paint.width())/2
gradient = QtGui.QLinearGradient(w, 0, w, self._paint.height()) # vertical
- elif self._theme.background_direction == u'horizontal':
+ elif self._theme.background_direction == u'vertical':
h = int(self._paint.height())/2
gradient = QtGui.QLinearGradient(0, h, self._paint.width(), h) # Horizontal
else:
@@ -142,8 +145,8 @@ class Renderer:
h = int(self._paint.height())/2
gradient = QtGui.QRadialGradient(w, h, w) # Circular
- gradient.setColorAt(0, QtGui.QColor(self._theme.background_color1))
- gradient.setColorAt(1, QtGui.QColor(self._theme.background_color2))
+ gradient.setColorAt(0, QtGui.QColor(self._theme.background_startColor))
+ gradient.setColorAt(1, QtGui.QColor(self._theme.background_endColor))
p.setBrush(QtGui.QBrush(gradient))
rectPath = QtGui.QPainterPath()
@@ -161,29 +164,29 @@ class Renderer:
elif self._theme.background_type== u'image': # image
r=self._paint.rect()
log.debug(u'Image size details %d %d %d %d ', r.x(), r.y(), r.width(),r.height())
- log.debug(u' Background Parameter %d ', self._theme.background_borderColor)
- if self._theme.Bbackground_borderColor is not None:
- p.fillRect(self._paint.rect(), self._theme.background_borderColor)
+ #log.debug(u' Background Parameter %d ', self._theme.background_color1)
+ #if self._theme.background_color1 is not None:
+ # p.fillRect(self._paint.rect(), self._theme.background_borderColor)
p.drawPixmap(self.background_offsetx,self.background_offsety, self.img)
p.end()
log.debug(u'render background done')
- def split_set_of_lines(self, lines):
+ def split_set_of_lines(self, lines, footer):
"""Given a list of lines, decide how to split them best if they don't all fit on the screen
- this is done by splitting at 1/2, 1/3 or 1/4 of the set
If it doesn't fit, even at this size, just split at each opportunity
- We'll do this by getting the bounding box of each line, and then summing them appropriately
+ We'll do this by getting the bounding box of each lline, and then summing them appropriately
Returns a list of [lists of lines], one set for each screenful
"""
-# log.debug(u" "Split set of lines"
+ log.debug(u'Split set of lines')
# Probably ought to save the rendering results to a pseudoDC for redrawing efficiency. But let's not optimse prematurely!
bboxes = []
for line in lines:
- bboxes.append(self._render_single_line(line))
+ bboxes.append(self._render_single_line(line, footer))
numlines=len(lines)
bottom=self._rect.bottom()
for ratio in (numlines, numlines/2, numlines/3, numlines/4):
@@ -192,7 +195,7 @@ class Renderer:
endline=startline+ratio
while (endline<=numlines):
by=0
- for (x,y) in bboxes[startline:endline]:
+ for (x, y) in bboxes[startline:endline]:
by+=y
if by > bottom:
good=0
@@ -220,7 +223,7 @@ class Renderer:
endline=startline+1
while (endline<=numlines):
by=0
- for (x,y) in bboxes[startline:endline]:
+ for (x, y) in bboxes[startline:endline]:
by+=y
if by > bottom:
retval.append(lines[startline:endline-1])
@@ -235,15 +238,15 @@ class Renderer:
x=rect.left()
if int(self._theme.display_verticalAlign) == 0: # top align
y = rect.top()
- elif int(self._theme.display_verticalAlign) == 1: # bottom align
+ elif int(self._theme.display_verticalAlign) == 2: # bottom align
y=rect.bottom()-bbox.height()
- elif int(t.display_verticalAlign) == 2: # centre align
+ elif int(self._theme.display_verticalAlign) == 1: # centre align
y=rect.top()+(rect.height()-bbox.height())/2
else:
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)
@@ -254,11 +257,11 @@ class Renderer:
# put stuff on background so need to reset before doing the job properly.
self._render_background()
x, y = self._correctAlignment(self._rect, bbox)
- bbox=self._render_lines_unaligned(lines, False, (x,y))
+ bbox=self._render_lines_unaligned(lines, False, (x, y))
if lines1 is not None:
- x, y = self._correctAlignment(self._rect_footer, bbox1)
- bbox=self._render_lines_unaligned(lines1, True, (x,y) )
+ #x, y = self._correctAlignment(self._rect_footer, bbox1)
+ bbox=self._render_lines_unaligned(lines1, True, (self._rect_footer.left(), self._rect_footer.top()) )
log.debug(u'render lines DONE')
@@ -273,18 +276,18 @@ class Renderer:
Returns the bounding box of the text as QRect"""
log.debug(u'render unaligned %s', lines)
- x,y=tlcorner
+ x, y=tlcorner
brx=x
bry=y
for line in lines:
- if (line == ''):
- continue
+ #if (line == ''):
+ # continue
# render after current bottom, but at original left edge
# keep track of right edge to see which is biggest
(thisx, bry) = self._render_single_line(line, footer, (x,bry))
if (thisx > brx):
brx=thisx
- retval=QtCore.QRect(x,y,brx-x, bry-y)
+ retval=QtCore.QRect(x, y,brx-x, bry-y)
if self._debug:
p=QtGui.QPainter()
p.begin(self._paint)
@@ -303,10 +306,10 @@ class Renderer:
If the line is too wide for the context, it wraps, but
right-aligns the surplus words in the manner of song lyrics
- Returns the bottom-right corner (of what was rendered) as a tuple(x,y).
+ Returns the bottom-right corner (of what was rendered) as a tuple(x, y).
"""
- #log.debug(u'Render single line %s @ %s '%( line, tlcorner))
- x,y=tlcorner
+ log.debug(u'Render single line %s @ %s '%( line, tlcorner))
+ x, y=tlcorner
# We draw the text to see how big it is and then iterate to make it fit
# when we line wrap we do in in the "lyrics" style, so the second line is
# right aligned with a "hanging indent"
@@ -333,13 +336,17 @@ class Renderer:
starty=y
rightextent=None
t=self._theme
- align=t.display_horizontalAlign
+ if footer: # dont allow alignment messing with footers
+ align = 0
+ else:
+ align=t.display_horizontalAlign
+
wrapstyle=t.display_wrapStyle
for linenum in range(len(lines)):
line=lines[linenum]
#find out how wide line is
- w,h=self._get_extent_and_render(line, footer, tlcorner=(x,y), draw=False)
+ w,h=self._get_extent_and_render(line, footer, tlcorner=(x, y), draw=False)
if t.display_shadow:
w+=self._shadow_offset
@@ -367,8 +374,8 @@ class Renderer:
draw=True, color = t.display_shadow_color)
if t.display_outline:
self._get_extent_and_render(line, footer,(x+self._outline_offset,y), draw=True, color = t.display_outline_color)
- self._get_extent_and_render(line, footer,(x,y+self._outline_offset), draw=True, color = t.display_outline_color)
- self._get_extent_and_render(line, footer,(x,y-self._outline_offset), draw=True, color = t.display_outline_color)
+ self._get_extent_and_render(line, footer,(x, y+self._outline_offset), draw=True, color = t.display_outline_color)
+ self._get_extent_and_render(line, footer,(x, y-self._outline_offset), draw=True, color = t.display_outline_color)
self._get_extent_and_render(line, footer,(x-self._outline_offset,y), draw=True, color = t.display_outline_color)
if self._outline_offset > 1:
self._get_extent_and_render(line, footer,(x+self._outline_offset,y+self._outline_offset), draw=True, color = t.display_outline_color)
@@ -376,7 +383,7 @@ class Renderer:
self._get_extent_and_render(line, footer,(x+self._outline_offset,y-self._outline_offset), draw=True, color = t.display_outline_color)
self._get_extent_and_render(line, footer,(x-self._outline_offset,y-self._outline_offset), draw=True, color = t.display_outline_color)
- self._get_extent_and_render(line, footer,tlcorner=(x,y), draw=True)
+ self._get_extent_and_render(line, footer,tlcorner=(x, y), draw=True)
# log.debug(u'Line %2d: Render '%s' at (%d, %d) wh=(%d,%d)' % ( linenum, line, x, y,w,h)
y += h
if linenum == 0:
@@ -386,7 +393,7 @@ class Renderer:
p=QtGui.QPainter()
p.begin(self._paint)
p.setPen(QtGui.QPen(QtGui.QColor(0,255,0)))
- p.drawRect(startx,starty,rightextent-startx,y-starty)
+ p.drawRect(startx,starty,rightextent-startx, y-starty)
p.end()
brcorner=(rightextent,y)
@@ -429,12 +436,12 @@ class Renderer:
p.setPen(QtGui.QColor(self._theme.font_main_color))
else:
p.setPen(QtGui.QColor(color))
- x,y=tlcorner
+ x, y=tlcorner
metrics=QtGui.QFontMetrics(font)
# xxx some fudges to make it exactly like wx! Take 'em out later
w=metrics.width(line)
h=metrics.height()-2
if draw:
- p.drawText(x,y+metrics.height()-metrics.descent()-1, line)
+ p.drawText(x, y+metrics.height()-metrics.descent()-1, line)
p.end()
return (w, h)
diff --git a/openlp/core/lib/rendermanager.py b/openlp/core/lib/rendermanager.py
new file mode 100644
index 000000000..9781cf241
--- /dev/null
+++ b/openlp/core/lib/rendermanager.py
@@ -0,0 +1,115 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
+"""
+OpenLP - Open Source Lyrics Projection
+Copyright (c) 2008 Raoul Snyman
+Portions copyright (c) 2008 - 2009Martin Thompson, Tim Bentley
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free Software
+Foundation; version 2 of the License.
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+Place, Suite 330, Boston, MA 02111-1307 USA
+"""
+import logging
+import os, os.path
+import sys
+from PyQt4 import QtGui, QtCore, Qt
+from renderer import Renderer
+
+class RenderManager:
+ """
+ Class to pull all Renderer interactions into one place.
+ The plugins will call helper methods to do the rendering but
+ this class will provide display defense code.
+ """
+ global log
+ log=logging.getLogger(u'RenderManager')
+ log.info(u'RenderManager Loaded')
+
+ def __init__(self, theme_manager, screen_list):
+ log.debug(u'Initilisation started')
+ self.screen_list = screen_list
+ self.theme_manager = theme_manager
+ self.displays = len(screen_list)
+ self.current_display = 1
+ self.renderer = Renderer(None)
+ self.calculate_default(self.screen_list[self.current_display-1][1])
+ self.frame = None
+
+ def set_default_theme(self, theme):
+ log.debug("default theme set to %s", theme)
+ self.default_theme = self.theme_manager.getThemeData(theme)
+ self.renderer.set_theme(self.default_theme)
+
+ self.renderer.set_text_rectangle(QtCore.QRect(10,0, self.width-1, self.height-1),
+ QtCore.QRect(10,self.footer_start, self.width-1, self.height-self.footer_start))
+
+
+ def set_theme(self, theme):
+ log.debug("theme set to %s", theme)
+ self.theme = theme
+ self.renderer.set_theme(self.theme)
+
+ self.renderer.set_text_rectangle(QtCore.QRect(10,0, self.width-1, self.height-1),
+ QtCore.QRect(10,self.footer_start, self.width-1, self.height-self.footer_start))
+ if theme.font_main_override == False:
+ pass
+ if theme.font_footer_override == False:
+ pass
+
+ def generate_preview(self):
+ self.calculate_default(QtCore.QSize(800,600))
+
+ self.renderer.set_text_rectangle(QtCore.QRect(10,0, self.width-1, self.height-1),
+ QtCore.QRect(10,self.footer_start, self.width-1, self.height-self.footer_start))
+
+ frame = QtGui.QPixmap(self.width, self.height)
+ self.renderer.set_paint_dest(frame)
+
+ 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=self.renderer.render_lines(lines, lines1)
+ return frame
+
+ def format_slide(self, words, footer):
+ self.calculate_default(QtCore.QSize(800,600))
+
+ self.renderer.set_text_rectangle(QtCore.QRect(10,0, self.width-1, self.height-1),
+ QtCore.QRect(10,self.footer_start, self.width-1, self.height-self.footer_start))
+
+ return self.renderer.format_slide(words, footer)
+
+ def generate_slide(self,main_text, footer_text, preview=True):
+ if preview == True:
+ self.calculate_default(QtCore.QSize(800,600))
+
+ self.renderer.set_text_rectangle(QtCore.QRect(10,0, self.width-1, self.height-1),
+ QtCore.QRect(10,self.footer_start, self.width-1, self.height-self.footer_start))
+
+ #frame = QtGui.QPixmap(self.width, self.height)
+ #self.renderer.set_paint_dest(frame)
+ #print main_text
+ answer=self.renderer.render_lines(main_text, footer_text)
+ return self.frame
+
+ def calculate_default(self, screen):
+ self.width = screen.width()
+ self.height = screen.height()
+ self.footer_start = int(self.height*0.95) # 95% is start of footer
+ #update the rederer frame
+ self.frame = QtGui.QPixmap(self.width, self.height)
+ self.renderer.set_paint_dest(self.frame)
diff --git a/openlp/core/lib/settingstab.py b/openlp/core/lib/settingstab.py
index 672be9f9f..fce46d40b 100644
--- a/openlp/core/lib/settingstab.py
+++ b/openlp/core/lib/settingstab.py
@@ -19,7 +19,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA
"""
from PyQt4 import QtCore, QtGui
-from openlp.core.resources import *
from openlp.core.lib import PluginConfig
class SettingsTab(QtGui.QWidget):
@@ -39,7 +38,7 @@ class SettingsTab(QtGui.QWidget):
else:
self.config = PluginConfig(str(title))
self.load()
-
+
def setTitle(self, title):
self.tabTitle = title
@@ -51,15 +50,9 @@ class SettingsTab(QtGui.QWidget):
def retranslateUi(self):
pass
-
+
def load(self):
pass
-
+
def save(self):
pass
-
- def convertStringToBoolean(self, stringvalue):
- if stringvalue.lower() == 'true':
- return True
- else:
- return False
diff --git a/openlp/core/lib/themexmlhandler.py b/openlp/core/lib/themexmlhandler.py
index 209fce05b..3ce3dbce8 100644
--- a/openlp/core/lib/themexmlhandler.py
+++ b/openlp/core/lib/themexmlhandler.py
@@ -21,9 +21,49 @@ from xml.etree.ElementTree import ElementTree, XML, dump
For XML Schema see wiki.openlp.org
"""
+
+from openlp import convertStringToBoolean
from xml.dom.minidom import Document
from xml.etree.ElementTree import ElementTree, XML, dump
+blankthemexml=\
+'''
+
+ BlankStyle
+
+
+ #000000
+
+
+ #000000
+ #000000
+ vertical
+
+
+ fred.bmp
+
+
+ Arial
+ #000000
+ 30
+
+
+
+ Arial
+ #000000
+ 12
+
+
+
+ True
+ False
+ 0
+ 0
+ 0
+
+
+'''
+
class ThemeXML():
def __init__(self):
# Create the minidom document
@@ -31,11 +71,11 @@ class ThemeXML():
def new_document(self, name):
# Create the base element
- self.theme = self.theme_xml.createElement(u'Theme')
+ self.theme = self.theme_xml.createElement(u'theme')
self.theme_xml.appendChild(self.theme)
self.theme.setAttribute(u'version', u'1.0')
- self.name = self.theme_xml.createElement(u'Name')
+ self.name = self.theme_xml.createElement(u'name')
ctn = self.theme_xml.createTextNode(name)
self.name.appendChild(ctn)
self.theme.appendChild(self.name)
@@ -52,30 +92,23 @@ class ThemeXML():
background.setAttribute(u'type', u'solid')
self.theme.appendChild(background)
- color = self.theme_xml.createElement(u'color1')
+ color = self.theme_xml.createElement(u'color')
bkc = self.theme_xml.createTextNode(bkcolor)
color.appendChild(bkc)
background.appendChild(color)
- color = self.theme_xml.createElement(u'color2')
- background.appendChild(color)
-
- color = self.theme_xml.createElement(u'direction')
- background.appendChild(color)
-
-
def add_background_gradient(self, startcolor, endcolor, direction):
background = self.theme_xml.createElement(u'background')
background.setAttribute(u'mode', u'opaque')
background.setAttribute(u'type', u'gradient')
self.theme.appendChild(background)
- color = self.theme_xml.createElement(u'color1')
+ color = self.theme_xml.createElement(u'startColor')
bkc = self.theme_xml.createTextNode(startcolor)
color.appendChild(bkc)
background.appendChild(color)
- color = self.theme_xml.createElement(u'color2')
+ color = self.theme_xml.createElement(u'endColor')
bkc = self.theme_xml.createTextNode(endcolor)
color.appendChild(bkc)
background.appendChild(color)
@@ -96,33 +129,34 @@ class ThemeXML():
color.appendChild(bkc)
background.appendChild(color)
- def add_font(self, fontname, fontcolor, fontproportion, override, fonttype=u'main', xpos=0, ypos=0 ,width=0, height=0):
+ def add_font(self, name, color, proportion, override, fonttype=u'main', xpos=0, ypos=0 ,width=0, height=0):
background = self.theme_xml.createElement(u'font')
background.setAttribute(u'type',fonttype)
self.theme.appendChild(background)
- name = self.theme_xml.createElement(u'name')
- fn = self.theme_xml.createTextNode(fontname)
- name.appendChild(fn)
- background.appendChild(name)
+ element = self.theme_xml.createElement(u'name')
+ fn = self.theme_xml.createTextNode(name)
+ element.appendChild(fn)
+ background.appendChild(element)
- name = self.theme_xml.createElement(u'color')
- fn = self.theme_xml.createTextNode(fontcolor)
- name.appendChild(fn)
- background.appendChild(name)
+ element = self.theme_xml.createElement(u'color')
+ fn = self.theme_xml.createTextNode(color)
+ element.appendChild(fn)
+ background.appendChild(element)
- name = self.theme_xml.createElement(u'proportion')
- fn = self.theme_xml.createTextNode(fontproportion)
- name.appendChild(fn)
- background.appendChild(name)
+ element = self.theme_xml.createElement(u'proportion')
+ fn = self.theme_xml.createTextNode(proportion)
+ element.appendChild(fn)
+ background.appendChild(element)
- name = self.theme_xml.createElement(u'location')
- name.setAttribute(u'override',override)
- name.setAttribute(u'x',str(xpos))
- name.setAttribute(u'y',str(ypos))
- name.setAttribute(u'width',str(width))
- name.setAttribute(u'height',str(height))
- background.appendChild(name)
+ element = self.theme_xml.createElement(u'location')
+ element.setAttribute(u'override',override)
+ if override == True:
+ element.setAttribute(u'x',str(xpos))
+ element.setAttribute(u'y',str(ypos))
+ element.setAttribute(u'width',str(width))
+ element.setAttribute(u'height',str(height))
+ background.appendChild(element)
def add_display(self, shadow, shadowColor, outline, outlineColor, horizontal, vertical, wrap):
background = self.theme_xml.createElement(u'display')
@@ -170,6 +204,13 @@ class ThemeXML():
return self.theme_xml.toxml()
def parse(self, xml):
+ self.baseParseXml()
+ self.parse_xml(xml)
+
+ def baseParseXml(self):
+ self.parse_xml(blankthemexml)
+
+ def parse_xml(self, xml):
theme_xml = ElementTree(element=XML(xml))
iter=theme_xml.getiterator()
master = u''
@@ -185,13 +226,17 @@ class ThemeXML():
master += e[1] + u'_'
elif master == u'display_' and (element.tag == u'shadow' or element.tag == u'outline'):
#print "b", master, element.tag, element.text, e[0], e[1]
- setattr(self, master + element.tag , element.text)
+ et = convertStringToBoolean(element.text)
+ setattr(self, master + element.tag , et)
setattr(self, master + element.tag +u'_'+ e[0], e[1])
else:
field = master + e[0]
- setattr(self, field, e[1])
+ e1 = e[1]
+ if e[1] == u'True' or e[1] == u'False':
+ e1 = convertStringToBoolean(e[1])
+ setattr(self, field, e1)
else:
- #print "c", element.tag
+ #print "c", element.tag, element.text
if element.tag is not None :
field = master + element.tag
setattr(self, field, element.text)
diff --git a/openlp/core/test/test_plugin_manager.py b/openlp/core/test/test_plugin_manager.py
index 1736d67fb..abf0961e4 100644
--- a/openlp/core/test/test_plugin_manager.py
+++ b/openlp/core/test/test_plugin_manager.py
@@ -1,4 +1,7 @@
import logging
+import os, sys
+from openlp.core.lib.pluginmanager import PluginManager
+
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%m-%d %H:%M',
@@ -14,11 +17,9 @@ logging.getLogger('').addHandler(console)
log=logging.getLogger('')
logging.info("Logging started")
-import os, sys
mypath=os.path.split(os.path.abspath(__file__))[0]
sys.path.insert(0,(os.path.join(mypath, '..' ,'..', '..')))
-from openlp.core.pluginmanager import PluginManager
# test the plugin manager with some plugins in the test_plugins directory
class TestPluginManager:
diff --git a/openlp/core/ui/amendthemedialog.py b/openlp/core/ui/amendthemedialog.py
index c43180995..c126735a0 100644
--- a/openlp/core/ui/amendthemedialog.py
+++ b/openlp/core/ui/amendthemedialog.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'amendthemedialog.ui'
#
-# Created: Fri Apr 10 20:38:33 2009
+# Created: Tue Apr 21 06:06:56 2009
# by: PyQt4 UI code generator 4.4.4
#
# WARNING! All changes made in this file will be lost!
@@ -12,272 +12,416 @@ from PyQt4 import QtCore, QtGui
class Ui_AmendThemeDialog(object):
def setupUi(self, AmendThemeDialog):
AmendThemeDialog.setObjectName("AmendThemeDialog")
- AmendThemeDialog.resize(752, 533)
+ AmendThemeDialog.setWindowModality(QtCore.Qt.ApplicationModal)
+ AmendThemeDialog.resize(586, 651)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/icon/openlp.org-icon-32.bmp"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
AmendThemeDialog.setWindowIcon(icon)
- self.ThemeButtonBox = QtGui.QDialogButtonBox(AmendThemeDialog)
- self.ThemeButtonBox.setGeometry(QtCore.QRect(580, 500, 156, 26))
- self.ThemeButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
- self.ThemeButtonBox.setObjectName("ThemeButtonBox")
- self.layoutWidget = QtGui.QWidget(AmendThemeDialog)
- self.layoutWidget.setGeometry(QtCore.QRect(50, 20, 441, 41))
- self.layoutWidget.setObjectName("layoutWidget")
- self.horizontalLayout = QtGui.QHBoxLayout(self.layoutWidget)
- self.horizontalLayout.setObjectName("horizontalLayout")
- self.ThemeNameLabel = QtGui.QLabel(self.layoutWidget)
+ AmendThemeDialog.setModal(True)
+ self.AmendThemeLayout = QtGui.QVBoxLayout(AmendThemeDialog)
+ self.AmendThemeLayout.setSpacing(8)
+ self.AmendThemeLayout.setMargin(8)
+ self.AmendThemeLayout.setObjectName("AmendThemeLayout")
+ self.ThemeNameWidget = QtGui.QWidget(AmendThemeDialog)
+ self.ThemeNameWidget.setObjectName("ThemeNameWidget")
+ self.ThemeNameLayout = QtGui.QHBoxLayout(self.ThemeNameWidget)
+ self.ThemeNameLayout.setSpacing(8)
+ self.ThemeNameLayout.setMargin(0)
+ self.ThemeNameLayout.setObjectName("ThemeNameLayout")
+ self.ThemeNameLabel = QtGui.QLabel(self.ThemeNameWidget)
self.ThemeNameLabel.setObjectName("ThemeNameLabel")
- self.horizontalLayout.addWidget(self.ThemeNameLabel)
- self.ThemeNameEdit = QtGui.QLineEdit(self.layoutWidget)
+ self.ThemeNameLayout.addWidget(self.ThemeNameLabel)
+ self.ThemeNameEdit = QtGui.QLineEdit(self.ThemeNameWidget)
self.ThemeNameEdit.setObjectName("ThemeNameEdit")
- self.horizontalLayout.addWidget(self.ThemeNameEdit)
- self.widget = QtGui.QWidget(AmendThemeDialog)
- self.widget.setGeometry(QtCore.QRect(31, 71, 721, 411))
- self.widget.setObjectName("widget")
- self.horizontalLayout_2 = QtGui.QHBoxLayout(self.widget)
- self.horizontalLayout_2.setObjectName("horizontalLayout_2")
- self.LeftSide = QtGui.QWidget(self.widget)
- self.LeftSide.setObjectName("LeftSide")
- self.tabWidget = QtGui.QTabWidget(self.LeftSide)
- self.tabWidget.setGeometry(QtCore.QRect(0, 0, 341, 401))
- self.tabWidget.setObjectName("tabWidget")
+ self.ThemeNameLayout.addWidget(self.ThemeNameEdit)
+ self.AmendThemeLayout.addWidget(self.ThemeNameWidget)
+ self.ContentWidget = QtGui.QWidget(AmendThemeDialog)
+ self.ContentWidget.setObjectName("ContentWidget")
+ self.ContentLayout = QtGui.QHBoxLayout(self.ContentWidget)
+ self.ContentLayout.setSpacing(8)
+ self.ContentLayout.setMargin(0)
+ self.ContentLayout.setObjectName("ContentLayout")
+ self.ThemeTabWidget = QtGui.QTabWidget(self.ContentWidget)
+ self.ThemeTabWidget.setObjectName("ThemeTabWidget")
self.BackgroundTab = QtGui.QWidget()
self.BackgroundTab.setObjectName("BackgroundTab")
- self.layoutWidget1 = QtGui.QWidget(self.BackgroundTab)
- self.layoutWidget1.setGeometry(QtCore.QRect(10, 10, 321, 351))
- self.layoutWidget1.setObjectName("layoutWidget1")
- self.gridLayout = QtGui.QGridLayout(self.layoutWidget1)
- self.gridLayout.setObjectName("gridLayout")
- self.BackgroundLabel = QtGui.QLabel(self.layoutWidget1)
+ self.BackgroundLayout = QtGui.QFormLayout(self.BackgroundTab)
+ self.BackgroundLayout.setMargin(8)
+ self.BackgroundLayout.setSpacing(8)
+ self.BackgroundLayout.setObjectName("BackgroundLayout")
+ self.BackgroundLabel = QtGui.QLabel(self.BackgroundTab)
self.BackgroundLabel.setObjectName("BackgroundLabel")
- self.gridLayout.addWidget(self.BackgroundLabel, 0, 0, 1, 2)
- self.BackgroundComboBox = QtGui.QComboBox(self.layoutWidget1)
+ self.BackgroundLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.BackgroundLabel)
+ self.BackgroundComboBox = QtGui.QComboBox(self.BackgroundTab)
self.BackgroundComboBox.setObjectName("BackgroundComboBox")
self.BackgroundComboBox.addItem(QtCore.QString())
self.BackgroundComboBox.addItem(QtCore.QString())
- self.gridLayout.addWidget(self.BackgroundComboBox, 0, 2, 1, 2)
- self.BackgroundTypeLabel = QtGui.QLabel(self.layoutWidget1)
+ self.BackgroundLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.BackgroundComboBox)
+ self.BackgroundTypeLabel = QtGui.QLabel(self.BackgroundTab)
self.BackgroundTypeLabel.setObjectName("BackgroundTypeLabel")
- self.gridLayout.addWidget(self.BackgroundTypeLabel, 1, 0, 1, 2)
- self.BackgroundTypeComboBox = QtGui.QComboBox(self.layoutWidget1)
+ self.BackgroundLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.BackgroundTypeLabel)
+ self.BackgroundTypeComboBox = QtGui.QComboBox(self.BackgroundTab)
self.BackgroundTypeComboBox.setObjectName("BackgroundTypeComboBox")
self.BackgroundTypeComboBox.addItem(QtCore.QString())
self.BackgroundTypeComboBox.addItem(QtCore.QString())
self.BackgroundTypeComboBox.addItem(QtCore.QString())
- self.gridLayout.addWidget(self.BackgroundTypeComboBox, 1, 2, 1, 2)
- self.Color1Label = QtGui.QLabel(self.layoutWidget1)
+ self.BackgroundLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.BackgroundTypeComboBox)
+ self.Color1Label = QtGui.QLabel(self.BackgroundTab)
self.Color1Label.setObjectName("Color1Label")
- self.gridLayout.addWidget(self.Color1Label, 2, 0, 1, 1)
- self.Color1PushButton = QtGui.QPushButton(self.layoutWidget1)
+ self.BackgroundLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.Color1Label)
+ self.Color1PushButton = QtGui.QPushButton(self.BackgroundTab)
self.Color1PushButton.setObjectName("Color1PushButton")
- self.gridLayout.addWidget(self.Color1PushButton, 2, 2, 1, 2)
- self.Color2Label = QtGui.QLabel(self.layoutWidget1)
+ self.BackgroundLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.Color1PushButton)
+ self.Color2Label = QtGui.QLabel(self.BackgroundTab)
self.Color2Label.setObjectName("Color2Label")
- self.gridLayout.addWidget(self.Color2Label, 3, 0, 1, 1)
- self.Color2PushButton = QtGui.QPushButton(self.layoutWidget1)
+ self.BackgroundLayout.setWidget(3, QtGui.QFormLayout.LabelRole, self.Color2Label)
+ self.Color2PushButton = QtGui.QPushButton(self.BackgroundTab)
self.Color2PushButton.setObjectName("Color2PushButton")
- self.gridLayout.addWidget(self.Color2PushButton, 3, 2, 1, 2)
- self.ImageLabel = QtGui.QLabel(self.layoutWidget1)
+ self.BackgroundLayout.setWidget(3, QtGui.QFormLayout.FieldRole, self.Color2PushButton)
+ self.ImageLabel = QtGui.QLabel(self.BackgroundTab)
self.ImageLabel.setObjectName("ImageLabel")
- self.gridLayout.addWidget(self.ImageLabel, 4, 0, 1, 1)
- self.ImageLineEdit = QtGui.QLineEdit(self.layoutWidget1)
- self.ImageLineEdit.setObjectName("ImageLineEdit")
- self.gridLayout.addWidget(self.ImageLineEdit, 4, 1, 1, 2)
- self.ImagePushButton = QtGui.QPushButton(self.layoutWidget1)
- icon1 = QtGui.QIcon()
- icon1.addPixmap(QtGui.QPixmap(":/services/service_open.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.ImagePushButton.setIcon(icon1)
- self.ImagePushButton.setObjectName("ImagePushButton")
- self.gridLayout.addWidget(self.ImagePushButton, 4, 3, 1, 1)
- self.GradientLabel = QtGui.QLabel(self.layoutWidget1)
+ self.BackgroundLayout.setWidget(4, QtGui.QFormLayout.LabelRole, self.ImageLabel)
+ self.GradientLabel = QtGui.QLabel(self.BackgroundTab)
self.GradientLabel.setObjectName("GradientLabel")
- self.gridLayout.addWidget(self.GradientLabel, 5, 0, 1, 1)
- self.GradientComboBox = QtGui.QComboBox(self.layoutWidget1)
+ self.BackgroundLayout.setWidget(6, QtGui.QFormLayout.LabelRole, self.GradientLabel)
+ self.GradientComboBox = QtGui.QComboBox(self.BackgroundTab)
self.GradientComboBox.setObjectName("GradientComboBox")
self.GradientComboBox.addItem(QtCore.QString())
self.GradientComboBox.addItem(QtCore.QString())
self.GradientComboBox.addItem(QtCore.QString())
- self.gridLayout.addWidget(self.GradientComboBox, 5, 2, 1, 2)
- self.tabWidget.addTab(self.BackgroundTab, "")
+ self.BackgroundLayout.setWidget(6, QtGui.QFormLayout.FieldRole, self.GradientComboBox)
+ self.ImageFilenameWidget = QtGui.QWidget(self.BackgroundTab)
+ self.ImageFilenameWidget.setObjectName("ImageFilenameWidget")
+ self.horizontalLayout_2 = QtGui.QHBoxLayout(self.ImageFilenameWidget)
+ self.horizontalLayout_2.setSpacing(0)
+ self.horizontalLayout_2.setMargin(0)
+ self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+ self.ImageLineEdit = QtGui.QLineEdit(self.ImageFilenameWidget)
+ self.ImageLineEdit.setObjectName("ImageLineEdit")
+ self.horizontalLayout_2.addWidget(self.ImageLineEdit)
+ self.ImageToolButton = QtGui.QToolButton(self.ImageFilenameWidget)
+ icon1 = QtGui.QIcon()
+ icon1.addPixmap(QtGui.QPixmap(":/images/image_load.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.ImageToolButton.setIcon(icon1)
+ self.ImageToolButton.setObjectName("ImageToolButton")
+ self.horizontalLayout_2.addWidget(self.ImageToolButton)
+ self.BackgroundLayout.setWidget(4, QtGui.QFormLayout.FieldRole, self.ImageFilenameWidget)
+ spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ #self.BackgroundLayout.addItem(spacerItem, 7, 1, 1, 1)
+ self.ThemeTabWidget.addTab(self.BackgroundTab, "")
self.FontMainTab = QtGui.QWidget()
self.FontMainTab.setObjectName("FontMainTab")
- self.MainFontGroupBox = QtGui.QGroupBox(self.FontMainTab)
- self.MainFontGroupBox.setGeometry(QtCore.QRect(20, 10, 307, 119))
- self.MainFontGroupBox.setObjectName("MainFontGroupBox")
- self.gridLayout_2 = QtGui.QGridLayout(self.MainFontGroupBox)
- self.gridLayout_2.setObjectName("gridLayout_2")
- self.MainFontlabel = QtGui.QLabel(self.MainFontGroupBox)
- self.MainFontlabel.setObjectName("MainFontlabel")
- self.gridLayout_2.addWidget(self.MainFontlabel, 0, 0, 1, 1)
- self.MainFontComboBox = QtGui.QFontComboBox(self.MainFontGroupBox)
- self.MainFontComboBox.setObjectName("MainFontComboBox")
- self.gridLayout_2.addWidget(self.MainFontComboBox, 0, 1, 1, 2)
- self.MainFontColorLabel = QtGui.QLabel(self.MainFontGroupBox)
- self.MainFontColorLabel.setObjectName("MainFontColorLabel")
- self.gridLayout_2.addWidget(self.MainFontColorLabel, 1, 0, 1, 1)
- self.MainFontColorPushButton = QtGui.QPushButton(self.MainFontGroupBox)
- self.MainFontColorPushButton.setObjectName("MainFontColorPushButton")
- self.gridLayout_2.addWidget(self.MainFontColorPushButton, 1, 2, 1, 1)
- self.MainFontSize = QtGui.QLabel(self.MainFontGroupBox)
- self.MainFontSize.setObjectName("MainFontSize")
- self.gridLayout_2.addWidget(self.MainFontSize, 2, 0, 1, 1)
- self.MainFontSizeLineEdit = QtGui.QLineEdit(self.MainFontGroupBox)
- self.MainFontSizeLineEdit.setObjectName("MainFontSizeLineEdit")
- self.gridLayout_2.addWidget(self.MainFontSizeLineEdit, 2, 1, 1, 1)
- self.MainFontlSlider = QtGui.QSlider(self.MainFontGroupBox)
- self.MainFontlSlider.setProperty("value", QtCore.QVariant(15))
- self.MainFontlSlider.setMaximum(40)
- self.MainFontlSlider.setOrientation(QtCore.Qt.Horizontal)
- self.MainFontlSlider.setTickPosition(QtGui.QSlider.TicksBelow)
- self.MainFontlSlider.setTickInterval(5)
- self.MainFontlSlider.setObjectName("MainFontlSlider")
- self.gridLayout_2.addWidget(self.MainFontlSlider, 2, 2, 1, 1)
- self.FooterFontGroupBox = QtGui.QGroupBox(self.FontMainTab)
- self.FooterFontGroupBox.setGeometry(QtCore.QRect(20, 160, 301, 190))
- self.FooterFontGroupBox.setObjectName("FooterFontGroupBox")
- self.verticalLayout = QtGui.QVBoxLayout(self.FooterFontGroupBox)
- self.verticalLayout.setObjectName("verticalLayout")
- self.FontMainUseDefault = QtGui.QCheckBox(self.FooterFontGroupBox)
- self.FontMainUseDefault.setTristate(False)
- self.FontMainUseDefault.setObjectName("FontMainUseDefault")
- self.verticalLayout.addWidget(self.FontMainUseDefault)
- self.horizontalLayout_3 = QtGui.QHBoxLayout()
- self.horizontalLayout_3.setObjectName("horizontalLayout_3")
- self.FontMainXLabel = QtGui.QLabel(self.FooterFontGroupBox)
+ self.FontMainLayout = QtGui.QHBoxLayout(self.FontMainTab)
+ self.FontMainLayout.setSpacing(8)
+ self.FontMainLayout.setMargin(8)
+ self.FontMainLayout.setObjectName("FontMainLayout")
+ self.MainLeftWidget = QtGui.QWidget(self.FontMainTab)
+ self.MainLeftWidget.setObjectName("MainLeftWidget")
+ self.MainLeftLayout = QtGui.QVBoxLayout(self.MainLeftWidget)
+ self.MainLeftLayout.setSpacing(8)
+ self.MainLeftLayout.setMargin(0)
+ self.MainLeftLayout.setObjectName("MainLeftLayout")
+ self.FontMainGroupBox = QtGui.QGroupBox(self.MainLeftWidget)
+ self.FontMainGroupBox.setObjectName("FontMainGroupBox")
+ self.MainFontLayout = QtGui.QFormLayout(self.FontMainGroupBox)
+ self.MainFontLayout.setFormAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
+ self.MainFontLayout.setMargin(8)
+ self.MainFontLayout.setSpacing(8)
+ self.MainFontLayout.setObjectName("MainFontLayout")
+ self.FontMainlabel = QtGui.QLabel(self.FontMainGroupBox)
+ self.FontMainlabel.setObjectName("FontMainlabel")
+ self.MainFontLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.FontMainlabel)
+ self.FontMainComboBox = QtGui.QFontComboBox(self.FontMainGroupBox)
+ self.FontMainComboBox.setObjectName("FontMainComboBox")
+ self.MainFontLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.FontMainComboBox)
+ self.FontMainColorLabel = QtGui.QLabel(self.FontMainGroupBox)
+ self.FontMainColorLabel.setObjectName("FontMainColorLabel")
+ self.MainFontLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.FontMainColorLabel)
+ self.FontMainColorPushButton = QtGui.QPushButton(self.FontMainGroupBox)
+ self.FontMainColorPushButton.setObjectName("FontMainColorPushButton")
+ self.MainFontLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.FontMainColorPushButton)
+ self.FontMainSize = QtGui.QLabel(self.FontMainGroupBox)
+ self.FontMainSize.setObjectName("FontMainSize")
+ self.MainFontLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.FontMainSize)
+ self.FontMainSizeSpinBox = QtGui.QSpinBox(self.FontMainGroupBox)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.FontMainSizeSpinBox.sizePolicy().hasHeightForWidth())
+ self.FontMainSizeSpinBox.setSizePolicy(sizePolicy)
+ self.FontMainSizeSpinBox.setMinimumSize(QtCore.QSize(70, 0))
+ self.FontMainSizeSpinBox.setProperty("value", QtCore.QVariant(16))
+ self.FontMainSizeSpinBox.setMaximum(999)
+ self.FontMainSizeSpinBox.setObjectName("FontMainSizeSpinBox")
+ self.MainFontLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.FontMainSizeSpinBox)
+ self.MainLeftLayout.addWidget(self.FontMainGroupBox)
+ spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.MainLeftLayout.addItem(spacerItem1)
+ self.FontMainLayout.addWidget(self.MainLeftWidget)
+ self.MainRightWidget = QtGui.QWidget(self.FontMainTab)
+ self.MainRightWidget.setObjectName("MainRightWidget")
+ self.MainRightLayout = QtGui.QVBoxLayout(self.MainRightWidget)
+ self.MainRightLayout.setSpacing(8)
+ self.MainRightLayout.setMargin(0)
+ self.MainRightLayout.setObjectName("MainRightLayout")
+ self.MainLocationGroupBox = QtGui.QGroupBox(self.MainRightWidget)
+ self.MainLocationGroupBox.setObjectName("MainLocationGroupBox")
+ self.MainLocationLayout = QtGui.QFormLayout(self.MainLocationGroupBox)
+ self.MainLocationLayout.setMargin(8)
+ self.MainLocationLayout.setSpacing(8)
+ self.MainLocationLayout.setObjectName("MainLocationLayout")
+ self.DefaultLocationLabel = QtGui.QLabel(self.MainLocationGroupBox)
+ self.DefaultLocationLabel.setObjectName("DefaultLocationLabel")
+ self.MainLocationLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.DefaultLocationLabel)
+ self.FontMainDefaultCheckBox = QtGui.QCheckBox(self.MainLocationGroupBox)
+ self.FontMainDefaultCheckBox.setTristate(False)
+ self.FontMainDefaultCheckBox.setObjectName("FontMainDefaultCheckBox")
+ self.MainLocationLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.FontMainDefaultCheckBox)
+ self.FontMainXLabel = QtGui.QLabel(self.MainLocationGroupBox)
self.FontMainXLabel.setObjectName("FontMainXLabel")
- self.horizontalLayout_3.addWidget(self.FontMainXLabel)
- self.FontMainXEdit = QtGui.QLineEdit(self.FooterFontGroupBox)
- self.FontMainXEdit.setObjectName("FontMainXEdit")
- self.horizontalLayout_3.addWidget(self.FontMainXEdit)
- self.verticalLayout.addLayout(self.horizontalLayout_3)
- self.horizontalLayout_4 = QtGui.QHBoxLayout()
- self.horizontalLayout_4.setObjectName("horizontalLayout_4")
- self.FontMainYLabel = QtGui.QLabel(self.FooterFontGroupBox)
+ self.MainLocationLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.FontMainXLabel)
+ self.FontMainYLabel = QtGui.QLabel(self.MainLocationGroupBox)
self.FontMainYLabel.setObjectName("FontMainYLabel")
- self.horizontalLayout_4.addWidget(self.FontMainYLabel)
- self.FontMainYEdit = QtGui.QLineEdit(self.FooterFontGroupBox)
- self.FontMainYEdit.setObjectName("FontMainYEdit")
- self.horizontalLayout_4.addWidget(self.FontMainYEdit)
- self.verticalLayout.addLayout(self.horizontalLayout_4)
- self.horizontalLayout_5 = QtGui.QHBoxLayout()
- self.horizontalLayout_5.setObjectName("horizontalLayout_5")
- self.FontMainWidthLabel = QtGui.QLabel(self.FooterFontGroupBox)
+ self.MainLocationLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.FontMainYLabel)
+ self.FontMainWidthLabel = QtGui.QLabel(self.MainLocationGroupBox)
self.FontMainWidthLabel.setObjectName("FontMainWidthLabel")
- self.horizontalLayout_5.addWidget(self.FontMainWidthLabel)
- self.FontMainWidthEdit = QtGui.QLineEdit(self.FooterFontGroupBox)
- self.FontMainWidthEdit.setObjectName("FontMainWidthEdit")
- self.horizontalLayout_5.addWidget(self.FontMainWidthEdit)
- self.verticalLayout.addLayout(self.horizontalLayout_5)
- self.horizontalLayout_6 = QtGui.QHBoxLayout()
- self.horizontalLayout_6.setObjectName("horizontalLayout_6")
- self.FontMainHeightLabel = QtGui.QLabel(self.FooterFontGroupBox)
+ self.MainLocationLayout.setWidget(3, QtGui.QFormLayout.LabelRole, self.FontMainWidthLabel)
+ self.FontMainHeightLabel = QtGui.QLabel(self.MainLocationGroupBox)
self.FontMainHeightLabel.setObjectName("FontMainHeightLabel")
- self.horizontalLayout_6.addWidget(self.FontMainHeightLabel)
- self.FontMainHeightEdit = QtGui.QLineEdit(self.FooterFontGroupBox)
- self.FontMainHeightEdit.setObjectName("FontMainHeightEdit")
- self.horizontalLayout_6.addWidget(self.FontMainHeightEdit)
- self.verticalLayout.addLayout(self.horizontalLayout_6)
- self.tabWidget.addTab(self.FontMainTab, "")
+ self.MainLocationLayout.setWidget(4, QtGui.QFormLayout.LabelRole, self.FontMainHeightLabel)
+ self.FontMainXSpinBox = QtGui.QSpinBox(self.MainLocationGroupBox)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.FontMainXSpinBox.sizePolicy().hasHeightForWidth())
+ self.FontMainXSpinBox.setSizePolicy(sizePolicy)
+ self.FontMainXSpinBox.setMinimumSize(QtCore.QSize(78, 0))
+ self.FontMainXSpinBox.setProperty("value", QtCore.QVariant(0))
+ self.FontMainXSpinBox.setMaximum(9999)
+ self.FontMainXSpinBox.setObjectName("FontMainXSpinBox")
+ self.MainLocationLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.FontMainXSpinBox)
+ self.FontMainYSpinBox = QtGui.QSpinBox(self.MainLocationGroupBox)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.FontMainYSpinBox.sizePolicy().hasHeightForWidth())
+ self.FontMainYSpinBox.setSizePolicy(sizePolicy)
+ self.FontMainYSpinBox.setMinimumSize(QtCore.QSize(78, 0))
+ self.FontMainYSpinBox.setMaximum(9999)
+ self.FontMainYSpinBox.setObjectName("FontMainYSpinBox")
+ self.MainLocationLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.FontMainYSpinBox)
+ self.FontMainWidthSpinBox = QtGui.QSpinBox(self.MainLocationGroupBox)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.FontMainWidthSpinBox.sizePolicy().hasHeightForWidth())
+ self.FontMainWidthSpinBox.setSizePolicy(sizePolicy)
+ self.FontMainWidthSpinBox.setMinimumSize(QtCore.QSize(78, 0))
+ self.FontMainWidthSpinBox.setMaximum(9999)
+ self.FontMainWidthSpinBox.setObjectName("FontMainWidthSpinBox")
+ self.MainLocationLayout.setWidget(3, QtGui.QFormLayout.FieldRole, self.FontMainWidthSpinBox)
+ self.FontMainHeightSpinBox = QtGui.QSpinBox(self.MainLocationGroupBox)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.FontMainHeightSpinBox.sizePolicy().hasHeightForWidth())
+ self.FontMainHeightSpinBox.setSizePolicy(sizePolicy)
+ self.FontMainHeightSpinBox.setMinimumSize(QtCore.QSize(78, 0))
+ self.FontMainHeightSpinBox.setMaximum(9999)
+ self.FontMainHeightSpinBox.setObjectName("FontMainHeightSpinBox")
+ self.MainLocationLayout.setWidget(4, QtGui.QFormLayout.FieldRole, self.FontMainHeightSpinBox)
+ self.MainRightLayout.addWidget(self.MainLocationGroupBox)
+ spacerItem2 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.MainRightLayout.addItem(spacerItem2)
+ self.FontMainLayout.addWidget(self.MainRightWidget)
+ self.ThemeTabWidget.addTab(self.FontMainTab, "")
self.FontFooterTab = QtGui.QWidget()
self.FontFooterTab.setObjectName("FontFooterTab")
- self.FooterFontGroupBox_2 = QtGui.QGroupBox(self.FontFooterTab)
- self.FooterFontGroupBox_2.setGeometry(QtCore.QRect(20, 160, 301, 190))
- self.FooterFontGroupBox_2.setObjectName("FooterFontGroupBox_2")
- self.verticalLayout_2 = QtGui.QVBoxLayout(self.FooterFontGroupBox_2)
- self.verticalLayout_2.setObjectName("verticalLayout_2")
- self.FontMainUseDefault_2 = QtGui.QCheckBox(self.FooterFontGroupBox_2)
- self.FontMainUseDefault_2.setTristate(False)
- self.FontMainUseDefault_2.setObjectName("FontMainUseDefault_2")
- self.verticalLayout_2.addWidget(self.FontMainUseDefault_2)
- self.horizontalLayout_7 = QtGui.QHBoxLayout()
- self.horizontalLayout_7.setObjectName("horizontalLayout_7")
- self.FontFooterXLabel = QtGui.QLabel(self.FooterFontGroupBox_2)
- self.FontFooterXLabel.setObjectName("FontFooterXLabel")
- self.horizontalLayout_7.addWidget(self.FontFooterXLabel)
- self.FontFooterXEdit = QtGui.QLineEdit(self.FooterFontGroupBox_2)
- self.FontFooterXEdit.setObjectName("FontFooterXEdit")
- self.horizontalLayout_7.addWidget(self.FontFooterXEdit)
- self.verticalLayout_2.addLayout(self.horizontalLayout_7)
- self.horizontalLayout_8 = QtGui.QHBoxLayout()
- self.horizontalLayout_8.setObjectName("horizontalLayout_8")
- self.FontFooterYLabel = QtGui.QLabel(self.FooterFontGroupBox_2)
- self.FontFooterYLabel.setObjectName("FontFooterYLabel")
- self.horizontalLayout_8.addWidget(self.FontFooterYLabel)
- self.FontFooterYEdit = QtGui.QLineEdit(self.FooterFontGroupBox_2)
- self.FontFooterYEdit.setObjectName("FontFooterYEdit")
- self.horizontalLayout_8.addWidget(self.FontFooterYEdit)
- self.verticalLayout_2.addLayout(self.horizontalLayout_8)
- self.horizontalLayout_9 = QtGui.QHBoxLayout()
- self.horizontalLayout_9.setObjectName("horizontalLayout_9")
- self.FontFooterWidthLabel = QtGui.QLabel(self.FooterFontGroupBox_2)
- self.FontFooterWidthLabel.setObjectName("FontFooterWidthLabel")
- self.horizontalLayout_9.addWidget(self.FontFooterWidthLabel)
- self.FontFooterWidthEdit = QtGui.QLineEdit(self.FooterFontGroupBox_2)
- self.FontFooterWidthEdit.setObjectName("FontFooterWidthEdit")
- self.horizontalLayout_9.addWidget(self.FontFooterWidthEdit)
- self.verticalLayout_2.addLayout(self.horizontalLayout_9)
- self.horizontalLayout_10 = QtGui.QHBoxLayout()
- self.horizontalLayout_10.setObjectName("horizontalLayout_10")
- self.FontFooterHeightLabel = QtGui.QLabel(self.FooterFontGroupBox_2)
- self.FontFooterHeightLabel.setObjectName("FontFooterHeightLabel")
- self.horizontalLayout_10.addWidget(self.FontFooterHeightLabel)
- self.FontFooterHeightEdit = QtGui.QLineEdit(self.FooterFontGroupBox_2)
- self.FontFooterHeightEdit.setObjectName("FontFooterHeightEdit")
- self.horizontalLayout_10.addWidget(self.FontFooterHeightEdit)
- self.verticalLayout_2.addLayout(self.horizontalLayout_10)
- self.FooterFontGroupBox_3 = QtGui.QGroupBox(self.FontFooterTab)
- self.FooterFontGroupBox_3.setGeometry(QtCore.QRect(20, 10, 307, 119))
- self.FooterFontGroupBox_3.setObjectName("FooterFontGroupBox_3")
- self.gridLayout_3 = QtGui.QGridLayout(self.FooterFontGroupBox_3)
- self.gridLayout_3.setObjectName("gridLayout_3")
- self.FontFooterlabel = QtGui.QLabel(self.FooterFontGroupBox_3)
- self.FontFooterlabel.setObjectName("FontFooterlabel")
- self.gridLayout_3.addWidget(self.FontFooterlabel, 0, 0, 1, 1)
- self.FontFooterComboBox = QtGui.QFontComboBox(self.FooterFontGroupBox_3)
+ self.FontFooterLayout = QtGui.QHBoxLayout(self.FontFooterTab)
+ self.FontFooterLayout.setSpacing(8)
+ self.FontFooterLayout.setMargin(8)
+ self.FontFooterLayout.setObjectName("FontFooterLayout")
+ self.FooterLeftWidget = QtGui.QWidget(self.FontFooterTab)
+ self.FooterLeftWidget.setObjectName("FooterLeftWidget")
+ self.FooterLeftLayout = QtGui.QVBoxLayout(self.FooterLeftWidget)
+ self.FooterLeftLayout.setSpacing(8)
+ self.FooterLeftLayout.setMargin(0)
+ self.FooterLeftLayout.setObjectName("FooterLeftLayout")
+ self.FooterFontGroupBox = QtGui.QGroupBox(self.FooterLeftWidget)
+ self.FooterFontGroupBox.setObjectName("FooterFontGroupBox")
+ self.FooterFontLayout = QtGui.QFormLayout(self.FooterFontGroupBox)
+ self.FooterFontLayout.setFieldGrowthPolicy(QtGui.QFormLayout.ExpandingFieldsGrow)
+ self.FooterFontLayout.setFormAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
+ self.FooterFontLayout.setMargin(8)
+ self.FooterFontLayout.setSpacing(8)
+ self.FooterFontLayout.setObjectName("FooterFontLayout")
+ self.FontFooterLabel = QtGui.QLabel(self.FooterFontGroupBox)
+ self.FontFooterLabel.setObjectName("FontFooterLabel")
+ self.FooterFontLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.FontFooterLabel)
+ self.FontFooterComboBox = QtGui.QFontComboBox(self.FooterFontGroupBox)
self.FontFooterComboBox.setObjectName("FontFooterComboBox")
- self.gridLayout_3.addWidget(self.FontFooterComboBox, 0, 1, 1, 2)
- self.FontFooterColorLabel = QtGui.QLabel(self.FooterFontGroupBox_3)
+ self.FooterFontLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.FontFooterComboBox)
+ self.FontFooterColorLabel = QtGui.QLabel(self.FooterFontGroupBox)
self.FontFooterColorLabel.setObjectName("FontFooterColorLabel")
- self.gridLayout_3.addWidget(self.FontFooterColorLabel, 1, 0, 1, 1)
- self.FontFooterColorPushButton = QtGui.QPushButton(self.FooterFontGroupBox_3)
+ self.FooterFontLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.FontFooterColorLabel)
+ self.FontFooterColorPushButton = QtGui.QPushButton(self.FooterFontGroupBox)
self.FontFooterColorPushButton.setObjectName("FontFooterColorPushButton")
- self.gridLayout_3.addWidget(self.FontFooterColorPushButton, 1, 2, 1, 1)
- self.FontFooterSizeLabel = QtGui.QLabel(self.FooterFontGroupBox_3)
+ self.FooterFontLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.FontFooterColorPushButton)
+ self.FontFooterSizeLabel = QtGui.QLabel(self.FooterFontGroupBox)
self.FontFooterSizeLabel.setObjectName("FontFooterSizeLabel")
- self.gridLayout_3.addWidget(self.FontFooterSizeLabel, 2, 0, 1, 1)
- self.FontFooterSizeLineEdit = QtGui.QLineEdit(self.FooterFontGroupBox_3)
- self.FontFooterSizeLineEdit.setObjectName("FontFooterSizeLineEdit")
- self.gridLayout_3.addWidget(self.FontFooterSizeLineEdit, 2, 1, 1, 1)
- self.FontFooterSlider = QtGui.QSlider(self.FooterFontGroupBox_3)
- self.FontFooterSlider.setProperty("value", QtCore.QVariant(15))
- self.FontFooterSlider.setMaximum(40)
- self.FontFooterSlider.setOrientation(QtCore.Qt.Horizontal)
- self.FontFooterSlider.setTickPosition(QtGui.QSlider.TicksBelow)
- self.FontFooterSlider.setTickInterval(5)
- self.FontFooterSlider.setObjectName("FontFooterSlider")
- self.gridLayout_3.addWidget(self.FontFooterSlider, 2, 2, 1, 1)
- self.tabWidget.addTab(self.FontFooterTab, "")
- self.OptionsTab = QtGui.QWidget()
- self.OptionsTab.setObjectName("OptionsTab")
- self.ShadowGroupBox = QtGui.QGroupBox(self.OptionsTab)
- self.ShadowGroupBox.setGeometry(QtCore.QRect(20, 10, 301, 80))
+ self.FooterFontLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.FontFooterSizeLabel)
+ self.FontFooterSizeSpinBox = QtGui.QSpinBox(self.FooterFontGroupBox)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.FontFooterSizeSpinBox.sizePolicy().hasHeightForWidth())
+ self.FontFooterSizeSpinBox.setSizePolicy(sizePolicy)
+ self.FontFooterSizeSpinBox.setMinimumSize(QtCore.QSize(70, 0))
+ self.FontFooterSizeSpinBox.setProperty("value", QtCore.QVariant(10))
+ self.FontFooterSizeSpinBox.setMaximum(999)
+ self.FontFooterSizeSpinBox.setObjectName("FontFooterSizeSpinBox")
+ self.FooterFontLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.FontFooterSizeSpinBox)
+ self.FooterLeftLayout.addWidget(self.FooterFontGroupBox)
+ spacerItem3 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.FooterLeftLayout.addItem(spacerItem3)
+ self.FontFooterLayout.addWidget(self.FooterLeftWidget)
+ self.FooterRightWidget = QtGui.QWidget(self.FontFooterTab)
+ self.FooterRightWidget.setObjectName("FooterRightWidget")
+ self.FooterRightLayout = QtGui.QVBoxLayout(self.FooterRightWidget)
+ self.FooterRightLayout.setSpacing(8)
+ self.FooterRightLayout.setMargin(0)
+ self.FooterRightLayout.setObjectName("FooterRightLayout")
+ self.LocationFooterGroupBox = QtGui.QGroupBox(self.FooterRightWidget)
+ self.LocationFooterGroupBox.setObjectName("LocationFooterGroupBox")
+ self.LocationFooterLayout = QtGui.QFormLayout(self.LocationFooterGroupBox)
+ self.LocationFooterLayout.setFieldGrowthPolicy(QtGui.QFormLayout.ExpandingFieldsGrow)
+ self.LocationFooterLayout.setFormAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
+ self.LocationFooterLayout.setMargin(8)
+ self.LocationFooterLayout.setSpacing(8)
+ self.LocationFooterLayout.setObjectName("LocationFooterLayout")
+ self.FontFooterDefaultLabel = QtGui.QLabel(self.LocationFooterGroupBox)
+ self.FontFooterDefaultLabel.setObjectName("FontFooterDefaultLabel")
+ self.LocationFooterLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.FontFooterDefaultLabel)
+ self.FontFooterDefaultCheckBox = QtGui.QCheckBox(self.LocationFooterGroupBox)
+ self.FontFooterDefaultCheckBox.setTristate(False)
+ self.FontFooterDefaultCheckBox.setObjectName("FontFooterDefaultCheckBox")
+ self.LocationFooterLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.FontFooterDefaultCheckBox)
+ self.FontFooterXLabel = QtGui.QLabel(self.LocationFooterGroupBox)
+ self.FontFooterXLabel.setObjectName("FontFooterXLabel")
+ self.LocationFooterLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.FontFooterXLabel)
+ self.FontFooterYLabel = QtGui.QLabel(self.LocationFooterGroupBox)
+ self.FontFooterYLabel.setObjectName("FontFooterYLabel")
+ self.LocationFooterLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.FontFooterYLabel)
+ self.FontFooterWidthLabel = QtGui.QLabel(self.LocationFooterGroupBox)
+ self.FontFooterWidthLabel.setObjectName("FontFooterWidthLabel")
+ self.LocationFooterLayout.setWidget(3, QtGui.QFormLayout.LabelRole, self.FontFooterWidthLabel)
+ self.FontFooterHeightLabel = QtGui.QLabel(self.LocationFooterGroupBox)
+ self.FontFooterHeightLabel.setObjectName("FontFooterHeightLabel")
+ self.LocationFooterLayout.setWidget(4, QtGui.QFormLayout.LabelRole, self.FontFooterHeightLabel)
+ self.FontFooterXSpinBox = QtGui.QSpinBox(self.LocationFooterGroupBox)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.FontFooterXSpinBox.sizePolicy().hasHeightForWidth())
+ self.FontFooterXSpinBox.setSizePolicy(sizePolicy)
+ self.FontFooterXSpinBox.setMinimumSize(QtCore.QSize(78, 0))
+ self.FontFooterXSpinBox.setProperty("value", QtCore.QVariant(0))
+ self.FontFooterXSpinBox.setMaximum(9999)
+ self.FontFooterXSpinBox.setObjectName("FontFooterXSpinBox")
+ self.LocationFooterLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.FontFooterXSpinBox)
+ self.FontFooterYSpinBox = QtGui.QSpinBox(self.LocationFooterGroupBox)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.FontFooterYSpinBox.sizePolicy().hasHeightForWidth())
+ self.FontFooterYSpinBox.setSizePolicy(sizePolicy)
+ self.FontFooterYSpinBox.setMinimumSize(QtCore.QSize(78, 0))
+ self.FontFooterYSpinBox.setProperty("value", QtCore.QVariant(0))
+ self.FontFooterYSpinBox.setMaximum(9999)
+ self.FontFooterYSpinBox.setObjectName("FontFooterYSpinBox")
+ self.LocationFooterLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.FontFooterYSpinBox)
+ self.FontFooterWidthSpinBox = QtGui.QSpinBox(self.LocationFooterGroupBox)
+ self.FontFooterWidthSpinBox.setMinimumSize(QtCore.QSize(78, 0))
+ self.FontFooterWidthSpinBox.setMaximum(9999)
+ self.FontFooterWidthSpinBox.setObjectName("FontFooterWidthSpinBox")
+ self.LocationFooterLayout.setWidget(3, QtGui.QFormLayout.FieldRole, self.FontFooterWidthSpinBox)
+ self.FontFooterHeightSpinBox = QtGui.QSpinBox(self.LocationFooterGroupBox)
+ self.FontFooterHeightSpinBox.setMinimumSize(QtCore.QSize(78, 0))
+ self.FontFooterHeightSpinBox.setMaximum(9999)
+ self.FontFooterHeightSpinBox.setObjectName("FontFooterHeightSpinBox")
+ self.LocationFooterLayout.setWidget(4, QtGui.QFormLayout.FieldRole, self.FontFooterHeightSpinBox)
+ self.FooterRightLayout.addWidget(self.LocationFooterGroupBox)
+ spacerItem4 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.FooterRightLayout.addItem(spacerItem4)
+ self.FontFooterLayout.addWidget(self.FooterRightWidget)
+ self.ThemeTabWidget.addTab(self.FontFooterTab, "")
+ self.OtherOptionsTab = QtGui.QWidget()
+ self.OtherOptionsTab.setObjectName("OtherOptionsTab")
+ self.OtherOptionsLayout = QtGui.QHBoxLayout(self.OtherOptionsTab)
+ self.OtherOptionsLayout.setSpacing(8)
+ self.OtherOptionsLayout.setMargin(8)
+ self.OtherOptionsLayout.setObjectName("OtherOptionsLayout")
+ self.OptionsLeftWidget = QtGui.QWidget(self.OtherOptionsTab)
+ self.OptionsLeftWidget.setObjectName("OptionsLeftWidget")
+ self.OptionsLeftLayout = QtGui.QVBoxLayout(self.OptionsLeftWidget)
+ self.OptionsLeftLayout.setSpacing(8)
+ self.OptionsLeftLayout.setMargin(0)
+ self.OptionsLeftLayout.setObjectName("OptionsLeftLayout")
+ self.ShadowGroupBox = QtGui.QGroupBox(self.OptionsLeftWidget)
self.ShadowGroupBox.setObjectName("ShadowGroupBox")
- self.layoutWidget2 = QtGui.QWidget(self.ShadowGroupBox)
- self.layoutWidget2.setGeometry(QtCore.QRect(10, 20, 281, 58))
- self.layoutWidget2.setObjectName("layoutWidget2")
- self.formLayout = QtGui.QFormLayout(self.layoutWidget2)
- self.formLayout.setObjectName("formLayout")
- self.ShadowCheckBox = QtGui.QCheckBox(self.layoutWidget2)
+ self.verticalLayout = QtGui.QVBoxLayout(self.ShadowGroupBox)
+ self.verticalLayout.setSpacing(8)
+ self.verticalLayout.setMargin(8)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.OutlineWidget = QtGui.QWidget(self.ShadowGroupBox)
+ self.OutlineWidget.setObjectName("OutlineWidget")
+ self.OutlineLayout = QtGui.QFormLayout(self.OutlineWidget)
+ self.OutlineLayout.setMargin(0)
+ self.OutlineLayout.setSpacing(8)
+ self.OutlineLayout.setObjectName("OutlineLayout")
+ self.OutlineCheckBox = QtGui.QCheckBox(self.OutlineWidget)
+ self.OutlineCheckBox.setObjectName("OutlineCheckBox")
+ self.OutlineLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.OutlineCheckBox)
+ self.OutlineColorLabel = QtGui.QLabel(self.OutlineWidget)
+ self.OutlineColorLabel.setObjectName("OutlineColorLabel")
+ self.OutlineLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.OutlineColorLabel)
+ self.OutlineColorPushButton = QtGui.QPushButton(self.OutlineWidget)
+ self.OutlineColorPushButton.setObjectName("OutlineColorPushButton")
+ self.OutlineLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.OutlineColorPushButton)
+ self.OutlineEnabledLabel = QtGui.QLabel(self.OutlineWidget)
+ self.OutlineEnabledLabel.setObjectName("OutlineEnabledLabel")
+ self.OutlineLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.OutlineEnabledLabel)
+ self.verticalLayout.addWidget(self.OutlineWidget)
+ self.ShadowWidget = QtGui.QWidget(self.ShadowGroupBox)
+ self.ShadowWidget.setObjectName("ShadowWidget")
+ self.ShadowLayout = QtGui.QFormLayout(self.ShadowWidget)
+ self.ShadowLayout.setMargin(0)
+ self.ShadowLayout.setSpacing(8)
+ self.ShadowLayout.setObjectName("ShadowLayout")
+ self.ShadowCheckBox = QtGui.QCheckBox(self.ShadowWidget)
self.ShadowCheckBox.setObjectName("ShadowCheckBox")
- self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.ShadowCheckBox)
- self.ShadowColorLabel = QtGui.QLabel(self.layoutWidget2)
+ self.ShadowLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.ShadowCheckBox)
+ self.ShadowColorLabel = QtGui.QLabel(self.ShadowWidget)
self.ShadowColorLabel.setObjectName("ShadowColorLabel")
- self.formLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.ShadowColorLabel)
- self.ShadowColorPushButton = QtGui.QPushButton(self.layoutWidget2)
+ self.ShadowLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.ShadowColorLabel)
+ self.ShadowColorPushButton = QtGui.QPushButton(self.ShadowWidget)
self.ShadowColorPushButton.setObjectName("ShadowColorPushButton")
- self.formLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.ShadowColorPushButton)
- self.AlignmentGroupBox = QtGui.QGroupBox(self.OptionsTab)
- self.AlignmentGroupBox.setGeometry(QtCore.QRect(10, 200, 321, 161))
+ self.ShadowLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.ShadowColorPushButton)
+ self.ShadowEnabledLabel = QtGui.QLabel(self.ShadowWidget)
+ self.ShadowEnabledLabel.setObjectName("ShadowEnabledLabel")
+ self.ShadowLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.ShadowEnabledLabel)
+ self.verticalLayout.addWidget(self.ShadowWidget)
+ self.OptionsLeftLayout.addWidget(self.ShadowGroupBox)
+ spacerItem5 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.OptionsLeftLayout.addItem(spacerItem5)
+ self.OtherOptionsLayout.addWidget(self.OptionsLeftWidget)
+ self.OptionsRightWidget = QtGui.QWidget(self.OtherOptionsTab)
+ self.OptionsRightWidget.setObjectName("OptionsRightWidget")
+ self.OptionsRightLayout = QtGui.QVBoxLayout(self.OptionsRightWidget)
+ self.OptionsRightLayout.setSpacing(8)
+ self.OptionsRightLayout.setMargin(0)
+ self.OptionsRightLayout.setObjectName("OptionsRightLayout")
+ self.AlignmentGroupBox = QtGui.QGroupBox(self.OptionsRightWidget)
self.AlignmentGroupBox.setObjectName("AlignmentGroupBox")
self.gridLayout_4 = QtGui.QGridLayout(self.AlignmentGroupBox)
self.gridLayout_4.setObjectName("gridLayout_4")
@@ -299,43 +443,82 @@ class Ui_AmendThemeDialog(object):
self.VerticalComboBox.addItem(QtCore.QString())
self.VerticalComboBox.addItem(QtCore.QString())
self.gridLayout_4.addWidget(self.VerticalComboBox, 1, 1, 1, 1)
- self.OutlineGroupBox = QtGui.QGroupBox(self.OptionsTab)
- self.OutlineGroupBox.setGeometry(QtCore.QRect(20, 110, 301, 80))
- self.OutlineGroupBox.setObjectName("OutlineGroupBox")
- self.layoutWidget_3 = QtGui.QWidget(self.OutlineGroupBox)
- self.layoutWidget_3.setGeometry(QtCore.QRect(10, 20, 281, 58))
- self.layoutWidget_3.setObjectName("layoutWidget_3")
- self.OutlineformLayout = QtGui.QFormLayout(self.layoutWidget_3)
- self.OutlineformLayout.setObjectName("OutlineformLayout")
- self.OutlineCheckBox = QtGui.QCheckBox(self.layoutWidget_3)
- self.OutlineCheckBox.setObjectName("OutlineCheckBox")
- self.OutlineformLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.OutlineCheckBox)
- self.OutlineColorLabel = QtGui.QLabel(self.layoutWidget_3)
- self.OutlineColorLabel.setObjectName("OutlineColorLabel")
- self.OutlineformLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.OutlineColorLabel)
- self.OutlineColorPushButton = QtGui.QPushButton(self.layoutWidget_3)
- self.OutlineColorPushButton.setObjectName("OutlineColorPushButton")
- self.OutlineformLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.OutlineColorPushButton)
- self.tabWidget.addTab(self.OptionsTab, "")
- self.horizontalLayout_2.addWidget(self.LeftSide)
- self.RightSide = QtGui.QWidget(self.widget)
- self.RightSide.setObjectName("RightSide")
- self.ThemePreview = QtGui.QLabel(self.RightSide)
- self.ThemePreview.setGeometry(QtCore.QRect(20, 60, 311, 271))
- self.ThemePreview.setFrameShape(QtGui.QFrame.Box)
- self.ThemePreview.setFrameShadow(QtGui.QFrame.Raised)
- self.ThemePreview.setLineWidth(2)
+ self.OptionsRightLayout.addWidget(self.AlignmentGroupBox)
+ spacerItem6 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.OptionsRightLayout.addItem(spacerItem6)
+ self.OtherOptionsLayout.addWidget(self.OptionsRightWidget)
+ self.ThemeTabWidget.addTab(self.OtherOptionsTab, "")
+ self.ContentLayout.addWidget(self.ThemeTabWidget)
+ self.AmendThemeLayout.addWidget(self.ContentWidget)
+ self.PreviewGroupBox = QtGui.QGroupBox(AmendThemeDialog)
+ self.PreviewGroupBox.setObjectName("PreviewGroupBox")
+ self.ThemePreviewLayout = QtGui.QHBoxLayout(self.PreviewGroupBox)
+ self.ThemePreviewLayout.setSpacing(8)
+ self.ThemePreviewLayout.setMargin(8)
+ self.ThemePreviewLayout.setObjectName("ThemePreviewLayout")
+ spacerItem7 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ self.ThemePreviewLayout.addItem(spacerItem7)
+ self.ThemePreview = QtGui.QLabel(self.PreviewGroupBox)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.ThemePreview.sizePolicy().hasHeightForWidth())
+ self.ThemePreview.setSizePolicy(sizePolicy)
+ self.ThemePreview.setMinimumSize(QtCore.QSize(300, 225))
+ self.ThemePreview.setFrameShape(QtGui.QFrame.WinPanel)
+ self.ThemePreview.setFrameShadow(QtGui.QFrame.Sunken)
+ self.ThemePreview.setLineWidth(1)
self.ThemePreview.setScaledContents(True)
self.ThemePreview.setObjectName("ThemePreview")
- self.horizontalLayout_2.addWidget(self.RightSide)
+ self.ThemePreviewLayout.addWidget(self.ThemePreview)
+ spacerItem8 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ self.ThemePreviewLayout.addItem(spacerItem8)
+ self.AmendThemeLayout.addWidget(self.PreviewGroupBox)
+ self.ThemeButtonBox = QtGui.QDialogButtonBox(AmendThemeDialog)
+ self.ThemeButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
+ self.ThemeButtonBox.setObjectName("ThemeButtonBox")
+ self.AmendThemeLayout.addWidget(self.ThemeButtonBox)
self.retranslateUi(AmendThemeDialog)
- self.tabWidget.setCurrentIndex(0)
+ self.ThemeTabWidget.setCurrentIndex(0)
+ QtCore.QObject.connect(self.ThemeButtonBox, QtCore.SIGNAL("accepted()"), AmendThemeDialog.accept)
+ QtCore.QObject.connect(self.ThemeButtonBox, QtCore.SIGNAL("rejected()"), AmendThemeDialog.reject)
QtCore.QMetaObject.connectSlotsByName(AmendThemeDialog)
+ AmendThemeDialog.setTabOrder(self.ThemeButtonBox, self.ThemeNameEdit)
+ AmendThemeDialog.setTabOrder(self.ThemeNameEdit, self.ThemeTabWidget)
+ AmendThemeDialog.setTabOrder(self.ThemeTabWidget, self.BackgroundComboBox)
+ AmendThemeDialog.setTabOrder(self.BackgroundComboBox, self.BackgroundTypeComboBox)
+ AmendThemeDialog.setTabOrder(self.BackgroundTypeComboBox, self.Color1PushButton)
+ AmendThemeDialog.setTabOrder(self.Color1PushButton, self.Color2PushButton)
+ AmendThemeDialog.setTabOrder(self.Color2PushButton, self.ImageLineEdit)
+ AmendThemeDialog.setTabOrder(self.ImageLineEdit, self.ImageToolButton)
+ AmendThemeDialog.setTabOrder(self.ImageToolButton, self.GradientComboBox)
+ AmendThemeDialog.setTabOrder(self.GradientComboBox, self.FontMainComboBox)
+ AmendThemeDialog.setTabOrder(self.FontMainComboBox, self.FontMainColorPushButton)
+ AmendThemeDialog.setTabOrder(self.FontMainColorPushButton, self.FontMainSizeSpinBox)
+ AmendThemeDialog.setTabOrder(self.FontMainSizeSpinBox, self.FontMainDefaultCheckBox)
+ AmendThemeDialog.setTabOrder(self.FontMainDefaultCheckBox, self.FontMainXSpinBox)
+ AmendThemeDialog.setTabOrder(self.FontMainXSpinBox, self.FontMainYSpinBox)
+ AmendThemeDialog.setTabOrder(self.FontMainYSpinBox, self.FontMainWidthSpinBox)
+ AmendThemeDialog.setTabOrder(self.FontMainWidthSpinBox, self.FontMainHeightSpinBox)
+ AmendThemeDialog.setTabOrder(self.FontMainHeightSpinBox, self.FontFooterComboBox)
+ AmendThemeDialog.setTabOrder(self.FontFooterComboBox, self.FontFooterColorPushButton)
+ AmendThemeDialog.setTabOrder(self.FontFooterColorPushButton, self.FontFooterSizeSpinBox)
+ AmendThemeDialog.setTabOrder(self.FontFooterSizeSpinBox, self.FontFooterDefaultCheckBox)
+ AmendThemeDialog.setTabOrder(self.FontFooterDefaultCheckBox, self.FontFooterXSpinBox)
+ AmendThemeDialog.setTabOrder(self.FontFooterXSpinBox, self.FontFooterYSpinBox)
+ AmendThemeDialog.setTabOrder(self.FontFooterYSpinBox, self.FontFooterWidthSpinBox)
+ AmendThemeDialog.setTabOrder(self.FontFooterWidthSpinBox, self.FontFooterHeightSpinBox)
+ AmendThemeDialog.setTabOrder(self.FontFooterHeightSpinBox, self.OutlineCheckBox)
+ AmendThemeDialog.setTabOrder(self.OutlineCheckBox, self.OutlineColorPushButton)
+ AmendThemeDialog.setTabOrder(self.OutlineColorPushButton, self.ShadowCheckBox)
+ AmendThemeDialog.setTabOrder(self.ShadowCheckBox, self.ShadowColorPushButton)
+ AmendThemeDialog.setTabOrder(self.ShadowColorPushButton, self.HorizontalComboBox)
+ AmendThemeDialog.setTabOrder(self.HorizontalComboBox, self.VerticalComboBox)
def retranslateUi(self, AmendThemeDialog):
AmendThemeDialog.setWindowTitle(QtGui.QApplication.translate("AmendThemeDialog", "Theme Maintance", None, QtGui.QApplication.UnicodeUTF8))
- self.ThemeNameLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Theme Name", None, QtGui.QApplication.UnicodeUTF8))
+ self.ThemeNameLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Theme Name:", None, QtGui.QApplication.UnicodeUTF8))
self.BackgroundLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Background:", None, QtGui.QApplication.UnicodeUTF8))
self.BackgroundComboBox.setItemText(0, QtGui.QApplication.translate("AmendThemeDialog", "Opaque", None, QtGui.QApplication.UnicodeUTF8))
self.BackgroundComboBox.setItemText(1, QtGui.QApplication.translate("AmendThemeDialog", "Transparent", None, QtGui.QApplication.UnicodeUTF8))
@@ -350,32 +533,44 @@ class Ui_AmendThemeDialog(object):
self.GradientComboBox.setItemText(0, QtGui.QApplication.translate("AmendThemeDialog", "Horizontal", None, QtGui.QApplication.UnicodeUTF8))
self.GradientComboBox.setItemText(1, QtGui.QApplication.translate("AmendThemeDialog", "Vertical", None, QtGui.QApplication.UnicodeUTF8))
self.GradientComboBox.setItemText(2, QtGui.QApplication.translate("AmendThemeDialog", "Circular", None, QtGui.QApplication.UnicodeUTF8))
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.BackgroundTab), QtGui.QApplication.translate("AmendThemeDialog", "Background", None, QtGui.QApplication.UnicodeUTF8))
- self.MainFontGroupBox.setTitle(QtGui.QApplication.translate("AmendThemeDialog", "Main Font", None, QtGui.QApplication.UnicodeUTF8))
- self.MainFontlabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Font:", None, QtGui.QApplication.UnicodeUTF8))
- self.MainFontColorLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Font Color", None, QtGui.QApplication.UnicodeUTF8))
- self.MainFontSize.setText(QtGui.QApplication.translate("AmendThemeDialog", "Size:", None, QtGui.QApplication.UnicodeUTF8))
- self.FooterFontGroupBox.setTitle(QtGui.QApplication.translate("AmendThemeDialog", "Display Location", None, QtGui.QApplication.UnicodeUTF8))
- self.FontMainUseDefault.setText(QtGui.QApplication.translate("AmendThemeDialog", "Use default location", None, QtGui.QApplication.UnicodeUTF8))
+ self.ThemeTabWidget.setTabText(self.ThemeTabWidget.indexOf(self.BackgroundTab), QtGui.QApplication.translate("AmendThemeDialog", "Background", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontMainGroupBox.setTitle(QtGui.QApplication.translate("AmendThemeDialog", "Main Font", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontMainlabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Font:", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontMainColorLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Font Color:", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontMainSize.setText(QtGui.QApplication.translate("AmendThemeDialog", "Size:", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontMainSizeSpinBox.setSuffix(QtGui.QApplication.translate("AmendThemeDialog", "pt", None, QtGui.QApplication.UnicodeUTF8))
+ self.MainLocationGroupBox.setTitle(QtGui.QApplication.translate("AmendThemeDialog", "Display Location", None, QtGui.QApplication.UnicodeUTF8))
+ self.DefaultLocationLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Use Default Location:", None, QtGui.QApplication.UnicodeUTF8))
self.FontMainXLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "X Position:", None, QtGui.QApplication.UnicodeUTF8))
self.FontMainYLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Y Position:", None, QtGui.QApplication.UnicodeUTF8))
- self.FontMainWidthLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Width", None, QtGui.QApplication.UnicodeUTF8))
- self.FontMainHeightLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Height", None, QtGui.QApplication.UnicodeUTF8))
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.FontMainTab), QtGui.QApplication.translate("AmendThemeDialog", "Font Main", None, QtGui.QApplication.UnicodeUTF8))
- self.FooterFontGroupBox_2.setTitle(QtGui.QApplication.translate("AmendThemeDialog", "Display Location", None, QtGui.QApplication.UnicodeUTF8))
- self.FontMainUseDefault_2.setText(QtGui.QApplication.translate("AmendThemeDialog", "Use default location", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontMainWidthLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Width:", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontMainHeightLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Height:", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontMainXSpinBox.setSuffix(QtGui.QApplication.translate("AmendThemeDialog", "px", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontMainYSpinBox.setSuffix(QtGui.QApplication.translate("AmendThemeDialog", "px", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontMainWidthSpinBox.setSuffix(QtGui.QApplication.translate("AmendThemeDialog", "px", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontMainHeightSpinBox.setSuffix(QtGui.QApplication.translate("AmendThemeDialog", "px", None, QtGui.QApplication.UnicodeUTF8))
+ self.ThemeTabWidget.setTabText(self.ThemeTabWidget.indexOf(self.FontMainTab), QtGui.QApplication.translate("AmendThemeDialog", "Font Main", None, QtGui.QApplication.UnicodeUTF8))
+ self.FooterFontGroupBox.setTitle(QtGui.QApplication.translate("AmendThemeDialog", "Footer Font", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontFooterLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Font:", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontFooterColorLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Font Color:", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontFooterSizeLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Size:", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontFooterSizeSpinBox.setSuffix(QtGui.QApplication.translate("AmendThemeDialog", "pt", None, QtGui.QApplication.UnicodeUTF8))
+ self.LocationFooterGroupBox.setTitle(QtGui.QApplication.translate("AmendThemeDialog", "Display Location", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontFooterDefaultLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Use Default Location:", None, QtGui.QApplication.UnicodeUTF8))
self.FontFooterXLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "X Position:", None, QtGui.QApplication.UnicodeUTF8))
self.FontFooterYLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Y Position:", None, QtGui.QApplication.UnicodeUTF8))
- self.FontFooterWidthLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Width", None, QtGui.QApplication.UnicodeUTF8))
- self.FontFooterHeightLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Height", None, QtGui.QApplication.UnicodeUTF8))
- self.FooterFontGroupBox_3.setTitle(QtGui.QApplication.translate("AmendThemeDialog", "Footer Font", None, QtGui.QApplication.UnicodeUTF8))
- self.FontFooterlabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Font:", None, QtGui.QApplication.UnicodeUTF8))
- self.FontFooterColorLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Font Color", None, QtGui.QApplication.UnicodeUTF8))
- self.FontFooterSizeLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Size:", None, QtGui.QApplication.UnicodeUTF8))
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.FontFooterTab), QtGui.QApplication.translate("AmendThemeDialog", "Font Footer", None, QtGui.QApplication.UnicodeUTF8))
- self.ShadowGroupBox.setTitle(QtGui.QApplication.translate("AmendThemeDialog", "Shadow", None, QtGui.QApplication.UnicodeUTF8))
- self.ShadowCheckBox.setText(QtGui.QApplication.translate("AmendThemeDialog", "Use Shadow", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontFooterWidthLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Width:", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontFooterHeightLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Height:", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontFooterXSpinBox.setSuffix(QtGui.QApplication.translate("AmendThemeDialog", "px", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontFooterYSpinBox.setSuffix(QtGui.QApplication.translate("AmendThemeDialog", "px", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontFooterWidthSpinBox.setSuffix(QtGui.QApplication.translate("AmendThemeDialog", "px", None, QtGui.QApplication.UnicodeUTF8))
+ self.FontFooterHeightSpinBox.setSuffix(QtGui.QApplication.translate("AmendThemeDialog", "px", None, QtGui.QApplication.UnicodeUTF8))
+ self.ThemeTabWidget.setTabText(self.ThemeTabWidget.indexOf(self.FontFooterTab), QtGui.QApplication.translate("AmendThemeDialog", "Font Footer", None, QtGui.QApplication.UnicodeUTF8))
+ self.ShadowGroupBox.setTitle(QtGui.QApplication.translate("AmendThemeDialog", "Shadow && Outline", None, QtGui.QApplication.UnicodeUTF8))
+ self.OutlineColorLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Outline Color:", None, QtGui.QApplication.UnicodeUTF8))
+ self.OutlineEnabledLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Show Outline:", None, QtGui.QApplication.UnicodeUTF8))
self.ShadowColorLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Shadow Color:", None, QtGui.QApplication.UnicodeUTF8))
+ self.ShadowEnabledLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Show Shadow:", None, QtGui.QApplication.UnicodeUTF8))
self.AlignmentGroupBox.setTitle(QtGui.QApplication.translate("AmendThemeDialog", "Alignment", None, QtGui.QApplication.UnicodeUTF8))
self.HorizontalLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Horizontal Align:", None, QtGui.QApplication.UnicodeUTF8))
self.HorizontalComboBox.setItemText(0, QtGui.QApplication.translate("AmendThemeDialog", "Left", None, QtGui.QApplication.UnicodeUTF8))
@@ -385,8 +580,6 @@ class Ui_AmendThemeDialog(object):
self.VerticalComboBox.setItemText(0, QtGui.QApplication.translate("AmendThemeDialog", "Top", None, QtGui.QApplication.UnicodeUTF8))
self.VerticalComboBox.setItemText(1, QtGui.QApplication.translate("AmendThemeDialog", "Middle", None, QtGui.QApplication.UnicodeUTF8))
self.VerticalComboBox.setItemText(2, QtGui.QApplication.translate("AmendThemeDialog", "Bottom", None, QtGui.QApplication.UnicodeUTF8))
- self.OutlineGroupBox.setTitle(QtGui.QApplication.translate("AmendThemeDialog", "Outline", None, QtGui.QApplication.UnicodeUTF8))
- self.OutlineCheckBox.setText(QtGui.QApplication.translate("AmendThemeDialog", "Use Outline", None, QtGui.QApplication.UnicodeUTF8))
- self.OutlineColorLabel.setText(QtGui.QApplication.translate("AmendThemeDialog", "Outline Color:", None, QtGui.QApplication.UnicodeUTF8))
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.OptionsTab), QtGui.QApplication.translate("AmendThemeDialog", "Alignment", None, QtGui.QApplication.UnicodeUTF8))
+ self.ThemeTabWidget.setTabText(self.ThemeTabWidget.indexOf(self.OtherOptionsTab), QtGui.QApplication.translate("AmendThemeDialog", "Other Options", None, QtGui.QApplication.UnicodeUTF8))
+ self.PreviewGroupBox.setTitle(QtGui.QApplication.translate("AmendThemeDialog", "Preview", None, QtGui.QApplication.UnicodeUTF8))
diff --git a/openlp/core/ui/amendthemeform.py b/openlp/core/ui/amendthemeform.py
index 2d6c988c4..82a2c9f3d 100644
--- a/openlp/core/ui/amendthemeform.py
+++ b/openlp/core/ui/amendthemeform.py
@@ -23,8 +23,8 @@ import os, os.path
from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import QColor, QFont
from openlp.core.lib import ThemeXML
+from openlp.core.lib import Renderer
from openlp.core import fileToXML
-from openlp.core import Renderer
from openlp.core import translate
from amendthemedialog import Ui_AmendThemeDialog
@@ -33,23 +33,27 @@ 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.theme = ThemeXML() # Needed here as UI setup generates Events
self.setupUi(self)
#define signals
- #Exits
- QtCore.QObject.connect(self.ThemeButtonBox, QtCore.SIGNAL("accepted()"), self.accept)
- QtCore.QObject.connect(self.ThemeButtonBox, QtCore.SIGNAL("rejected()"), self.close)
#Buttons
QtCore.QObject.connect(self.Color1PushButton ,
QtCore.SIGNAL("pressed()"), self.onColor1PushButtonClicked)
QtCore.QObject.connect(self.Color2PushButton ,
QtCore.SIGNAL("pressed()"), self.onColor2PushButtonClicked)
- QtCore.QObject.connect(self.MainFontColorPushButton,
- QtCore.SIGNAL("pressed()"), self.onMainFontColorPushButtonClicked)
+ QtCore.QObject.connect(self.FontMainColorPushButton,
+ QtCore.SIGNAL("pressed()"), self.onFontMainColorPushButtonClicked)
QtCore.QObject.connect(self.FontFooterColorPushButton,
QtCore.SIGNAL("pressed()"), self.onFontFooterColorPushButtonClicked)
+ QtCore.QObject.connect(self.OutlineColorPushButton,
+ QtCore.SIGNAL("pressed()"), self.onOutlineColorPushButtonClicked)
+ QtCore.QObject.connect(self.ShadowColorPushButton,
+ QtCore.SIGNAL("pressed()"), self.onShadowColorPushButtonClicked)
+
#Combo boxes
QtCore.QObject.connect(self.BackgroundComboBox,
QtCore.SIGNAL("activated(int)"), self.onBackgroundComboBoxSelected)
@@ -57,16 +61,69 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
QtCore.SIGNAL("activated(int)"), self.onBackgroundTypeComboBoxSelected)
QtCore.QObject.connect(self.GradientComboBox,
QtCore.SIGNAL("activated(int)"), self.onGradientComboBoxSelected)
+ QtCore.QObject.connect(self.FontMainComboBox,
+ QtCore.SIGNAL("activated(int)"), self.onFontMainComboBoxSelected)
+ QtCore.QObject.connect(self.FontFooterComboBox,
+ QtCore.SIGNAL("activated(int)"), self.onFontFooterComboBoxSelected)
+ QtCore.QObject.connect(self.HorizontalComboBox,
+ QtCore.SIGNAL("activated(int)"), self.onHorizontalComboBoxSelected)
+ QtCore.QObject.connect(self.VerticalComboBox,
+ QtCore.SIGNAL("activated(int)"), self.onVerticalComboBoxSelected)
+
+ QtCore.QObject.connect(self.FontMainSizeSpinBox,
+ QtCore.SIGNAL("valueChanged(int)"), self.onFontMainSizeSpinBoxChanged)
+ QtCore.QObject.connect(self.FontFooterSizeSpinBox,
+ QtCore.SIGNAL("valueChanged(int)"), self.onFontFooterSizeSpinBoxChanged)
+ QtCore.QObject.connect(self.FontMainDefaultCheckBox,
+ QtCore.SIGNAL("stateChanged(int)"), self.onFontMainDefaultCheckBoxChanged)
+ QtCore.QObject.connect(self.FontMainXSpinBox,
+ QtCore.SIGNAL("valueChanged(int)"), self.onFontMainXSpinBoxChanged)
+ QtCore.QObject.connect(self.FontMainYSpinBox,
+ QtCore.SIGNAL("valueChanged(int)"), self.onFontMainYSpinBoxChanged)
+ QtCore.QObject.connect(self.FontMainWidthSpinBox,
+ QtCore.SIGNAL("valueChanged(int)"), self.onFontMainWidthSpinBoxChanged)
+ QtCore.QObject.connect(self.FontMainHeightSpinBox,
+ QtCore.SIGNAL("valueChanged(int)"), self.onFontMainHeightSpinBoxChanged)
+ QtCore.QObject.connect(self.FontFooterDefaultCheckBox,
+ QtCore.SIGNAL("stateChanged(int)"), self.onFontFooterDefaultCheckBoxChanged)
+ QtCore.QObject.connect(self.FontFooterXSpinBox,
+ QtCore.SIGNAL("valueChanged(int)"), self.onFontFooterXSpinBoxChanged)
+ QtCore.QObject.connect(self.FontFooterYSpinBox,
+ QtCore.SIGNAL("valueChanged(int)"), self.onFontFooterYSpinBoxChanged)
+ QtCore.QObject.connect(self.FontFooterWidthSpinBox,
+ QtCore.SIGNAL("valueChanged(int)"), self.onFontFooterWidthSpinBoxChanged)
+ QtCore.QObject.connect(self.FontFooterHeightSpinBox,
+ QtCore.SIGNAL("valueChanged(int)"), self.onFontFooterHeightSpinBoxChanged)
+ QtCore.QObject.connect(self.OutlineCheckBox,
+ QtCore.SIGNAL("stateChanged(int)"), self.onOutlineCheckBoxChanged)
+ QtCore.QObject.connect(self.ShadowCheckBox,
+ QtCore.SIGNAL("stateChanged(int)"), self.onShadowCheckBoxChanged)
def accept(self):
+ new_theme = ThemeXML()
+ theme_name = str(self.ThemeNameEdit.displayText())
+ new_theme.new_document(theme_name)
+ if self.theme.background_type == u'solid':
+ new_theme.add_background_solid(str(self.theme.background_color))
+ elif self.theme.theme.background_type == u'gradient':
+ new_theme.add_background_gradient(str(self.theme.background_startColor), str(self.theme.background_endColor), self.theme.background_direction)
+ #else:
+ #newtheme.add_background_image(str(self.theme.))
+
+ new_theme.add_font(str(self.theme.font_main_name), str(self.theme.font_main_color), str(self.theme.font_main_proportion), u'False')
+ new_theme.add_font(str(self.theme.font_footer_name), str(self.theme.font_footer_color), str(self.theme.font_footer_proportion), u'False', u'footer')
+ new_theme.add_display(str(self.theme.display_shadow), str(self.theme.display_shadow_color), str(self.theme.display_outline), str(self.theme.display_outline_color),
+ str(self.theme.display_horizontalAlign), str(self.theme.display_verticalAlign), str(self.theme.display_wrapStyle))
+
+ theme = new_theme.extract_xml()
+ self.thememanager.saveTheme(theme_name, theme)
return QtGui.QDialog.accept(self)
def themePath(self, path):
self.path = path
def loadTheme(self, theme):
- self.theme = ThemeXML()
if theme == None:
self.theme.parse(self.baseTheme())
else:
@@ -74,62 +131,69 @@ 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
- self.theme.background_direction = u'horizontal'
- elif self.GradientComboBox.currentIndex() == 1: # vertical
- self.theme.background_direction = u'vertical'
- else:
- self.theme.background_direction = u'circular'
- self.stateChanging(self.theme)
- self.generateImage(self.theme)
+ #
+ #Main Font Tab
+ #
+ def onFontMainComboBoxSelected(self):
+ self.theme.font_main_name = self.FontMainComboBox.currentFont().family()
+ self.previewTheme(self.theme)
- def onBackgroundComboBoxSelected(self):
- if self.BackgroundComboBox.currentIndex() == 0: # Opaque
- self.theme.background_mode = u'opaque'
- else:
- self.theme.background_mode = u'transparent'
- self.stateChanging(self.theme)
- self.generateImage(self.theme)
-
- def onBackgroundTypeComboBoxSelected(self):
- if self.BackgroundTypeComboBox.currentIndex() == 0: # Solid
- self.theme.background_type = u'solid'
- elif self.BackgroundTypeComboBox.currentIndex() == 1: # Gradient
- self.theme.background_type = u'gradient'
- if self.theme.background_direction == None: # never defined
- self.theme.background_direction = u'horizontal'
- self.theme.background_color2 = u'#000000'
- else:
- self.theme.background_type = u'image'
- self.stateChanging(self.theme)
- self.generateImage(self.theme)
-
- def onColor1PushButtonClicked(self):
- self.theme.background_color1 = QtGui.QColorDialog.getColor(
- QColor(self.theme.background_color1), self).name()
- self.Color1PushButton.setStyleSheet(
- 'background-color: %s' % str(self.theme.background_color1))
-
- self.generateImage(self.theme)
-
- def onColor2PushButtonClicked(self):
- self.theme.background_color2 = QtGui.QColorDialog.getColor(
- QColor(self.theme.background_color2), self).name()
- self.Color2PushButton.setStyleSheet(
- 'background-color: %s' % str(self.theme.background_color2))
-
- self.generateImage(self.theme)
-
- def onMainFontColorPushButtonClicked(self):
+ def onFontMainColorPushButtonClicked(self):
self.theme.font_main_color = QtGui.QColorDialog.getColor(
QColor(self.theme.font_main_color), self).name()
- self.MainFontColorPushButton.setStyleSheet(
+ self.FontMainColorPushButton.setStyleSheet(
'background-color: %s' % str(self.theme.font_main_color))
- self.generateImage(self.theme)
+ self.previewTheme(self.theme)
+
+ def onFontMainSizeSpinBoxChanged(self, value):
+ self.theme.font_main_proportion = value
+ self.previewTheme(self.theme)
+
+ def onFontMainDefaultCheckBoxChanged(self, value):
+ if value == 2: # checked
+ self.theme.font_main_override = False
+ else:
+ self.theme.font_main_override = True
+
+ if int(self.theme.font_main_x) == 0 and int(self.theme.font_main_y) == 0 and \
+ int(self.theme.font_main_width) == 0 and int(self.theme.font_main_height) == 0:
+ self.theme.font_main_x = u'10'
+ self.theme.font_main_y = u'10'
+ self.theme.font_main_width = u'1024'
+ self.theme.font_main_height = u'730'
+ self.FontMainXSpinBox.setValue(int(self.theme.font_main_x))
+ self.FontMainYSpinBox.setValue(int(self.theme.font_main_y))
+ self.FontMainWidthSpinBox.setValue(int(self.theme.font_main_width))
+ self.FontMainHeightSpinBox.setValue(int(self.theme.font_main_height))
+ self.stateChanging(self.theme)
+ self.previewTheme(self.theme)
+
+ def onFontMainXSpinBoxChanged(self, value):
+ self.theme.font_main_x = value
+ self.previewTheme(self.theme)
+
+ def onFontMainYSpinBoxChanged(self, value):
+ self.theme.font_main_y = value
+ self.previewTheme(self.theme)
+
+ def onFontMainWidthSpinBoxChanged(self, value):
+ self.theme.font_main_width = value
+ self.previewTheme(self.theme)
+
+ def onFontMainHeightSpinBoxChanged(self, value):
+ self.theme.font_main_height = value
+ self.previewTheme(self.theme)
+
+
+ #
+ #Footer Font Tab
+ #
+ def onFontFooterComboBoxSelected(self):
+ self.theme.font_footer_name = self.FontFooterComboBox.currentFont().family()
+ self.previewTheme(self.theme)
def onFontFooterColorPushButtonClicked(self):
self.theme.font_footer_color = QtGui.QColorDialog.getColor(
@@ -137,15 +201,165 @@ 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 onFontFooterSizeSpinBoxChanged(self, value):
+ self.theme.font_footer_proportion = value
+ self.previewTheme(self.theme)
+
+ def onFontFooterDefaultCheckBoxChanged(self):
+ self.stateChanging(self.theme)
+ self.previewTheme(self.theme)
+
+ def onFontFooterDefaultCheckBoxChanged(self, value):
+ if value == 2: # checked
+ self.theme.font_footer_override = False
+ else:
+ self.theme.font_footer_override = True
+ if int(self.theme.font_footer_x) == 0 and int(self.theme.font_footer_y) == 0 and \
+ int(self.theme.font_footer_width) == 0 and int(self.theme.font_footer_height) == 0:
+ self.theme.font_footer_x = u'10'
+ self.theme.font_footer_y = u'730'
+ self.theme.font_footer_width = u'1024'
+ self.theme.font_footer_height = u'38'
+
+ self.FontFooterXSpinBox.setValue(int(self.theme.font_footer_x))
+ self.FontFooterYSpinBox.setValue(int(self.theme.font_footer_y))
+ self.FontFooterWidthSpinBox.setValue(int(self.theme.font_footer_width))
+ self.FontFooterHeightSpinBox.setValue(int(self.theme.font_footer_height))
+
+
+ self.stateChanging(self.theme)
+ self.previewTheme(self.theme)
+
+ def onFontFooterXSpinBoxChanged(self, value):
+ self.theme.font_footer_x = value
+ self.previewTheme(self.theme)
+
+ def onFontFooterYSpinBoxChanged(self, value):
+ self.theme.font_footer_y = value
+ self.previewTheme(self.theme)
+
+ def onFontFooterWidthSpinBoxChanged(self, value):
+ self.theme.font_footer_width = value
+ self.previewTheme(self.theme)
+
+ def onFontFooterHeightSpinBoxChanged(self, value):
+ self.theme.font_footer_height = value
+ self.previewTheme(self.theme)
+
+ #
+ #Background Tab
+ #
+ def onGradientComboBoxSelected(self, currentIndex):
+ self.setBackground(self.BackgroundTypeComboBox.currentIndex(), currentIndex)
+
+ 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.previewTheme(self.theme)
+
+ def onBackgroundTypeComboBoxSelected(self, currentIndex):
+ self.setBackground(currentIndex, self.GradientComboBox.currentIndex())
+
+ def setBackground(self, background, gradient):
+ if background == 0: # Solid
+ self.theme.background_type = u'solid'
+ if self.theme.background_color is None :
+ self.theme.background_color = u'#000000'
+ elif background == 1: # Gradient
+ self.theme.background_type = u'gradient'
+ if gradient == 0: # Horizontal
+ self.theme.background_direction = u'horizontal'
+ elif gradient == 1: # vertical
+ self.theme.background_direction = u'vertical'
+ else:
+ self.theme.background_direction = u'circular'
+ if self.theme.background_startColor is None :
+ self.theme.background_startColor = u'#000000'
+ if self.theme.background_endColor is None :
+ self.theme.background_endColor = u'#ff0000'
+ else:
+ self.theme.background_type = u'image'
+ self.stateChanging(self.theme)
+ self.previewTheme(self.theme)
+
+ def onColor1PushButtonClicked(self):
+ if self.theme.background_type == u'solid':
+ self.theme.background_color = QtGui.QColorDialog.getColor(
+ QColor(self.theme.background_color), self).name()
+ self.Color1PushButton.setStyleSheet(
+ 'background-color: %s' % str(self.theme.background_color))
+ else:
+ self.theme.background_startColor = QtGui.QColorDialog.getColor(
+ QColor(self.theme.background_startColor), self).name()
+ self.Color1PushButton.setStyleSheet(
+ 'background-color: %s' % str(self.theme.background_startColor))
+
+ self.previewTheme(self.theme)
+
+ def onColor2PushButtonClicked(self):
+ self.theme.background_endColor = QtGui.QColorDialog.getColor(
+ QColor(self.theme.background_endColor), self).name()
+ self.Color2PushButton.setStyleSheet(
+ 'background-color: %s' % str(self.theme.background_endColor))
+
+ self.previewTheme(self.theme)
+ #
+ #Other Tab
+ #
+ def onOutlineCheckBoxChanged(self, value):
+ if value == 2: # checked
+ self.theme.display_outline = True
+ else:
+ self.theme.display_outline = False
+ self.stateChanging(self.theme)
+ self.previewTheme(self.theme)
+
+ def onOutlineColorPushButtonClicked(self):
+ self.theme.display_outline_color = QtGui.QColorDialog.getColor(
+ QColor(self.theme.display_outline_color), self).name()
+ self.OutlineColorPushButton.setStyleSheet(
+ 'background-color: %s' % str(self.theme.display_outline_color))
+ self.previewTheme(self.theme)
+
+ def onShadowCheckBoxChanged(self, value):
+ if value == 2: # checked
+ self.theme.display_shadow = True
+ else:
+ self.theme.display_shadow = False
+ self.stateChanging(self.theme)
+ self.previewTheme(self.theme)
+
+ def onShadowColorPushButtonClicked(self):
+ self.theme.display_shadow_color = QtGui.QColorDialog.getColor(
+ QColor(self.theme.display_shadow_color), self).name()
+ self.ShadowColorPushButton.setStyleSheet(
+ 'background-color: %s' % str(self.theme.display_shadow_color))
+ self.previewTheme(self.theme)
+
+ def onHorizontalComboBoxSelected(self, currentIndex):
+ self.theme.display_horizontalAlign = currentIndex
+ self.stateChanging(self.theme)
+ self.previewTheme(self.theme)
+
+ def onVerticalComboBoxSelected(self, currentIndex):
+ self.theme.display_verticalAlign = currentIndex
+ self.stateChanging(self.theme)
+ self.previewTheme(self.theme)
+ #
+ #Local Methods
+ #
def baseTheme(self):
log.debug(u'base Theme')
newtheme = ThemeXML()
newtheme.new_document(u'New Theme')
newtheme.add_background_solid(str(u'#000000'))
- newtheme.add_font(str(QFont().family()), str(u'#FFFFFF'), str(30), u'False')
- newtheme.add_font(str(QFont().family()), str(u'#FFFFFF'), str(12), u'False', u'footer')
+ newtheme.add_font(str(QFont().family()), str(u'#FFFFFF'), str(30), False)
+ newtheme.add_font(str(QFont().family()), str(u'#FFFFFF'), str(12), False, u'footer')
newtheme.add_display(str(False), str(u'#FFFFFF'), str(False), str(u'#FFFFFF'),
str(0), str(0), str(0))
@@ -154,76 +368,147 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
def paintUi(self, theme):
print theme # leave as helpful for initial development
self.stateChanging(theme)
- self.BackgroundTypeComboBox.setCurrentIndex(0)
- self.BackgroundComboBox.setCurrentIndex(0)
- self.GradientComboBox.setCurrentIndex(0)
- self.MainFontColorPushButton.setStyleSheet(
+ self.ThemeNameEdit.setText(self.theme.theme_name)
+ if self.theme.background_mode == u'opaque':
+ self.BackgroundComboBox.setCurrentIndex(0)
+ else:
+ self.BackgroundComboBox.setCurrentIndex(1)
+
+ if theme.background_type == u'solid':
+ self.BackgroundTypeComboBox.setCurrentIndex(0)
+ elif theme.background_type == u'gradient':
+ self.BackgroundTypeComboBox.setCurrentIndex(1)
+ else:
+ self.BackgroundTypeComboBox.setCurrentIndex(2)
+
+ if self.theme.background_direction == u'horizontal':
+ self.GradientComboBox.setCurrentIndex(0)
+ elif self.theme.background_direction == u'vertical':
+ self.GradientComboBox.setCurrentIndex(1)
+ else:
+ self.GradientComboBox.setCurrentIndex(2)
+
+ self.FontMainSizeSpinBox.setValue(int(self.theme.font_main_proportion))
+ self.FontMainXSpinBox.setValue(int(self.theme.font_main_x))
+ self.FontMainYSpinBox.setValue(int(self.theme.font_main_y))
+ self.FontMainWidthSpinBox.setValue(int(self.theme.font_main_width))
+ self.FontMainHeightSpinBox.setValue(int(self.theme.font_main_height))
+ self.FontFooterSizeSpinBox.setValue(int(self.theme.font_footer_proportion))
+ self.FontFooterXSpinBox.setValue(int(self.theme.font_footer_x))
+ self.FontFooterYSpinBox.setValue(int(self.theme.font_footer_y))
+ self.FontFooterWidthSpinBox.setValue(int(self.theme.font_footer_width))
+ self.FontFooterHeightSpinBox.setValue(int(self.theme.font_footer_height))
+ self.FontMainColorPushButton.setStyleSheet(
'background-color: %s' % str(theme.font_main_color))
self.FontFooterColorPushButton.setStyleSheet(
'background-color: %s' % str(theme.font_footer_color))
+ if self.theme.font_main_override == False:
+ self.FontMainDefaultCheckBox.setChecked(True)
+ else:
+ self.FontMainDefaultCheckBox.setChecked(False)
+
+ if self.theme.font_footer_override == False:
+ self.FontFooterDefaultCheckBox.setChecked(True)
+ else:
+ self.FontFooterDefaultCheckBox.setChecked(False)
+
+ self.OutlineColorPushButton.setStyleSheet(
+ 'background-color: %s' % str(theme.display_outline_color))
+ self.ShadowColorPushButton.setStyleSheet(
+ 'background-color: %s' % str(theme.display_shadow_color))
+
+ if self.theme.display_outline:
+ self.OutlineCheckBox.setChecked(True)
+ self.OutlineColorPushButton.setEnabled(True)
+ else:
+ self.OutlineCheckBox.setChecked(False)
+ self.OutlineColorPushButton.setEnabled(False)
+
+ if self.theme.display_shadow:
+ self.ShadowCheckBox.setChecked(True)
+ self.ShadowColorPushButton.setEnabled(True)
+ else:
+ self.ShadowCheckBox.setChecked(False)
+ self.ShadowColorPushButton.setEnabled(False)
+
+ self.HorizontalComboBox.setCurrentIndex(int(self.theme.display_horizontalAlign))
+ self.VerticalComboBox.setCurrentIndex(int(self.theme.display_verticalAlign))
+
def stateChanging(self, theme):
if theme.background_type == u'solid':
self.Color1PushButton.setStyleSheet(
- 'background-color: %s' % str(theme.background_color1))
- self.Color1Label.setText(translate(u'ThemeManager', u'Background Font:'))
+ 'background-color: %s' % str(theme.background_color))
+ self.Color1Label.setText(translate(u'ThemeManager', u'Background Color:'))
self.Color1Label.setVisible(True)
self.Color1PushButton.setVisible(True)
self.Color2Label.setVisible(False)
self.Color2PushButton.setVisible(False)
+ self.ImageLabel.setVisible(False)
+ self.ImageLineEdit.setVisible(False)
+ self.ImageFilenameWidget.setVisible(False)
+ self.GradientLabel.setVisible(False)
+ self.GradientComboBox.setVisible(False)
elif theme.background_type == u'gradient':
self.Color1PushButton.setStyleSheet(
- 'background-color: %s' % str(theme.background_color1))
+ 'background-color: %s' % str(theme.background_startColor))
self.Color2PushButton.setStyleSheet(
- 'background-color: %s' % str(theme.background_color2))
+ 'background-color: %s' % str(theme.background_endColor))
self.Color1Label.setText(translate(u'ThemeManager', u'First Color:'))
self.Color2Label.setText(translate(u'ThemeManager', u'Second Color:'))
self.Color1Label.setVisible(True)
self.Color1PushButton.setVisible(True)
self.Color2Label.setVisible(True)
self.Color2PushButton.setVisible(True)
+ self.ImageLabel.setVisible(False)
+ self.ImageLineEdit.setVisible(False)
+ self.ImageFilenameWidget.setVisible(False)
+ self.GradientLabel.setVisible(True)
+ self.GradientComboBox.setVisible(True)
else: # must be image
self.Color1Label.setVisible(False)
self.Color1PushButton.setVisible(False)
self.Color2Label.setVisible(False)
self.Color2PushButton.setVisible(False)
+ self.ImageLabel.setVisible(True)
+ self.ImageLineEdit.setVisible(True)
+ self.ImageFilenameWidget.setVisible(True)
+ self.GradientLabel.setVisible(False)
+ self.GradientComboBox.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()
- r.set_paint_dest(paintdest)
+ if theme.font_main_override == False:
+ self.FontMainXSpinBox.setEnabled(False)
+ self.FontMainYSpinBox.setEnabled(False)
+ self.FontMainWidthSpinBox.setEnabled(False)
+ self.FontMainHeightSpinBox.setEnabled(False)
+ else:
+ self.FontMainXSpinBox.setEnabled(True)
+ self.FontMainYSpinBox.setEnabled(True)
+ self.FontMainWidthSpinBox.setEnabled(True)
+ self.FontMainHeightSpinBox.setEnabled(True)
- 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))
+ if theme.font_footer_override == False:
+ self.FontFooterXSpinBox.setEnabled(False)
+ self.FontFooterYSpinBox.setEnabled(False)
+ self.FontFooterWidthSpinBox.setEnabled(False)
+ self.FontFooterHeightSpinBox.setEnabled(False)
+ else:
+ self.FontFooterXSpinBox.setEnabled(True)
+ self.FontFooterYSpinBox.setEnabled(True)
+ self.FontFooterWidthSpinBox.setEnabled(True)
+ self.FontFooterHeightSpinBox.setEnabled(True)
- 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')
+ if self.theme.display_outline:
+ self.OutlineColorPushButton.setEnabled(True)
+ else:
+ self.OutlineColorPushButton.setEnabled(False)
- answer=r._render_lines(lines, lines1)
+ if self.theme.display_shadow:
+ self.ShadowColorPushButton.setEnabled(True)
+ else:
+ self.ShadowColorPushButton.setEnabled(False)
- 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)
diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py
index 40cc153a7..fce956780 100644
--- a/openlp/core/ui/mainwindow.py
+++ b/openlp/core/ui/mainwindow.py
@@ -28,7 +28,7 @@ from openlp.core.resources import *
from openlp.core.ui import AboutForm, SettingsForm, AlertForm, \
SlideController, ServiceManager, ThemeManager
-from openlp.core.lib import Plugin, MediaManagerItem, SettingsTab, EventManager
+from openlp.core.lib import Plugin, MediaManagerItem, SettingsTab, EventManager, RenderManager
from openlp.core import PluginManager
@@ -52,11 +52,17 @@ class MainWindow(object):
self.setupUi()
+ #warning cyclic dependency
+ #RenderManager needs to call ThemeManager and
+ #ThemeManager needs to call RenderManager
+ self.RenderManager = RenderManager(self.ThemeManagerContents, self.screen_list)
+
log.info(u'Load Plugins')
self.plugin_helpers[u'preview'] = self.PreviewController
self.plugin_helpers[u'live'] = self.LiveController
self.plugin_helpers[u'event'] = self.EventManager
self.plugin_helpers[u'theme'] = self.ThemeManagerContents # Theme manger
+ self.plugin_helpers[u'render'] = self.RenderManager
self.plugin_manager.find_plugins(pluginpath, self.plugin_helpers, self.EventManager)
# hook methods have to happen after find_plugins. Find plugins needs the controllers
@@ -84,6 +90,9 @@ class MainWindow(object):
# Once all components are initialised load the Themes
log.info(u'Load Themes')
self.ThemeManagerContents.setEventManager(self.EventManager)
+ self.ThemeManagerContents.setRenderManager(self.RenderManager)
+ self.ServiceManagerContents.setRenderManager(self.RenderManager)
+ self.ThemeManagerContents.setServiceManager(self.ServiceManagerContents)
self.ThemeManagerContents.loadThemes()
def setupUi(self):
diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py
index f2f45e5ce..81c272d17 100644
--- a/openlp/core/ui/servicemanager.py
+++ b/openlp/core/ui/servicemanager.py
@@ -29,6 +29,7 @@ from PyQt4.QtGui import *
# from openlp.core.ui import AboutForm, AlertForm, SettingsForm, SlideController
from openlp.core.lib import OpenLPToolbar
from openlp.core.lib import ServiceItem
+from openlp.core.lib import RenderManager
# from openlp.core import PluginManager
import logging
@@ -61,7 +62,7 @@ class ServiceData(QAbstractItemModel):
self.endRemoveRows()
def addRow(self, item):
self.insertRow(len(self.items), item)
-
+
def index(self, row, col, parent = QModelIndex()):
return self.createIndex(row,col)
@@ -90,7 +91,7 @@ class ServiceData(QAbstractItemModel):
return QVariant(retval)
else:
return retval
-
+
def __iter__(self):
for i in self.items:
yield i
@@ -99,7 +100,7 @@ class ServiceData(QAbstractItemModel):
log.info("Get Item:%d -> %s" %(row, str(self.items)))
return self.items[row]
-
+
class ServiceManager(QWidget):
"""Manages the orders of service. Currently this involves taking
@@ -109,7 +110,7 @@ class ServiceManager(QWidget):
Also handles the UI tasks of moving things up and down etc.
"""
global log
- log=logging.getLogger(u'ServiceManager')
+ log=logging.getLogger(u'ServiceManager')
def __init__(self, parent):
QWidget.__init__(self)
@@ -128,9 +129,6 @@ class ServiceManager(QWidget):
self.Toolbar.addSeparator()
self.ThemeComboBox = QtGui.QComboBox(self.Toolbar)
self.ThemeComboBox.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContents)
- self.ThemeComboBox.addItem(QtCore.QString())
- self.ThemeComboBox.addItem(QtCore.QString())
- self.ThemeComboBox.addItem(QtCore.QString())
self.ThemeWidget = QtGui.QWidgetAction(self.Toolbar)
self.ThemeWidget.setDefaultWidget(self.ThemeComboBox)
self.Toolbar.addAction(self.ThemeWidget)
@@ -141,7 +139,15 @@ class ServiceManager(QWidget):
self.service_data=ServiceData()
self.TreeView.setModel(self.service_data)
self.Layout.addWidget(self.TreeView)
-
+ QtCore.QObject.connect(self.ThemeComboBox,
+ QtCore.SIGNAL("activated(int)"), self.onThemeComboBoxSelected)
+
+ def setRenderManager(self, renderManager):
+ self.renderManager = renderManager
+
+ def onThemeComboBoxSelected(self, currentIndex):
+ self.renderManager.set_default_theme(self.ThemeComboBox.currentText())
+
def addServiceItem(self, item):
"""Adds service item"""
log.info("addServiceItem")
@@ -165,7 +171,7 @@ class ServiceManager(QWidget):
self.service_data.addRow(item)
else:
self.service_data.insertRow(row+1, item)
-
+
def removeServiceItem(self):
"""Remove currently selected item"""
pass
@@ -189,3 +195,10 @@ class ServiceManager(QWidget):
oosfile.write(self.oos_as_text)
oosfile.write("# END OOS\n")
oosfile.close()
+
+ def updateThemeList(self, theme_list):
+ self.ThemeComboBox.clear()
+ for theme in theme_list:
+ self.ThemeComboBox.addItem(theme)
+ self.renderManager.set_default_theme(self.ThemeComboBox.currentText())
+
diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py
index 1f11dcf08..08593fe07 100644
--- a/openlp/core/ui/slidecontroller.py
+++ b/openlp/core/ui/slidecontroller.py
@@ -3,7 +3,7 @@
"""
OpenLP - Open Source Lyrics Projection
Copyright (c) 2008 Raoul Snyman
-Portions copyright (c) 2008 Martin Thompson, Tim Bentley,
+Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley,
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@@ -27,7 +27,7 @@ class SlideController(QtGui.QWidget):
self.Pane = QtGui.QWidget(control_splitter)
self.Splitter = QtGui.QSplitter(self.Pane)
self.Splitter.setOrientation(QtCore.Qt.Vertical)
-
+
self.PaneLayout = QtGui.QVBoxLayout(self.Pane)
self.PaneLayout.addWidget(self.Splitter)
self.PaneLayout.setSpacing(50)
@@ -41,6 +41,23 @@ class SlideController(QtGui.QWidget):
self.Controller.setGeometry(QtCore.QRect(0, 0, 828, 536))
self.Controller.setWidget(self.ControllerContents)
- self.Screen = QtGui.QGraphicsView(self.Splitter)
- self.Screen.setMaximumSize(QtCore.QSize(16777215, 250))
+ #self.Screen = QtGui.QGraphicsView(self.Splitter)
+ #self.Screen.setMaximumSize(QtCore.QSize(16777215, 250))
+
+ self.ThemePreview = QtGui.QLabel(self.Splitter)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.ThemePreview.sizePolicy().hasHeightForWidth())
+ self.ThemePreview.setSizePolicy(sizePolicy)
+ self.ThemePreview.setMinimumSize(QtCore.QSize(250, 190))
+ self.ThemePreview.setFrameShape(QtGui.QFrame.WinPanel)
+ self.ThemePreview.setFrameShadow(QtGui.QFrame.Sunken)
+ self.ThemePreview.setLineWidth(1)
+ self.ThemePreview.setScaledContents(True)
+ self.ThemePreview.setObjectName("ThemePreview")
+
+
+ def previewFrame(self, frame):
+ self.ThemePreview.setPixmap(frame)
diff --git a/openlp/core/ui/splashscreen.py b/openlp/core/ui/splashscreen.py
index f045a4183..7d4fea3d5 100644
--- a/openlp/core/ui/splashscreen.py
+++ b/openlp/core/ui/splashscreen.py
@@ -20,12 +20,15 @@ Place, Suite 330, Boston, MA 02111-1307 USA
from PyQt4 import QtCore, QtGui
-from openlp.core.resources import *
+#from openlp.core.resources import *
+from openlp.core import translate
class SplashScreen(object):
- def __init__(self):
+ def __init__(self, version):
self.splash_screen = QtGui.QSplashScreen()
self.setupUi()
+ starting = translate('SplashScreen',u'Starting')
+ self.message=starting+u'..... '+version
def setupUi(self):
self.splash_screen.setObjectName("splash_screen")
@@ -60,7 +63,7 @@ class SplashScreen(object):
def show(self):
self.splash_screen.show()
- self.splash_screen.showMessage(u'Starting...', QtCore.Qt.AlignLeft | QtCore.Qt.AlignBottom, QtCore.Qt.black)
+ self.splash_screen.showMessage(self.message, QtCore.Qt.AlignLeft | QtCore.Qt.AlignBottom, QtCore.Qt.black)
self.splash_screen.repaint()
def finish(self, widget):
diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py
index 3726c23a7..a40fc8af1 100644
--- a/openlp/core/ui/thememanager.py
+++ b/openlp/core/ui/thememanager.py
@@ -20,6 +20,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA
import os,os.path
import sys
import zipfile
+import shutil
from time import sleep
from copy import deepcopy
@@ -30,17 +31,18 @@ from PyQt4.QtCore import *
from PyQt4.QtGui import *
from openlp.core.ui import AmendThemeForm
+from openlp.core.ui import ServiceManager
from openlp.core import translate
-from openlp.core import Renderer
+from openlp.core import fileToXML
from openlp.core.theme import Theme
from openlp.core.lib import Event
from openlp.core.lib import EventType
from openlp.core.lib import EventManager
from openlp.core.lib import OpenLPToolbar
from openlp.core.lib import ThemeXML
+from openlp.core.lib import Renderer
from openlp.core.utils import ConfigHelper
-
import logging
class ThemeData(QAbstractItemModel):
@@ -153,7 +155,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)
@@ -186,6 +188,12 @@ class ThemeManager(QWidget):
def setEventManager(self, eventManager):
self.eventManager = eventManager
+ def setRenderManager(self, renderManager):
+ self.renderManager = renderManager
+
+ def setServiceManager(self, serviceManager):
+ self.serviceManager = serviceManager
+
def onAddTheme(self):
self.amendThemeForm.loadTheme(None)
self.amendThemeForm.exec_()
@@ -198,7 +206,19 @@ class ThemeManager(QWidget):
self.amendThemeForm.exec_()
def onDeleteTheme(self):
- pass
+ items = self.ThemeListView.selectedIndexes()
+ theme = ''
+ for item in items:
+ data = self.Theme_data.getValue(item)
+ theme = data[3]
+ th = theme + u'.png'
+ try:
+ os.remove(os.path.join(self.path, th))
+ except:
+ pass #if not present do not worry
+ shutil.rmtree(os.path.join(self.path, theme))
+ self.Theme_data.clearItems()
+ self.loadThemes()
def onExportTheme(self):
pass
@@ -224,18 +244,33 @@ class ThemeManager(QWidget):
self.Theme_data.addRow(os.path.join(self.path, name))
self.eventManager.post_event(Event(EventType.ThemeListChanged))
+ self.serviceManager.updateThemeList(self.getThemes())
def getThemes(self):
return self.Theme_data.getList()
+ def getThemeData(self, themename):
+ xml_file = os.path.join(self.path, str(themename), str(themename)+u'.xml')
+ xml = fileToXML(xml_file)
+ theme = ThemeXML()
+ theme.parse(xml)
+ return theme
+
def checkThemesExists(self, dir):
log.debug(u'check themes')
if os.path.exists(dir) == False:
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
+ themename = None
for file in zip.namelist():
if file.endswith('/'):
theme_dir = os.path.join(dir, file)
@@ -244,20 +279,23 @@ class ThemeManager(QWidget):
else:
fullpath = os.path.join(dir, file)
names = file.split(u'/')
- 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)
+ if len(names) > 1: # not preview file
+ if themename is None:
+ themename = names[0]
+ 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) # upgrade theme xml
+ else:
+ filexml = xml_data
outfile = open(fullpath, 'w')
outfile.write(filexml)
outfile.close()
- self.generateImage(dir,names[0], filexml)
- else:
- if os.path.splitext (file) [1].lower () in [u'.bmp']:
- if fullpath is not os.path.join(dir, file):
- outfile = open(fullpath, 'w')
- outfile.write(zip.read(file))
- outfile.close()
+ else:
+ outfile = open(fullpath, 'w')
+ outfile.write(zip.read(file))
+ outfile.close()
+ self.generateAndSaveImage(dir,themename, filexml)
def checkVersion1(self, xmlfile):
log.debug(u'checkVersion1 ')
@@ -278,7 +316,7 @@ class ThemeManager(QWidget):
newtheme.add_background_solid(str(t.BackgroundParameter1.name()))
elif t.BackgroundType == 1:
direction = "vertical"
- if t.BackgroundParameter1.name() == 1:
+ if t.BackgroundParameter3.name() == 1:
direction = "horizontal"
newtheme.add_background_gradient(str(t.BackgroundParameter1.name()), str(t.BackgroundParameter2.name()), direction)
else:
@@ -296,48 +334,37 @@ class ThemeManager(QWidget):
str(t.HorizontalAlign), str(t.VerticalAlign), str(t.WrapStyle))
return newtheme.extract_xml()
- def generateImage(self, dir, name, theme_xml):
- log.debug(u'generateImage %s %s ', dir, theme_xml)
+ def saveTheme(self, name, theme_xml) :
+ log.debug(u'saveTheme %s %s', name, theme_xml)
+ self.generateAndSaveImage(self.path, name, theme_xml)
+ theme_dir = os.path.join(self.path, name)
+ if os.path.exists(theme_dir) == False:
+ os.mkdir(os.path.join(self.path, name))
+
+ theme_file = os.path.join(theme_dir, name+u'.xml')
+ outfile = open(theme_file, 'w')
+ outfile.write(theme_xml)
+ outfile.close()
+ self.Theme_data.clearItems()
+ self.loadThemes()
+
+ def generateAndSaveImage(self, dir, name, theme_xml):
+ log.debug(u'generateAndSaveImage %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()
- 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))
+ frame = self.generateImage(theme)
- 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)
-
- im=frame.GetPixmap().toImage()
- samplepathname=os.path.join(dir, name+u'.png')
+ im=frame.toImage()
+ samplepathname=os.path.join(self.path, 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)
+ self.renderManager.set_theme(theme)
+ frame = self.renderManager.generate_preview()
+ return frame
-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
diff --git a/openlp/plugins/bibles/lib/biblestab.py b/openlp/plugins/bibles/lib/biblestab.py
index 0f9b3fe03..dc0918d92 100644
--- a/openlp/plugins/bibles/lib/biblestab.py
+++ b/openlp/plugins/bibles/lib/biblestab.py
@@ -21,8 +21,8 @@ Place, Suite 330, Boston, MA 02111-1307 USA
from PyQt4 import QtCore, QtGui
from openlp.core import translate
+from openlp import convertStringToBoolean
from openlp.core.lib import SettingsTab
-from openlp.core.resources import *
class BiblesTab(SettingsTab):
"""
@@ -182,11 +182,11 @@ class BiblesTab(SettingsTab):
self.bible_search = True
def load(self):
- self.paragraph_style = self.convertStringToBoolean(self.config.get_config('paragraph style', u'True'))
- self.show_new_chapters = self.convertStringToBoolean(self.config.get_config('display new chapter', u"False"))
+ self.paragraph_style = convertStringToBoolean(self.config.get_config('paragraph style', u'True'))
+ self.show_new_chapters = convertStringToBoolean(self.config.get_config('display new chapter', u"False"))
self.display_style = int(self.config.get_config('display brackets', '0'))
self.bible_theme = int(self.config.get_config('bible theme', '0'))
- self.bible_search = self.convertStringToBoolean(self.config.get_config('search as type', u'True'))
+ self.bible_search = convertStringToBoolean(self.config.get_config('search as type', u'True'))
if self.paragraph_style:
self.ParagraphRadioButton.setChecked(True)
else:
diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py
index c04da6e06..c881c9202 100644
--- a/openlp/plugins/bibles/lib/manager.py
+++ b/openlp/plugins/bibles/lib/manager.py
@@ -52,16 +52,16 @@ class BibleManager():
self.proxyname = self.config.get_config("proxy name") #get proxy name for screen
self.bibleSuffix = "sqlite"
self.dialogobject = None
-
+
self.reload_bibles()
-
+
def reload_bibles(self):
log.debug("Reload bibles")
-
+
files = self.config.get_files(self.bibleSuffix)
log.debug("Bible Files %s", files )
-
- self.bible_db_cache = {}
+
+ self.bible_db_cache = {}
self.bible_http_cache = {}
self.book_testaments = {} # books of the bible with testaments
@@ -88,17 +88,17 @@ class BibleManager():
nhttp.set_bibleid(bibleid) # tell The Server where to get the verses from.
else:
self.bible_http_cache [bname] = None # makes the Full / partial code easier.
-
+
if self.web_bibles_present:
self.book_testaments = {} # books of the bible linked to bibleid {osis , name}
self.book_abbreviations = {} # books of the bible linked to bibleid {osis ,Abbrev }
-
+
filepath = os.path.split(os.path.abspath(__file__))[0]
- filepath = os.path.abspath(os.path.join(filepath, '..', 'resources','httpbooks.csv'))
+ filepath = os.path.abspath(os.path.join(filepath, '..', 'resources','httpbooks.csv'))
fbibles=open(filepath, 'r')
for line in fbibles:
p = line.split(",")
- self.book_abbreviations[p[0]] = p[1].replace('\n', '')
+ self.book_abbreviations[p[0]] = p[1].replace('\n', '')
self.book_testaments[p[0]] = p[2].replace('\n', '')
log.debug( "Bible Initialised")
@@ -136,7 +136,7 @@ class BibleManager():
If the database exists it is deleted and the database is reloaded
from scratch.
"""
- log.debug( "register_CSV_file_bible %s,%s,%s", biblename, booksfile, versefile)
+ log.debug( "register_CSV_file_bible %s,%s,%s", biblename, booksfile, versefile)
if self._is_new_bible(biblename):
nbible = BibleDBImpl(self.biblePath, biblename, self.config) # Create new Bible
nbible.create_tables() # Create Database
@@ -150,7 +150,7 @@ class BibleManager():
If the database exists it is deleted and the database is reloaded
from scratch.
"""
- log.debug( "register_OSIS_file_bible %s , %s", biblename, osisfile)
+ log.debug( "register_OSIS_file_bible %s , %s", biblename, osisfile)
if self._is_new_bible(biblename):
nbible = BibleDBImpl(self.biblePath, biblename, self.config) # Create new Bible
nbible.create_tables() # Create Database
@@ -170,7 +170,7 @@ class BibleManager():
if mode == "full":
r.append(b)
else:
- if self.bible_http_cache [b] == None: # we do not have an http bible
+ if self.bible_http_cache [b] == None: # we do not have an http bible
r.append(b)
return r
@@ -250,16 +250,16 @@ class BibleManager():
log.debug("New http book %s , %s, %s", book, book.id, book.name)
self.bible_db_cache[bible].create_chapter(book.id, \
search_results.get_chapter(),\
- search_results.get_verselist())
+ search_results.get_verselist())
else:
## Book exists check chapter and texts only.
v = self.bible_db_cache[bible].get_bible_chapter(book.id, chapter)
if v == None:
self.bible_db_cache[bible].create_chapter(book.id, \
- book_chapter, \
+ chapter, \
search_results.get_verselist())
else:
- log.debug("get_verse_text : old book")
+ log.debug("get_verse_text : old book")
for chapter in range(schapter, echapter+1):
v = self.bible_db_cache[bible].get_bible_chapter(book.id, chapter)
if v == None:
@@ -267,9 +267,9 @@ class BibleManager():
search_results = self.bible_http_cache [bible].get_bible_chapter(bible, book.id, bookname, chapter)
self.bible_db_cache[bible].create_chapter(book.id, \
search_results.get_chapter(),\
- search_results.get_verselist())
+ search_results.get_verselist())
except :
- log.error("Errow thrown %s", sys.exc_info()[1])
+ log.error("Errow thrown %s", sys.exc_info()[1])
if schapter == echapter:
text = self.bible_db_cache[bible].get_bible_text(bookname, schapter, sverse, everse)
diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py
index a51969ce9..e6fc55ee4 100644
--- a/openlp/plugins/bibles/lib/mediaitem.py
+++ b/openlp/plugins/bibles/lib/mediaitem.py
@@ -48,19 +48,19 @@ class BibleMediaItem(MediaManagerItem):
# Create buttons for the toolbar
## New Bible Button ##
self.addToolbarButton(
- translate(u'BibleMediaItem','New Bible'),
+ translate(u'BibleMediaItem','New Bible'),
translate(u'BibleMediaItem','Register a new Bible'),
':/themes/theme_import.png', self.onBibleNewClick, 'BibleNewItem')
## Separator Line ##
self.addToolbarSeparator()
## Preview Bible Button ##
self.addToolbarButton(
- translate(u'BibleMediaItem','Preview Bible'),
+ translate(u'BibleMediaItem','Preview Bible'),
translate(u'BibleMediaItem','Preview the selected Bible Verse'),
':/system/system_preview.png', self.onBiblePreviewClick, 'BiblePreviewItem')
## Live Bible Button ##
self.addToolbarButton(
- translate(u'BibleMediaItem','Go Live'),
+ translate(u'BibleMediaItem','Go Live'),
translate(u'BibleMediaItem','Send the selected Bible Verse(s) live'),
':/system/system_live.png', self.onBibleLiveClick, 'BibleLiveItem')
## Add Bible Button ##
@@ -183,9 +183,10 @@ class BibleMediaItem(MediaManagerItem):
self.BibleListView.setAlternatingRowColors(True)
self.BibleListData = TextListData()
self.BibleListView.setModel(self.BibleListData)
-
+ self.BibleListView.setSelectionMode(2)
+
self.PageLayout.addWidget(self.BibleListView)
-
+
# Combo Boxes
QtCore.QObject.connect(self.AdvancedVersionComboBox,
QtCore.SIGNAL("activated(int)"), self.onAdvancedVersionComboBox)
@@ -215,7 +216,7 @@ class BibleMediaItem(MediaManagerItem):
translate(u'BibleMediaItem',u'&Add to Service'), self.onBibleAddClick))
def retranslateUi(self):
- log.debug(u'retranslateUi')
+ log.debug(u'retranslateUi')
self.QuickVersionLabel.setText(translate(u'BibleMediaItem', u'Version:'))
self.QuickSearchLabel.setText(translate(u'BibleMediaItem', u'Search Type:'))
self.QuickSearchLabel.setText(translate(u'BibleMediaItem', u'Find:'))
@@ -241,15 +242,15 @@ class BibleMediaItem(MediaManagerItem):
self.loadBibles()
def loadBibles(self):
- log.debug(u'Loading Bibles')
+ log.debug(u'Loading Bibles')
self.QuickVersionComboBox.clear()
self.AdvancedVersionComboBox.clear()
-
+
bibles = self.parent.biblemanager.get_bibles(u'full')
-
+
for bible in bibles: # load bibles into the combo boxes
self.QuickVersionComboBox.addItem(bible)
-
+
bibles = self.parent.biblemanager.get_bibles(u'partial') # Without HTTP
first = True
for bible in bibles: # load bibles into the combo boxes
@@ -328,6 +329,8 @@ class BibleMediaItem(MediaManagerItem):
log.debug(u'Bible Preview Button pressed')
items = self.BibleListView.selectedIndexes()
old_chapter = ''
+ main_lines=[]
+ footer_lines = []
for item in items:
text = self.BibleListData.getValue(item)
verse = text[:text.find("(")]
@@ -348,16 +351,19 @@ class BibleMediaItem(MediaManagerItem):
else:
loc = self.formatVerse(old_chapter, chapter, verse, u'', u'')
old_chapter = chapter
- print book
- print loc
- print text
+ main_lines.append(loc + u' '+text)
+ if len(footer_lines) <= 1:
+ footer_lines.append(book)
+
+ frame=self.parent.render_manager.generate_slide(main_lines, footer_lines)
+ self.parent.preview_controller.previewFrame(frame)
def formatVerse(self, old_chapter, chapter, verse, opening, closing):
loc = opening
if old_chapter != chapter:
loc += chapter + u':'
- elif not self.parent.bibles_tab.new_chapter_check:
- loc += chapter + u':'
+ elif not self.parent.bibles_tab.show_new_chapters:
+ loc += chapter + u':'
loc += verse
loc += closing
return loc
diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py
index 2f80ea42f..2ca7314eb 100644
--- a/openlp/plugins/custom/lib/mediaitem.py
+++ b/openlp/plugins/custom/lib/mediaitem.py
@@ -23,7 +23,7 @@ from PyQt4 import QtCore, QtGui
from openlp.core import translate
from openlp.core.lib import MediaManagerItem
-from openlp.core.resources import *
+from openlp.core.lib import SongXMLParser
from openlp.plugins.custom.lib import TextListData
@@ -44,7 +44,7 @@ class CustomMediaItem(MediaManagerItem):
# Create buttons for the toolbar
## New Custom Button ##
self.addToolbarButton(
- translate('CustomMediaItem',u'New Custom Item'),
+ translate('CustomMediaItem',u'New Custom Item'),
translate('CustomMediaItem',u'Add a new Custom Item'),
':/custom/custom_new.png', self.onCustomNewClick, 'CustomNewItem')
## Edit Custom Button ##
@@ -72,7 +72,7 @@ class CustomMediaItem(MediaManagerItem):
## Add Custom Button ##
self.addToolbarButton(
translate('CustomMediaItem',u'Add Custom To Service'),
- translate('CustomMediaItem',u'Add the selected Custom(s) to the service'),
+ translate('CustomMediaItem',u'Add the selected Custom(s) to the service'),
':/system/system_add.png', self.onCustomAddClick, 'CustomAddItem')
# Add the Customlist widget
self.CustomWidget = QtGui.QWidget(self)
@@ -82,7 +82,7 @@ class CustomMediaItem(MediaManagerItem):
sizePolicy.setHeightForWidth(self.CustomWidget.sizePolicy().hasHeightForWidth())
self.CustomWidget.setSizePolicy(sizePolicy)
self.CustomWidget.setObjectName(u'CustomWidget')
-
+
# self.SearchLayout = QtGui.QGridLayout(self.CustomWidget)
# self.SearchLayout.setObjectName('SearchLayout')
# self.SearchTextLabel = QtGui.QLabel(self.CustomWidget)
@@ -92,7 +92,7 @@ class CustomMediaItem(MediaManagerItem):
# self.SearchTextEdit = QtGui.QLineEdit(self.CustomWidget)
# self.SearchTextEdit.setObjectName('SearchTextEdit')
# self.SearchLayout.addWidget(self.SearchTextEdit, 2, 1, 1, 2)
-#
+#
# self.ClearTextButton = QtGui.QPushButton(self.CustomWidget)
# self.ClearTextButton.setObjectName('ClearTextButton')
#
@@ -102,22 +102,22 @@ class CustomMediaItem(MediaManagerItem):
# self.SearchLayout.addWidget(self.SearchTextButton, 3, 2, 1, 1)
# Add the Custom widget to the page layout
self.PageLayout.addWidget(self.CustomWidget)
-
+
self.CustomListView = QtGui.QListView()
self.CustomListView.setAlternatingRowColors(True)
self.CustomListData = TextListData()
self.CustomListView.setModel(self.CustomListData)
-
+
self.PageLayout.addWidget(self.CustomListView)
# Signals
-# QtCore.QObject.connect(self.SearchTextButton,
+# QtCore.QObject.connect(self.SearchTextButton,
# QtCore.SIGNAL("pressed()"), self.onSearchTextButtonClick)
-# QtCore.QObject.connect(self.ClearTextButton,
+# QtCore.QObject.connect(self.ClearTextButton,
# QtCore.SIGNAL("pressed()"), self.onClearTextButtonClick)
-# QtCore.QObject.connect(self.SearchTextEdit,
+# QtCore.QObject.connect(self.SearchTextEdit,
# QtCore.SIGNAL("textChanged(const QString&)"), self.onSearchTextEditChanged)
-# QtCore.QObject.connect(self.CustomListView,
+# QtCore.QObject.connect(self.CustomListView,
# QtCore.SIGNAL("itemPressed(QTableWidgetItem * item)"), self.onCustomSelected)
#define and add the context menu
@@ -135,14 +135,14 @@ class CustomMediaItem(MediaManagerItem):
self.CustomListView.addAction(self.contextMenuAction(
self.CustomListView, ':/system/system_add.png',
translate('CustomMediaItem',u'&Add to Service'), self.onCustomEditClick))
-
+
# def retranslateUi(self):
# self.ClearTextButton.setText(translate('CustomMediaItem', u'Clear'))
-# self.SearchTextButton.setText(translate('CustomMediaItem', u'Search'))
-
+# self.SearchTextButton.setText(translate('CustomMediaItem', u'Search'))
+
def initialise(self):
self.loadCustomList(self.parent.custommanager.get_all_slides())
-
+
def loadCustomList(self, list):
self.CustomListData.resetStore()
for CustomSlide in list:
@@ -166,9 +166,9 @@ class CustomMediaItem(MediaManagerItem):
self._display_results(search_results)
def onCustomNewClick(self):
- self.parent.edit_custom_form.loadCustom(0)
+ self.parent.edit_custom_form.loadCustom(0)
self.parent.edit_custom_form.exec_()
- self.initialise()
+ self.initialise()
def onCustomEditClick(self):
indexes = self.CustomListView.selectedIndexes()
@@ -185,7 +185,25 @@ class CustomMediaItem(MediaManagerItem):
self.CustomListData.deleteRow(index)
def onCustomPreviewClick(self):
- pass
+ indexes = self.CustomListView.selectedIndexes()
+ main_lines=[]
+ footer_lines = []
+ slide = None
+ for index in indexes:
+ id = self.CustomListData.getId(index)
+ customSlide = self.parent.custommanager.get_custom(id)
+ title = customSlide.title
+ credit = customSlide.title
+
+ songXML=SongXMLParser(customSlide.text)
+ verseList = songXML.get_verses()
+ for verse in verseList:
+ slide = self.parent.render_manager.format_slide(verse[1], False)
+
+ footer_lines.append(title + u' '+ credit)
+
+ frame=self.parent.render_manager.generate_slide(slide, footer_lines)
+ self.parent.preview_controller.previewFrame(frame)
def onCustomLiveClick(self):
pass
diff --git a/openlp/plugins/videos/lib/filelistdata.py b/openlp/plugins/videos/lib/filelistdata.py
index 303ccb802..df4a5eb69 100644
--- a/openlp/plugins/videos/lib/filelistdata.py
+++ b/openlp/plugins/videos/lib/filelistdata.py
@@ -80,3 +80,7 @@ class FileListData(QAbstractListModel):
def getFilename(self, index):
row = index.row()
return self.items[row][0]
+
+ def getValue(self, index):
+ row = index.row()
+ return self.items[row][0]
diff --git a/openlp/plugins/videos/lib/mediaitem.py b/openlp/plugins/videos/lib/mediaitem.py
index 07b29ec38..54d9114ae 100644
--- a/openlp/plugins/videos/lib/mediaitem.py
+++ b/openlp/plugins/videos/lib/mediaitem.py
@@ -24,7 +24,6 @@ from PyQt4 import QtCore, QtGui
from openlp.core import translate
from openlp.core.lib import MediaManagerItem
-from openlp.core.resources import *
from openlp.plugins.videos.lib import VideoTab
from openlp.plugins.videos.lib import FileListData
@@ -40,93 +39,97 @@ class VideoMediaItem(MediaManagerItem):
def __init__(self, parent, icon, title):
MediaManagerItem.__init__(self, parent, icon, title)
- def setupUi(self):
+ def setupUi(self):
# Add a toolbar
self.addToolbar()
# Create buttons for the toolbar
## New Video Button ##
self.addToolbarButton(
- translate('VideoMediaItem',u'New Video'),
+ translate('VideoMediaItem',u'New Video'),
translate('VideoMediaItem',u'Load videos into openlp.org'),
':/videos/video_load.png', self.onVideoNewClick, 'VideoNewItem')
## Delete Video Button ##
self.addToolbarButton(
- translate('VideoMediaItem',u'Delete Video'),
+ translate('VideoMediaItem',u'Delete Video'),
translate('VideoMediaItem',u'Delete the selected video'),
':/videos/video_delete.png', self.onVideoDeleteClick, 'VideoDeleteItem')
## Separator Line ##
self.addToolbarSeparator()
## Preview Video Button ##
self.addToolbarButton(
- translate('VideoMediaItem',u'Preview Video'),
+ translate('VideoMediaItem',u'Preview Video'),
translate('VideoMediaItem',u'Preview the selected video'),
':/system/system_preview.png', self.onVideoPreviewClick, 'VideoPreviewItem')
## Live Video Button ##
self.addToolbarButton(
- translate('VideoMediaItem',u'Go Live'),
+ translate('VideoMediaItem',u'Go Live'),
translate('VideoMediaItem',u'Send the selected video live'),
':/system/system_live.png', self.onVideoLiveClick, 'VideoLiveItem')
## Add Video Button ##
self.addToolbarButton(
translate('VideoMediaItem',u'Add Video To Service'),
- translate('VideoMediaItem',u'Add the selected video(s) to the service'),
+ translate('VideoMediaItem',u'Add the selected video(s) to the service'),
':/system/system_add.png',self.onVideoAddClick, 'VideoAddItem')
## Add the videolist widget ##
-
+
self.VideoListView = QtGui.QListView()
self.VideoListView.setAlternatingRowColors(True)
self.VideoListData = FileListData()
self.VideoListView.setModel(self.VideoListData)
-
+
self.PageLayout.addWidget(self.VideoListView)
-
+
#define and add the context menu
self.VideoListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
self.VideoListView.addAction(self.contextMenuAction(
- self.VideoListView, ':/system/system_preview.png',
+ self.VideoListView, ':/system/system_preview.png',
translate('VideoMediaItem',u'&Preview Video'), self.onVideoPreviewClick))
self.VideoListView.addAction(self.contextMenuAction(
- self.VideoListView, ':/system/system_live.png',
+ self.VideoListView, ':/system/system_live.png',
translate('VideoMediaItem',u'&Show Live'), self.onVideoLiveClick))
self.VideoListView.addAction(self.contextMenuAction(
- self.VideoListView, ':/system/system_add.png',
+ self.VideoListView, ':/system/system_add.png',
translate('VideoMediaItem',u'&Add to Service'), self.onVideoAddClick))
-
+
def initialise(self):
list = self.parent.config.load_list(u'videos')
self.loadVideoList(list)
def onVideoNewClick(self):
- files = QtGui.QFileDialog.getOpenFileNames(None,
- translate('VideoMediaItem', u'Select Video(s)'),
+ files = QtGui.QFileDialog.getOpenFileNames(None,
+ translate('VideoMediaItem', u'Select Video(s)'),
self.parent.config.get_last_dir(), u'Images (*.avi *.mpeg)')
if len(files) > 0:
self.loadVideoList(files)
dir, filename = os.path.split(str(files[0]))
self.parent.config.set_last_dir(dir)
self.parent.config.set_list(u'videos', self.VideoListData.getFileList())
-
+
def getFileList(self):
filelist = [item[0] for item in self.VideoListView];
- return filelist
+ return filelist
def loadVideoList(self, list):
for files in list:
self.VideoListData.addRow(files)
-
+
def onVideoDeleteClick(self):
indexes = self.VideoListView.selectedIndexes()
for index in indexes:
current_row = int(index.row())
self.VideoListData.removeRow(current_row)
- self.parent.config.set_list(u'videos', self.VideoListData.getFileList())
+ self.parent.config.set_list(u'videos', self.VideoListData.getFileList())
def onVideoPreviewClick(self):
- pass
+ log.debug(u'Video Preview Button pressed')
+ items = self.VideoListView.selectedIndexes()
+ for item in items:
+ text = self.VideoListData.getValue(item)
+ print text
def onVideoLiveClick(self):
pass
def onVideoAddClick(self):
- pass
+ pass
diff --git a/openlp/plugins/videos/lib/videotab.py b/openlp/plugins/videos/lib/videotab.py
index 475fb9dee..d1e694d0a 100644
--- a/openlp/plugins/videos/lib/videotab.py
+++ b/openlp/plugins/videos/lib/videotab.py
@@ -21,8 +21,8 @@ Place, Suite 330, Boston, MA 02111-1307 USA
from PyQt4 import QtCore, QtGui
from openlp.core import translate
+from openlp import convertStringToBoolean
from openlp.core.lib import SettingsTab
-from openlp.core.resources import *
class VideoTab(SettingsTab):
"""
@@ -49,12 +49,12 @@ class VideoTab(SettingsTab):
self.UseVMRLabel = QtGui.QLabel(self.VideoModeGroupBox)
self.UseVMRLabel.setObjectName("UseVMRLabel")
self.VideoModeLayout.addWidget(self.UseVMRLabel)
-
+
self.VideoLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.VideoModeGroupBox)
- # Signals and slots
+ # Signals and slots
QtCore.QObject.connect(self.UseVMRCheckBox,
- QtCore.SIGNAL("stateChanged(int)"), self.onVMRCheckBoxChanged)
-
+ QtCore.SIGNAL("stateChanged(int)"), self.onVMRCheckBoxChanged)
+
def retranslateUi(self):
self.VideoModeGroupBox.setTitle(translate("SettingsForm", "Video Mode"))
self.UseVMRCheckBox.setText(translate("SettingsForm", "Use Video Mode Rendering"))
@@ -69,11 +69,11 @@ class VideoTab(SettingsTab):
self.use_vmr_mode = False
if use_vmr_mode == 2: # we have a set value convert to True/False
self.use_vmr_mode = True
-
+
def load(self):
- self.use_vmr_mode = self.convertStringToBoolean(self.config.get_config(u'use mode layout', u'False'))
+ self.use_vmr_mode = convertStringToBoolean(self.config.get_config(u'use mode layout', u'False'))
if self.use_vmr_mode :
self.UseVMRCheckBox.setChecked(True)
-
+
def save(self):
- self.config.set_config(u'use mode layout', str(self.use_vmr_mode))
+ self.config.set_config(u'use mode layout', str(self.use_vmr_mode))
diff --git a/resources/forms/amendthemedialog.ui b/resources/forms/amendthemedialog.ui
index d818a1bb0..84fa8b7bd 100644
--- a/resources/forms/amendthemedialog.ui
+++ b/resources/forms/amendthemedialog.ui
@@ -1,13 +1,16 @@
AmendThemeDialog
-
+
+
+ Qt::ApplicationModal
+
0
0
- 752
- 533
+ 586
+ 651
@@ -17,87 +20,74 @@
:/icon/openlp.org-icon-32.bmp:/icon/openlp.org-icon-32.bmp
-
-
-
- 580
- 500
- 156
- 26
-
+
+ true
+
+
+
+ 8
-
- QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+ 8
-
-
-
-
- 50
- 20
- 441
- 41
-
-
-
- -
-
-
- Theme Name
+
-
+
+
+
+ 8
-
-
- -
-
-
-
-
-
-
-
- 31
- 71
- 721
- 411
-
-
-
- -
-
-
-
-
- 0
- 0
- 341
- 401
-
-
-
- 0
-
-
-
- Background
-
-
-
-
- 10
- 10
- 321
- 351
-
-
-
-
-
+
+ 0
+
+
-
+
+
+ Theme Name:
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+ 8
+
+
+ 0
+
+
-
+
+
+ 0
+
+
+
+ Background
+
+
+
+ 8
+
+
+ 8
+
+
+ 8
+
+
-
Background:
- -
+
-
-
@@ -111,14 +101,14 @@
- -
+
-
Background Type:
- -
+
-
-
@@ -144,7 +134,7 @@
- -
+
-
@@ -158,7 +148,7 @@
- -
+
-
@@ -172,28 +162,14 @@
- -
-
-
- -
-
-
-
-
-
-
- :/services/service_open.png:/services/service_open.png
-
-
-
- -
+
-
Gradient :
- -
+
-
-
@@ -212,518 +188,1015 @@
-
-
-
-
-
- Font Main
-
-
-
-
- 20
- 10
- 307
- 119
-
-
-
- Main Font
-
-
- -
-
-
- Font:
-
+
-
+
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ -
+
+
+
+
+
+
+ :/images/image_load.png:/images/image_load.png
+
+
+
+
- -
-
-
- -
-
-
- Font Color
-
-
-
- -
-
-
-
-
-
-
- -
-
-
- Size:
-
-
-
- -
-
-
- -
-
-
- 15
-
-
- 40
-
+
-
+
- Qt::Horizontal
+ Qt::Vertical
-
- QSlider::TicksBelow
+
+
+ 20
+ 40
+
-
- 5
-
-
+
-
-
-
- 20
- 160
- 301
- 190
-
-
-
- Display Location
-
-
- -
-
-
- Use default location
-
-
- false
-
-
-
- -
-
-
-
-
-
- X Position:
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- Y Position:
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- Width
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- Height
-
-
-
- -
-
-
-
-
-
-
-
-
-
- Font Footer
-
-
-
-
- 20
- 160
- 301
- 190
-
-
-
- Display Location
-
-
- -
-
-
- Use default location
-
-
- false
-
-
-
- -
-
-
-
-
-
- X Position:
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- Y Position:
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- Width
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- Height
-
-
-
- -
-
-
-
-
-
-
-
-
-
- 20
- 10
- 307
- 119
-
-
-
- Footer Font
-
-
- -
-
-
- Font:
-
-
-
- -
-
-
- -
-
-
- Font Color
-
-
-
- -
-
-
-
-
-
-
- -
-
-
- Size:
-
-
-
- -
-
-
- -
-
-
- 15
-
-
- 40
-
-
- Qt::Horizontal
-
-
- QSlider::TicksBelow
-
-
- 5
-
-
-
-
-
-
-
-
- Alignment
-
-
-
-
- 20
- 10
- 301
- 80
-
-
-
- Shadow
-
-
-
-
- 10
- 20
- 281
- 58
-
+
+
+ Font Main
+
+
+
+ 8
-
- -
-
-
- Use Shadow
+
+ 8
+
+
-
+
+
+
+ 8
-
-
- -
-
-
- Shadow Color:
+
+ 0
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
- 10
- 200
- 321
- 161
-
-
-
- Alignment
-
-
- -
-
-
- Horizontal Align:
-
+
-
+
+
+ Main Font
+
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+ 8
+
+
+ 8
+
+
+ 8
+
+
-
+
+
+ Font:
+
+
+
+ -
+
+
+ -
+
+
+ Font Color:
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+ Size:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 70
+ 0
+
+
+
+ 16
+
+
+ pt
+
+
+ 999
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
- -
-
-
-
-
- Left
+
-
+
+
+
+ 8
-
- -
-
- Right
+
+ 0
-
- -
-
- Center
-
-
-
-
- -
-
-
- Vertical Align:
-
-
-
- -
-
-
-
-
- Top
-
-
- -
-
- Middle
-
-
- -
-
- Bottom
-
-
+ -
+
+
+ Display Location
+
+
+
+ 8
+
+
+ 8
+
+
+ 8
+
+
-
+
+
+ Use Default Location:
+
+
+
+ -
+
+
+
+
+
+ false
+
+
+
+ -
+
+
+ X Position:
+
+
+
+ -
+
+
+ Y Position:
+
+
+
+ -
+
+
+ Width:
+
+
+
+ -
+
+
+ Height:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 78
+ 0
+
+
+
+ 0
+
+
+ px
+
+
+ 9999
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 78
+ 0
+
+
+
+ px
+
+
+ 9999
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 78
+ 0
+
+
+
+ px
+
+
+ 9999
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 78
+ 0
+
+
+
+ px
+
+
+ 9999
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
-
-
-
- 20
- 110
- 301
- 80
-
-
-
- Outline
-
-
-
-
- 10
- 20
- 281
- 58
-
+
+
+ Font Footer
+
+
+
+ 8
-
- -
-
-
- Use Outline
+
+ 8
+
+
-
+
+
+
+ 8
-
-
- -
-
-
- Outline Color:
+
+ 0
-
-
- -
-
-
-
+
-
+
+
+ Footer Font
+
+
+
+ QFormLayout::ExpandingFieldsGrow
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+ 8
+
+
+ 8
+
+
+ 8
+
+
-
+
+
+ Font:
+
+
+
+ -
+
+
+ -
+
+
+ Font Color:
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+ Size:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 70
+ 0
+
+
+
+ 10
+
+
+ pt
+
+
+ 999
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+ -
+
+
+
+ 8
-
-
-
-
+
+ 0
+
+ -
+
+
+ Display Location
+
+
+
+ QFormLayout::ExpandingFieldsGrow
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+ 8
+
+
+ 8
+
+
+ 8
+
+
-
+
+
+ Use Default Location:
+
+
+
+ -
+
+
+
+
+
+ false
+
+
+
+ -
+
+
+ X Position:
+
+
+
+ -
+
+
+ Y Position:
+
+
+
+ -
+
+
+ Width:
+
+
+
+ -
+
+
+ Height:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 78
+ 0
+
+
+
+ 0
+
+
+ px
+
+
+ 9999
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 78
+ 0
+
+
+
+ 0
+
+
+ px
+
+
+ 9999
+
+
+
+ -
+
+
+
+ 78
+ 0
+
+
+
+ px
+
+
+ 9999
+
+
+
+ -
+
+
+
+ 78
+ 0
+
+
+
+ px
+
+
+ 9999
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+
+
+
+ Other Options
+
+
+
+ 8
+
+
+ 8
+
+ -
+
+
+
+ 8
+
+
+ 0
+
+
-
+
+
+ Shadow && Outline
+
+
+
+ 8
+
+
+ 8
+
+
-
+
+
+
+ 8
+
+
+ 8
+
+
+ 0
+
+
-
+
+
+
+
+
+
+ -
+
+
+ Outline Color:
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+ Show Outline:
+
+
+
+
+
+
+ -
+
+
+
+ 8
+
+
+ 8
+
+
+ 0
+
+
-
+
+
+
+
+
+
+ -
+
+
+ Shadow Color:
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+ Show Shadow:
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+ -
+
+
+
+ 8
+
+
+ 0
+
+
-
+
+
+ Alignment
+
+
+
-
+
+
+ Horizontal Align:
+
+
+
+ -
+
+
-
+
+ Left
+
+
+ -
+
+ Right
+
+
+ -
+
+ Center
+
+
+
+
+ -
+
+
+ Vertical Align:
+
+
+
+ -
+
+
-
+
+ Top
+
+
+ -
+
+ Middle
+
+
+ -
+
+ Bottom
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
-
-
-
- -
-
-
-
-
- 20
- 60
- 311
- 271
-
-
-
- QFrame::Box
-
-
- QFrame::Raised
-
-
- 2
-
-
-
-
-
- true
-
-
-
-
-
-
+
+
+
+
+ -
+
+
+ Preview
+
+
+
+ 8
+
+
+ 8
+
+
-
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 300
+ 225
+
+
+
+ QFrame::WinPanel
+
+
+ QFrame::Sunken
+
+
+ 1
+
+
+
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+ -
+
+
+ QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+
+
+
+
+ ThemeButtonBox
+ ThemeNameEdit
+ ThemeTabWidget
+ BackgroundComboBox
+ BackgroundTypeComboBox
+ Color1PushButton
+ Color2PushButton
+ ImageLineEdit
+ ImageToolButton
+ GradientComboBox
+ FontMainComboBox
+ FontMainColorPushButton
+ FontMainSizeSpinBox
+ FontMainDefaultCheckBox
+ FontMainXSpinBox
+ FontMainYSpinBox
+ FontMainWidthSpinBox
+ FontMainHeightSpinBox
+ FontFooterComboBox
+ FontFooterColorPushButton
+ FontFooterSizeSpinBox
+ FontFooterDefaultCheckBox
+ FontFooterXSpinBox
+ FontFooterYSpinBox
+ FontFooterWidthSpinBox
+ FontFooterHeightSpinBox
+ OutlineCheckBox
+ OutlineColorPushButton
+ ShadowCheckBox
+ ShadowColorPushButton
+ HorizontalComboBox
+ VerticalComboBox
+
-
+
+
+ ThemeButtonBox
+ accepted()
+ AmendThemeDialog
+ accept()
+
+
+ 375
+ 466
+
+
+ 375
+ 241
+
+
+
+
+ ThemeButtonBox
+ rejected()
+ AmendThemeDialog
+ reject()
+
+
+ 375
+ 466
+
+
+ 375
+ 241
+
+
+
+