Merge lp:~meths/openlp/trivialfixes into lp:openlp

Proposed by Jon Tibble
Status: Merged
Merged at revision: not available
Proposed branch: lp:~meths/openlp/trivialfixes
Merge into: lp:openlp
Diff against target: 1560 lines
30 files modified
openlp.pyw (+3/-2)
openlp/core/lib/__init__.py (+1/-0)
openlp/core/lib/pluginconfig.py (+9/-9)
openlp/core/lib/renderer.py (+0/-2)
openlp/core/lib/serviceitem.py (+2/-2)
openlp/core/lib/settingstab.py (+1/-1)
openlp/core/test/test_render.py (+22/-18)
openlp/core/test/test_render_theme.py (+53/-55)
openlp/core/theme/test/test_theme.py (+43/-41)
openlp/core/ui/amendthemeform.py (+3/-2)
openlp/core/ui/servicemanager.py (+0/-2)
openlp/core/ui/slidecontroller.py (+2/-2)
openlp/core/ui/test/test_service_manager.py (+2/-1)
openlp/migration/display.py (+2/-2)
openlp/migration/migratesongs.py (+0/-1)
openlp/plugins/bibles/forms/bibleimportform.py (+13/-8)
openlp/plugins/bibles/lib/bibleDBimpl.py (+4/-4)
openlp/plugins/bibles/lib/bibleHTTPimpl.py (+9/-10)
openlp/plugins/bibles/lib/bibleOSISimpl.py (+2/-2)
openlp/plugins/bibles/lib/manager.py (+13/-13)
openlp/plugins/bibles/lib/mediaitem.py (+6/-6)
openlp/plugins/bibles/test/test_bibleManager.py (+2/-1)
openlp/plugins/bibles/test/test_bibleManagerAPI.py (+2/-1)
openlp/plugins/bibles/test/test_bibleManagerCSV.py (+2/-1)
openlp/plugins/bibles/test/test_bibleManagerOSIS.py (+2/-1)
openlp/plugins/presentations/lib/impresscontroller.py (+1/-1)
openlp/plugins/presentations/lib/powerpointcontroller.py (+8/-9)
openlp/plugins/songs/lib/manager.py (+1/-1)
openlp/plugins/songs/lib/mediaitem.py (+2/-2)
openlp/plugins/songs/lib/songxml.py (+83/-82)
To merge this branch: bzr merge lp:~meths/openlp/trivialfixes
Reviewer Review Type Date Requested Status
Tim Bentley Approve
Review via email: mp+12446@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Tim Bentley (trb143) wrote :

Couple of minor things
Comment in request to say what type of changes there are.
Do not worry about test classes.
You missed some lines with "" they should have been u''
I assume the commented out lines are so we can check nothing breaks.

review: Approve
lp:~meths/openlp/trivialfixes updated
573. By Jon Tibble

None testing and clean ups

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'openlp.pyw'
--- openlp.pyw 2009-09-25 04:34:13 +0000
+++ openlp.pyw 2009-09-25 23:10:22 +0000
@@ -24,9 +24,10 @@
24###############################################################################24###############################################################################
2525
26import sys26import sys
27import logging, logging.handlers27import logging
28import logging.handlers
29
28from optparse import OptionParser30from optparse import OptionParser
29
30from PyQt4 import QtCore, QtGui31from PyQt4 import QtCore, QtGui
3132
32from openlp.core.lib import Receiver, str_to_bool33from openlp.core.lib import Receiver, str_to_bool
3334
=== modified file 'openlp/core/lib/__init__.py'
--- openlp/core/lib/__init__.py 2009-09-21 19:23:51 +0000
+++ openlp/core/lib/__init__.py 2009-09-25 23:10:22 +0000
@@ -28,6 +28,7 @@
28"""28"""
2929
30import types30import types
31
31from PyQt4 import QtCore, QtGui32from PyQt4 import QtCore, QtGui
3233
33def translate(context, text):34def translate(context, text):
3435
=== modified file 'openlp/core/lib/pluginconfig.py'
--- openlp/core/lib/pluginconfig.py 2009-09-08 19:58:05 +0000
+++ openlp/core/lib/pluginconfig.py 2009-09-25 23:10:22 +0000
@@ -107,17 +107,17 @@
107 files = os.listdir(self.get_data_path())107 files = os.listdir(self.get_data_path())
108 except:108 except:
109 return []109 return []
110 if suffix != None:110 if suffix is not None:
111 return_files = []111 return_files = []
112 for f in files:112 for file in files:
113 if f.find(u'.') != -1:113 if file.find(u'.') != -1:
114 nme = f.split(u'.')114 filename = file.split(u'.')
115 bname = nme[0]115 #bname = nme[0]
116 sfx = nme[1].lower()116 filesuffix = filename[1].lower()
117 sfx = sfx.lower()117 filesuffix = filesuffix.lower()
118 # only load files with the correct suffix118 # only load files with the correct suffix
119 if suffix.find(sfx) > -1 :119 if suffix.find(filesuffix) > -1 :
120 return_files.append(f)120 return_files.append(file)
121 return return_files121 return return_files
122 else:122 else:
123 # no filtering required123 # no filtering required
124124
=== modified file 'openlp/core/lib/renderer.py'
--- openlp/core/lib/renderer.py 2009-09-25 00:43:42 +0000
+++ openlp/core/lib/renderer.py 2009-09-25 23:10:22 +0000
@@ -151,7 +151,6 @@
151 The footer of the slide.151 The footer of the slide.
152 """152 """
153 log.debug(u'format_slide - Start')153 log.debug(u'format_slide - Start')
154 verses = []
155 words = words.replace(u'\r\n', u'\n')154 words = words.replace(u'\r\n', u'\n')
156 verses_text = words.split(u'\n')155 verses_text = words.split(u'\n')
157 text = []156 text = []
@@ -174,7 +173,6 @@
174 split_pages = []173 split_pages = []
175 page = []174 page = []
176 split_lines = []175 split_lines = []
177 count = 0
178 for line in text:176 for line in text:
179 #Must be a blank line so keep it.177 #Must be a blank line so keep it.
180 if len(line) == 0:178 if len(line) == 0:
181179
=== modified file 'openlp/core/lib/serviceitem.py'
--- openlp/core/lib/serviceitem.py 2009-09-25 00:43:42 +0000
+++ openlp/core/lib/serviceitem.py 2009-09-25 23:10:22 +0000
@@ -88,7 +88,7 @@
88 self.frames = []88 self.frames = []
89 if self.service_item_type == ServiceType.Text:89 if self.service_item_type == ServiceType.Text:
90 log.debug(u'Formatting slides')90 log.debug(u'Formatting slides')
91 if self.theme == None:91 if self.theme is None:
92 self.RenderManager.set_override_theme(None)92 self.RenderManager.set_override_theme(None)
93 else:93 else:
94 self.RenderManager.set_override_theme(self.theme)94 self.RenderManager.set_override_theme(self.theme)
@@ -114,7 +114,7 @@
114114
115 def render_individual(self, row):115 def render_individual(self, row):
116 log.debug(u'render individual')116 log.debug(u'render individual')
117 if self.theme == None:117 if self.theme is None:
118 self.RenderManager.set_override_theme(None)118 self.RenderManager.set_override_theme(None)
119 else:119 else:
120 self.RenderManager.set_override_theme(self.theme)120 self.RenderManager.set_override_theme(self.theme)
121121
=== modified file 'openlp/core/lib/settingstab.py'
--- openlp/core/lib/settingstab.py 2009-09-25 00:43:42 +0000
+++ openlp/core/lib/settingstab.py 2009-09-25 23:10:22 +0000
@@ -48,7 +48,7 @@
48 self.setupUi()48 self.setupUi()
49 self.retranslateUi()49 self.retranslateUi()
50 self.initialise()50 self.initialise()
51 if section == None:51 if section is None:
52 self.config = PluginConfig(title)52 self.config = PluginConfig(title)
53 else:53 else:
54 self.config = PluginConfig(section)54 self.config = PluginConfig(section)
5555
=== modified file 'openlp/core/test/test_render.py'
--- openlp/core/test/test_render.py 2009-09-25 00:43:42 +0000
+++ openlp/core/test/test_render.py 2009-09-25 23:10:22 +0000
@@ -17,12 +17,13 @@
17"""17"""
1818
19import sys19import sys
20import os, os.path20import os
21import os.path
2122
22from PyQt4 import QtGui, QtCore23from PyQt4 import QtGui, QtCore
2324
24from openlp.core.theme import Theme25from openlp.core.theme import Theme
25from openlp.core import Renderer26from openlp.core.lib import Renderer
2627
27mypath = os.path.split(os.path.abspath(__file__))[0]28mypath = os.path.split(os.path.abspath(__file__))[0]
28sys.path.insert(0, (os.path.join(mypath, '..', '..', '..')))29sys.path.insert(0, (os.path.join(mypath, '..', '..', '..')))
@@ -104,8 +105,8 @@
104 frame = TstFrame(size = self.size)105 frame = TstFrame(size = self.size)
105 self.frame = frame106 self.frame = frame
106 self.paintdest = frame.GetPixmap()107 self.paintdest = frame.GetPixmap()
107 self.r=Renderer()108 self.renderer = Renderer()
108 self.r.set_paint_dest(self.paintdest)109 self.renderer.set_paint_dest(self.paintdest)
109 self.expected_answer = "Don't know yet"110 self.expected_answer = "Don't know yet"
110 self.answer = None111 self.answer = None
111 print "--------------- Setup Done -------------"112 print "--------------- Setup Done -------------"
@@ -119,24 +120,27 @@
119120
120 def setup_method(self, method):121 def setup_method(self, method):
121 TestRender_base.setup_method(self, method)122 TestRender_base.setup_method(self, method)
122 self.r.set_debug(1)123 self.renderer.set_debug(1)
123 themefile = os.path.abspath(u'data_for_tests/render_theme.xml')124 themefile = os.path.abspath(u'data_for_tests/render_theme.xml')
124 self.r.set_theme(Theme(themefile)) # set default theme125 self.renderer.set_theme(Theme(themefile)) # set default theme
125 self.r._render_background()126 self.renderer._render_background()
126 self.r.set_text_rectangle(QtCore.QRect(0,0, self.size.width()-1,127 self.renderer.set_text_rectangle(QtCore.QRect(
127 self.size.height()-1))128 0,0, self.size.width()-1, self.size.height()-1))
128 self.msg = None129 self.msg = None
129130
130 def test_easy(self):131 def test_easy(self):
131 answer = self.r._render_single_line(u'Test line', tlcorner = (0,100))132 answer = self.renderer._render_single_line(
133 u'Test line', tlcorner = (0,100))
132 assert(answer == (219,163))134 assert(answer == (219,163))
135
133 def test_longer(self):136 def test_longer(self):
134 answer = self.r._render_single_line(137 answer = self.renderer._render_single_line(
135 u'Test line with more words than fit on one line',138 u'Test line with more words than fit on one line',
136 tlcorner = (10,10))139 tlcorner = (10,10))
137 assert(answer == (753,136))140 assert(answer == (753,136))
141
138 def test_even_longer(self):142 def test_even_longer(self):
139 answer = self.r._render_single_line(143 answer = self.renderer._render_single_line(
140 u'Test line with more words than fit on either one or two lines',144 u'Test line with more words than fit on either one or two lines',
141 tlcorner = (10,10))145 tlcorner = (10,10))
142 assert(answer == (753,199))146 assert(answer == (753,199))
@@ -146,7 +150,7 @@
146 lines.append(u'Line Two')150 lines.append(u'Line Two')
147 lines.append(u'Line Three and should be long enough to wrap')151 lines.append(u'Line Three and should be long enough to wrap')
148 lines.append(u'Line Four and should be long enough to wrap also')152 lines.append(u'Line Four and should be long enough to wrap also')
149 answer = self.r._render_lines(lines)153 answer = self.renderer._render_lines(lines)
150 assert(answer == QtCore.QRect(0,0,741,378))154 assert(answer == QtCore.QRect(0,0,741,378))
151155
152 def test_set_words_openlp(self):156 def test_set_words_openlp(self):
@@ -161,7 +165,7 @@
161Line 2165Line 2
162Line 3"""166Line 3"""
163 expected_answer = ["Verse 1: Line 1\nLine 2","Verse 2: Line 1\nLine 2","Verse 3: Line 1\nLine 2\nLine 3"]167 expected_answer = ["Verse 1: Line 1\nLine 2","Verse 2: Line 1\nLine 2","Verse 3: Line 1\nLine 2\nLine 3"]
164 answer = self.r.set_words_openlp(words)168 answer = self.renderer.set_words_openlp(words)
165 assert(answer == expected_answer)169 assert(answer == expected_answer)
166170
167 def test_render_screens(self):171 def test_render_screens(self):
@@ -175,14 +179,14 @@
175Verse 3: Line 1179Verse 3: Line 1
176Line 2180Line 2
177Line 3"""181Line 3"""
178 verses = self.r.set_words_openlp(words)182 verses = self.renderer.set_words_openlp(words)
179 expected_answer = ["Verse 1: Line 1\nLine 2","Verse 2: Line 1\nLine 2","Verse 3: Line 1\nLine 2\nLine 3"]183 expected_answer = ["Verse 1: Line 1\nLine 2","Verse 2: Line 1\nLine 2","Verse 3: Line 1\nLine 2\nLine 3"]
180 assert(verses == expected_answer)184 assert(verses == expected_answer)
181185
182 expected_answer = [QtCore.QRect(0,0,397,126), QtCore.QRect(0,0,397,126),186 expected_answer = [QtCore.QRect(0,0,397,126), QtCore.QRect(0,0,397,126),
183 QtCore.QRect(0,0,397,189)]187 QtCore.QRect(0,0,397,189)]
184 for v in range(len(verses)):188 for v in range(len(verses)):
185 answer=self.r.render_screen(v)189 answer=self.renderer.render_screen(v)
186# print v, answer.x(), answer.y(), answer.width(), answer.height()190# print v, answer.x(), answer.y(), answer.width(), answer.height()
187 assert(answer == expected_answer[v])191 assert(answer == expected_answer[v])
188192
@@ -194,11 +198,11 @@
194 if i == 51: # make an extra long line on line 51 to test wrapping198 if i == 51: # make an extra long line on line 51 to test wrapping
195 extra = "Some more words to make it wrap around don't you know until it wraps so many times we don't know what to do"199 extra = "Some more words to make it wrap around don't you know until it wraps so many times we don't know what to do"
196 lines.append(u'Line %d %s' % (i, extra))200 lines.append(u'Line %d %s' % (i, extra))
197 result = self.r.split_set_of_lines(lines)201 result = self.renderer.split_set_of_lines(lines)
198 print "results---------------__", result202 print "results---------------__", result
199 for i in range(len(result)):203 for i in range(len(result)):
200 self.setup_method(None)204 self.setup_method(None)
201 answer = self.r._render_lines(result[i])205 answer = self.renderer._render_lines(result[i])
202 print answer206 print answer
203 self.write_to_file(self.frame.GetPixmap(), "split_test_%03d"% i)207 self.write_to_file(self.frame.GetPixmap(), "split_test_%03d"% i)
204 print number, i, answer.x(), answer.y(), answer.width(), \208 print number, i, answer.x(), answer.y(), answer.width(), \
205209
=== modified file 'openlp/core/test/test_render_theme.py'
--- openlp/core/test/test_render_theme.py 2009-09-25 00:43:42 +0000
+++ openlp/core/test/test_render_theme.py 2009-09-25 23:10:22 +0000
@@ -15,6 +15,7 @@
15this program; if not, write to the Free Software Foundation, Inc., 59 Temple15this program; if not, write to the Free Software Foundation, Inc., 59 Temple
16Place, Suite 330, Boston, MA 02111-1307 USA16Place, Suite 330, Boston, MA 02111-1307 USA
17"""17"""
18
18import sys19import sys
19import os20import os
2021
@@ -33,7 +34,7 @@
33 # how close are they? Calculated the sum of absolute differences in34 # how close are they? Calculated the sum of absolute differences in
34 # each channel of each pixel and divide by the number of pixels in the image35 # each channel of each pixel and divide by the number of pixels in the image
35 # if this sum is < threshold, the images are deemed to be "close enough"36 # if this sum is < threshold, the images are deemed to be "close enough"
36 sad=0;37 sad = 0;
37 for x in range(goldenim.width()):38 for x in range(goldenim.width()):
38 for y in range(goldenim.height()):39 for y in range(goldenim.height()):
39 p1=goldenim.pixel(x,y)40 p1=goldenim.pixel(x,y)
@@ -44,9 +45,7 @@
44 sad /= float(goldenim.width()*goldenim.height())45 sad /= float(goldenim.width()*goldenim.height())
45 if (sad < threshold):46 if (sad < threshold):
46 return 147 return 1
47
48 return 048 return 0
49
5049
51class TestRenderTheme(TestRender_base):50class TestRenderTheme(TestRender_base):
52 # {{{ Basics51 # {{{ Basics
@@ -58,15 +57,15 @@
58 TestRender_base.setup_method(self, method)57 TestRender_base.setup_method(self, method)
59 print "Theme setup", method58 print "Theme setup", method
60# print "setup theme"59# print "setup theme"
61 self.r.set_theme(Theme(u'blank_theme.xml')) # set "blank" theme60 self.renderer.set_theme(Theme(u'blank_theme.xml')) # set "blank" theme
62 self.r.set_text_rectangle(QtCore.QRect(0,0, self.size.width(),61 self.renderer.set_text_rectangle(QtCore.QRect(0,0, self.size.width(),
63 self.size.height()))62 self.size.height()))
64 words = """How sweet the name of Jesus sounds63 words = """How sweet the name of Jesus sounds
65In a believer's ear!64In a believer's ear!
66It soothes his sorrows, heals his wounds,65It soothes his sorrows, heals his wounds,
67And drives away his fear.66And drives away his fear.
68"""67"""
69 verses = self.r.set_words_openlp(words)68 verses = self.renderer.set_words_openlp(words)
70# usually the same69# usually the same
71 self.expected_answer = QtCore.QRect(0, 0, 559, 342)70 self.expected_answer = QtCore.QRect(0, 0, 559, 342)
72 self.msg = None71 self.msg = None
@@ -75,9 +74,9 @@
7574
76 def teardown_method(self, method):75 def teardown_method(self, method):
77 print "============ teardown =============", method, self.bmpname76 print "============ teardown =============", method, self.bmpname
78 if self.bmpname != None:77 if self.bmpname is not None:
79 assert (self.compare_DC_to_file(self.bmpname))78 assert (self.compare_DC_to_file(self.bmpname))
80 if self.expected_answer != None: # result=None => No result to check79 if self.expected_answer is not None: # result=None => Nothing to check
81 assert self.expected_answer == self.answer80 assert self.expected_answer == self.answer
82 print "============ teardown done ========="81 print "============ teardown done ========="
8382
@@ -104,9 +103,9 @@
104 return False103 return False
105104
106 def test_theme_basic(self):105 def test_theme_basic(self):
107 self.answer = self.r.render_screen(0)106 self.answer = self.renderer.render_screen(0)
108 self.bmpname = whoami()107 self.bmpname = whoami()
109 print self.r._theme.FontProportion108 print self.renderer._theme.FontProportion
110 print self.answer, self.expected_answer, \109 print self.answer, self.expected_answer, \
111 self.answer == self.expected_answer110 self.answer == self.expected_answer
112# self.msg=self.bmpname111# self.msg=self.bmpname
@@ -116,20 +115,20 @@
116 # {{{ Gradients115 # {{{ Gradients
117 def test_gradient_h(self):116 def test_gradient_h(self):
118 # normally we wouldn't hack with these directly!117 # normally we wouldn't hack with these directly!
119 self.r._theme.BackgroundType = 1118 self.renderer._theme.BackgroundType = 1
120 self.r._theme.BackgroundParameter1 = QtGui.QColor(255,0,0)119 self.renderer._theme.BackgroundParameter1 = QtGui.QColor(255,0,0)
121 self.r._theme.BackgroundParameter2 = QtGui.QColor(255,255,0)120 self.renderer._theme.BackgroundParameter2 = QtGui.QColor(255,255,0)
122 self.r._theme.BackgroundParameter3 = 1121 self.renderer._theme.BackgroundParameter3 = 1
123 self.answer = self.r.render_screen(0)122 self.answer = self.renderer.render_screen(0)
124 self.bmpname = whoami()123 self.bmpname = whoami()
125124
126 def test_gradient_v(self):125 def test_gradient_v(self):
127 # normally we wouldn't hack with these directly!126 # normally we wouldn't hack with these directly!
128 self.r._theme.BackgroundType = 1127 self.renderer._theme.BackgroundType = 1
129 self.r._theme.BackgroundParameter1 = QtGui.QColor(255,0,0)128 self.renderer._theme.BackgroundParameter1 = QtGui.QColor(255,0,0)
130 self.r._theme.BackgroundParameter2 = QtGui.QColor(255,255,0)129 self.renderer._theme.BackgroundParameter2 = QtGui.QColor(255,255,0)
131 self.r._theme.BackgroundParameter3 = 0130 self.renderer._theme.BackgroundParameter3 = 0
132 self.answer = self.r.render_screen(0)131 self.answer = self.renderer.render_screen(0)
133 self.bmpname = whoami()132 self.bmpname = whoami()
134 # }}}133 # }}}
135134
@@ -142,9 +141,9 @@
142 t.BackgroundParameter2 = QtGui.QColor(0,0,64)141 t.BackgroundParameter2 = QtGui.QColor(0,0,64)
143 t.BackgroundParameter3 = 0142 t.BackgroundParameter3 = 0
144 t.Name = "stretch y"143 t.Name = "stretch y"
145 self.r.set_theme(t)144 self.renderer.set_theme(t)
146 print "render"145 print "render"
147 self.answer = self.r.render_screen(0)146 self.answer = self.renderer.render_screen(0)
148 print "whoami"147 print "whoami"
149 self.bmpname = whoami()148 self.bmpname = whoami()
150 print "fone"149 print "fone"
@@ -156,8 +155,8 @@
156 t.BackgroundParameter2 = QtGui.QColor(0,0,64)155 t.BackgroundParameter2 = QtGui.QColor(0,0,64)
157 t.BackgroundParameter3 = 0156 t.BackgroundParameter3 = 0
158 t.Name = "shrink y"157 t.Name = "shrink y"
159 self.r.set_theme(t)158 self.renderer.set_theme(t)
160 self.answer = self.r.render_screen(0)159 self.answer = self.renderer.render_screen(0)
161 self.bmpname = whoami()160 self.bmpname = whoami()
162161
163 def test_bg_stretch_x(self):162 def test_bg_stretch_x(self):
@@ -169,8 +168,8 @@
169 t.BackgroundParameter3 = 0168 t.BackgroundParameter3 = 0
170 t.VerticalAlign = 2169 t.VerticalAlign = 2
171 t.Name = "stretch x"170 t.Name = "stretch x"
172 self.r.set_theme(t)171 self.renderer.set_theme(t)
173 self.answer = self.r.render_screen(0)172 self.answer = self.renderer.render_screen(0)
174 self.expected_answer = QtCore.QRect(0, 129, 559, 342)173 self.expected_answer = QtCore.QRect(0, 129, 559, 342)
175 self.bmpname = whoami()174 self.bmpname = whoami()
176175
@@ -183,9 +182,9 @@
183 t.BackgroundParameter3 = 0182 t.BackgroundParameter3 = 0
184 t.VerticalAlign = 2183 t.VerticalAlign = 2
185 t.Name = "shrink x"184 t.Name = "shrink x"
186 self.r.set_theme(t)185 self.renderer.set_theme(t)
187 self.expected_answer = QtCore.QRect(0, 129, 559, 342)186 self.expected_answer = QtCore.QRect(0, 129, 559, 342)
188 self.answer = self.r.render_screen(0)187 self.answer = self.renderer.render_screen(0)
189 self.bmpname = whoami()188 self.bmpname = whoami()
190 # }}}189 # }}}
191190
@@ -196,8 +195,8 @@
196 t.BackgroundParameter1 = QtGui.QColor(0,0,64)195 t.BackgroundParameter1 = QtGui.QColor(0,0,64)
197 t.VerticalAlign = 0196 t.VerticalAlign = 0
198 t.Name = "valign top"197 t.Name = "valign top"
199 self.r.set_theme(t)198 self.renderer.set_theme(t)
200 self.answer = self.r.render_screen(0)199 self.answer = self.renderer.render_screen(0)
201 self.bmpname = whoami()200 self.bmpname = whoami()
202201
203 def test_theme_vertical_align_bot(self):202 def test_theme_vertical_align_bot(self):
@@ -206,8 +205,8 @@
206 t.BackgroundParameter1 = QtGui.QColor(0,0,64)205 t.BackgroundParameter1 = QtGui.QColor(0,0,64)
207 t.VerticalAlign = 1206 t.VerticalAlign = 1
208 t.Name = "valign bot"207 t.Name = "valign bot"
209 self.r.set_theme(t)208 self.renderer.set_theme(t)
210 self.answer = self.r.render_screen(0)209 self.answer = self.renderer.render_screen(0)
211 self.expected_answer = QtCore.QRect(0, 257, 559, 342)210 self.expected_answer = QtCore.QRect(0, 257, 559, 342)
212 self.bmpname = whoami()211 self.bmpname = whoami()
213212
@@ -217,8 +216,8 @@
217 t.BackgroundParameter1 = QtGui.QColor(0,0,64)216 t.BackgroundParameter1 = QtGui.QColor(0,0,64)
218 t.VerticalAlign = 2217 t.VerticalAlign = 2
219 t.Name = "valign cen"218 t.Name = "valign cen"
220 self.r.set_theme(t)219 self.renderer.set_theme(t)
221 self.answer = self.r.render_screen(0)220 self.answer = self.renderer.render_screen(0)
222 self.expected_answer = QtCore.QRect(0, 129, 559, 342)221 self.expected_answer = QtCore.QRect(0, 129, 559, 342)
223 self.bmpname = whoami()222 self.bmpname = whoami()
224 # }}}223 # }}}
@@ -231,8 +230,8 @@
231 t.VerticalAlign = 0230 t.VerticalAlign = 0
232 t.HorizontalAlign = 0231 t.HorizontalAlign = 0
233 t.Name = "halign left"232 t.Name = "halign left"
234 self.r.set_theme(t)233 self.renderer.set_theme(t)
235 self.answer = self.r.render_screen(0)234 self.answer = self.renderer.render_screen(0)
236 self.bmpname = whoami()235 self.bmpname = whoami()
237236
238 def test_theme_horizontal_align_right(self):237 def test_theme_horizontal_align_right(self):
@@ -242,9 +241,9 @@
242 t.VerticalAlign = 0241 t.VerticalAlign = 0
243 t.HorizontalAlign = 1242 t.HorizontalAlign = 1
244 t.Name = "halign right"243 t.Name = "halign right"
245 self.r.set_theme(t)244 self.renderer.set_theme(t)
246 self.expected_answer = QtCore.QRect(0, 0, 800, 342)245 self.expected_answer = QtCore.QRect(0, 0, 800, 342)
247 self.answer = self.r.render_screen(0)246 self.answer = self.renderer.render_screen(0)
248 self.bmpname = whoami()247 self.bmpname = whoami()
249248
250 def test_theme_horizontal_align_centre(self):249 def test_theme_horizontal_align_centre(self):
@@ -254,8 +253,8 @@
254 t.VerticalAlign = 0253 t.VerticalAlign = 0
255 t.HorizontalAlign = 2254 t.HorizontalAlign = 2
256 t.Name = "halign centre"255 t.Name = "halign centre"
257 self.r.set_theme(t)256 self.renderer.set_theme(t)
258 self.answer = self.r.render_screen(0)257 self.answer = self.renderer.render_screen(0)
259 self.expected_answer = QtCore.QRect(0, 0, 679, 342)258 self.expected_answer = QtCore.QRect(0, 0, 679, 342)
260 self.bmpname = whoami()259 self.bmpname = whoami()
261260
@@ -267,8 +266,8 @@
267 t.HorizontalAlign = 0266 t.HorizontalAlign = 0
268 t.WrapStyle = 1267 t.WrapStyle = 1
269 t.Name = "halign left lyric"268 t.Name = "halign left lyric"
270 self.r.set_theme(t)269 self.renderer.set_theme(t)
271 self.answer = self.r.render_screen(0)270 self.answer = self.renderer.render_screen(0)
272 self.expected_answer = QtCore.QRect(0, 0, 778, 342)271 self.expected_answer = QtCore.QRect(0, 0, 778, 342)
273 self.bmpname = whoami()272 self.bmpname = whoami()
274 # }}}273 # }}}
@@ -284,11 +283,11 @@
284 t.Outline = 1283 t.Outline = 1
285 t.ShadowColor = QtGui.QColor(64,128,0)284 t.ShadowColor = QtGui.QColor(64,128,0)
286 t.OutlineColor = QtGui.QColor(128,0,0)285 t.OutlineColor = QtGui.QColor(128,0,0)
287 self.r.set_debug(1)286 self.renderer.set_debug(1)
288 self.r.set_theme(t)287 self.renderer.set_theme(t)
289 self.answer = self.r.render_screen(0)288 self.answer = self.renderer.render_screen(0)
290 hoffset = self.r._shadow_offset+2*(self.r._outline_offset)289 hoffset = self.renderer._shadow_offset+2*(self.renderer._outline_offset)
291 voffset = hoffset * (len(self.r.words[0])+1)290 voffset = hoffset * (len(self.renderer.words[0])+1)
292291
293 self.expected_answer = QtCore.QRect(0, 0, 559+hoffset, 342+voffset)292 self.expected_answer = QtCore.QRect(0, 0, 559+hoffset, 342+voffset)
294 self.bmpname = whoami()293 self.bmpname = whoami()
@@ -300,15 +299,14 @@
300 t.BackgroundParameter1 = QtGui.QColor(0,0,64)299 t.BackgroundParameter1 = QtGui.QColor(0,0,64)
301 t.Name = "font"300 t.Name = "font"
302 t.FontName = "Times New Roman"301 t.FontName = "Times New Roman"
303 self.r.set_theme(t)302 self.renderer.set_theme(t)
304 self.answer = self.r.render_screen(0)303 self.answer = self.renderer.render_screen(0)
305 self.expected_answer = QtCore.QRect(0, 0, 499, 336)304 self.expected_answer = QtCore.QRect(0, 0, 499, 336)
306 self.bmpname=whoami()305 self.bmpname=whoami()
307306
308
309if __name__ == "__main__":307if __name__ == "__main__":
310 t = TestRenderTheme()308 test_render_theme = TestRenderTheme()
311 t.setup_class()309 test_render_theme.setup_class()
312 t.setup_method(None)310 test_render_theme.setup_method(None)
313 t.test_bg_stretch_y()311 test_render_theme.test_bg_stretch_y()
314 t.teardown_method(None)312 test_render_theme.teardown_method(None)
315313
=== modified file 'openlp/core/theme/test/test_theme.py'
--- openlp/core/theme/test/test_theme.py 2009-09-06 13:57:32 +0000
+++ openlp/core/theme/test/test_theme.py 2009-09-25 23:10:22 +0000
@@ -1,55 +1,57 @@
1import os1import os
2import os.path
2import sys3import sys
3mypath=os.path.split(os.path.abspath(__file__))[0]4
45from PyQt4 import QtGui
5sys.path.insert(0,(os.path.join(mypath, '..' ,'..', '..', '..')))6
7from openlp.core.theme import Theme
8
9mypath = os.path.split(os.path.abspath(__file__))[0]
10sys.path.insert(0, (os.path.join(mypath, '..', '..', '..', '..')))
11
6print sys.path12print sys.path
713
8from openlp.core.theme import Theme
9import os.path
10from PyQt4 import QtGui
11def test_read_theme():14def test_read_theme():
12 dir=os.path.split(__file__)[0]15 dir = os.path.split(__file__)[0]
13 # test we can read a theme16 # test we can read a theme
14 t=Theme(os.path.join(dir, 'test_theme.xml'))17 theme = Theme(os.path.join(dir, 'test_theme.xml'))
15 print t18 print theme
16 assert(t.BackgroundParameter1 == 'sunset1.jpg')19 assert(theme.BackgroundParameter1 == 'sunset1.jpg')
17 assert(t.BackgroundParameter2 == None)20 assert(theme.BackgroundParameter2 is None)
18 assert(t.BackgroundParameter3 == None)21 assert(theme.BackgroundParameter3 is None)
19 assert(t.BackgroundType == 2)22 assert(theme.BackgroundType == 2)
20 assert(t.FontColor == QtGui.QColor(255,255,255))23 assert(theme.FontColor == QtGui.QColor(255,255,255))
21 assert(t.FontName == 'Tahoma')24 assert(theme.FontName == 'Tahoma')
22 assert(t.FontProportion == 16)25 assert(theme.FontProportion == 16)
23 assert(t.FontUnits == 'pixels')26 assert(theme.FontUnits == 'pixels')
24 assert(t.HorizontalAlign == 2)27 assert(theme.HorizontalAlign == 2)
25 assert(t.Name == 'openlp.org Packaged Theme')28 assert(theme.Name == 'openlp.org Packaged Theme')
26 assert(t.Outline == -1)29 assert(theme.Outline == -1)
27 assert(t.OutlineColor == QtGui.QColor(255,0,0))30 assert(theme.OutlineColor == QtGui.QColor(255,0,0))
28 assert(t.Shadow == -1)31 assert(theme.Shadow == -1)
29 assert(t.ShadowColor == QtGui.QColor(0,0,1))32 assert(theme.ShadowColor == QtGui.QColor(0,0,1))
30 assert(t.VerticalAlign == 0)33 assert(theme.VerticalAlign == 0)
34
31def test_theme():35def test_theme():
32 # test we create a "blank" theme correctly36 # test we create a "blank" theme correctly
33 t=Theme()37 theme = Theme()
34 print t38 print theme
35 assert(t.BackgroundParameter1 == QtGui.QColor(0,0,0))39 assert(theme.BackgroundParameter1 == QtGui.QColor(0,0,0))
36 assert(t.BackgroundParameter2 == None)40 assert(theme.BackgroundParameter2 is None)
37 assert(t.BackgroundParameter3 == None)41 assert(theme.BackgroundParameter3 is None)
38 assert(t.BackgroundType == 0)42 assert(theme.BackgroundType == 0)
39 assert(t.FontColor == QtGui.QColor(255,255,255))43 assert(theme.FontColor == QtGui.QColor(255,255,255))
40 assert(t.FontName == 'Arial')44 assert(theme.FontName == 'Arial')
41 assert(t.FontProportion == 30)45 assert(theme.FontProportion == 30)
42 assert(t.HorizontalAlign == 0)46 assert(theme.HorizontalAlign == 0)
43 assert(t.FontUnits == 'pixels')47 assert(theme.FontUnits == 'pixels')
44 assert(t.Name == 'BlankStyle')48 assert(theme.Name == 'BlankStyle')
45 assert(t.Outline == 0)49 assert(theme.Outline == 0)
46 assert(t.Shadow == 0)50 assert(theme.Shadow == 0)
47 assert(t.VerticalAlign == 0)51 assert(theme.VerticalAlign == 0)
48
49 52
50 print "Tests passed"53 print "Tests passed"
5154
52
53if __name__ == "__main__":55if __name__ == "__main__":
54 test_read_theme()56 test_read_theme()
55 test_theme()57 test_theme()
5658
=== modified file 'openlp/core/ui/amendthemeform.py'
--- openlp/core/ui/amendthemeform.py 2009-09-25 00:43:42 +0000
+++ openlp/core/ui/amendthemeform.py 2009-09-25 23:10:23 +0000
@@ -23,7 +23,8 @@
23###############################################################################23###############################################################################
2424
25import logging25import logging
26import os, os.path26import os
27import os.path
2728
28from PyQt4 import QtCore, QtGui29from PyQt4 import QtCore, QtGui
2930
@@ -178,7 +179,7 @@
178179
179 def loadTheme(self, theme):180 def loadTheme(self, theme):
180 log.debug(u'LoadTheme %s', theme)181 log.debug(u'LoadTheme %s', theme)
181 if theme == None:182 if theme is None:
182 self.theme.parse(self.thememanager.baseTheme())183 self.theme.parse(self.thememanager.baseTheme())
183 else:184 else:
184 xml_file = os.path.join(self.path, theme, theme + u'.xml')185 xml_file = os.path.join(self.path, theme, theme + u'.xml')
185186
=== modified file 'openlp/core/ui/servicemanager.py'
--- openlp/core/ui/servicemanager.py 2009-09-25 00:43:42 +0000
+++ openlp/core/ui/servicemanager.py 2009-09-25 23:10:23 +0000
@@ -420,8 +420,6 @@
420 self.config.set_last_dir(filename)420 self.config.set_last_dir(filename)
421 try:421 try:
422 zip = zipfile.ZipFile(unicode(filename))422 zip = zipfile.ZipFile(unicode(filename))
423 filexml = None
424 themename = None
425 for file in zip.namelist():423 for file in zip.namelist():
426 if os.name == u'nt':424 if os.name == u'nt':
427 winfile = string.replace(file, '/', os.path.sep)425 winfile = string.replace(file, '/', os.path.sep)
428426
=== modified file 'openlp/core/ui/slidecontroller.py'
--- openlp/core/ui/slidecontroller.py 2009-09-25 14:13:33 +0000
+++ openlp/core/ui/slidecontroller.py 2009-09-25 23:10:23 +0000
@@ -292,7 +292,7 @@
292 label = QtGui.QLabel()292 label = QtGui.QLabel()
293 label.setMargin(8)293 label.setMargin(8)
294 #It is a Image294 #It is a Image
295 if frame[u'text'] == None:295 if frame[u'text'] is None:
296 pixmap = self.parent.RenderManager.resize_image(frame[u'image'])296 pixmap = self.parent.RenderManager.resize_image(frame[u'image'])
297 label.setScaledContents(True)297 label.setScaledContents(True)
298 label.setPixmap(QtGui.QPixmap.fromImage(pixmap))298 label.setPixmap(QtGui.QPixmap.fromImage(pixmap))
@@ -340,7 +340,7 @@
340 label = self.PreviewListWidget.cellWidget(row, 0)340 label = self.PreviewListWidget.cellWidget(row, 0)
341 frame = self.serviceitem.frames[row][u'image']341 frame = self.serviceitem.frames[row][u'image']
342 before = time.time()342 before = time.time()
343 if frame == None:343 if frame is None:
344 frame = self.serviceitem.render_individual(row)344 frame = self.serviceitem.render_individual(row)
345 self.SlidePreview.setPixmap(QtGui.QPixmap.fromImage(frame))345 self.SlidePreview.setPixmap(QtGui.QPixmap.fromImage(frame))
346 log.info(u'Slide Rendering took %4s' % (time.time() - before))346 log.info(u'Slide Rendering took %4s' % (time.time() - before))
347347
=== modified file 'openlp/core/ui/test/test_service_manager.py'
--- openlp/core/ui/test/test_service_manager.py 2009-09-25 00:43:42 +0000
+++ openlp/core/ui/test/test_service_manager.py 2009-09-25 23:10:23 +0000
@@ -17,7 +17,8 @@
17"""17"""
1818
19import sys19import sys
20import os, os.path20import os
21import os.path
21import logging22import logging
2223
23from PyQt4 import QtGui24from PyQt4 import QtGui
2425
=== modified file 'openlp/migration/display.py'
--- openlp/migration/display.py 2009-09-08 19:58:05 +0000
+++ openlp/migration/display.py 2009-09-25 23:10:23 +0000
@@ -26,7 +26,7 @@
2626
27class Display():27class Display():
28 global log28 global log
29 log=logging.getLogger(u'Display Logger')29 log = logging.getLogger(u'Display Logger')
30 log.info(u'Display Class loaded')30 log.info(u'Display Class loaded')
3131
32 @staticmethod32 @staticmethod
@@ -36,6 +36,6 @@
3636
37 @staticmethod37 @staticmethod
38 def sub_output(string):38 def sub_output(string):
39 if not string == None:39 if not string is None:
40 log.debug(u' '+string);40 log.debug(u' '+string);
41 print (u' '+string)41 print (u' '+string)
4242
=== modified file 'openlp/migration/migratesongs.py'
--- openlp/migration/migratesongs.py 2009-09-25 00:43:42 +0000
+++ openlp/migration/migratesongs.py 2009-09-25 23:10:23 +0000
@@ -168,7 +168,6 @@
168 author.first_name = u''168 author.first_name = u''
169 author.last_name = u''169 author.last_name = u''
170 else:170 else:
171 id = int(bb[0])
172 author = self.session.query(Author).get(bb[0])171 author = self.session.query(Author).get(bb[0])
173 song.authors.append(author)172 song.authors.append(author)
174 try:173 try:
175174
=== modified file 'openlp/plugins/bibles/forms/bibleimportform.py'
--- openlp/plugins/bibles/forms/bibleimportform.py 2009-09-25 00:43:42 +0000
+++ openlp/plugins/bibles/forms/bibleimportform.py 2009-09-25 23:10:23 +0000
@@ -23,7 +23,8 @@
23###############################################################################23###############################################################################
2424
25import logging25import logging
26import os, os.path26import os
27import os.path
2728
28from PyQt4 import QtCore, QtGui29from PyQt4 import QtCore, QtGui
2930
@@ -33,7 +34,7 @@
3334
34class BibleImportForm(QtGui.QDialog, Ui_BibleImportDialog):35class BibleImportForm(QtGui.QDialog, Ui_BibleImportDialog):
35 global log36 global log
36 log=logging.getLogger(u'BibleImportForm')37 log = logging.getLogger(u'BibleImportForm')
37 log.info(u'BibleImportForm loaded')38 log.info(u'BibleImportForm loaded')
38 """39 """
39 Class documentation goes here.40 Class documentation goes here.
@@ -136,13 +137,16 @@
136 self.checkOsis()137 self.checkOsis()
137138
138 def onProxyAddressEditLostFocus(self):139 def onProxyAddressEditLostFocus(self):
139 self.config.set_config(u'proxy_address', unicode(self.AddressEdit.displayText()))140 self.config.set_config(
141 u'proxy_address', unicode(self.AddressEdit.displayText()))
140142
141 def onProxyUsernameEditLostFocus(self):143 def onProxyUsernameEditLostFocus(self):
142 self.config.set_config(u'proxy_username', unicode(self.UsernameEdit.displayText()))144 self.config.set_config(
145 u'proxy_username', unicode(self.UsernameEdit.displayText()))
143146
144 def onProxyPasswordEditLostFocus(self):147 def onProxyPasswordEditLostFocus(self):
145 self.config.set_config(u'proxy_password', unicode(self.PasswordEdit.displayText()))148 self.config.set_config(
149 u'proxy_password', unicode(self.PasswordEdit.displayText()))
146150
147 def onLocationComboBoxSelected(self):151 def onLocationComboBoxSelected(self):
148 self.checkHttp()152 self.checkHttp()
@@ -161,8 +165,9 @@
161165
162 def onImportButtonClicked(self):166 def onImportButtonClicked(self):
163 message = u'Bible import completed'167 message = u'Bible import completed'
164 if self.biblemanager != None:168 if self.biblemanager is not None:
165 if not self.bible_type == None and len(self.BibleNameEdit.displayText()) > 0:169 if not self.bible_type is None and \
170 len(self.BibleNameEdit.displayText()) > 0:
166 self.MessageLabel.setText(u'Import Started')171 self.MessageLabel.setText(u'Import Started')
167 self.ProgressBar.setMinimum(0)172 self.ProgressBar.setMinimum(0)
168 self.setMax(65)173 self.setMax(65)
@@ -286,7 +291,7 @@
286291
287 def resetScreenFieldStates(self):292 def resetScreenFieldStates(self):
288 # only reset if no bible type set.293 # only reset if no bible type set.
289 if self.bible_type == None:294 if self.bible_type is None:
290 self.BooksLocationEdit.setReadOnly(False)295 self.BooksLocationEdit.setReadOnly(False)
291 self.VerseLocationEdit.setReadOnly(False)296 self.VerseLocationEdit.setReadOnly(False)
292 self.BooksFileButton.setEnabled(True)297 self.BooksFileButton.setEnabled(True)
293298
=== modified file 'openlp/plugins/bibles/lib/bibleDBimpl.py'
--- openlp/plugins/bibles/lib/bibleDBimpl.py 2009-09-25 00:43:42 +0000
+++ openlp/plugins/bibles/lib/bibleDBimpl.py 2009-09-25 23:10:23 +0000
@@ -137,12 +137,12 @@
137137
138 def get_bible_book(self, bookname):138 def get_bible_book(self, bookname):
139 log.debug(u'get_bible_book %s', bookname)139 log.debug(u'get_bible_book %s', bookname)
140 bk = self.session.query(Book).filter(140 book = self.session.query(Book).filter(
141 Book.name.like(bookname + u'%')).first()141 Book.name.like(bookname + u'%')).first()
142 if bk == None:142 if book is None:
143 bk = self.session.query(Book).filter(143 book = self.session.query(Book).filter(
144 Book.abbreviation.like(bookname + u'%')).first()144 Book.abbreviation.like(bookname + u'%')).first()
145 return bk145 return book
146146
147 def get_bible_chapter(self, id, chapter):147 def get_bible_chapter(self, id, chapter):
148 log.debug(u'get_bible_chapter %s, %s', id, chapter)148 log.debug(u'get_bible_chapter %s, %s', id, chapter)
149149
=== modified file 'openlp/plugins/bibles/lib/bibleHTTPimpl.py'
--- openlp/plugins/bibles/lib/bibleHTTPimpl.py 2009-09-25 00:43:42 +0000
+++ openlp/plugins/bibles/lib/bibleHTTPimpl.py 2009-09-25 23:10:23 +0000
@@ -195,19 +195,19 @@
195195
196 Init confirms the bible exists and stores the database path.196 Init confirms the bible exists and stores the database path.
197 """197 """
198 bible = {}198 #bible = {}
199 biblesource = ''199 self.biblesource = ''
200 proxyurl = None200 self.proxyurl = None
201 bibleid = None201 self.bibleid = None
202202
203 def set_proxy(self,proxyurl):203 def set_proxy(self, proxyurl):
204 """204 """
205 Set the Proxy Url205 Set the Proxy Url
206 """206 """
207 log.debug(u'set_proxy %s', proxyurl)207 log.debug(u'set_proxy %s', proxyurl)
208 self.proxyurl = proxyurl208 self.proxyurl = proxyurl
209209
210 def set_bibleid(self,bibleid):210 def set_bibleid(self, bibleid):
211 """211 """
212 Set the bible id.212 Set the bible id.
213 The shore identifier of the the bible.213 The shore identifier of the the bible.
@@ -215,7 +215,7 @@
215 log.debug(u'set_bibleid %s', bibleid)215 log.debug(u'set_bibleid %s', bibleid)
216 self.bibleid = bibleid216 self.bibleid = bibleid
217217
218 def set_bible_source(self,biblesource):218 def set_bible_source(self, biblesource):
219 """219 """
220 Set the source of where the bible text is coming from220 Set the source of where the bible text is coming from
221 """221 """
@@ -235,6 +235,5 @@
235 else:235 else:
236 ev = BGExtract(self.proxyurl)236 ev = BGExtract(self.proxyurl)
237 return ev.get_bible_chapter(self.bibleid, bookid, bookname, chapter)237 return ev.get_bible_chapter(self.bibleid, bookid, bookname, chapter)
238 except Exception, e:238 except:
239 log.error(u'Error thrown = %s', e.args[0])239 log.exception("Failed to get bible chapter")
240 print e
241240
=== modified file 'openlp/plugins/bibles/lib/bibleOSISimpl.py'
--- openlp/plugins/bibles/lib/bibleOSISimpl.py 2009-09-25 00:43:42 +0000
+++ openlp/plugins/bibles/lib/bibleOSISimpl.py 2009-09-25 23:10:23 +0000
@@ -90,7 +90,7 @@
90 detect_file.close()90 detect_file.close()
91 osis = codecs.open(osisfile_record, u'r', details['encoding'])91 osis = codecs.open(osisfile_record, u'r', details['encoding'])
92 book_ptr = None92 book_ptr = None
93 id = 093 #id = 0
94 count = 094 count = 0
95 verseText = u'<verse osisID='95 verseText = u'<verse osisID='
96 testament = 196 testament = 1
@@ -138,7 +138,7 @@
138 p = ref.split(u'.', 3)138 p = ref.split(u'.', 3)
139 if book_ptr != p[0]:139 if book_ptr != p[0]:
140 # first time through140 # first time through
141 if book_ptr == None:141 if book_ptr is None:
142 # set the max book size depending on the first book read142 # set the max book size depending on the first book read
143 if p[0] == u'Gen':143 if p[0] == u'Gen':
144 dialogobject.setMax(65)144 dialogobject.setMax(65)
145145
=== modified file 'openlp/plugins/bibles/lib/manager.py'
--- openlp/plugins/bibles/lib/manager.py 2009-09-25 00:43:42 +0000
+++ openlp/plugins/bibles/lib/manager.py 2009-09-25 23:10:23 +0000
@@ -39,7 +39,7 @@
39 The Bible manager which holds and manages all the Bibles.39 The Bible manager which holds and manages all the Bibles.
40 """40 """
41 global log41 global log
42 log=logging.getLogger(u'BibleManager')42 log = logging.getLogger(u'BibleManager')
43 log.info(u'Bible manager loaded')43 log.info(u'Bible manager loaded')
4444
45 def __init__(self, config):45 def __init__(self, config):
@@ -102,7 +102,7 @@
102 # look to see if lazy load bible exists and get create getter.102 # look to see if lazy load bible exists and get create getter.
103 meta = self.bible_db_cache[bname].get_meta(u'proxy')103 meta = self.bible_db_cache[bname].get_meta(u'proxy')
104 proxy = None104 proxy = None
105 if meta != None:105 if meta is not None:
106 proxy = meta.value106 proxy = meta.value
107 # tell The Server where to get the verses from.107 # tell The Server where to get the verses from.
108 nhttp.set_proxy(proxy)108 nhttp.set_proxy(proxy)
@@ -177,14 +177,14 @@
177 nbible.save_meta(u'WEB', biblesource)177 nbible.save_meta(u'WEB', biblesource)
178 # store the web id of the bible178 # store the web id of the bible
179 nbible.save_meta(u'bibleid', bibleid)179 nbible.save_meta(u'bibleid', bibleid)
180 if proxyurl != None and proxyurl != "":180 if proxyurl is not None and proxyurl != "":
181 # store the proxy URL181 # store the proxy URL
182 nbible.save_meta(u'proxy', proxyurl)182 nbible.save_meta(u'proxy', proxyurl)
183 nhttp.set_proxy(proxyurl)183 nhttp.set_proxy(proxyurl)
184 if proxyid != None and proxyid != "":184 if proxyid is not None and proxyid != "":
185 # store the proxy userid185 # store the proxy userid
186 nbible.save_meta(u'proxyid', proxyid)186 nbible.save_meta(u'proxyid', proxyid)
187 if proxypass != None and proxypass != "":187 if proxypass is not None and proxypass != "":
188 # store the proxy password188 # store the proxy password
189 nbible.save_meta(u'proxypass', proxypass)189 nbible.save_meta(u'proxypass', proxypass)
190 return True190 return True
@@ -329,8 +329,8 @@
329 # check to see if book/chapter exists fow HTTP bibles and load cache329 # check to see if book/chapter exists fow HTTP bibles and load cache
330 # if necessary330 # if necessary
331 if self.bible_http_cache[bible] is not None:331 if self.bible_http_cache[bible] is not None:
332 book= self.bible_db_cache[bible].get_bible_book(bookname)332 book = self.bible_db_cache[bible].get_bible_book(bookname)
333 if book == None:333 if book is None:
334 self.media.setQuickMsg1(u'Downloading')334 self.media.setQuickMsg1(u'Downloading')
335 log.debug(u'get_verse_text : new book')335 log.debug(u'get_verse_text : new book')
336 for chapter in range(schapter, echapter + 1):336 for chapter in range(schapter, echapter + 1):
@@ -347,7 +347,7 @@
347 # check to see if book/chapter exists347 # check to see if book/chapter exists
348 book = self.bible_db_cache[bible].get_bible_book(348 book = self.bible_db_cache[bible].get_bible_book(
349 bookname)349 bookname)
350 if book == None:350 if book is None:
351 ## Then create book, chapter and text351 ## Then create book, chapter and text
352 book = self.bible_db_cache[bible].create_book(352 book = self.bible_db_cache[bible].create_book(
353 bookname, self.book_abbreviations[bookname],353 bookname, self.book_abbreviations[bookname],
@@ -361,7 +361,7 @@
361 ## Book exists check chapter and texts only.361 ## Book exists check chapter and texts only.
362 v = self.bible_db_cache[bible].get_bible_chapter(362 v = self.bible_db_cache[bible].get_bible_chapter(
363 book.id, chapter)363 book.id, chapter)
364 if v == None:364 if v is None:
365 self.media.setQuickMsg2(u'%s: %s'% (365 self.media.setQuickMsg2(u'%s: %s'% (
366 bookname, chapter))366 bookname, chapter))
367 self.bible_db_cache[bible].create_chapter(367 self.bible_db_cache[bible].create_chapter(
@@ -372,7 +372,7 @@
372 for chapter in range(schapter, echapter + 1):372 for chapter in range(schapter, echapter + 1):
373 v = self.bible_db_cache[bible].get_bible_chapter(373 v = self.bible_db_cache[bible].get_bible_chapter(
374 book.id, chapter)374 book.id, chapter)
375 if v == None:375 if v is None:
376 try:376 try:
377 self.media.setQuickMsg1(u'Downloading')377 self.media.setQuickMsg1(u'Downloading')
378 self.media.setQuickMsg2(u'%s: %s'% \378 self.media.setQuickMsg2(u'%s: %s'% \
@@ -411,8 +411,8 @@
411 """411 """
412 Check cache to see if new bible412 Check cache to see if new bible
413 """413 """
414 for b, o in self.bible_db_cache.iteritems():414 for bible, o in self.bible_db_cache.iteritems():
415 log.debug(u'Bible from cache in is_new_bible %s', b )415 log.debug(u'Bible from cache in is_new_bible %s', bible)
416 if b == name :416 if bible == name:
417 return False417 return False
418 return True418 return True
419419
=== modified file 'openlp/plugins/bibles/lib/mediaitem.py'
--- openlp/plugins/bibles/lib/mediaitem.py 2009-09-25 00:43:42 +0000
+++ openlp/plugins/bibles/lib/mediaitem.py 2009-09-25 23:10:23 +0000
@@ -315,14 +315,14 @@
315 self.adjustComboBox(frm, self.verses, self.AdvancedToVerse)315 self.adjustComboBox(frm, self.verses, self.AdvancedToVerse)
316316
317 def onAdvancedToChapter(self):317 def onAdvancedToChapter(self):
318 t1 = self.AdvancedFromChapter.currentText()318 text1 = self.AdvancedFromChapter.currentText()
319 t2 = self.AdvancedToChapter.currentText()319 text2 = self.AdvancedToChapter.currentText()
320 if t1 != t2:320 if text1 != text2:
321 bible = unicode(self.AdvancedVersionComboBox.currentText())321 bible = unicode(self.AdvancedVersionComboBox.currentText())
322 book = unicode(self.AdvancedBookComboBox.currentText())322 book = unicode(self.AdvancedBookComboBox.currentText())
323 # get the verse count for new chapter323 # get the verse count for new chapter
324 verses = self.parent.biblemanager.get_book_verse_count(324 verses = self.parent.biblemanager.get_book_verse_count(
325 bible, book, int(t2))[0]325 bible, book, int(text2))[0]
326 self.adjustComboBox(1, verses, self.AdvancedToVerse)326 self.adjustComboBox(1, verses, self.AdvancedToVerse)
327327
328 def onAdvancedSearchButton(self):328 def onAdvancedSearchButton(self):
@@ -482,7 +482,7 @@
482 start_verse = u''482 start_verse = u''
483 end_verse = u''483 end_verse = u''
484 search = search.replace(u' ', u' ').strip()484 search = search.replace(u' ', u' ').strip()
485 original = search485 #original = search
486 message = None486 message = None
487 # Remove book beware 0 index arrays487 # Remove book beware 0 index arrays
488 for i in range (len(search)-1, 0, - 1):488 for i in range (len(search)-1, 0, - 1):
@@ -547,7 +547,7 @@
547 log.debug(u'results = %s @ %s : %s @ %s : %s'% \547 log.debug(u'results = %s @ %s : %s @ %s : %s'% \
548 (unicode(book), unicode(start_chapter), unicode(end_chapter),548 (unicode(book), unicode(start_chapter), unicode(end_chapter),
549 unicode(start_verse), unicode(end_verse)))549 unicode(start_verse), unicode(end_verse)))
550 if message == None:550 if message is None:
551 self.search_results = None551 self.search_results = None
552 self.search_results = self.parent.biblemanager.get_verse_text(552 self.search_results = self.parent.biblemanager.get_verse_text(
553 bible, book, int(start_chapter), int(end_chapter),553 bible, book, int(start_chapter), int(end_chapter),
554554
=== modified file 'openlp/plugins/bibles/test/test_bibleManager.py'
--- openlp/plugins/bibles/test/test_bibleManager.py 2009-09-25 00:43:42 +0000
+++ openlp/plugins/bibles/test/test_bibleManager.py 2009-09-25 23:10:23 +0000
@@ -17,7 +17,8 @@
17"""17"""
1818
19import logging19import logging
20import os, os.path20import os
21import os.path
21import sys22import sys
2223
23from openlp.plugins.bibles.lib.biblemanager import BibleManager24from openlp.plugins.bibles.lib.biblemanager import BibleManager
2425
=== modified file 'openlp/plugins/bibles/test/test_bibleManagerAPI.py'
--- openlp/plugins/bibles/test/test_bibleManagerAPI.py 2009-09-25 00:43:42 +0000
+++ openlp/plugins/bibles/test/test_bibleManagerAPI.py 2009-09-25 23:10:23 +0000
@@ -17,7 +17,8 @@
17"""17"""
1818
19import logging19import logging
20import os, os.path20import os
21import os.path
21import sys22import sys
2223
23from openlp.plugins.biblemanager.bibleManager import BibleManager24from openlp.plugins.biblemanager.bibleManager import BibleManager
2425
=== modified file 'openlp/plugins/bibles/test/test_bibleManagerCSV.py'
--- openlp/plugins/bibles/test/test_bibleManagerCSV.py 2009-09-25 00:43:42 +0000
+++ openlp/plugins/bibles/test/test_bibleManagerCSV.py 2009-09-25 23:10:23 +0000
@@ -17,7 +17,8 @@
17"""17"""
1818
19import logging19import logging
20import os, os.path20import os
21import os.path
21import sys22import sys
2223
23from openlp.plugins.bibles.lib.biblemanager import BibleManager24from openlp.plugins.bibles.lib.biblemanager import BibleManager
2425
=== modified file 'openlp/plugins/bibles/test/test_bibleManagerOSIS.py'
--- openlp/plugins/bibles/test/test_bibleManagerOSIS.py 2009-09-25 00:43:42 +0000
+++ openlp/plugins/bibles/test/test_bibleManagerOSIS.py 2009-09-25 23:10:23 +0000
@@ -17,7 +17,8 @@
17"""17"""
1818
19import logging19import logging
20import os, os.path20import os
21import os.path
21import sys22import sys
2223
23from openlp.plugins.bibles.lib.biblemanager import BibleManager24from openlp.plugins.bibles.lib.biblemanager import BibleManager
2425
=== modified file 'openlp/plugins/presentations/lib/impresscontroller.py'
--- openlp/plugins/presentations/lib/impresscontroller.py 2009-09-25 00:43:42 +0000
+++ openlp/plugins/presentations/lib/impresscontroller.py 2009-09-25 23:10:23 +0000
@@ -112,7 +112,7 @@
112 context = uno.getComponentContext()112 context = uno.getComponentContext()
113 resolver = context.ServiceManager.createInstanceWithContext(113 resolver = context.ServiceManager.createInstanceWithContext(
114 u'com.sun.star.bridge.UnoUrlResolver', context)114 u'com.sun.star.bridge.UnoUrlResolver', context)
115 while ctx == None and loop < 3:115 while ctx is None and loop < 3:
116 try:116 try:
117 ctx = resolver.resolve(u'uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext')117 ctx = resolver.resolve(u'uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext')
118 except:118 except:
119119
=== modified file 'openlp/plugins/presentations/lib/powerpointcontroller.py'
--- openlp/plugins/presentations/lib/powerpointcontroller.py 2009-09-13 07:39:48 +0000
+++ openlp/plugins/presentations/lib/powerpointcontroller.py 2009-09-25 23:10:23 +0000
@@ -47,9 +47,9 @@
47 self._app.WindowState = 247 self._app.WindowState = 2
4848
49 def getApp(self):49 def getApp(self):
50 if self._app == None:50 if self._app is None:
51 self.createApp()51 self.createApp()
52 if self._app == None:52 if self._app is None:
53 return None53 return None
54 if self._app.Windows.Count == 0:54 if self._app.Windows.Count == 0:
55 self.createApp()55 self.createApp()
@@ -69,17 +69,17 @@
69 self.open()69 self.open()
7070
71 def getPres(self):71 def getPres(self):
72 if self._pres == None:72 if self._pres is None:
73 for p in self.pptApp.app.Presentations:73 for p in self.pptApp.app.Presentations:
74 if p.FullName == self.filename:74 if p.FullName == self.filename:
75 self._pres = p75 self._pres = p
76 break76 break
77 if self._pres != None:77 if self._pres is not None:
78 try:78 try:
79 x = self._pres.Name79 x = self._pres.Name
80 except:80 except:
81 self._pres = None81 self._pres = None
82 if self._pres == None:82 if self._pres is None:
83 self.openPres()83 self.openPres()
84 return self._pres84 return self._pres
8585
@@ -94,9 +94,9 @@
94 self._pres = None94 self._pres = None
9595
96 def isActive(self):96 def isActive(self):
97 if self.pres.SlideShowWindow == None:97 if self.pres.SlideShowWindow is None:
98 return False98 return False
99 if self.pres.SlideShowWindow.View == None:99 if self.pres.SlideShowWindow.View is None:
100 return False100 return False
101 return True101 return True
102102
@@ -157,7 +157,7 @@
157 self.slide = pres.Slides[index]157 self.slide = pres.Slides[index]
158158
159 def preview(self):159 def preview(self):
160 if self.preview == None:160 if self.preview is None:
161 self.slide.Copy161 self.slide.Copy
162 # import win32clipboard as w162 # import win32clipboard as w
163 # import win32con163 # import win32con
@@ -165,4 +165,3 @@
165 # self.preview = w.GetClipboardData.GetData(win32con.CF_BITMAP)165 # self.preview = w.GetClipboardData.GetData(win32con.CF_BITMAP)
166 # w.CloseClipboard()166 # w.CloseClipboard()
167 return self.preview167 return self.preview
168
169168
=== modified file 'openlp/plugins/songs/lib/manager.py'
--- openlp/plugins/songs/lib/manager.py 2009-09-25 00:43:42 +0000
+++ openlp/plugins/songs/lib/manager.py 2009-09-25 23:10:23 +0000
@@ -219,7 +219,7 @@
219 self.session.add(book)219 self.session.add(book)
220 self.session.commit()220 self.session.commit()
221 return True221 return True
222 except Exception, e:222 except:
223 self.session.rollback()223 self.session.rollback()
224 log.exception(u'Could not save book to song database')224 log.exception(u'Could not save book to song database')
225 return False225 return False
226226
=== modified file 'openlp/plugins/songs/lib/mediaitem.py'
--- openlp/plugins/songs/lib/mediaitem.py 2009-09-25 00:43:42 +0000
+++ openlp/plugins/songs/lib/mediaitem.py 2009-09-25 23:10:23 +0000
@@ -270,7 +270,7 @@
270 self.ListView.takeItem(row)270 self.ListView.takeItem(row)
271271
272 def generateSlideData(self, service_item):272 def generateSlideData(self, service_item):
273 raw_slides =[]273 #raw_slides =[]
274 raw_footer = []274 raw_footer = []
275 author_list = u''275 author_list = u''
276 author_audit = []276 author_audit = []
@@ -297,7 +297,7 @@
297 author_list = author_list + u', '297 author_list = author_list + u', '
298 author_list = author_list + unicode(author.display_name)298 author_list = author_list + unicode(author.display_name)
299 author_audit.append(unicode(author.display_name))299 author_audit.append(unicode(author.display_name))
300 if song.ccli_number == None or len(song.ccli_number) == 0:300 if song.ccli_number is None or len(song.ccli_number) == 0:
301 ccl = self.parent.settings.GeneralTab.CCLNumber301 ccl = self.parent.settings.GeneralTab.CCLNumber
302 else:302 else:
303 ccl = unicode(song.ccli_number)303 ccl = unicode(song.ccli_number)
304304
=== modified file 'openlp/plugins/songs/lib/songxml.py'
--- openlp/plugins/songs/lib/songxml.py 2009-09-21 17:56:36 +0000
+++ openlp/plugins/songs/lib/songxml.py 2009-09-25 23:10:23 +0000
@@ -24,7 +24,8 @@
2424
25import sys25import sys
26import os26import os
27from types import StringType, ListType, NoneType27
28from types import StringType, ListType
2829
29sys.path.append(os.path.abspath(u'./../../../..'))30sys.path.append(os.path.abspath(u'./../../../..'))
3031
@@ -84,7 +85,7 @@
84 def from_buffer(self, xmlContent):85 def from_buffer(self, xmlContent):
85 """Initialize from buffer(string) with xml content"""86 """Initialize from buffer(string) with xml content"""
86 self._reset()87 self._reset()
87 if xmlContent != None :88 if xmlContent is not None:
88 self._setFromXml(xmlContent, 'song')89 self._setFromXml(xmlContent, 'song')
8990
90 def get_author_list(self):91 def get_author_list(self):
@@ -94,9 +95,9 @@
94 return as a string95 return as a string
95 """96 """
96 res = []97 res = []
97 if self.author != None :98 if self.author is not None:
98 lst = self.author.split(u' and ')99 lst = self.author.split(u' and ')
99 for l in lst :100 for l in lst:
100 res.append(l.strip())101 res.append(l.strip())
101 s = u', '.join(res)102 s = u', '.join(res)
102 return s103 return s
@@ -107,9 +108,9 @@
107 return as a string108 return as a string
108 """109 """
109 res = []110 res = []
110 if self.theme != None :111 if self.theme is not None:
111 res.append(self.theme)112 res.append(self.theme)
112 if self.alttheme != None :113 if self.alttheme is not None:
113 res.append(self.alttheme)114 res.append(self.alttheme)
114 s = u', u'.join(res)115 s = u', u'.join(res)
115 return s116 return s
@@ -123,25 +124,25 @@
123 res = []124 res = []
124 for c in '1234567890 ':125 for c in '1234567890 ':
125 tagPending = True126 tagPending = True
126 for l in tmpVerse :127 for l in tmpVerse:
127 if l.startswith(c) :128 if l.startswith(c):
128 if tagPending :129 if tagPending:
129 tagPending = False130 tagPending = False
130 t = tag.strip(u'[]').lower()131 t = tag.strip(u'[]').lower()
131 if 'v' == t :132 if 'v' == t:
132 newtag = "Verse"133 newtag = "Verse"
133 elif 'c' == t :134 elif 'c' == t:
134 newtag = "Chorus"135 newtag = "Chorus"
135 elif 'b' == t :136 elif 'b' == t:
136 newtag = "Bridge"137 newtag = "Bridge"
137 elif 'p' == t :138 elif 'p' == t:
138 newtag = "Pre-chorus"139 newtag = "Pre-chorus"
139 else :140 else:
140 newtag = t141 newtag = t
141 s = (u'# %s %s'%(newtag, c)).rstrip()142 s = (u'# %s %s'%(newtag, c)).rstrip()
142 res.append(s)143 res.append(s)
143 res.append(l[1:])144 res.append(l[1:])
144 if (len(l) == 0) and (not tagPending) :145 if (len(l) == 0) and (not tagPending):
145 res.append(l)146 res.append(l)
146 return res147 return res
147148
@@ -156,13 +157,13 @@
156 tag = ""157 tag = ""
157 for l in lyrics:158 for l in lyrics:
158 line = l.rstrip()159 line = l.rstrip()
159 if not line.startswith(u'.') :160 if not line.startswith(u'.'):
160 # drop all chords161 # drop all chords
161 tmpVerse.append(line)162 tmpVerse.append(line)
162 if len(line) > 0 :163 if len(line) > 0:
163 if line.startswith(u'['):164 if line.startswith(u'['):
164 tag = line165 tag = line
165 else :166 else:
166 r = self._reorder_verse(tag, tmpVerse)167 r = self._reorder_verse(tag, tmpVerse)
167 finalLyrics.extend(r)168 finalLyrics.extend(r)
168 tag = ""169 tag = ""
@@ -173,12 +174,12 @@
173 return finalLyrics174 return finalLyrics
174175
175176
176class Song(object) :177class Song(object):
177 """Handling song properties and methods178 """Handling song properties and methods
178179
179 handles all conversions between various input and output formats180 handles all conversions between various input and output formats
180181
181 CCLI :182 CCLI:
182 from_ccli_text_file183 from_ccli_text_file
183 to_ccli_text_file184 to_ccli_text_file
184 from_ccli_text_buffer185 from_ccli_text_buffer
@@ -195,13 +196,13 @@
195 get_preview_slide196 get_preview_slide
196 get_render_slide197 get_render_slide
197198
198 openlp1 :199 openlp1:
199 from_openlp1_lyrics_buffer200 from_openlp1_lyrics_buffer
200 to_openlp1_lyrics_buffer201 to_openlp1_lyrics_buffer
201 set_author_list202 set_author_list
202 get_author_list203 get_author_list
203204
204 editing and openlp2 :205 editing and openlp2:
205 set_*206 set_*
206 get_*207 get_*
207 """208 """
@@ -263,13 +264,13 @@
263 """Initialize from buffer(string) of xml lines in opensong format"""264 """Initialize from buffer(string) of xml lines in opensong format"""
264 self._reset()265 self._reset()
265 opensong = _OpenSong(xmlcontent)266 opensong = _OpenSong(xmlcontent)
266 if opensong.title != None:267 if opensong.title is not None:
267 self.set_title(opensong.title)268 self.set_title(opensong.title)
268 if opensong.copyright != None :269 if opensong.copyright is not None:
269 self.set_copyright(opensong.copyright)270 self.set_copyright(opensong.copyright)
270 if opensong.presentation != None:271 if opensong.presentation is not None:
271 self.set_verse_order(opensong.presentation)272 self.set_verse_order(opensong.presentation)
272 if opensong.ccli != None:273 if opensong.ccli is not None:
273 self.set_song_cclino(opensong.ccli)274 self.set_song_cclino(opensong.ccli)
274 self.set_author_list(opensong.get_author_list())275 self.set_author_list(opensong.get_author_list())
275 self.set_category_array(opensong.get_category_array())276 self.set_category_array(opensong.get_category_array())
@@ -282,7 +283,7 @@
282 """283 """
283 lst = []284 lst = []
284 f = open(xmlfilename, 'r')285 f = open(xmlfilename, 'r')
285 for line in f :286 for line in f:
286 lst.append(line)287 lst.append(line)
287 f.close()288 f.close()
288 xml = "".join(lst)289 xml = "".join(lst)
@@ -295,7 +296,7 @@
295 """296 """
296 punctuation = ".,:;!?&%#'\"/\\@`$|^~*-"297 punctuation = ".,:;!?&%#'\"/\\@`$|^~*-"
297 s = title298 s = title
298 for c in punctuation :299 for c in punctuation:
299 s = s.replace(c, '')300 s = s.replace(c, '')
300 return s301 return s
301302
@@ -308,9 +309,9 @@
308 """309 """
309 self.title = title.strip()310 self.title = title.strip()
310 self.search_title = self._remove_punctuation(title).strip()311 self.search_title = self._remove_punctuation(title).strip()
311 if len(self.title) < 1 :312 if len(self.title) < 1:
312 raise SongTitleError(u'The title is empty')313 raise SongTitleError(u'The title is empty')
313 if len(self.search_title) < 1 :314 if len(self.search_title) < 1:
314 raise SongTitleError(u'The searchable title is empty')315 raise SongTitleError(u'The searchable title is empty')
315316
316 def get_title(self):317 def get_title(self):
@@ -340,32 +341,32 @@
340 n = 0341 n = 0
341 metMisc = False342 metMisc = False
342 lyrics = []343 lyrics = []
343 for l in textList :344 for l in textList:
344 n += 1345 n += 1
345 if lastpart > 0 :346 if lastpart > 0:
346 lastpart += 1347 lastpart += 1
347 if lastpart == 2 :348 if lastpart == 2:
348 sCopyright = l[1:].strip()349 sCopyright = l[1:].strip()
349 if lastpart == 3 :350 if lastpart == 3:
350 sAuthor = l351 sAuthor = l
351 elif l.startswith(u'CCLI Song') :352 elif l.startswith(u'CCLI Song'):
352 sCcli = l[13:].strip()353 sCcli = l[13:].strip()
353 lastpart = 1354 lastpart = 1
354 else :355 else:
355 if metMisc :356 if metMisc:
356 metMisc = False357 metMisc = False
357 if l.upper().startswith(u'(BRIDGE)') :358 if l.upper().startswith(u'(BRIDGE)'):
358 lyrics.append(u'# Bridge')359 lyrics.append(u'# Bridge')
359 # otherwise unknown misc keyword360 # otherwise unknown misc keyword
360 elif l.startswith(u'Misc') :361 elif l.startswith(u'Misc'):
361 metMisc = True362 metMisc = True
362 elif l.startswith(u'Verse') or l.startswith(u'Chorus'):363 elif l.startswith(u'Verse') or l.startswith(u'Chorus'):
363 lyrics.append(u'# %s'%l)364 lyrics.append(u'# %s'%l)
364 else :365 else:
365 # should we remove multiple blank lines?366 # should we remove multiple blank lines?
366 if n == 1 :367 if n == 1:
367 sName = l368 sName = l
368 else :369 else:
369 lyrics.append(l)370 lyrics.append(l)
370 # split on known separators371 # split on known separators
371 lst = sAuthor.split(u'/')372 lst = sAuthor.split(u'/')
@@ -390,33 +391,33 @@
390 f.close()391 f.close()
391 self.from_ccli_text_buffer(lines)392 self.from_ccli_text_buffer(lines)
392393
393 def _assure_string(self, s):394 def _assure_string(self, string_in):
394 """Force a string is returned"""395 """Force a string is returned"""
395 if s == None :396 if string_in is None:
396 r = ""397 string_out = ""
397 else :398 else:
398 r = unicode(s)399 string_out = unicode(s)
399 return r400 return string_out
400401
401 def _split_to_list(self, aString):402 def _split_to_list(self, aString):
402 """Split a string into a list - comma separated"""403 """Split a string into a list - comma separated"""
403 res = []404 res = []
404 if aString != None :405 if aString is not None:
405 lst = aString.split(u',')406 lst = aString.split(u',')
406 for l in lst :407 for l in lst:
407 # remove whitespace408 # remove whitespace
408 res.append(l.strip())409 res.append(l.strip())
409 return res410 return res
410411
411 def _list_to_string(self, strOrList):412 def _list_to_string(self, strOrList):
412 """Force a possibly list into a string"""413 """Force a possibly list into a string"""
413 if type(strOrList) == StringType :414 if type(strOrList) == StringType:
414 lst = self._split_to_list(strOrList)415 lst = self._split_to_list(strOrList)
415 elif type(strOrList) == ListType :416 elif type(strOrList) == ListType:
416 lst = strOrList417 lst = strOrList
417 elif type(strOrList) == NoneType :418 elif strOrList is None:
418 lst = []419 lst = []
419 else :420 else:
420 raise SongTypeError(u'Variable not String or List')421 raise SongTypeError(u'Variable not String or List')
421 s = u', '.join(lst)422 s = u', '.join(lst)
422 return s423 return s
@@ -486,9 +487,9 @@
486 False -- list of strings487 False -- list of strings
487 ["John Newton", u'A Parker"]488 ["John Newton", u'A Parker"]
488 """489 """
489 if asOneString :490 if asOneString:
490 res = self._assure_string(self.author_list)491 res = self._assure_string(self.author_list)
491 else :492 else:
492 res = self._split_to_list(self.author_list)493 res = self._split_to_list(self.author_list)
493 return res494 return res
494495
@@ -497,9 +498,9 @@
497498
498 author_list -- a string or list of strings499 author_list -- a string or list of strings
499 """500 """
500 if author_list == None :501 if author_list is None:
501 self.author_list = None502 self.author_list = None
502 else :503 else:
503 self.author_list = self._list_to_string(author_list)504 self.author_list = self._list_to_string(author_list)
504505
505 def get_category_array(self, asOneString = True):506 def get_category_array(self, asOneString = True):
@@ -511,9 +512,9 @@
511 False -- list of strings512 False -- list of strings
512 ["Hymn", u'Gospel"]513 ["Hymn", u'Gospel"]
513 """514 """
514 if asOneString :515 if asOneString:
515 res = self._assure_string(self.category_array)516 res = self._assure_string(self.category_array)
516 else :517 else:
517 res = self._split_to_list(self.category_array)518 res = self._split_to_list(self.category_array)
518 return res519 return res
519520
@@ -522,9 +523,9 @@
522523
523 category_array -- a string or list of strings524 category_array -- a string or list of strings
524 """525 """
525 if category_array == None :526 if category_array is None:
526 self.category_array = None527 self.category_array = None
527 else :528 else:
528 self.category_array = self._list_to_string(category_array)529 self.category_array = self._list_to_string(category_array)
529530
530 def get_show_title(self):531 def get_show_title(self):
@@ -577,12 +578,12 @@
577 self.slideList = []578 self.slideList = []
578 tmpSlide = []579 tmpSlide = []
579 metContent = False580 metContent = False
580 for l in self.lyrics :581 for l in self.lyrics:
581 if len(l) > 0 :582 if len(l) > 0:
582 metContent = True583 metContent = True
583 tmpSlide.append(l)584 tmpSlide.append(l)
584 else :585 else:
585 if metContent :586 if metContent:
586 metContent = False587 metContent = False
587 self.slideList.append(tmpSlide)588 self.slideList.append(tmpSlide)
588 tmpSlide = []589 tmpSlide = []
@@ -598,22 +599,22 @@
598 def get_preview_slide(self, slideNumber):599 def get_preview_slide(self, slideNumber):
599 """Return the preview text for specified slide number600 """Return the preview text for specified slide number
600601
601 slideNumber -- 0: all slides, 1..n : specific slide602 slideNumber -- 0: all slides, 1..n: specific slide
602 a list of strings are returned603 a list of strings are returned
603 """604 """
604 num = len(self.slideList)605 num = len(self.slideList)
605 if num < 1 :606 if num < 1:
606 raise SongSlideError(u'No slides in this song')607 raise SongSlideError(u'No slides in this song')
607 elif slideNumber > num :608 elif slideNumber > num:
608 raise SongSlideError(u'Slide number too high')609 raise SongSlideError(u'Slide number too high')
609 if slideNumber > 0 :610 if slideNumber > 0:
610 # return this slide611 # return this slide
611 res = self.slideList[slideNumber-1]612 res = self.slideList[slideNumber-1]
612 # find theme in this slide613 # find theme in this slide
613 else :614 else:
614 res = []615 res = []
615 for i in range(num):616 for i in range(num):
616 if i > 0 :617 if i > 0:
617 res.append(u'')618 res.append(u'')
618 res.extend()619 res.extend()
619 # remove formattingincluding themes620 # remove formattingincluding themes
@@ -633,26 +634,26 @@
633 lyric-part as a list of strings]634 lyric-part as a list of strings]
634 """635 """
635 num = len(self.slideList)636 num = len(self.slideList)
636 if num < 1 :637 if num < 1:
637 raise SongSlideError(u'No slides in this song')638 raise SongSlideError(u'No slides in this song')
638 elif slideNumber > num :639 elif slideNumber > num:
639 raise SongSlideError(u'Slide number too high')640 raise SongSlideError(u'Slide number too high')
640 res = []641 res = []
641 if self.show_title :642 if self.show_title:
642 title = self.get_title()643 title = self.get_title()
643 else :644 else:
644 title = ""645 title = ""
645 if self.show_author_list :646 if self.show_author_list:
646 author = self.get_author_list(True)647 author = self.get_author_list(True)
647 else :648 else:
648 author = ""649 author = ""
649 if self.show_copyright :650 if self.show_copyright:
650 cpright = self.get_copyright()651 cpright = self.get_copyright()
651 else :652 else:
652 cpright = ""653 cpright = ""
653 if self.show_song_cclino :654 if self.show_song_cclino:
654 ccli = self.get_song_cclino()655 ccli = self.get_song_cclino()
655 else :656 else:
656 ccli = ""657 ccli = ""
657 theme = self.get_theme()658 theme = self.get_theme()
658 # examine the slide for a theme659 # examine the slide for a theme