← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~j-corwin/openlp/general into lp:openlp

 

Jonathan Corwin has proposed merging lp:~j-corwin/openlp/general into lp:openlp.

Requested reviews:
  Raoul Snyman (raoul-snyman)
  Tim Bentley (trb143)
  Andreas Preikschat (googol-hush)
Related bugs:
  Bug #634771 in OpenLP: "OpenLP 1.9.2+bzr1016-0ubuntu1~lucid1 does not start"
  https://bugs.launchpad.net/openlp/+bug/634771
  Bug #646718 in OpenLP: "Songbook, Number will not loaded, Title will not be saved"
  https://bugs.launchpad.net/openlp/+bug/646718
  Bug #696013 in OpenLP: "song import from powerpoint crashes every second time"
  https://bugs.launchpad.net/openlp/+bug/696013
  Bug #696021 in OpenLP: "presentation loader does not work fine in Windows using Powerpoint Viewer 2007"
  https://bugs.launchpad.net/openlp/+bug/696021
  Bug #696637 in OpenLP: "Alert not positioned correctly in single screen"
  https://bugs.launchpad.net/openlp/+bug/696637
  Bug #727732 in OpenLP: "Openlp 1.9.?? crashes on start"
  https://bugs.launchpad.net/openlp/+bug/727732
  Bug #735039 in OpenLP: "Cannot import PowerPoint Presentations with PowerPoint 2010"
  https://bugs.launchpad.net/openlp/+bug/735039

For more details, see:
https://code.launchpad.net/~j-corwin/openlp/general/+merge/60845

Stage view changes:
When a single verse is split across slides, merge it together and only show verse tag once.

 * Need brackets for else clauses in Javascript..
 * Detect consecutive repeat verses
 * Put in a $.each() 
-- 
https://code.launchpad.net/~j-corwin/openlp/general/+merge/60845
Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/lib/renderer.py'
--- openlp/core/lib/renderer.py	2011-05-07 20:55:11 +0000
+++ openlp/core/lib/renderer.py	2011-05-12 22:08:29 +0000
@@ -186,10 +186,10 @@
         serviceItem.theme = theme_data
         if self.force_page:
             # make big page for theme edit dialog to get line count
-            serviceItem.add_from_text(u'', VERSE + VERSE + VERSE, FOOTER)
+            serviceItem.add_from_text(u'', VERSE + VERSE + VERSE)
         else:
             self.image_manager.del_image(theme_data.theme_name)
-            serviceItem.add_from_text(u'', VERSE, FOOTER)
+            serviceItem.add_from_text(u'', VERSE)
         serviceItem.renderer = self
         serviceItem.raw_footer = FOOTER
         serviceItem.render(True)

=== modified file 'openlp/core/lib/serviceitem.py'
--- openlp/core/lib/serviceitem.py	2011-05-04 07:29:16 +0000
+++ openlp/core/lib/serviceitem.py	2011-05-12 22:08:29 +0000
@@ -219,6 +219,8 @@
         ``raw_slide``
             The raw text of the slide.
         """
+        if verse_tag:
+            verse_tag = verse_tag.upper()
         self.service_item_type = ServiceItemType.Text
         title = title.split(u'\n')[0]
         self._raw_frames.append(

=== modified file 'openlp/core/ui/slidecontroller.py'
--- openlp/core/ui/slidecontroller.py	2011-05-07 15:51:44 +0000
+++ openlp/core/ui/slidecontroller.py	2011-05-12 22:08:29 +0000
@@ -608,7 +608,7 @@
                 if frame[u'verseTag']:
                     # These tags are already translated.
                     verse_def = frame[u'verseTag']
-                    verse_def = u'%s%s' % (verse_def[0].upper(), verse_def[1:])
+                    verse_def = u'%s%s' % (verse_def[0], verse_def[1:])
                     two_line_def = u'%s\n%s' % (verse_def[0], verse_def[1:])
                     row = two_line_def
                     if self.isLive:

=== modified file 'openlp/plugins/remotes/html/stage.css'
--- openlp/plugins/remotes/html/stage.css	2011-05-07 08:54:06 +0000
+++ openlp/plugins/remotes/html/stage.css	2011-05-12 22:08:29 +0000
@@ -30,12 +30,14 @@
 #currentslide {
   font-size: 40pt;
   color: white;
+  padding-bottom: 0px;
 }
 
 #nextslide {
-  font-size: 30pt;
+  font-size: 40pt;
   color: grey;
-  padding-top: 25px;
+  padding-top: 0px;
+  padding-bottom: 0px;
 }
 
 #right {

=== modified file 'openlp/plugins/remotes/html/stage.js'
--- openlp/plugins/remotes/html/stage.js	2011-05-08 19:26:32 +0000
+++ openlp/plugins/remotes/html/stage.js	2011-05-12 22:08:29 +0000
@@ -46,35 +46,79 @@
       function (data, status) {
         OpenLP.currentSlides = data.results.slides;
         OpenLP.currentSlide = 0;
+        OpenLP.currentTags = Array();
         var div = $("#verseorder");
         div.html("");
-        for (idx in data.results.slides) {
-          idx = parseInt(idx, 10);
-          div.append("&nbsp;<span>");
-          var tag = data.results.slides[idx]["tag"];
-          if (tag == 'None')
-            tag = idx;
-          $("#verseorder span").last().attr("id", "tag" + idx).text(tag);
-          if (data.results.slides[idx]["selected"]) 
+        var tag = "";
+        var tags = 0;
+        var lastChange = 0;
+        $.each(data.results.slides, function(idx, slide) {
+          var prevtag = tag;
+          tag = slide["tag"];
+          if (tag != prevtag) {
+            // If the tag has changed, add new one to the list
+            lastChange = idx;
+            tags = tags + 1;
+            div.append("&nbsp;<span>");       
+            $("#verseorder span").last().attr("id", "tag" + tags).text(tag);
+          }
+          else {
+            if ((slide["text"] == data.results.slides[lastChange]["text"]) &&
+              (data.results.slides.length > idx + (idx - lastChange))) {
+              // If the tag hasn't changed, check to see if the same verse
+              // has been repeated consecutively. Note the verse may have been 
+              // split over several slides, so search through. If so, repeat the tag.
+              var match = true;
+              for (var idx2 = 0; idx2 < idx - lastChange; idx2++) {
+                if(data.results.slides[lastChange + idx2]["text"] != data.results.slides[idx + idx2]["text"]) {
+                    match = false;
+                    break;
+                }
+              }
+              if (match) {
+                lastChange = idx;
+                tags = tags + 1;
+                div.append("&nbsp;<span>");       
+                $("#verseorder span").last().attr("id", "tag" + tags).text(tag);
+              }
+            }
+          }
+          OpenLP.currentTags[idx] = tags;
+          if (slide["selected"]) 
             OpenLP.currentSlide = idx;
-        }
+        })
         OpenLP.loadService();
       }
     );
   },
   updateSlide: function() {
+    // Show the current slide on top. Any trailing slides for the same verse
+    // are shown too underneath in grey.
+    // Then leave a blank line between following verses
     $("#verseorder span").removeClass("currenttag");
-    $("#tag" + OpenLP.currentSlide).addClass("currenttag");
-    var text = OpenLP.currentSlides[OpenLP.currentSlide]["text"];
+    $("#tag" + OpenLP.currentTags[OpenLP.currentSlide]).addClass("currenttag");
+    var slide = OpenLP.currentSlides[OpenLP.currentSlide];
+    var text = slide["text"];
     text = text.replace(/\n/g, '<br />');
     $("#currentslide").html(text);
+    text = "";
     if (OpenLP.currentSlide < OpenLP.currentSlides.length - 1) {
-      text = OpenLP.currentSlides[OpenLP.currentSlide + 1]["text"];
+      for (var idx = OpenLP.currentSlide + 1; idx < OpenLP.currentSlides.length; idx++) {
+        if (OpenLP.currentTags[idx] != OpenLP.currentTags[idx - 1])
+            text = text + '<p class="nextslide">';
+        text = text + OpenLP.currentSlides[idx]["text"];
+        if (OpenLP.currentTags[idx] != OpenLP.currentTags[idx - 1])
+            text = text + '</p>';
+        else
+            text = text + '<br />';
+      }
       text = text.replace(/\n/g, '<br />');
       $("#nextslide").html(text);
     }
-    else
-      $("#nextslide").html("Next: " + OpenLP.nextSong);
+    else {
+      text = '<p class="nextslide">Next: ' + OpenLP.nextSong + '</p>';
+      $("#nextslide").html(text);
+    }
   },
   updateClock: function() {
     var div = $("#clock");

=== modified file 'openlp/plugins/remotes/lib/httpserver.py'
--- openlp/plugins/remotes/lib/httpserver.py	2011-05-08 19:26:32 +0000
+++ openlp/plugins/remotes/lib/httpserver.py	2011-05-12 22:08:29 +0000
@@ -115,7 +115,6 @@
 import urlparse
 import re
 from pprint import pformat
-from lxml import html
 
 try:
     import json
@@ -402,12 +401,14 @@
                 for index, frame in enumerate(current_item.get_frames()):
                     item = {}
                     if current_item.is_text():
-                        item[u'tag'] = unicode(frame[u'verseTag'])
-                        text = unicode(frame[u'html'].replace('<br>', '\n'))
-                        item[u'text'] = html.fromstring(text).text_content()
+                        if frame[u'verseTag']:
+                            item[u'tag'] = unicode(frame[u'verseTag'])
+                        else:
+                            item[u'tag'] = unicode(index + 1)
+                        item[u'text'] = unicode(frame[u'text'])
                         item[u'html'] = unicode(frame[u'html'])
                     else:
-                        item[u'tag'] = unicode(index)
+                        item[u'tag'] = unicode(index + 1)
                         item[u'text'] = u''
                         item[u'html'] = u''
                     item[u'selected'] = (self.parent.current_slide == index)


Follow ups