forked from openlp/openlp
Latest merge from lp:~meths/openlp/trivialfixes
bzr-revno: 525
This commit is contained in:
commit
44e3050577
|
@ -20,6 +20,9 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
|||
Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
"""
|
||||
|
||||
from openlp.core.lib import str_to_bool
|
||||
from openlp.core.utils import ConfigHelper
|
||||
|
||||
class SettingsManager(object):
|
||||
"""
|
||||
Class to control the size of the UI components so they size correctly.
|
||||
|
@ -31,9 +34,30 @@ class SettingsManager(object):
|
|||
self.width = self.screen[u'size'].width()
|
||||
self.height = self.screen[u'size'].height()
|
||||
self.mainwindow_height = self.height * 0.8
|
||||
self.mainwindow_docbars = self.width / 5
|
||||
if self.mainwindow_docbars > 300:
|
||||
self.mainwindow_docbars = 300
|
||||
self.slidecontroller = ((self.width - (self.mainwindow_docbars * 3 ) / 2) / 2) -100
|
||||
self.slidecontroller_image = self.slidecontroller - 50
|
||||
print self.width, self.mainwindow_docbars, self.slidecontroller, self.slidecontroller_image
|
||||
self.mainwindow_docbars = self.width / 3
|
||||
self.mainwindow_slidecontroller = self.width / 6
|
||||
self.showMediaManager = str_to_bool( ConfigHelper.get_config(
|
||||
u'user interface', u'display mediamanager', True))
|
||||
self.showServiceManager = str_to_bool(ConfigHelper.get_config(
|
||||
u'user interface', u'display servicemanager', True))
|
||||
self.showThemeManager = str_to_bool(ConfigHelper.get_config(
|
||||
u'user interface', u'display thememanager', True))
|
||||
self.showPreviewPanel = str_to_bool(ConfigHelper.get_config(
|
||||
u'user interface', u'display previewpanel', True))
|
||||
|
||||
def toggleMediaManager(self, isVisible):
|
||||
ConfigHelper.set_config(u'user interface', u'display mediamanager',
|
||||
isVisible)
|
||||
|
||||
def toggleServiceManager(self, isVisible):
|
||||
ConfigHelper.set_config(u'user interface', u'display servicemanager',
|
||||
isVisible)
|
||||
|
||||
def toggleThemeManager(self, isVisible):
|
||||
ConfigHelper.set_config(u'user interface', u'display thememanager',
|
||||
isVisible)
|
||||
|
||||
def togglePreviewPanel(self, isVisible):
|
||||
ConfigHelper.set_config(u'user interface', u'display previewpanel',
|
||||
isVisible)
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ class TestPluginManager:
|
|||
self.p = PluginManager(u'./testplugins')
|
||||
p = self.p
|
||||
p.find_plugins(u'./testplugins', None, None)
|
||||
assert (len(p.plugins)==2);
|
||||
assert(len(p.plugins) == 2)
|
||||
# get list of the names of the plugins
|
||||
names = [plugin.name for plugin in p.plugins]
|
||||
# see which ones we've got
|
||||
|
@ -36,8 +36,9 @@ class TestPluginManager:
|
|||
# and not got - it's too deep in the hierarchy!
|
||||
assert(u'testplugin3' not in names)
|
||||
# test that the weighting is done right
|
||||
assert p.plugins[0].name == "testplugin2"
|
||||
assert p.plugins[1].name == "testplugin1"
|
||||
assert(p.plugins[0].name == "testplugin2")
|
||||
assert(p.plugins[1].name == "testplugin1")
|
||||
|
||||
if __name__ == "__main__":
|
||||
log.debug(u'Starting')
|
||||
t = TestPluginManager()
|
||||
|
|
|
@ -21,10 +21,12 @@ import sys
|
|||
import os, os.path
|
||||
from PyQt4 import QtGui, QtCore
|
||||
|
||||
mypath=os.path.split(os.path.abspath(__file__))[0]
|
||||
sys.path.insert(0,(os.path.join(mypath, '..', '..','..')))
|
||||
from openlp.core.theme import Theme
|
||||
from openlp.core import Renderer
|
||||
|
||||
mypath = os.path.split(os.path.abspath(__file__))[0]
|
||||
sys.path.insert(0, (os.path.join(mypath, '..', '..', '..')))
|
||||
|
||||
# from http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66062
|
||||
def whoami(depth=1):
|
||||
return sys._getframe(depth).f_code.co_name
|
||||
|
@ -177,7 +179,8 @@ Line 3"""
|
|||
expected_answer = ["Verse 1: Line 1\nLine 2","Verse 2: Line 1\nLine 2","Verse 3: Line 1\nLine 2\nLine 3"]
|
||||
assert(verses == expected_answer)
|
||||
|
||||
expected_answer=[QtCore.QRect(0,0,397,126), QtCore.QRect(0,0,397,126), QtCore.QRect(0,0,397,189)]
|
||||
expected_answer = [QtCore.QRect(0,0,397,126), QtCore.QRect(0,0,397,126),
|
||||
QtCore.QRect(0,0,397,189)]
|
||||
for v in range(len(verses)):
|
||||
answer=self.r.render_screen(v)
|
||||
# print v, answer.x(), answer.y(), answer.width(), answer.height()
|
||||
|
@ -198,24 +201,27 @@ Line 3"""
|
|||
answer = self.r._render_lines(result[i])
|
||||
print answer
|
||||
self.write_to_file(self.frame.GetPixmap(), "split_test_%03d"% i)
|
||||
print number, i, answer.x(), answer.y(), answer.width(), answer.height()
|
||||
|
||||
print number, i, answer.x(), answer.y(), answer.width(), \
|
||||
answer.height()
|
||||
e = expected_answers[i]
|
||||
assert(answer == QtCore.QRect(e[0],e[1],e[2],e[3]))
|
||||
|
||||
|
||||
def test_splits(self):
|
||||
print "Test splits"
|
||||
self.split_test(100, 11, [(0,0,180,567), (0,0,214,567), (0,0,214,567), (0,0,214,567), (0,0,214,567), (0,0,214,378), (0,0,759,567),
|
||||
(0,0,214,567), (0,0,214,567), (0,0,214,567), (0,0,214,567), (0,0,214,567), (0,0,214,567)])
|
||||
self.split_test(30, 4, [ (0,0,180,441), (0,0,214,441), (0,0,214,441), (0,0,214,441)])
|
||||
self.split_test(100, 11, [(0,0,180,567), (0,0,214,567), (0,0,214,567),
|
||||
(0,0,214,567), (0,0,214,567), (0,0,214,378), (0,0,759,567),
|
||||
(0,0,214,567), (0,0,214,567), (0,0,214,567), (0,0,214,567),
|
||||
(0,0,214,567), (0,0,214,567)])
|
||||
self.split_test(30, 4, [ (0,0,180,441), (0,0,214,441), (0,0,214,441),
|
||||
(0,0,214,441)])
|
||||
self.split_test(20, 3, [(0,0,180,378), (0,0,214,378), (0,0,214,378)])
|
||||
self.split_test(12, 2, [(0,0,180,378), (0,0,214,378)])
|
||||
self.split_test(4, 1, [(0,0,180,252)])
|
||||
self.split_test(6, 1, [(0,0,180,378)])
|
||||
self.split_test(8, 1, [(0,0,180,504)])
|
||||
if __name__=="__main__":
|
||||
|
||||
if __name__ == "__main__":
|
||||
t = TestRender()
|
||||
t.setup_class()
|
||||
t.setup_method(None)
|
||||
|
|
|
@ -15,17 +15,18 @@ 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
|
||||
"""
|
||||
|
||||
from test_render import TestRender_base, whoami
|
||||
import sys
|
||||
import os
|
||||
mypath=os.path.split(os.path.abspath(__file__))[0]
|
||||
sys.path.insert(0,(os.path.join(mypath, '..', '..','..')))
|
||||
from openlp.core.theme import Theme
|
||||
from openlp.core import Renderer
|
||||
|
||||
from PyQt4 import QtGui, QtCore
|
||||
|
||||
from openlp.core.theme import Theme
|
||||
from openlp.core import Renderer
|
||||
from test_render import TestRender_base, whoami
|
||||
|
||||
pypath = os.path.split(os.path.abspath(__file__))[0]
|
||||
sys.path.insert(0, (os.path.join(mypath, '..', '..', '..')))
|
||||
|
||||
def compare_images(goldenim, testim, threshold=0.01):
|
||||
# easy test first
|
||||
if goldenim == testim:
|
||||
|
@ -53,12 +54,14 @@ class TestRenderTheme(TestRender_base):
|
|||
|
||||
def __init__(self):
|
||||
TestRender_base.__init__(self)
|
||||
|
||||
def setup_method(self, method):
|
||||
TestRender_base.setup_method(self, method)
|
||||
print "Theme setup", method
|
||||
# print "setup theme"
|
||||
self.r.set_theme(Theme(u'blank_theme.xml')) # set "blank" theme
|
||||
self.r.set_text_rectangle(QtCore.QRect(0,0, self.size.width(), self.size.height()))
|
||||
self.r.set_text_rectangle(QtCore.QRect(0,0, self.size.width(),
|
||||
self.size.height()))
|
||||
words = """How sweet the name of Jesus sounds
|
||||
In a believer's ear!
|
||||
It soothes his sorrows, heals his wounds,
|
||||
|
@ -78,9 +81,10 @@ And drives away his fear.
|
|||
if self.expected_answer != None: # result=None => No result to check
|
||||
assert self.expected_answer == self.answer
|
||||
print "============ teardown done ========="
|
||||
|
||||
def compare_DC_to_file(self, name):
|
||||
"""writes DC out to a bitmap file and then compares it with a golden one
|
||||
returns True if OK, False if not (so you can assert on it)
|
||||
"""writes DC out to a bitmap file and then compares it with a golden
|
||||
one returns True if OK, False if not (so you can assert on it)
|
||||
|
||||
"""
|
||||
print "--- compare DC to file --- ", name
|
||||
|
@ -104,16 +108,18 @@ And drives away his fear.
|
|||
self.answer = self.r.render_screen(0)
|
||||
self.bmpname = whoami()
|
||||
print self.r._theme.FontProportion
|
||||
print self.answer, self.expected_answer, self.answer==self.expected_answer
|
||||
print self.answer, self.expected_answer, \
|
||||
self.answer == self.expected_answer
|
||||
# self.msg=self.bmpname
|
||||
|
||||
# }}}
|
||||
|
||||
# {{{ Gradients
|
||||
def test_gradient_h(self):
|
||||
# normally we wouldn't hack with these directly!
|
||||
self.r._theme.BackgroundType = 1
|
||||
self.r._theme.BackgroundParameter1 = QtGui.QColor(255,0,0);
|
||||
self.r._theme.BackgroundParameter2 = QtGui.QColor(255,255,0);
|
||||
self.r._theme.BackgroundParameter1 = QtGui.QColor(255,0,0)
|
||||
self.r._theme.BackgroundParameter2 = QtGui.QColor(255,255,0)
|
||||
self.r._theme.BackgroundParameter3 = 1
|
||||
self.answer = self.r.render_screen(0)
|
||||
self.bmpname = whoami()
|
||||
|
@ -121,18 +127,20 @@ And drives away his fear.
|
|||
def test_gradient_v(self):
|
||||
# normally we wouldn't hack with these directly!
|
||||
self.r._theme.BackgroundType = 1
|
||||
self.r._theme.BackgroundParameter1 = QtGui.QColor(255,0,0);
|
||||
self.r._theme.BackgroundParameter2 = QtGui.QColor(255,255,0);
|
||||
self.r._theme.BackgroundParameter1 = QtGui.QColor(255,0,0)
|
||||
self.r._theme.BackgroundParameter2 = QtGui.QColor(255,255,0)
|
||||
self.r._theme.BackgroundParameter3 = 0
|
||||
self.answer = self.r.render_screen(0)
|
||||
self.bmpname = whoami()
|
||||
# }}}
|
||||
|
||||
# {{{ backgrounds
|
||||
def test_bg_stretch_y(self):
|
||||
t = Theme(u'blank_theme.xml')
|
||||
t.BackgroundType = 2
|
||||
t.BackgroundParameter1 = os.path.join(u'data_for_tests', 'snowsmall.jpg');
|
||||
t.BackgroundParameter2 = QtGui.QColor(0,0,64);
|
||||
t.BackgroundParameter1 = os.path.join(u'data_for_tests',
|
||||
'snowsmall.jpg')
|
||||
t.BackgroundParameter2 = QtGui.QColor(0,0,64)
|
||||
t.BackgroundParameter3 = 0
|
||||
t.Name = "stretch y"
|
||||
self.r.set_theme(t)
|
||||
|
@ -141,11 +149,12 @@ And drives away his fear.
|
|||
print "whoami"
|
||||
self.bmpname = whoami()
|
||||
print "fone"
|
||||
|
||||
def test_bg_shrink_y(self):
|
||||
t = Theme(u'blank_theme.xml')
|
||||
t.BackgroundType = 2
|
||||
t.BackgroundParameter1 = os.path.join(u'data_for_tests', 'snowbig.jpg');
|
||||
t.BackgroundParameter2 = QtGui.QColor(0,0,64);
|
||||
t.BackgroundParameter1 = os.path.join(u'data_for_tests', 'snowbig.jpg')
|
||||
t.BackgroundParameter2 = QtGui.QColor(0,0,64)
|
||||
t.BackgroundParameter3 = 0
|
||||
t.Name = "shrink y"
|
||||
self.r.set_theme(t)
|
||||
|
@ -156,8 +165,8 @@ And drives away his fear.
|
|||
t = Theme(u'blank_theme.xml')
|
||||
t.BackgroundType = 2
|
||||
t.BackgroundParameter1 = os.path.join(u'data_for_tests',
|
||||
'treessmall.jpg');
|
||||
t.BackgroundParameter2 = QtGui.QColor(0,0,64);
|
||||
'treessmall.jpg')
|
||||
t.BackgroundParameter2 = QtGui.QColor(0,0,64)
|
||||
t.BackgroundParameter3 = 0
|
||||
t.VerticalAlign = 2
|
||||
t.Name = "stretch x"
|
||||
|
@ -169,8 +178,9 @@ And drives away his fear.
|
|||
def test_bg_shrink_x(self):
|
||||
t = Theme(u'blank_theme.xml')
|
||||
t.BackgroundType = 2
|
||||
t.BackgroundParameter1 = os.path.join(u'data_for_tests', 'treesbig.jpg');
|
||||
t.BackgroundParameter2 = QtGui.QColor(0,0,64);
|
||||
t.BackgroundParameter1 = os.path.join(u'data_for_tests',
|
||||
'treesbig.jpg')
|
||||
t.BackgroundParameter2 = QtGui.QColor(0,0,64)
|
||||
t.BackgroundParameter3 = 0
|
||||
t.VerticalAlign = 2
|
||||
t.Name = "shrink x"
|
||||
|
@ -179,11 +189,12 @@ And drives away his fear.
|
|||
self.answer = self.r.render_screen(0)
|
||||
self.bmpname = whoami()
|
||||
# }}}
|
||||
|
||||
# {{{ Vertical alignment
|
||||
def test_theme_vertical_align_top(self):
|
||||
t = Theme(u'blank_theme.xml')
|
||||
t.BackgroundType = 0
|
||||
t.BackgroundParameter1 = QtGui.QColor(0,0,64);
|
||||
t.BackgroundParameter1 = QtGui.QColor(0,0,64)
|
||||
t.VerticalAlign = 0
|
||||
t.Name = "valign top"
|
||||
self.r.set_theme(t)
|
||||
|
@ -193,7 +204,7 @@ And drives away his fear.
|
|||
def test_theme_vertical_align_bot(self):
|
||||
t = Theme(u'blank_theme.xml')
|
||||
t.BackgroundType = 0
|
||||
t.BackgroundParameter1 = QtGui.QColor(0,0,64);
|
||||
t.BackgroundParameter1 = QtGui.QColor(0,0,64)
|
||||
t.VerticalAlign = 1
|
||||
t.Name = "valign bot"
|
||||
self.r.set_theme(t)
|
||||
|
@ -204,7 +215,7 @@ And drives away his fear.
|
|||
def test_theme_vertical_align_cen(self):
|
||||
t = Theme(u'blank_theme.xml')
|
||||
t.BackgroundType = 0
|
||||
t.BackgroundParameter1 = QtGui.QColor(0,0,64);
|
||||
t.BackgroundParameter1 = QtGui.QColor(0,0,64)
|
||||
t.VerticalAlign = 2
|
||||
t.Name = "valign cen"
|
||||
self.r.set_theme(t)
|
||||
|
@ -212,11 +223,12 @@ And drives away his fear.
|
|||
self.expected_answer = QtCore.QRect(0, 129, 559, 342)
|
||||
self.bmpname = whoami()
|
||||
# }}}
|
||||
|
||||
# {{{ Horzontal alignment
|
||||
def test_theme_horizontal_align_left(self):
|
||||
t = Theme(u'blank_theme.xml')
|
||||
t.BackgroundType = 0
|
||||
t.BackgroundParameter1 = QtGui.QColor(0,0,64);
|
||||
t.BackgroundParameter1 = QtGui.QColor(0,0,64)
|
||||
t.VerticalAlign = 0
|
||||
t.HorizontalAlign = 0
|
||||
t.Name = "halign left"
|
||||
|
@ -227,7 +239,7 @@ And drives away his fear.
|
|||
def test_theme_horizontal_align_right(self):
|
||||
t = Theme(u'blank_theme.xml')
|
||||
t.BackgroundType = 0
|
||||
t.BackgroundParameter1 = QtGui.QColor(0,0,64);
|
||||
t.BackgroundParameter1 = QtGui.QColor(0,0,64)
|
||||
t.VerticalAlign = 0
|
||||
t.HorizontalAlign = 1
|
||||
t.Name = "halign right"
|
||||
|
@ -239,7 +251,7 @@ And drives away his fear.
|
|||
def test_theme_horizontal_align_centre(self):
|
||||
t = Theme(u'blank_theme.xml')
|
||||
t.BackgroundType = 0
|
||||
t.BackgroundParameter1 = QtGui.QColor(0,0,64);
|
||||
t.BackgroundParameter1 = QtGui.QColor(0,0,64)
|
||||
t.VerticalAlign = 0
|
||||
t.HorizontalAlign = 2
|
||||
t.Name = "halign centre"
|
||||
|
@ -251,7 +263,7 @@ And drives away his fear.
|
|||
def test_theme_horizontal_align_left_lyric(self):
|
||||
t = Theme(u'blank_theme.xml')
|
||||
t.BackgroundType = 0
|
||||
t.BackgroundParameter1 = QtGui.QColor(0,0,64);
|
||||
t.BackgroundParameter1 = QtGui.QColor(0,0,64)
|
||||
t.VerticalAlign = 0
|
||||
t.HorizontalAlign = 0
|
||||
t.WrapStyle = 1
|
||||
|
@ -260,8 +272,8 @@ And drives away his fear.
|
|||
self.answer = self.r.render_screen(0)
|
||||
self.expected_answer = QtCore.QRect(0, 0, 778, 342)
|
||||
self.bmpname = whoami()
|
||||
|
||||
# }}}
|
||||
|
||||
# {{{ Shadows and outlines
|
||||
def test_theme_shadow_outline(self):
|
||||
t = Theme(u'blank_theme.xml')
|
||||
|
@ -282,10 +294,11 @@ And drives away his fear.
|
|||
self.expected_answer = QtCore.QRect(0, 0, 559+hoffset, 342+voffset)
|
||||
self.bmpname = whoami()
|
||||
# }}}
|
||||
|
||||
def test_theme_font(self):
|
||||
t = Theme(u'blank_theme.xml')
|
||||
t.BackgroundType = 0
|
||||
t.BackgroundParameter1 = QtGui.QColor(0,0,64);
|
||||
t.BackgroundParameter1 = QtGui.QColor(0,0,64)
|
||||
t.Name = "font"
|
||||
t.FontName = "Times New Roman"
|
||||
self.r.set_theme(t)
|
||||
|
|
|
@ -21,8 +21,7 @@ import logging
|
|||
import os, os.path
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import ThemeXML, Renderer, file_to_xml, str_to_bool, \
|
||||
translate
|
||||
from openlp.core.lib import ThemeXML, Renderer, file_to_xml, translate
|
||||
|
||||
from amendthemedialog import Ui_AmendThemeDialog
|
||||
|
||||
|
@ -125,10 +124,10 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
new_theme.add_background_transparent()
|
||||
else:
|
||||
if self.theme.background_type == u'solid':
|
||||
new_theme.add_background_solid( \
|
||||
new_theme.add_background_solid(
|
||||
unicode(self.theme.background_color))
|
||||
elif self.theme.background_type == u'gradient':
|
||||
new_theme.add_background_gradient( \
|
||||
new_theme.add_background_gradient(
|
||||
unicode(self.theme.background_startColor),
|
||||
unicode(self.theme.background_endColor),
|
||||
self.theme.background_direction)
|
||||
|
@ -172,64 +171,16 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
save_from, save_to) is not False:
|
||||
return QtGui.QDialog.accept(self)
|
||||
|
||||
def loadTheme(self, theme):
|
||||
log.debug(u'LoadTheme %s', theme)
|
||||
if theme == None:
|
||||
self.theme.parse(self.baseTheme())
|
||||
else:
|
||||
xml_file = os.path.join(self.path, theme, theme + u'.xml')
|
||||
xml = file_to_xml(xml_file)
|
||||
self.theme.parse(xml)
|
||||
self.theme.extend_image_filename(self.path)
|
||||
self.cleanTheme(self.theme)
|
||||
def setTheme(self, theme):
|
||||
self.theme = theme
|
||||
|
||||
def loadTheme(self):
|
||||
log.debug(u'LoadTheme %s', self.theme)
|
||||
self.allowPreview = False
|
||||
self.paintUi(self.theme)
|
||||
self.allowPreview = True
|
||||
self.previewTheme(self.theme)
|
||||
|
||||
def cleanTheme(self, theme):
|
||||
self.theme.background_color = theme.background_color.strip()
|
||||
self.theme.background_direction = theme.background_direction.strip()
|
||||
self.theme.background_endColor = theme.background_endColor.strip()
|
||||
if theme.background_filename:
|
||||
self.theme.background_filename = theme.background_filename.strip()
|
||||
#self.theme.background_mode
|
||||
self.theme.background_startColor = theme.background_startColor.strip()
|
||||
#self.theme.background_type
|
||||
self.theme.display_display = theme.display_display.strip()
|
||||
self.theme.display_horizontalAlign = \
|
||||
theme.display_horizontalAlign.strip()
|
||||
self.theme.display_outline = str_to_bool(theme.display_outline)
|
||||
#self.theme.display_outline_color
|
||||
self.theme.display_shadow = str_to_bool(theme.display_shadow)
|
||||
#self.theme.display_shadow_color
|
||||
self.theme.display_verticalAlign = \
|
||||
theme.display_verticalAlign.strip()
|
||||
self.theme.display_wrapStyle = theme.display_wrapStyle.strip()
|
||||
self.theme.font_footer_color = theme.font_footer_color.strip()
|
||||
self.theme.font_footer_height = theme.font_footer_height.strip()
|
||||
self.theme.font_footer_italics = str_to_bool(theme.font_footer_italics)
|
||||
self.theme.font_footer_name = theme.font_footer_name.strip()
|
||||
#self.theme.font_footer_override
|
||||
self.theme.font_footer_proportion = \
|
||||
theme.font_footer_proportion.strip()
|
||||
self.theme.font_footer_weight = theme.font_footer_weight.strip()
|
||||
self.theme.font_footer_width = theme.font_footer_width.strip()
|
||||
self.theme.font_footer_x = theme.font_footer_x.strip()
|
||||
self.theme.font_footer_y = theme.font_footer_y.strip()
|
||||
self.theme.font_main_color = theme.font_main_color.strip()
|
||||
self.theme.font_main_height = theme.font_main_height.strip()
|
||||
self.theme.font_main_italics = str_to_bool(theme.font_main_italics)
|
||||
self.theme.font_main_name = theme.font_main_name.strip()
|
||||
#self.theme.font_main_override
|
||||
self.theme.font_main_proportion = theme.font_main_proportion.strip()
|
||||
self.theme.font_main_weight = theme.font_main_weight.strip()
|
||||
self.theme.font_main_x = theme.font_main_x.strip()
|
||||
self.theme.font_main_y = theme.font_main_y.strip()
|
||||
#self.theme.theme_mode
|
||||
self.theme.theme_name = theme.theme_name.strip()
|
||||
#self.theme.theme_version
|
||||
|
||||
def onImageToolButtonClicked(self):
|
||||
filename = QtGui.QFileDialog.getOpenFileName(self, 'Open file')
|
||||
if filename != "":
|
||||
|
@ -288,7 +239,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
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.FontMainHeightSpinBox.setValue(int(
|
||||
self.theme.font_main_height))
|
||||
self.stateChanging(self.theme)
|
||||
self.previewTheme(self.theme)
|
||||
|
@ -367,9 +318,9 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
|
||||
self.FontFooterXSpinBox.setValue(int(self.theme.font_footer_x))
|
||||
self.FontFooterYSpinBox.setValue(int(self.theme.font_footer_y))
|
||||
self.FontFooterWidthSpinBox.setValue(int( \
|
||||
self.FontFooterWidthSpinBox.setValue(int(
|
||||
self.theme.font_footer_width))
|
||||
self.FontFooterHeightSpinBox.setValue(int( \
|
||||
self.FontFooterHeightSpinBox.setValue(int(
|
||||
self.theme.font_footer_height))
|
||||
|
||||
self.stateChanging(self.theme)
|
||||
|
@ -502,21 +453,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
#
|
||||
#Local Methods
|
||||
#
|
||||
def baseTheme(self):
|
||||
log.debug(u'base theme created')
|
||||
newtheme = ThemeXML()
|
||||
newtheme.new_document(u'New Theme')
|
||||
newtheme.add_background_solid(unicode(u'#000000'))
|
||||
newtheme.add_font(unicode(QtGui.QFont().family()), unicode(u'#FFFFFF'),
|
||||
unicode(30), u'False')
|
||||
newtheme.add_font(unicode(QtGui.QFont().family()), unicode(u'#FFFFFF'),
|
||||
unicode(12), u'False', u'footer')
|
||||
newtheme.add_display(u'False', unicode(u'#FFFFFF'), u'False',
|
||||
unicode(u'#FFFFFF'),
|
||||
unicode(0), unicode(0), unicode(0))
|
||||
|
||||
return newtheme.extract_xml()
|
||||
|
||||
def paintUi(self, theme):
|
||||
self.stateChanging(theme)
|
||||
self.ThemeNameEdit.setText(self.theme.theme_name)
|
||||
|
@ -556,7 +492,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
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.FontFooterSizeSpinBox.setValue(int(
|
||||
self.theme.font_footer_proportion))
|
||||
if not self.theme.font_footer_italics and \
|
||||
self.theme.font_footer_weight == u'Normal':
|
||||
|
@ -572,7 +508,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
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.FontFooterHeightSpinBox.setValue(int(
|
||||
self.theme.font_footer_height))
|
||||
self.FontMainColorPushButton.setStyleSheet(
|
||||
u'background-color: %s' % unicode(theme.font_main_color))
|
||||
|
@ -608,9 +544,9 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
self.ShadowCheckBox.setChecked(False)
|
||||
self.ShadowColorPushButton.setEnabled(False)
|
||||
|
||||
self.HorizontalComboBox.setCurrentIndex(int( \
|
||||
self.HorizontalComboBox.setCurrentIndex(int(
|
||||
self.theme.display_horizontalAlign))
|
||||
self.VerticalComboBox.setCurrentIndex(int( \
|
||||
self.VerticalComboBox.setCurrentIndex(int(
|
||||
self.theme.display_verticalAlign))
|
||||
|
||||
def stateChanging(self, theme):
|
||||
|
|
|
@ -26,16 +26,19 @@ from openlp.core.ui import AboutForm, SettingsForm, AlertForm, \
|
|||
ServiceManager, ThemeManager, MainDisplay, SlideController, \
|
||||
PluginForm
|
||||
from openlp.core.lib import translate, Plugin, MediaManagerItem, \
|
||||
SettingsTab, RenderManager, PluginConfig, \
|
||||
SettingsTab, RenderManager, PluginConfig, str_to_bool, \
|
||||
SettingsManager, PluginManager, Receiver
|
||||
|
||||
from openlp.core.utils import ConfigHelper
|
||||
|
||||
class Ui_MainWindow(object):
|
||||
def setupUi(self, MainWindow):
|
||||
"""
|
||||
Set up the user interface
|
||||
"""
|
||||
MainWindow.setObjectName(u'MainWindow')
|
||||
MainWindow.resize(self.settingsmanager.width, self.settingsmanager.height)
|
||||
MainWindow.resize(self.settingsmanager.width,
|
||||
self.settingsmanager.height)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
|
||||
QtGui.QSizePolicy.Expanding)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
|
@ -118,6 +121,7 @@ class Ui_MainWindow(object):
|
|||
self.MediaManagerDock.setWidget(self.MediaManagerContents)
|
||||
MainWindow.addDockWidget(
|
||||
QtCore.Qt.DockWidgetArea(1), self.MediaManagerDock)
|
||||
self.MediaManagerDock.setVisible(self.settingsmanager.showMediaManager)
|
||||
# Create the service manager
|
||||
self.ServiceManagerDock = QtGui.QDockWidget(MainWindow)
|
||||
ServiceManagerIcon = QtGui.QIcon()
|
||||
|
@ -133,6 +137,8 @@ class Ui_MainWindow(object):
|
|||
self.ServiceManagerDock.setWidget(self.ServiceManagerContents)
|
||||
MainWindow.addDockWidget(
|
||||
QtCore.Qt.DockWidgetArea(2), self.ServiceManagerDock)
|
||||
self.ServiceManagerDock.setVisible(
|
||||
self.settingsmanager.showServiceManager)
|
||||
# Create the theme manager
|
||||
self.ThemeManagerDock = QtGui.QDockWidget(MainWindow)
|
||||
ThemeManagerIcon = QtGui.QIcon()
|
||||
|
@ -146,18 +152,22 @@ class Ui_MainWindow(object):
|
|||
self.ThemeManagerDock.setWidget(self.ThemeManagerContents)
|
||||
MainWindow.addDockWidget(
|
||||
QtCore.Qt.DockWidgetArea(2), self.ThemeManagerDock)
|
||||
self.ThemeManagerDock.setVisible(self.settingsmanager.showThemeManager)
|
||||
# Create the menu items
|
||||
self.FileNewItem = QtGui.QAction(MainWindow)
|
||||
self.FileNewItem.setIcon(
|
||||
self.ServiceManagerContents.Toolbar.getIconFromTitle(u'New Service'))
|
||||
self.ServiceManagerContents.Toolbar.getIconFromTitle(
|
||||
u'New Service'))
|
||||
self.FileNewItem.setObjectName(u'FileNewItem')
|
||||
self.FileOpenItem = QtGui.QAction(MainWindow)
|
||||
self.FileOpenItem.setIcon(
|
||||
self.ServiceManagerContents.Toolbar.getIconFromTitle(u'Open Service'))
|
||||
self.ServiceManagerContents.Toolbar.getIconFromTitle(
|
||||
u'Open Service'))
|
||||
self.FileOpenItem.setObjectName(u'FileOpenItem')
|
||||
self.FileSaveItem = QtGui.QAction(MainWindow)
|
||||
self.FileSaveItem.setIcon(
|
||||
self.ServiceManagerContents.Toolbar.getIconFromTitle(u'Save Service'))
|
||||
self.ServiceManagerContents.Toolbar.getIconFromTitle(
|
||||
u'Save Service'))
|
||||
self.FileSaveItem.setObjectName(u'FileSaveItem')
|
||||
self.FileSaveAsItem = QtGui.QAction(MainWindow)
|
||||
self.FileSaveAsItem.setObjectName(u'FileSaveAsItem')
|
||||
|
@ -185,17 +195,20 @@ class Ui_MainWindow(object):
|
|||
self.OptionsSettingsItem.setObjectName(u'OptionsSettingsItem')
|
||||
self.ViewMediaManagerItem = QtGui.QAction(MainWindow)
|
||||
self.ViewMediaManagerItem.setCheckable(True)
|
||||
self.ViewMediaManagerItem.setChecked(True)
|
||||
self.ViewMediaManagerItem.setChecked(
|
||||
self.settingsmanager.showMediaManager)
|
||||
self.ViewMediaManagerItem.setIcon(icon)
|
||||
self.ViewMediaManagerItem.setObjectName(u'ViewMediaManagerItem')
|
||||
self.ViewThemeManagerItem = QtGui.QAction(MainWindow)
|
||||
self.ViewThemeManagerItem.setCheckable(True)
|
||||
self.ViewThemeManagerItem.setChecked(True)
|
||||
self.ViewThemeManagerItem.setChecked(
|
||||
self.settingsmanager.showThemeManager)
|
||||
self.ViewThemeManagerItem.setIcon(ThemeManagerIcon)
|
||||
self.ViewThemeManagerItem.setObjectName(u'ViewThemeManagerItem')
|
||||
self.ViewServiceManagerItem = QtGui.QAction(MainWindow)
|
||||
self.ViewServiceManagerItem.setCheckable(True)
|
||||
self.ViewServiceManagerItem.setChecked(True)
|
||||
self.ViewServiceManagerItem.setChecked(
|
||||
self.settingsmanager.showServiceManager)
|
||||
self.ViewServiceManagerItem.setIcon(ServiceManagerIcon)
|
||||
self.ViewServiceManagerItem.setObjectName(u'ViewServiceManagerItem')
|
||||
self.ToolsAlertItem = QtGui.QAction(MainWindow)
|
||||
|
@ -212,7 +225,8 @@ class Ui_MainWindow(object):
|
|||
self.PluginItem.setObjectName(u'PluginItem')
|
||||
self.HelpDocumentationItem = QtGui.QAction(MainWindow)
|
||||
ContentsIcon = QtGui.QIcon()
|
||||
ContentsIcon.addPixmap(QtGui.QPixmap(u':/system/system_help_contents.png'),
|
||||
ContentsIcon.addPixmap(QtGui.QPixmap(
|
||||
u':/system/system_help_contents.png'),
|
||||
QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.HelpDocumentationItem.setIcon(ContentsIcon)
|
||||
self.HelpDocumentationItem.setObjectName(u'HelpDocumentationItem')
|
||||
|
@ -238,8 +252,11 @@ class Ui_MainWindow(object):
|
|||
self.ToolsAddToolItem.setObjectName(u'ToolsAddToolItem')
|
||||
self.action_Preview_Panel = QtGui.QAction(MainWindow)
|
||||
self.action_Preview_Panel.setCheckable(True)
|
||||
self.action_Preview_Panel.setChecked(True)
|
||||
self.action_Preview_Panel.setChecked(
|
||||
self.settingsmanager.showPreviewPanel)
|
||||
self.action_Preview_Panel.setObjectName(u'action_Preview_Panel')
|
||||
self.PreviewController.Panel.setVisible(
|
||||
self.settingsmanager.showPreviewPanel)
|
||||
self.ModeLiveItem = QtGui.QAction(MainWindow)
|
||||
self.ModeLiveItem.setObjectName(u'ModeLiveItem')
|
||||
self.FileImportMenu.addAction(self.ImportThemeItem)
|
||||
|
@ -296,7 +313,8 @@ class Ui_MainWindow(object):
|
|||
Set up the translation system
|
||||
"""
|
||||
MainWindow.mainTitle = translate(u'mainWindow', u'OpenLP 2.0')
|
||||
MainWindow.defaultThemeText = translate(u'mainWindow', 'Default Theme: ')
|
||||
MainWindow.defaultThemeText = translate(u'mainWindow',
|
||||
'Default Theme: ')
|
||||
MainWindow.setWindowTitle(MainWindow.mainTitle)
|
||||
self.FileMenu.setTitle(translate(u'mainWindow', u'&File'))
|
||||
self.FileImportMenu.setTitle(translate(u'mainWindow', u'&Import'))
|
||||
|
@ -304,7 +322,8 @@ class Ui_MainWindow(object):
|
|||
self.OptionsMenu.setTitle(translate(u'mainWindow', u'&Options'))
|
||||
self.OptionsViewMenu.setTitle(translate(u'mainWindow', u'&View'))
|
||||
self.ViewModeMenu.setTitle(translate(u'mainWindow', u'M&ode'))
|
||||
self.OptionsLanguageMenu.setTitle(translate(u'mainWindow', u'&Language'))
|
||||
self.OptionsLanguageMenu.setTitle(translate(u'mainWindow',
|
||||
u'&Language'))
|
||||
self.ToolsMenu.setTitle(translate(u'mainWindow', u'&Tools'))
|
||||
self.HelpMenu.setTitle(translate(u'mainWindow', u'&Help'))
|
||||
self.MediaManagerDock.setWindowTitle(
|
||||
|
@ -364,6 +383,13 @@ class Ui_MainWindow(object):
|
|||
self.ViewServiceManagerItem.setStatusTip(translate(u'mainWindow',
|
||||
u'Toggle the visibility of the Service Manager'))
|
||||
self.ViewServiceManagerItem.setShortcut(translate(u'mainWindow', u'F9'))
|
||||
self.action_Preview_Panel.setText(
|
||||
translate(u'mainWindow', u'&Preview Panel'))
|
||||
self.action_Preview_Panel.setToolTip(
|
||||
translate(u'mainWindow', u'Toggle Preview Panel'))
|
||||
self.action_Preview_Panel.setStatusTip(translate(u'mainWindow',
|
||||
u'Toggle the visibility of the Preview Panel'))
|
||||
self.action_Preview_Panel.setShortcut(translate(u'mainWindow', u'F11'))
|
||||
self.ToolsAlertItem.setText(translate(u'mainWindow', u'&Alert'))
|
||||
self.ToolsAlertItem.setStatusTip(
|
||||
translate(u'mainWindow', u'Show an alert message'))
|
||||
|
@ -430,23 +456,35 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||
self.setupUi(self)
|
||||
# Set up signals and slots
|
||||
QtCore.QObject.connect(self.ImportThemeItem,
|
||||
QtCore.SIGNAL(u'triggered()'), self.ThemeManagerContents.onImportTheme)
|
||||
QtCore.SIGNAL(u'triggered()'),
|
||||
self.ThemeManagerContents.onImportTheme)
|
||||
QtCore.QObject.connect(self.ExportThemeItem,
|
||||
QtCore.SIGNAL(u'triggered()'), self.ThemeManagerContents.onExportTheme)
|
||||
QtCore.SIGNAL(u'triggered()'),
|
||||
self.ThemeManagerContents.onExportTheme)
|
||||
QtCore.QObject.connect(self.ViewMediaManagerItem,
|
||||
QtCore.SIGNAL(u'triggered(bool)'), self.MediaManagerDock.setVisible)
|
||||
QtCore.SIGNAL(u'triggered(bool)'),
|
||||
self.toggleMediaManager)
|
||||
QtCore.QObject.connect(self.ViewServiceManagerItem,
|
||||
QtCore.SIGNAL(u'triggered(bool)'), self.ServiceManagerDock.setVisible)
|
||||
QtCore.SIGNAL(u'triggered(bool)'),
|
||||
self.toggleServiceManager)
|
||||
QtCore.QObject.connect(self.ViewThemeManagerItem,
|
||||
QtCore.SIGNAL(u'triggered(bool)'), self.ThemeManagerDock.setVisible)
|
||||
QtCore.SIGNAL(u'triggered(bool)'),
|
||||
self.toggleThemeManager)
|
||||
QtCore.QObject.connect(self.action_Preview_Panel,
|
||||
QtCore.SIGNAL(u'toggled(bool)'), self.PreviewController.Panel.setVisible)
|
||||
QtCore.SIGNAL(u'toggled(bool)'),
|
||||
self.togglePreviewPanel)
|
||||
QtCore.QObject.connect(self.MediaManagerDock,
|
||||
QtCore.SIGNAL(u'visibilityChanged(bool)'), self.ViewMediaManagerItem.setChecked)
|
||||
QtCore.SIGNAL(u'visibilityChanged(bool)'),
|
||||
self.ViewMediaManagerItem.setChecked)
|
||||
QtCore.QObject.connect(self.ServiceManagerDock,
|
||||
QtCore.SIGNAL(u'visibilityChanged(bool)'), self.ViewServiceManagerItem.setChecked)
|
||||
QtCore.SIGNAL(u'visibilityChanged(bool)'),
|
||||
self.ViewServiceManagerItem.setChecked)
|
||||
QtCore.QObject.connect(self.ThemeManagerDock,
|
||||
QtCore.SIGNAL(u'visibilityChanged(bool)'), self.ViewThemeManagerItem.setChecked)
|
||||
QtCore.SIGNAL(u'visibilityChanged(bool)'),
|
||||
self.ViewThemeManagerItem.setChecked)
|
||||
QtCore.QObject.connect(self.PreviewController.Panel,
|
||||
QtCore.SIGNAL(u'visibilityChanged(bool)'),
|
||||
self.action_Preview_Panel.setChecked)
|
||||
QtCore.QObject.connect(self.HelpAboutItem,
|
||||
QtCore.SIGNAL(u'triggered()'), self.onHelpAboutItemClicked)
|
||||
QtCore.QObject.connect(self.ToolsAlertItem,
|
||||
|
@ -472,7 +510,6 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||
self.plugin_manager.find_plugins(pluginpath, self.plugin_helpers)
|
||||
# hook methods have to happen after find_plugins. Find plugins needs the
|
||||
# controllers hence the hooks have moved from setupUI() to here
|
||||
|
||||
# Find and insert settings tabs
|
||||
log.info(u'hook settings')
|
||||
self.plugin_manager.hook_settings_tabs(self.settingsForm)
|
||||
|
@ -555,7 +592,10 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||
ret = QtGui.QMessageBox.question(None,
|
||||
translate(u'mainWindow', u'Save Changes to Service?'),
|
||||
translate(u'mainWindow', u'Your service has been changed, do you want to save those changes?'),
|
||||
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Cancel | QtGui.QMessageBox.Discard | QtGui.QMessageBox.Save),
|
||||
QtGui.QMessageBox.StandardButtons(
|
||||
QtGui.QMessageBox.Cancel | \
|
||||
QtGui.QMessageBox.Discard | \
|
||||
QtGui.QMessageBox.Save),
|
||||
QtGui.QMessageBox.Save)
|
||||
if ret == QtGui.QMessageBox.Save:
|
||||
self.ServiceManagerContents.onSaveService()
|
||||
|
@ -598,3 +638,23 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||
|
||||
def defaultThemeChanged(self, theme):
|
||||
self.DefaultThemeLabel.setText(self.defaultThemeText + theme)
|
||||
|
||||
def toggleMediaManager(self):
|
||||
mediaBool = self.MediaManagerDock.isVisible()
|
||||
self.MediaManagerDock.setVisible(not mediaBool)
|
||||
self.settingsmanager.toggleMediaManager(not mediaBool)
|
||||
|
||||
def toggleServiceManager(self):
|
||||
serviceBool = self.ServiceManagerDock.isVisible()
|
||||
self.ServiceManagerDock.setVisible(not serviceBool)
|
||||
self.settingsmanager.toggleServiceManager(not serviceBool)
|
||||
|
||||
def toggleThemeManager(self):
|
||||
themeBool = self.ThemeManagerDock.isVisible()
|
||||
self.ThemeManagerDock.setVisible(not themeBool)
|
||||
self.settingsmanager.toggleThemeManager(not themeBool)
|
||||
|
||||
def togglePreviewPanel(self):
|
||||
previewBool = self.PreviewController.Panel.isVisible()
|
||||
self.PreviewController.Panel.setVisible(not previewBool)
|
||||
self.settingsmanager.togglePreviewPanel(not previewBool)
|
||||
|
|
|
@ -136,6 +136,7 @@ class TestServiceManager_base:
|
|||
# new and save as
|
||||
# deleting items
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
t=TestServiceManager_base()
|
||||
|
|
|
@ -28,9 +28,8 @@ from PyQt4 import QtCore, QtGui
|
|||
|
||||
from openlp.core.ui import AmendThemeForm, ServiceManager
|
||||
from openlp.core.theme import Theme
|
||||
from openlp.core.lib import PluginConfig, \
|
||||
OpenLPToolbar, ThemeXML, Renderer, translate, \
|
||||
file_to_xml, buildIcon, Receiver
|
||||
from openlp.core.lib import PluginConfig, OpenLPToolbar, ThemeXML, Renderer, \
|
||||
translate, str_to_bool, file_to_xml, buildIcon, Receiver
|
||||
from openlp.core.utils import ConfigHelper
|
||||
|
||||
class ThemeManager(QtGui.QWidget):
|
||||
|
@ -52,17 +51,21 @@ class ThemeManager(QtGui.QWidget):
|
|||
translate(u'ThemeManager', u'New Theme'), u':/themes/theme_new.png',
|
||||
translate(u'ThemeManager', u'Create a new theme'), self.onAddTheme)
|
||||
self.Toolbar.addToolbarButton(
|
||||
translate(u'ThemeManager', u'Edit Theme'), u':/themes/theme_edit.png',
|
||||
translate(u'ThemeManager', u'Edit Theme'),
|
||||
u':/themes/theme_edit.png',
|
||||
translate(u'ThemeManager', u'Edit a theme'), self.onEditTheme)
|
||||
self.Toolbar.addToolbarButton(
|
||||
translate(u'ThemeManager', u'Delete Theme'), u':/themes/theme_delete.png',
|
||||
translate(u'ThemeManager', u'Delete Theme'),
|
||||
u':/themes/theme_delete.png',
|
||||
translate(u'ThemeManager', u'Delete a theme'), self.onDeleteTheme)
|
||||
self.Toolbar.addSeparator()
|
||||
self.Toolbar.addToolbarButton(
|
||||
translate(u'ThemeManager', u'Import Theme'), u':/themes/theme_import.png',
|
||||
translate(u'ThemeManager', u'Import Theme'),
|
||||
u':/themes/theme_import.png',
|
||||
translate(u'ThemeManager', u'Import a theme'), self.onImportTheme)
|
||||
self.Toolbar.addToolbarButton(
|
||||
translate(u'ThemeManager', u'Export Theme'), u':/themes/theme_export.png',
|
||||
translate(u'ThemeManager', u'Export Theme'),
|
||||
u':/themes/theme_export.png',
|
||||
translate(u'ThemeManager', u'Export a theme'), self.onExportTheme)
|
||||
self.ThemeWidget = QtGui.QWidgetAction(self.Toolbar)
|
||||
self.Layout.addWidget(self.Toolbar)
|
||||
|
@ -72,7 +75,8 @@ class ThemeManager(QtGui.QWidget):
|
|||
self.Layout.addWidget(self.ThemeListWidget)
|
||||
#Signals
|
||||
QtCore.QObject.connect(self.ThemeListWidget,
|
||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.changeGlobalFromScreen)
|
||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'),
|
||||
self.changeGlobalFromScreen)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'update_global_theme'), self.changeGlobalFromTab)
|
||||
#Variables
|
||||
|
@ -83,7 +87,8 @@ class ThemeManager(QtGui.QWidget):
|
|||
# Last little bits of setting up
|
||||
self.config = PluginConfig(u'themes')
|
||||
self.servicePath = self.config.get_data_path()
|
||||
self.global_theme = unicode(self.config.get_config(u'theme global theme', u''))
|
||||
self.global_theme = unicode(
|
||||
self.config.get_config(u'theme global theme', u''))
|
||||
|
||||
def changeGlobalFromTab(self, themeName):
|
||||
log.debug(u'changeGlobalFromTab %s', themeName)
|
||||
|
@ -96,7 +101,8 @@ class ThemeManager(QtGui.QWidget):
|
|||
self.ThemeListWidget.item(count).setText(newName)
|
||||
#Set the new name
|
||||
if themeName == newName:
|
||||
name = u'%s (%s)' % (newName, translate(u'ThemeManager', u'default'))
|
||||
name = u'%s (%s)' % (newName, translate(u'ThemeManager',
|
||||
u'default'))
|
||||
self.ThemeListWidget.item(count).setText(name)
|
||||
|
||||
def changeGlobalFromScreen(self, index):
|
||||
|
@ -106,28 +112,36 @@ class ThemeManager(QtGui.QWidget):
|
|||
oldName = item.text()
|
||||
#reset the old name
|
||||
if oldName != unicode(item.data(QtCore.Qt.UserRole).toString()):
|
||||
self.ThemeListWidget.item(count).setText(unicode(item.data(QtCore.Qt.UserRole).toString()))
|
||||
self.ThemeListWidget.item(count).setText(
|
||||
unicode(item.data(QtCore.Qt.UserRole).toString()))
|
||||
#Set the new name
|
||||
if count == index.row():
|
||||
self.global_theme = unicode(self.ThemeListWidget.item(count).text())
|
||||
name = u'%s (%s)' % (self.global_theme, translate(u'ThemeManager', u'default'))
|
||||
self.global_theme = unicode(
|
||||
self.ThemeListWidget.item(count).text())
|
||||
name = u'%s (%s)' % (self.global_theme,
|
||||
translate(u'ThemeManager', u'default'))
|
||||
self.ThemeListWidget.item(count).setText(name)
|
||||
self.config.set_config(u'theme global theme', self.global_theme)
|
||||
Receiver().send_message(u'update_global_theme', self.global_theme )
|
||||
Receiver().send_message(u'update_global_theme',
|
||||
self.global_theme)
|
||||
self.pushThemes()
|
||||
|
||||
def onAddTheme(self):
|
||||
self.amendThemeForm.loadTheme(None)
|
||||
self.amendThemeForm.theme.parse(self.baseTheme())
|
||||
self.amendThemeForm.loadTheme()
|
||||
self.amendThemeForm.exec_()
|
||||
|
||||
def onEditTheme(self):
|
||||
item = self.ThemeListWidget.currentItem()
|
||||
if item is not None:
|
||||
self.amendThemeForm.loadTheme(unicode(item.data(QtCore.Qt.UserRole).toString()))
|
||||
self.amendThemeForm.setTheme(self.getThemeData(
|
||||
item.data(QtCore.Qt.UserRole).toString()))
|
||||
self.amendThemeForm.loadTheme()
|
||||
self.amendThemeForm.exec_()
|
||||
|
||||
def onDeleteTheme(self):
|
||||
self.global_theme = unicode(self.config.get_config(u'theme global theme', u''))
|
||||
self.global_theme = unicode(
|
||||
self.config.get_config(u'theme global theme', u''))
|
||||
item = self.ThemeListWidget.currentItem()
|
||||
if item is not None:
|
||||
theme = unicode(item.text())
|
||||
|
@ -135,7 +149,8 @@ class ThemeManager(QtGui.QWidget):
|
|||
if theme != unicode(item.data(QtCore.Qt.UserRole).toString()):
|
||||
QtGui.QMessageBox.critical(self,
|
||||
translate(u'ThemeManager', u'Error'),
|
||||
translate(u'ThemeManager', u'You are unable to delete the default theme!'),
|
||||
translate(u'ThemeManager',
|
||||
u'You are unable to delete the default theme!'),
|
||||
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok))
|
||||
else:
|
||||
self.themelist.remove(theme)
|
||||
|
@ -153,7 +168,8 @@ class ThemeManager(QtGui.QWidget):
|
|||
#if not present do not worry
|
||||
pass
|
||||
# As we do not reload the themes push out the change
|
||||
#Reaload the list as the internal lists and events need to be triggered
|
||||
# Reaload the list as the internal lists and events need
|
||||
# to be triggered
|
||||
self.pushThemes()
|
||||
|
||||
def onExportTheme(self):
|
||||
|
@ -188,12 +204,14 @@ class ThemeManager(QtGui.QWidget):
|
|||
(path, filename) = os.path.split(unicode(file))
|
||||
textName = os.path.splitext(name)[0]
|
||||
if textName == self.global_theme:
|
||||
name = u'%s (%s)' % (textName, translate(u'ThemeManager', u'default'))
|
||||
name = u'%s (%s)' % (textName,
|
||||
translate(u'ThemeManager', u'default'))
|
||||
else:
|
||||
name = textName
|
||||
item_name = QtGui.QListWidgetItem(name)
|
||||
item_name.setIcon(buildIcon(theme))
|
||||
item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(textName))
|
||||
item_name.setData(QtCore.Qt.UserRole,
|
||||
QtCore.QVariant(textName))
|
||||
self.ThemeListWidget.addItem(item_name)
|
||||
self.themelist.append(textName)
|
||||
self.pushThemes()
|
||||
|
@ -206,21 +224,16 @@ class ThemeManager(QtGui.QWidget):
|
|||
|
||||
def getThemeData(self, themename):
|
||||
log.debug(u'getthemedata for theme %s', themename)
|
||||
xml_file = os.path.join(self.path, unicode(themename), unicode(themename) + u'.xml')
|
||||
xml_file = os.path.join(self.path, unicode(themename),
|
||||
unicode(themename) + u'.xml')
|
||||
try:
|
||||
xml = file_to_xml(xml_file)
|
||||
except:
|
||||
newtheme = ThemeXML()
|
||||
newtheme.new_document(u'New Theme')
|
||||
newtheme.add_background_solid(unicode(u'#000000'))
|
||||
newtheme.add_font(unicode(QtGui.QFont().family()), unicode(u'#FFFFFF'), unicode(30), u'False')
|
||||
newtheme.add_font(unicode(QtGui.QFont().family()), unicode(u'#FFFFFF'), unicode(12), u'False', u'footer')
|
||||
newtheme.add_display(u'False', unicode(u'#FFFFFF'), u'False', unicode(u'#FFFFFF'),
|
||||
unicode(0), unicode(0), unicode(0))
|
||||
xml = newtheme.extract_xml()
|
||||
xml = self.baseTheme()
|
||||
theme = ThemeXML()
|
||||
theme.parse(xml)
|
||||
theme.extend_image_filename(self.path)
|
||||
self.cleanTheme(theme)
|
||||
return theme
|
||||
|
||||
def checkThemesExists(self, dir):
|
||||
|
@ -254,7 +267,8 @@ class ThemeManager(QtGui.QWidget):
|
|||
if os.path.splitext(file)[1].lower() in [u'.xml']:
|
||||
if self.checkVersion1(xml_data):
|
||||
# upgrade theme xml
|
||||
filexml = self.migrateVersion122(filename, fullpath, xml_data)
|
||||
filexml = self.migrateVersion122(filename,
|
||||
fullpath, xml_data)
|
||||
else:
|
||||
filexml = xml_data
|
||||
outfile = open(fullpath, u'w')
|
||||
|
@ -289,7 +303,8 @@ class ThemeManager(QtGui.QWidget):
|
|||
newtheme = ThemeXML()
|
||||
newtheme.new_document(theme.Name)
|
||||
if theme.BackgroundType == 0:
|
||||
newtheme.add_background_solid(unicode(theme.BackgroundParameter1.name()))
|
||||
newtheme.add_background_solid(unicode(
|
||||
theme.BackgroundParameter1.name()))
|
||||
elif theme.BackgroundType == 1:
|
||||
direction = u'vertical'
|
||||
if theme.BackgroundParameter3.name() == 1:
|
||||
|
@ -378,3 +393,57 @@ class ThemeManager(QtGui.QWidget):
|
|||
log.debug(u'getPreviewImage %s ', theme)
|
||||
image = os.path.join(self.path, theme + u'.png')
|
||||
return image
|
||||
|
||||
def baseTheme(self):
|
||||
log.debug(u'base theme created')
|
||||
newtheme = ThemeXML()
|
||||
newtheme.new_document(u'New Theme')
|
||||
newtheme.add_background_solid(unicode(u'#000000'))
|
||||
newtheme.add_font(unicode(QtGui.QFont().family()), unicode(u'#FFFFFF'),
|
||||
unicode(30), u'False')
|
||||
newtheme.add_font(unicode(QtGui.QFont().family()), unicode(u'#FFFFFF'),
|
||||
unicode(12), u'False', u'footer')
|
||||
newtheme.add_display(u'False', unicode(u'#FFFFFF'), u'False',
|
||||
unicode(u'#FFFFFF'), unicode(0), unicode(0), unicode(0))
|
||||
return newtheme.extract_xml()
|
||||
|
||||
def cleanTheme(self, theme):
|
||||
theme.background_color = theme.background_color.strip()
|
||||
theme.background_direction = theme.background_direction.strip()
|
||||
theme.background_endColor = theme.background_endColor.strip()
|
||||
if theme.background_filename:
|
||||
theme.background_filename = theme.background_filename.strip()
|
||||
#theme.background_mode
|
||||
theme.background_startColor = theme.background_startColor.strip()
|
||||
#theme.background_type
|
||||
if theme.display_display:
|
||||
theme.display_display = theme.display_display.strip()
|
||||
theme.display_horizontalAlign = theme.display_horizontalAlign.strip()
|
||||
theme.display_outline = str_to_bool(theme.display_outline)
|
||||
#theme.display_outline_color
|
||||
theme.display_shadow = str_to_bool(theme.display_shadow)
|
||||
#theme.display_shadow_color
|
||||
theme.display_verticalAlign = theme.display_verticalAlign.strip()
|
||||
theme.display_wrapStyle = theme.display_wrapStyle.strip()
|
||||
theme.font_footer_color = theme.font_footer_color.strip()
|
||||
theme.font_footer_height = theme.font_footer_height.strip()
|
||||
theme.font_footer_italics = str_to_bool(theme.font_footer_italics)
|
||||
theme.font_footer_name = theme.font_footer_name.strip()
|
||||
#theme.font_footer_override
|
||||
theme.font_footer_proportion = theme.font_footer_proportion.strip()
|
||||
theme.font_footer_weight = theme.font_footer_weight.strip()
|
||||
theme.font_footer_width = theme.font_footer_width.strip()
|
||||
theme.font_footer_x = theme.font_footer_x.strip()
|
||||
theme.font_footer_y = theme.font_footer_y.strip()
|
||||
theme.font_main_color = theme.font_main_color.strip()
|
||||
theme.font_main_height = theme.font_main_height.strip()
|
||||
theme.font_main_italics = str_to_bool(theme.font_main_italics)
|
||||
theme.font_main_name = theme.font_main_name.strip()
|
||||
#theme.font_main_override
|
||||
theme.font_main_proportion = theme.font_main_proportion.strip()
|
||||
theme.font_main_weight = theme.font_main_weight.strip()
|
||||
theme.font_main_x = theme.font_main_x.strip()
|
||||
theme.font_main_y = theme.font_main_y.strip()
|
||||
#theme.theme_mode
|
||||
theme.theme_name = theme.theme_name.strip()
|
||||
#theme.theme_version
|
||||
|
|
|
@ -122,34 +122,45 @@ class BibleDBImpl(BibleCommon):
|
|||
|
||||
def get_max_bible_book_verses(self, bookname, chapter):
|
||||
log.debug(u'get_max_bible_book_verses %s, %s', bookname, chapter)
|
||||
verse = self.session.query(Verse).join(Book).filter(Book.name==bookname).filter(Verse.chapter==chapter).order_by(Verse.verse.desc()).first()
|
||||
verse = self.session.query(Verse).join(Book).filter(
|
||||
Book.name == bookname).filter(
|
||||
Verse.chapter == chapter).order_by(Verse.verse.desc()).first()
|
||||
return verse.verse
|
||||
|
||||
def get_max_bible_book_chapter(self, bookname):
|
||||
log.debug(u'get_max_bible_book_chapter %s', bookname)
|
||||
verse = self.session.query(Verse).join(Book).filter(Book.name==bookname).order_by(Verse.chapter.desc()).first()
|
||||
verse = self.session.query(Verse).join(Book).filter(
|
||||
Book.name == bookname).order_by(Verse.chapter.desc()).first()
|
||||
return verse.chapter
|
||||
|
||||
def get_bible_book(self, bookname):
|
||||
log.debug(u'get_bible_book %s', bookname)
|
||||
bk = self.session.query(Book).filter(Book.name.like(bookname + u'%')).first()
|
||||
bk = self.session.query(Book).filter(
|
||||
Book.name.like(bookname + u'%')).first()
|
||||
if bk == None:
|
||||
bk = self.session.query(Book).filter(Book.abbreviation.like(bookname + u'%')).first()
|
||||
bk = self.session.query(Book).filter(
|
||||
Book.abbreviation.like(bookname + u'%')).first()
|
||||
return bk
|
||||
|
||||
def get_bible_chapter(self, id, chapter):
|
||||
log.debug(u'get_bible_chapter %s, %s', id, chapter)
|
||||
return self.session.query(Verse).filter_by(chapter=chapter).filter_by(book_id=id).first()
|
||||
return self.session.query(Verse).filter_by(chapter=chapter).filter_by(
|
||||
book_id=id).first()
|
||||
|
||||
def get_bible_text(self, bookname, chapter, sverse, everse):
|
||||
log.debug(u'get_bible_text %s, %s, %s, %s', bookname, chapter, sverse, everse)
|
||||
verses = self.session.query(Verse).join(Book).filter(Book.name==bookname).filter(Verse.chapter==chapter).filter(Verse.verse>=sverse).filter(Verse.verse<=everse).order_by(Verse.verse).all()
|
||||
log.debug(u'get_bible_text %s, %s, %s, %s', bookname, chapter, sverse,
|
||||
everse)
|
||||
verses = self.session.query(Verse).join(Book).filter(
|
||||
Book.name == bookname).filter(Verse.chapter == chapter).filter(
|
||||
Verse.verse>=sverse).filter(Verse.verse<=everse).order_by(
|
||||
Verse.verse).all()
|
||||
return verses
|
||||
|
||||
def get_verses_from_text(self, versetext):
|
||||
log.debug(u'get_verses_from_text %s',versetext)
|
||||
versetext = u'%%%s%%' % versetext
|
||||
verses = self.session.query(Verse).filter(Verse.text.like(versetext)).all()
|
||||
verses = self.session.query(Verse).filter(
|
||||
Verse.text.like(versetext)).all()
|
||||
return verses
|
||||
|
||||
def dump_bible(self):
|
||||
|
|
|
@ -321,7 +321,8 @@ class BibleMediaItem(MediaManagerItem):
|
|||
cf = self.AdvancedFromChapter.currentText()
|
||||
self.adjustComboBox(cf, self.chapters_from, self.AdvancedToChapter)
|
||||
# get the verse count for new chapter
|
||||
vse = self.parent.biblemanager.get_book_verse_count(bible, book, int(cf))[0]
|
||||
vse = self.parent.biblemanager.get_book_verse_count(bible, book,
|
||||
int(cf))[0]
|
||||
self.adjustComboBox(1, vse, self.AdvancedFromVerse)
|
||||
self.adjustComboBox(1, vse, self.AdvancedToVerse)
|
||||
|
||||
|
@ -332,7 +333,8 @@ class BibleMediaItem(MediaManagerItem):
|
|||
if self.ClearQuickSearchComboBox.currentIndex() == 0:
|
||||
self.ListView.clear()
|
||||
if self.QuickSearchComboBox.currentIndex() == 1:
|
||||
self.search_results = self.parent.biblemanager.get_verse_from_text(bible, text)
|
||||
self.search_results = self.parent.biblemanager.get_verse_from_text(
|
||||
bible, text)
|
||||
else:
|
||||
self.searchByReference(bible, text)
|
||||
if self.search_results is not None:
|
||||
|
@ -421,8 +423,10 @@ class BibleMediaItem(MediaManagerItem):
|
|||
|
||||
def initialiseChapterVerse(self, bible, book):
|
||||
log.debug(u'initialiseChapterVerse %s , %s', bible, book)
|
||||
self.chapters_from = self.parent.biblemanager.get_book_chapter_count(bible, book)
|
||||
self.verses = self.parent.biblemanager.get_book_verse_count(bible, book, 1)
|
||||
self.chapters_from = self.parent.biblemanager.get_book_chapter_count(
|
||||
bible, book)
|
||||
self.verses = self.parent.biblemanager.get_book_verse_count(bible,
|
||||
book, 1)
|
||||
self.adjustComboBox(1, self.chapters_from, self.AdvancedFromChapter)
|
||||
self.adjustComboBox(1, self.chapters_from, self.AdvancedToChapter)
|
||||
self.adjustComboBox(1, self.verses, self.AdvancedFromVerse)
|
||||
|
@ -517,15 +521,19 @@ class BibleMediaItem(MediaManagerItem):
|
|||
if start_chapter == u'':
|
||||
message = u'No chapter found for search criteria'
|
||||
log.debug(u'results = %s @ %s : %s @ %s : %s'% \
|
||||
(unicode(book), unicode(start_chapter), unicode(end_chapter), unicode(start_verse), unicode(end_verse)))
|
||||
(unicode(book), unicode(start_chapter), unicode(end_chapter),
|
||||
unicode(start_verse), unicode(end_verse)))
|
||||
if message == None:
|
||||
self.search_results = None
|
||||
self.search_results = self.parent.biblemanager.get_verse_text(bible, book,
|
||||
int(start_chapter), int(end_chapter), int(start_verse),
|
||||
int(end_verse))
|
||||
self.copyright = unicode(self.parent.biblemanager.get_meta_data(bible, u'Copyright').value)
|
||||
self.permissions = unicode(self.parent.biblemanager.get_meta_data(bible, u'Permissions').value)
|
||||
self.version = unicode(self.parent.biblemanager.get_meta_data(bible, u'Version').value)
|
||||
self.search_results = self.parent.biblemanager.get_verse_text(
|
||||
bible, book, int(start_chapter), int(end_chapter),
|
||||
int(start_verse), int(end_verse))
|
||||
self.copyright = unicode(self.parent.biblemanager.get_meta_data(
|
||||
bible, u'Copyright').value)
|
||||
self.permissions = unicode(self.parent.biblemanager.get_meta_data(
|
||||
bible, u'Permissions').value)
|
||||
self.version = unicode(self.parent.biblemanager.get_meta_data(
|
||||
bible, u'Version').value)
|
||||
else:
|
||||
reply = QtGui.QMessageBox.information(self,
|
||||
translate(u'BibleMediaItem', u'Information'),
|
||||
|
|
Loading…
Reference in New Issue