← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~trb143/openlp/bugfixes into lp:openlp

 

Tim Bentley has proposed merging lp:~trb143/openlp/bugfixes into lp:openlp.

Requested reviews:
    openlp.org Core (openlp-core)

Fix italic handling xml error
Fix screen refresh issue
Fix renderer where word is bigger than line!
-- 
https://code.launchpad.net/~trb143/openlp/bugfixes/+merge/9708
Your team openlp.org Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/lib/renderer.py'
--- openlp/core/lib/renderer.py	2009-08-03 19:49:21 +0000
+++ openlp/core/lib/renderer.py	2009-08-05 17:59:37 +0000
@@ -167,32 +167,37 @@
         #take the width work out approx how many characters and add 50%
         line_width = self._rect.width() - self._right_margin
         #number of lines on a page - adjust for rounding up.
+        #print self._rect.height() ,  metrics.height(),  int(self._rect.height() / metrics.height())
         page_length = int(self._rect.height() / metrics.height()) - 1
         ave_line_width = line_width / metrics.averageCharWidth()
-        #print ave_line_width
+#        print "A", ave_line_width
         ave_line_width = int(ave_line_width + (ave_line_width * 0.5))
-        #print ave_line_width
+#        print "B", ave_line_width
         split_pages = []
         page = []
         split_lines = []
         count = 0
         for line in text:
-            #print line ,  len(line)
+#            print "C", line ,  len(line)
             if len(line) > ave_line_width:
                 while len(line) > 0:
                     pos = line.find(u' ', ave_line_width)
-                    #print ave_line_width,  pos,  line[:pos]
+#                    print "D2", len(line),  ave_line_width,  pos,  line[:pos]
                     split_text = line[:pos]
-                    #print metrics.width(split_text,  -1), line_width
+#                    print "E", metrics.width(split_text,  -1), line_width
                     while metrics.width(split_text,  -1) > line_width:
                         #Find the next space to the left
                         pos = line[:pos].rfind(u' ')
-                        #print ave_line_width,  pos,  line[:pos]
+#                        print "F", ave_line_width,  pos,  line[:pos]
                         #no more spaces found
-                        if pos  == -1:
+                        if pos  == 0:
                             split_text = line
+                            while metrics.width(split_text,  -1) > line_width:
+                                split_text = split_text[:-1]
+                            pos = len(split_text)
                         else:
                             split_text = line[:pos]
+#                    print "F1", split_text, line, pos
                     split_lines.append(split_text)
                     line = line[pos:]
                     #Text fits in a line now
@@ -200,13 +205,14 @@
                         split_lines.append(line)
                         line = u''
 #                    count += 1
-#                    if count == 50:
+#                    if count == 15:
 #                        a = c
-                    #print split_lines
-                    #print line
+#                    print "G", split_lines
+#                    print "H", line
             else:
                 split_lines.append(line)
                 line = u''
+        #print "I", split_lines, page_length
         for line in split_lines:
             page.append(line)
             if len(page) == page_length:
@@ -306,72 +312,72 @@
             QtCore.Qt.SmoothTransformation)
         log.debug(u'render background End')
 
-    def _split_set_of_lines(self, lines, footer):
-        """
-        Given a list of lines, decide how to split them best if they don't all
-        fit on the screen. This is done by splitting at 1/2, 1/3 or 1/4 of the
-        set. If it doesn't fit, even at this size, just split at each
-        opportunity. We'll do this by getting the bounding box of each line,
-        and then summing them appropriately.
-
-        Returns a list of [lists of lines], one set for each screenful.
-
-        ``lines``
-            The lines of text to split.
-
-        ``footer``
-            The footer text.
-        """
-        bboxes = []
-        for line in lines:
-            bboxes.append(self._render_and_wrap_single_line(line, footer))
-        numlines = len(lines)
-        bottom = self._rect.bottom()
-        for ratio in (numlines,  numlines/2, numlines/3, numlines/4):
-            good = 1
-            startline = 0
-            endline = startline + ratio
-            while (endline <= numlines and endline != 0):
-                by = 0
-                for (x,y) in bboxes[startline:endline]:
-                    by += y
-                if by > bottom:
-                    good = 0
-                    break
-                startline += ratio
-                endline = startline + ratio
-            if good == 1:
-                break
-        retval = []
-        numlines_per_page = ratio
-        if good:
-            c = 0
-            thislines = []
-            while c < numlines:
-                thislines.append(lines[c])
-                c += 1
-                if len(thislines) == numlines_per_page:
-                    retval.append(thislines)
-                    thislines = []
-            if len(thislines) > 0:
-                retval.append(thislines)
-        else:
-            # print "Just split where you can"
-            retval = []
-            startline = 0
-            endline = startline + 1
-            while (endline <= numlines):
-                by = 0
-                for (x,y) in bboxes[startline:endline]:
-                    by += y
-                if by > bottom:
-                    retval.append(lines[startline:endline-1])
-                    startline = endline-1
-                    # gets incremented below
-                    endline = startline
-                    by = 0
-                endline += 1
-        return retval
+#    def _split_set_of_lines(self, lines, footer):
+#        """
+#        Given a list of lines, decide how to split them best if they don't all
+#        fit on the screen. This is done by splitting at 1/2, 1/3 or 1/4 of the
+#        set. If it doesn't fit, even at this size, just split at each
+#        opportunity. We'll do this by getting the bounding box of each line,
+#        and then summing them appropriately.
+#
+#        Returns a list of [lists of lines], one set for each screenful.
+#
+#        ``lines``
+#            The lines of text to split.
+#
+#        ``footer``
+#            The footer text.
+#        """
+#        bboxes = []
+#        for line in lines:
+#            bboxes.append(self._render_and_wrap_single_line(line, footer))
+#        numlines = len(lines)
+#        bottom = self._rect.bottom()
+#        for ratio in (numlines,  numlines/2, numlines/3, numlines/4):
+#            good = 1
+#            startline = 0
+#            endline = startline + ratio
+#            while (endline <= numlines and endline != 0):
+#                by = 0
+#                for (x,y) in bboxes[startline:endline]:
+#                    by += y
+#                if by > bottom:
+#                    good = 0
+#                    break
+#                startline += ratio
+#                endline = startline + ratio
+#            if good == 1:
+#                break
+#        retval = []
+#        numlines_per_page = ratio
+#        if good:
+#            c = 0
+#            thislines = []
+#            while c < numlines:
+#                thislines.append(lines[c])
+#                c += 1
+#                if len(thislines) == numlines_per_page:
+#                    retval.append(thislines)
+#                    thislines = []
+#            if len(thislines) > 0:
+#                retval.append(thislines)
+#        else:
+#            # print "Just split where you can"
+#            retval = []
+#            startline = 0
+#            endline = startline + 1
+#            while (endline <= numlines):
+#                by = 0
+#                for (x,y) in bboxes[startline:endline]:
+#                    by += y
+#                if by > bottom:
+#                    retval.append(lines[startline:endline-1])
+#                    startline = endline-1
+#                    # gets incremented below
+#                    endline = startline
+#                    by = 0
+#                endline += 1
+#        return retval
 
     def _correctAlignment(self, rect, bbox):
         """

=== modified file 'openlp/core/lib/themexmlhandler.py'
--- openlp/core/lib/themexmlhandler.py	2009-08-03 19:49:21 +0000
+++ openlp/core/lib/themexmlhandler.py	2009-08-05 17:59:37 +0000
@@ -161,7 +161,7 @@
         #Create Filename element
         self.child_element(background, u'filename', filename)
 
-    def add_font(self, name, color, proportion, override, fonttype=u'main', weight=u'Bold', italics=False,
+    def add_font(self, name, color, proportion, override, fonttype=u'main', weight=u'Normal', italics=u'False',
                  xpos=0, ypos=0, width=0, height=0):
         """
         Add a Font.

=== modified file 'openlp/plugins/bibles/lib/mediaitem.py'
--- openlp/plugins/bibles/lib/mediaitem.py	2009-08-02 13:44:41 +0000
+++ openlp/plugins/bibles/lib/mediaitem.py	2009-08-05 17:59:37 +0000
@@ -20,6 +20,7 @@
 Place, Suite 330, Boston, MA 02111-1307 USA
 """
 import logging
+import time
 
 from PyQt4 import QtCore, QtGui
 
@@ -268,6 +269,8 @@
     def setQuickMsg2(self, text):
         self.QuickMsg2.setText(translate(u'BibleMediaItem', unicode(text)))
         Receiver().send_message(u'openlpprocessevents')
+        #minor delay to get the events processed
+        time.sleep(0.5)
 
     def loadBibles(self):
         log.debug(u'Loading Bibles')


Follow ups