← Back to team overview

openlp-core team mailing list archive

Re: [Merge] lp:~martin-woodhart/openlp/show-hide-song-footer into lp:openlp

 

Results from Jenkins Script:

C:\Users\Marty\Documents\OpenLP\show-hide-song-footer>C:\Python34\python
scripts
/jenkins_script.py
9mlqg9ilw7kp5c4s2y8nq16a0nqgxmx46uncfr5w5op7agbm5k6rfx7lxpf1d
s94y4g5gm7jvysszpur46ug6
Add this to your merge proposal:
--------------------------------
lp:~martin-woodhart/openlp/show-hide-song-footer (revision 2425)
[←[1;32mSUCCESS←[1;m] http://ci.openlp.org/job/Branch-01-Pull/689/
[←[1;32mSUCCESS←[1;m]
http://ci.openlp.org/job/Branch-02-Functional-Tests/632/
[←[1;32mSUCCESS←[1;m]
http://ci.openlp.org/job/Branch-03-Interface-Tests/576/
[←[1;32mSUCCESS←[1;m]
http://ci.openlp.org/job/Branch-04a-Windows_Functional_Tes
ts/522/
[←[1;32mSUCCESS←[1;m]
http://ci.openlp.org/job/Branch-04b-Windows_Interface_Test
s/131/
[←[1;31mFAILURE←[1;m] http://ci.openlp.org/job/Branch-05a-Code_Analysis/338/
Stopping after failure

On 20 October 2014 09:06, Marty Woodhart <martin.woodhart@xxxxxxxxx> wrote:

> Marty Woodhart has proposed merging
> lp:~martin-woodhart/openlp/show-hide-song-footer into lp:openlp.
>
> Requested reviews:
>   Tim Bentley (trb143)
>
> For more details, see:
>
> https://code.launchpad.net/~martin-woodhart/openlp/show-hide-song-footer/+merge/238838
>
> Add ability to specify when the footer text in a song is to be shown. Eg.
> Show Footer only on First slide and hide it on every other.
>
> Settings confined to Song plugin - located under Edit Song --> Theme,
> Copyrights & Comments tab --> Song Footer.
> --
>
> https://code.launchpad.net/~martin-woodhart/openlp/show-hide-song-footer/+merge/238838
> You are the owner of lp:~martin-woodhart/openlp/show-hide-song-footer.
>
> === modified file 'openlp/core/common/__init__.py'
> --- openlp/core/common/__init__.py      2014-08-27 23:18:06 +0000
> +++ openlp/core/common/__init__.py      2014-10-19 22:05:44 +0000
> @@ -120,6 +120,16 @@
>      Next = 3
>
>
> +class SlideFooter(object):
> +    """
> +    Provides an enumeration for when to show the footer text during the
> songs
> +    """
> +    All = 0
> +    First = 1
> +    Last = 2
> +    FirstAndLast = 3
> +
> +
>  def de_hump(name):
>      """
>      Change any Camel Case string to python string
>
> === modified file 'openlp/core/lib/serviceitem.py'
> --- openlp/core/lib/serviceitem.py      2014-09-23 21:45:42 +0000
> +++ openlp/core/lib/serviceitem.py      2014-10-19 22:05:44 +0000
> @@ -39,7 +39,7 @@
>
>  from PyQt4 import QtGui
>
> -from openlp.core.common import RegistryProperties, Settings, translate,
> AppLocation
> +from openlp.core.common import RegistryProperties, Settings, translate,
> AppLocation, SlideFooter
>  from openlp.core.lib import ImageSource, build_icon, clean_tags,
> expand_tags, create_thumb
>
>  log = logging.getLogger(__name__)
> @@ -202,6 +202,7 @@
>          self.timed_slide_interval = 0
>          self.will_auto_start = False
>          self.has_original_files = True
> +        self.slide_footer = SlideFooter.All
>          self._new_item()
>
>      def _new_item(self):
>
> === modified file 'openlp/core/ui/maindisplay.py'
> --- openlp/core/ui/maindisplay.py       2014-08-27 23:18:06 +0000
> +++ openlp/core/ui/maindisplay.py       2014-10-19 22:05:44 +0000
> @@ -326,7 +326,7 @@
>          # clear the cache
>          self.override = {}
>
> -    def preview(self):
> +    def preview(self, hide_slide):
>          """
>          Generates a preview of the image displayed.
>          """
> @@ -337,6 +337,12 @@
>              # Wait for the fade to finish before geting the preview.
>              # Important otherwise preview will have incorrect text if at
> all!
>              if self.service_item.theme_data and
> self.service_item.theme_data.display_slide_transition:
> +                if hide_slide:
> +                    if self.service_item.foot_text:
> +                        self.footer("")
> +                else:
> +                    if self.service_item.foot_text:
> +                        self.footer(self.service_item.foot_text)
>                  while not
> self.frame.evaluateJavaScript('show_text_completed()'):
>                      self.application.process_events()
>          # Wait for the webview to update before getting the preview.
>
> === modified file 'openlp/core/ui/slidecontroller.py'
> --- openlp/core/ui/slidecontroller.py   2014-07-15 18:52:59 +0000
> +++ openlp/core/ui/slidecontroller.py   2014-10-19 22:05:44 +0000
> @@ -36,7 +36,7 @@
>
>  from PyQt4 import QtCore, QtGui
>
> -from openlp.core.common import Registry, RegistryProperties, Settings,
> SlideLimits, UiStrings, translate, \
> +from openlp.core.common import Registry, RegistryProperties, Settings,
> SlideLimits, UiStrings, translate, SlideFooter, \
>      RegistryMixin, OpenLPMixin
>  from openlp.core.lib import OpenLPToolbar, ItemCapabilities, ServiceItem,
> ImageSource, ServiceItemAction, \
>      ScreenList, build_icon, build_html
> @@ -1069,10 +1069,38 @@
>              QtCore.QTimer.singleShot(0.5, self.grab_maindisplay)
>              QtCore.QTimer.singleShot(2.5, self.grab_maindisplay)
>          else:
> -            self.slide_image = self.display.preview()
> +            hide_footer =
> self.check_to_hide_footer(self.service_item.slide_footer,
> +
> self.preview_widget.current_slide_number() + 1,
> +
> self.preview_widget.slide_count())
> +            self.slide_image = self.display.preview(hide_footer)
>              self.slide_preview.setPixmap(self.slide_image)
>          self.slide_count += 1
>
> +    def check_to_hide_footer(self, slide_footer, current_slide,
> slide_count):
> +        """
> +        Determines if the current slide should hide the text in the footer
> +        """
> +        hide_footer = False
> +        if current_slide == 1:
> +            # If it's on the first slide only hide the footer when the
> 'Show footer on
> +            # last slide' setting is on
> +            if slide_footer == SlideFooter.Last:
> +                hide_footer = True
> +        elif current_slide == slide_count:
> +            # If it's on the last slide only hide the footer when the
> 'Show footer on
> +            # first slide' setting is on
> +            if slide_footer == SlideFooter.First:
> +                hide_footer = True
> +        else:
> +            # If it's on any of the middle slides only hide the footer if
> the 'Show footer on all
> +            # slides' setting is not on (ie. when setting is either
> First, Last or First + Last)
> +            if (slide_footer != SlideFooter.All) & \
> +                    ((slide_footer == SlideFooter.First) |
> +                    (slide_footer == SlideFooter.Last) |
> +                    (slide_footer == SlideFooter.FirstAndLast)):
> +                hide_footer = True
> +        return hide_footer
> +
>      def grab_maindisplay(self):
>          """
>          Creates an image of the current screen and updates the preview
> frame.
>
> === modified file 'openlp/plugins/songs/forms/editsongdialog.py'
> --- openlp/plugins/songs/forms/editsongdialog.py        2014-07-14
> 16:25:59 +0000
> +++ openlp/plugins/songs/forms/editsongdialog.py        2014-10-19
> 22:05:44 +0000
> @@ -29,7 +29,7 @@
>
>  from PyQt4 import QtCore, QtGui
>
> -from openlp.core.common import UiStrings, translate
> +from openlp.core.common import UiStrings, translate, SlideFooter
>  from openlp.core.lib import build_icon
>  from openlp.core.lib.ui import create_button_box, create_button
>  from openlp.core.ui import SingleColumnTableWidget
> @@ -239,8 +239,18 @@
>          self.ccli_layout.addWidget(self.ccli_number_edit)
>          self.rights_layout.addLayout(self.ccli_layout)
>          self.theme_left_layout.addWidget(self.rights_group_box)
> +        # footer tab
> +        self.footer_group_box = QtGui.QGroupBox(self.theme_tab)
> +        self.footer_group_box.setObjectName('footer_group_box')
> +        self.footer_layout = QtGui.QHBoxLayout(self.footer_group_box)
> +        self.footer_layout.setObjectName('footer_layout')
> +        self.footer_combo_box = create_combo_box(self.footer_group_box,
> 'footer_combo_box')
> +        self.footer_combo_box.addItems(['', '', '', ''])
> +        self.footer_layout.addWidget(self.footer_combo_box)
> +        self.theme_left_layout.addWidget(self.footer_group_box)
>          self.theme_left_layout.addStretch()
>          self.theme_tab_layout.addLayout(self.theme_left_layout)
> +        # comments tab
>          self.comments_group_box = QtGui.QGroupBox(self.theme_tab)
>          self.comments_group_box.setObjectName('comments_group_box')
>          self.comments_layout = QtGui.QVBoxLayout(self.comments_group_box)
> @@ -324,6 +334,17 @@
>
>  self.rights_group_box.setTitle(translate('SongsPlugin.EditSongForm',
> 'Copyright Information'))
>          self.copyright_insert_button.setText(SongStrings.CopyrightSymbol)
>          self.ccli_label.setText(UiStrings().CCLINumberLabel)
> +
> +
> self.footer_group_box.setTitle(translate('SongsPlugin.EditSongForm', 'Show
> Footer'))
> +
> +        self.footer_combo_box.setItemText(SlideFooter.All,
> translate('SongsPlugin.EditSongForm', 'All Slides'))
> +        self.footer_combo_box.setItemText(SlideFooter.First,
> +
> translate('SongsPlugin.EditSongForm', 'First Slide Only'))
> +        self.footer_combo_box.setItemText(SlideFooter.Last,
> +
> translate('SongsPlugin.EditSongForm', 'Last Slide Only'))
> +        self.footer_combo_box.setItemText(SlideFooter.FirstAndLast,
> +
> translate('SongsPlugin.EditSongForm', 'First and Last Slide'))
> +
>
>  self.comments_group_box.setTitle(translate('SongsPlugin.EditSongForm',
> 'Comments'))
>
>  self.song_tab_widget.setTabText(self.song_tab_widget.indexOf(self.theme_tab),
>
>  translate('SongsPlugin.EditSongForm', 'Theme, Copyright Info && Comments'))
>
> === modified file 'openlp/plugins/songs/forms/editsongform.py'
> --- openlp/plugins/songs/forms/editsongform.py  2014-07-14 16:25:59 +0000
> +++ openlp/plugins/songs/forms/editsongform.py  2014-10-19 22:05:44 +0000
> @@ -38,7 +38,7 @@
>
>  from PyQt4 import QtCore, QtGui
>
> -from openlp.core.common import Registry, RegistryProperties, AppLocation,
> UiStrings, check_directory_exists, translate
> +from openlp.core.common import Registry, RegistryProperties, AppLocation,
> UiStrings, check_directory_exists, translate, SlideFooter
>  from openlp.core.lib import FileDialog, PluginStatus, MediaType,
> create_separated_list
>  from openlp.core.lib.ui import set_case_insensitive_completer,
> critical_error_message_box, find_and_set_in_combo_box
>  from openlp.plugins.songs.lib import VerseType, clean_song
> @@ -456,6 +456,17 @@
>              self.theme_combo_box.setEditText('')
>              self.theme_combo_box.setCurrentIndex(0)
>          self.copyright_edit.setText(self.song.copyright if
> self.song.copyright else '')
> +        if self.song.footer:
> +            if self.song.footer == SlideFooter.All:
> +                self.footer_combo_box.setCurrentIndex(SlideFooter.All)
> +            elif self.song.footer == SlideFooter.First:
> +                self.footer_combo_box.setCurrentIndex(SlideFooter.First)
> +            elif self.song.footer == SlideFooter.Last:
> +                self.footer_combo_box.setCurrentIndex(SlideFooter.Last)
> +            elif self.song.footer == SlideFooter.FirstAndLast:
> +
> self.footer_combo_box.setCurrentIndex(SlideFooter.FirstAndLast)
> +        else:
> +            self.footer_combo_box.setCurrentIndex(0)
>          self.comments_edit.setPlainText(self.song.comments if
> self.song.comments else '')
>          self.ccli_number_edit.setText(self.song.ccli_number if
> self.song.ccli_number else '')
>          self.song_book_number_edit.setText(self.song.song_number if
> self.song.song_number else '')
> @@ -965,6 +976,7 @@
>          self.song.search_lyrics = ''
>          self.song.verse_order = ''
>          self.song.comments = self.comments_edit.toPlainText()
> +        self.song.footer = self.footer_combo_box.currentIndex()
>          order_text = self.verse_order_edit.text()
>          order = []
>          for item in order_text.split():
>
> === modified file 'openlp/plugins/songs/lib/db.py'
> --- openlp/plugins/songs/lib/db.py      2014-09-14 13:35:55 +0000
> +++ openlp/plugins/songs/lib/db.py      2014-10-19 22:05:44 +0000
> @@ -238,6 +238,7 @@
>          * theme_name
>          * search_title
>          * search_lyrics
> +        * footer
>
>      **songs_topics Table**
>          This is a bridging table between the *songs* and *topics* tables,
> which
> @@ -302,7 +303,8 @@
>          Column('search_lyrics', types.UnicodeText, nullable=False),
>          Column('create_date', types.DateTime(), default=func.now()),
>          Column('last_modified', types.DateTime(), default=func.now(),
> onupdate=func.now()),
> -        Column('temporary', types.Boolean(), default=False)
> +        Column('temporary', types.Boolean(), default=False),
> +        Column('footer', types.Integer(), default=0)
>      )
>
>      # Definition of the "topics" table
>
> === modified file 'openlp/plugins/songs/lib/importers/openlp.py'
> --- openlp/plugins/songs/lib/importers/openlp.py        2014-07-04
> 09:35:10 +0000
> +++ openlp/plugins/songs/lib/importers/openlp.py        2014-10-19
> 22:05:44 +0000
> @@ -177,6 +177,7 @@
>              new_song.lyrics = song.lyrics
>              new_song.verse_order = song.verse_order
>              new_song.copyright = song.copyright
> +            new_song.footer = song.footer
>              new_song.comments = song.comments
>              new_song.theme_name = song.theme_name
>              new_song.ccli_number = song.ccli_number
>
> === modified file 'openlp/plugins/songs/lib/importers/songimport.py'
> --- openlp/plugins/songs/lib/importers/songimport.py    2014-08-18
> 19:04:46 +0000
> +++ openlp/plugins/songs/lib/importers/songimport.py    2014-10-19
> 22:05:44 +0000
> @@ -34,7 +34,7 @@
>
>  from PyQt4 import QtCore
>
> -from openlp.core.common import Registry, AppLocation,
> check_directory_exists, translate
> +from openlp.core.common import Registry, AppLocation,
> check_directory_exists, translate, SlideFooter
>  from openlp.core.ui.wizard import WizardStrings
>  from openlp.plugins.songs.lib import clean_song, VerseType
>  from openlp.plugins.songs.lib.db import Song, Author, Topic, Book,
> MediaFile
> @@ -344,6 +344,7 @@
>          song.search_lyrics = ''
>          song.verse_order = ''
>          song.song_number = self.song_number
> +        song.footer = SlideFooter.All
>          verses_changed_to_other = {}
>          sxml = SongXML()
>          other_count = 1
>
> === modified file 'openlp/plugins/songs/lib/mediaitem.py'
> --- openlp/plugins/songs/lib/mediaitem.py       2014-07-09 12:45:54 +0000
> +++ openlp/plugins/songs/lib/mediaitem.py       2014-10-19 22:05:44 +0000
> @@ -417,6 +417,7 @@
>          song = self.plugin.manager.get_object(Song, item_id)
>          service_item.theme = song.theme_name
>          service_item.edit_id = item_id
> +        service_item.slide_footer = song.footer
>          verse_list = SongXML().get_verses(song.lyrics)
>          # no verse list or only 1 space (in error)
>          verse_tags_translated = False
>
> === modified file 'openlp/plugins/songs/lib/openlyricsxml.py'
> --- openlp/plugins/songs/lib/openlyricsxml.py   2014-07-03 16:54:51 +0000
> +++ openlp/plugins/songs/lib/openlyricsxml.py   2014-10-19 22:05:44 +0000
> @@ -68,7 +68,7 @@
>
>  from lxml import etree, objectify
>
> -from openlp.core.common import translate
> +from openlp.core.common import translate, SlideFooter
>  from openlp.core.lib import FormattingTags
>  from openlp.plugins.songs.lib import VerseType, clean_song
>  from openlp.plugins.songs.lib.db import Author, AuthorType, Book, Song,
> Topic
> @@ -397,6 +397,7 @@
>          song.search_lyrics = ''
>          song.verse_order = ''
>          song.search_title = ''
> +        song.footer = SlideFooter.All
>          song.temporary = parse_and_temporary_save
>          self._process_copyright(properties, song)
>          self._process_cclinumber(properties, song)
>
> === modified file 'openlp/plugins/songs/lib/upgrade.py'
> --- openlp/plugins/songs/lib/upgrade.py 2014-07-17 21:04:58 +0000
> +++ openlp/plugins/songs/lib/upgrade.py 2014-10-19 22:05:44 +0000
> @@ -38,7 +38,7 @@
>  from openlp.core.lib.db import get_upgrade_op
>
>  log = logging.getLogger(__name__)
> -__version__ = 4
> +__version__ = 5
>
>
>  def upgrade_1(session, metadata):
> @@ -106,3 +106,14 @@
>      op.execute('INSERT INTO authors_songs_tmp SELECT author_id, song_id,
> "" FROM authors_songs')
>      op.drop_table('authors_songs')
>      op.rename_table('authors_songs_tmp', 'authors_songs')
> +
> +
> +def upgrade_5(session, metadata):
> +    """
> +    Version 5 upgrade.
> +
> +    This upgrade adds a footer enum to the songs table, indicating when
> the footer section of the slide should
> +    be shown on a song
> +    """
> +    op = get_upgrade_op(session)
> +    op.add_column('songs', Column('footer', types.Integer(), default=0))
>
>
>

-- 
https://code.launchpad.net/~martin-woodhart/openlp/show-hide-song-footer/+merge/238838
Your team OpenLP Core is subscribed to branch lp:openlp.


References