diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py
index 28bd8c513..5c80ce71c 100644
--- a/openlp/core/lib/renderer.py
+++ b/openlp/core/lib/renderer.py
@@ -331,16 +331,16 @@ class Renderer(object):
formatted = []
previous_html = u''
previous_raw = u''
- lines = [u'%s
' % line for line in lines]
+ separator = u'
'
html_lines = map(expand_tags, lines)
- html = self.page_shell + u''.join(html_lines) + HTML_END
+ html = self.page_shell + separator.join(html_lines) + HTML_END
self.web.setHtml(html)
# Text too long so go to next page.
if self.web_frame.contentsSize().height() > self.page_height:
html_text, previous_raw = self._binary_chop(formatted,
- previous_html, previous_raw, html_lines, lines, line_end)
+ previous_html, previous_raw, html_lines, lines, separator, u'')
else:
- previous_raw = u''.join(lines)
+ previous_raw = separator.join(lines)
if previous_raw:
formatted.append(previous_raw)
log.debug(u'_paginate_slide - End')
@@ -394,10 +394,10 @@ class Renderer(object):
# Figure out how many words of the line will fit on screen as
# the line will not fit as a whole.
raw_words = self._words_split(line)
- html_words = map(expand_tags, raw_text)
+ html_words = map(expand_tags, raw_words)
previous_html, previous_raw = self._binary_chop(
formatted, previous_html, previous_raw, html_words,
- raw_words, line_end)
+ raw_words, u' ', line_end)
else:
previous_html += html_line + line_end
previous_raw += line + line_end
@@ -406,7 +406,7 @@ class Renderer(object):
return formatted
def _binary_chop(self, formatted, previous_html, previous_raw, html_list,
- raw_list, line_end):
+ raw_list, separator, line_end):
"""
This implements the binary chop algorithm for faster rendering. However,
it is assumed that this method is **only** called, when the text to be
@@ -431,16 +431,20 @@ class Renderer(object):
The text which does not fit on a slide and needs to be processed
using the binary chop. The text can contain display tags.
+ ``separator``
+ The separator for the elements. For lines this is `u'
'`` and for
+ words this is u' '.
+
``line_end``
- The text added after each line. Either ``u' '`` or ``u'
``. This
- is needed for bibles.
+ The text added after each "element line". Either ``u' '`` or
+ ``u'
``. This is needed for bibles.
"""
smallest_index = 0
highest_index = len(html_list) - 1
index = int(highest_index / 2)
while True:
html = self.page_shell + previous_html + \
- u''.join(html_list[:index + 1]).strip() + HTML_END
+ separator.join(html_list[:index + 1]).strip() + HTML_END
self.web.setHtml(html)
if self.web_frame.contentsSize().height() > self.page_height:
# We know that it does not fit, so change/calculate the
@@ -454,7 +458,7 @@ class Renderer(object):
if smallest_index == index or highest_index == index:
index = smallest_index
formatted.append(previous_raw.rstrip(u'
') +
- u''.join(raw_list[:index + 1]))
+ separator.join(raw_list[:index + 1]))
previous_html = u''
previous_raw = u''
# Stop here as the theme line count was requested.
@@ -467,12 +471,13 @@ class Renderer(object):
# does we do not have to do the much more intensive "word by
# word" checking.
html = self.page_shell + \
- u''.join(html_list[index + 1:]).strip() + HTML_END
+ separator.join(html_list[index + 1:]).strip() + HTML_END
self.web.setHtml(html)
if self.web_frame.contentsSize().height() <= self.page_height:
- previous_html = \
- u''.join(html_list[index + 1:]).strip() + line_end
- previous_raw = u''.join(raw_list[index + 1:]).strip() + line_end
+ previous_html = separator.join(
+ html_list[index + 1:]).strip() + line_end
+ previous_raw = separator.join(
+ raw_list[index + 1:]).strip() + line_end
break
else:
# The other words do not fit, thus reset the indexes,
@@ -490,8 +495,7 @@ class Renderer(object):
"""
# this parse we are to be wordy
line = line.replace(u'\n', u' ')
- words = line.split(u' ')
- return [word + u' ' for word in words]
+ return line.split(u' ')
def _lines_split(self, text):
"""