Richard Graham has proposed merging lp:~richie-the-g/openlp/song-end-character 
into lp:openlp.

Requested reviews:
  OpenLP Core (openlp-core)

For more details, see:
https://code.launchpad.net/~richie-the-g/openlp/song-end-character/+merge/290359

Added the option to put a character at the end of the final slide of a song (as 
suggested at forums.openlp.org/discussion/2121/). Character is specified in the 
theme under <display><endCharacter>, and specified by the user in the Theme 
Wizard. Allows themes without this XML definition to be used.
-- 
Your team OpenLP Core is requested to review the proposed merge of 
lp:~richie-the-g/openlp/song-end-character into lp:openlp.
=== modified file 'openlp/core/lib/serviceitem.py'
--- openlp/core/lib/serviceitem.py	2015-12-31 22:46:06 +0000
+++ openlp/core/lib/serviceitem.py	2016-03-29 19:32:08 +0000
@@ -267,6 +267,14 @@
                         'html': html_data.replace('&amp;nbsp;', '&nbsp;'),
                         'verseTag': verse_tag
                     })
+            else:
+                try:
+                    # Code to add a symbol to the end of the text on the final slide.
+                    display_at_end = "<br>" + self.theme_data.display_end_character
+                    self._display_frames[(len(self._display_frames))-1]['html'] += display_at_end
+                except AttributeError:
+                    pass
+
         elif self.service_item_type == ServiceItemType.Image or self.service_item_type == ServiceItemType.Command:
             pass
         else:

=== modified file 'openlp/core/lib/theme.py'
--- openlp/core/lib/theme.py	2015-12-31 22:46:06 +0000
+++ openlp/core/lib/theme.py	2016-03-29 19:32:08 +0000
@@ -318,13 +318,14 @@
         element.appendChild(value)
         background.appendChild(element)
 
-    def add_display(self, horizontal, vertical, transition):
+    def add_display(self, horizontal, vertical, transition, end_char):
         """
         Add a Display options.
 
         :param horizontal: The horizontal alignment of the text.
         :param vertical: The vertical alignment of the text.
         :param transition: Whether the slide transition is active.
+        :param end_char: The end character (if there is one) for the final slide.
         """
         background = self.theme_xml.createElement('display')
         self.theme.appendChild(background)
@@ -343,6 +344,11 @@
         value = self.theme_xml.createTextNode(str(transition))
         element.appendChild(value)
         background.appendChild(element)
+        # End Character
+        element = self.theme_xml.createElement('endCharacter')
+        value = self.theme_xml.createTextNode(str(end_char))
+        element.appendChild(value)
+        background.appendChild(element)
 
     def child_element(self, element, tag, value):
         """
@@ -555,5 +561,6 @@
         self.add_display(
             self.display_horizontal_align,
             self.display_vertical_align,
-            self.display_slide_transition
+            self.display_slide_transition,
+            self.display_end_character
         )

=== modified file 'openlp/core/ui/themeform.py'
--- openlp/core/ui/themeform.py	2016-01-08 21:44:22 +0000
+++ openlp/core/ui/themeform.py	2016-03-29 19:32:08 +0000
@@ -134,6 +134,7 @@
         self.background_page.registerField('horizontal', self.horizontal_combo_box)
         self.background_page.registerField('vertical', self.vertical_combo_box)
         self.background_page.registerField('slide_transition', self.transitions_check_box)
+        self.background_page.registerField('end_char', self.end_char_line_edit)
         self.background_page.registerField('name', self.theme_name_edit)
 
     def calculate_lines(self):
@@ -367,6 +368,12 @@
         self.setField('horizontal', self.theme.display_horizontal_align)
         self.setField('vertical', self.theme.display_vertical_align)
         self.setField('slide_transition', self.theme.display_slide_transition)
+        try:
+            self.setField('end_char', self.theme.display_end_character)
+        except AttributeError:
+            pass
+		# This is in a 'try' to allow for themes without this attribute in the XML
+		# to correctly load.
 
     def set_preview_page_values(self):
         """
@@ -469,7 +476,7 @@
     def update_theme(self):
         """
         Update the theme object from the UI for fields not already updated
-        when the are changed.
+        when they are changed.
         """
         if not self.update_theme_allowed:
             return
@@ -498,6 +505,7 @@
         self.theme.display_horizontal_align = self.horizontal_combo_box.currentIndex()
         self.theme.display_vertical_align = self.vertical_combo_box.currentIndex()
         self.theme.display_slide_transition = self.field('slide_transition')
+        self.theme.display_end_character = self.end_char_line_edit.text()  # "~"
 
     def accept(self):
         """

=== modified file 'openlp/core/ui/themewizard.py'
--- openlp/core/ui/themewizard.py	2015-12-31 22:46:06 +0000
+++ openlp/core/ui/themewizard.py	2016-03-29 19:32:08 +0000
@@ -261,6 +261,13 @@
         self.transitions_check_box.setObjectName('transitions_check_box')
         self.alignment_layout.addRow(self.transitions_label, self.transitions_check_box)
         self.alignment_layout.setItem(3, QtWidgets.QFormLayout.LabelRole, self.spacer)
+        self.end_char_label = QtWidgets.QLabel(self.alignment_page)
+        self.end_char_label.setObjectName('end_char_label')
+        self.end_char_label.setText('End character:')
+        self.end_char_line_edit = QtWidgets.QLineEdit(self.alignment_page)
+        self.end_char_line_edit.setObjectName('end_char_line_edit')
+        self.end_char_line_edit.setMaxLength(1)
+        self.alignment_layout.addRow(self.end_char_label, self.end_char_line_edit)
         theme_wizard.addPage(self.alignment_page)
         # Area Position Page
         self.area_position_page = QtWidgets.QWizardPage()
@@ -396,7 +403,7 @@
         self.background_combo_box.setItemText(BackgroundType.Image, UiStrings().Image)
         self.background_combo_box.setItemText(BackgroundType.Transparent,
                                               translate('OpenLP.ThemeWizard', 'Transparent'))
-        self.color_label.setText(translate('OpenLP.ThemeWizard', 'color:'))
+        self.color_label.setText(translate('OpenLP.ThemeWizard', 'Color:'))
         self.gradient_start_label.setText(translate('OpenLP.ThemeWizard', 'Starting color:'))
         self.gradient_end_label.setText(translate('OpenLP.ThemeWizard', 'Ending color:'))
         self.gradient_type_label.setText(translate('OpenLP.ThemeWizard', 'Gradient:'))
@@ -416,7 +423,7 @@
         self.main_area_page.setSubTitle(translate('OpenLP.ThemeWizard', 'Define the font and display '
                                                   'characteristics for the Display text'))
         self.main_font_label.setText(translate('OpenLP.ThemeWizard', 'Font:'))
-        self.main_color_label.setText(translate('OpenLP.ThemeWizard', 'color:'))
+        self.main_color_label.setText(translate('OpenLP.ThemeWizard', 'Color:'))
         self.main_size_label.setText(translate('OpenLP.ThemeWizard', 'Size:'))
         self.main_size_spin_box.setSuffix(UiStrings().FontSizePtUnit)
         self.line_spacing_label.setText(translate('OpenLP.ThemeWizard', 'Line Spacing:'))
@@ -433,7 +440,7 @@
         self.footer_area_page.setSubTitle(translate('OpenLP.ThemeWizard', 'Define the font and display '
                                                     'characteristics for the Footer text'))
         self.footer_font_label.setText(translate('OpenLP.ThemeWizard', 'Font:'))
-        self.footer_color_label.setText(translate('OpenLP.ThemeWizard', 'color:'))
+        self.footer_color_label.setText(translate('OpenLP.ThemeWizard', 'Color:'))
         self.footer_size_label.setText(translate('OpenLP.ThemeWizard', 'Size:'))
         self.footer_size_spin_box.setSuffix(UiStrings().FontSizePtUnit)
         self.alignment_page.setTitle(translate('OpenLP.ThemeWizard', 'Text Formatting Details'))
@@ -473,6 +480,7 @@
         self.preview_page.setTitle(translate('OpenLP.ThemeWizard', 'Preview and Save'))
         self.preview_page.setSubTitle(translate('OpenLP.ThemeWizard', 'Preview the theme and save it.'))
         self.theme_name_label.setText(translate('OpenLP.ThemeWizard', 'Theme name:'))
+        self.end_char_line_edit.setText(translate('OpenLP.ThemeWizard', 'Song end character:'))
         # Align all QFormLayouts towards each other.
         label_width = max(self.background_label.minimumSizeHint().width(),
                           self.horizontal_label.minimumSizeHint().width())

_______________________________________________
Mailing list: https://launchpad.net/~openlp-core
Post to     : openlp-core@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openlp-core
More help   : https://help.launchpad.net/ListHelp

Reply via email to