diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py
index 97a1a7a12..f9bda3100 100644
--- a/openlp/plugins/songs/lib/__init__.py
+++ b/openlp/plugins/songs/lib/__init__.py
@@ -667,14 +667,23 @@ def transpose_chord(chord, transpose_value, notation):
def make_list(array):
- if len(array) > 0:
- result = []
- for i in range(len(array)):
- result.append({'entry': array[i]})
- if i == 0:
- result[i]['first'] = True
- if i == len(array) - 1:
- result[i]['last'] = True
- return result
- else:
+ """
+ converts an ordinary list into a mustache ready dict construct augmented with some information to enable special
+ formatting features with the first, second to last and last element.
+
+ :param array: input list
+ :return: mustache ready and augmented dict
+ """
+ if len(array) < 0:
return False
+
+ result = []
+ for i in range(len(array)):
+ result.append({'entry': array[i]})
+ if i == 0:
+ result[i]['first'] = True
+ if i == len(array) - 1:
+ result[i]['last'] = True
+ if i == len(array) - 1 or i == len(array) - 2:
+ result[i]['last_or_penultimate'] = True
+ return result
diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py
index 799681fc7..3943f0a3e 100644
--- a/openlp/plugins/songs/lib/mediaitem.py
+++ b/openlp/plugins/songs/lib/mediaitem.py
@@ -678,6 +678,8 @@ class SongMediaItem(MediaManagerItem):
'authors_words_music': make_list(authors_words_music),
'authors_translation_label': AuthorType.Types[AuthorType.Translation],
'authors_translation': make_list(authors_translation),
+ 'authors_words_all': make_list(authors_words + authors_words_music),
+ 'authors_music_all': make_list(authors_music + authors_words_music),
'copyright': song.copyright,
'songbook_entries': make_list(songbooks),
'ccli_license': Settings().value('core/ccli number'),
diff --git a/openlp/plugins/songs/lib/songstab.py b/openlp/plugins/songs/lib/songstab.py
index fc31101d4..fb7a820cc 100644
--- a/openlp/plugins/songs/lib/songstab.py
+++ b/openlp/plugins/songs/lib/songstab.py
@@ -98,7 +98,6 @@ class SongsTab(SettingsTab):
self.footer_layout.addWidget(self.footer_reset_button, alignment=QtCore.Qt.AlignRight)
self.right_layout.addWidget(self.footer_group_box)
-
self.left_layout.addStretch()
self.right_layout.addStretch()
self.tool_bar_active_check_box.stateChanged.connect(self.on_tool_bar_active_check_box_changed)
@@ -140,13 +139,17 @@ class SongsTab(SettingsTab):
['written_by', const.format(translate('SongsPlugin.SongsTab', 'Written By')), True, False],
['authors_none', translate('SongsPlugin.SongsTab', 'Authors when type is not set'), False, True],
['authors_words_label', const.format(AuthorType.Types[AuthorType.Words]), False, False],
- ['authors_words', translate('SongsPlugin.SongsTab', 'Authors (Type Words)'), False, True],
+ ['authors_words', translate('SongsPlugin.SongsTab', 'Authors (Type "Words")'), False, True],
['authors_music_label', const.format(AuthorType.Types[AuthorType.Music]), False, False],
- ['authors_music', translate('SongsPlugin.SongsTab', 'Authors (Type Music)'), False, True],
+ ['authors_music', translate('SongsPlugin.SongsTab', 'Authors (Type "Music")'), False, True],
['authors_words_music_label', const.format(AuthorType.Types[AuthorType.WordsAndMusic]), False, False],
- ['authors_words_music', translate('SongsPlugin.SongsTab', 'Authors (Type Words and Music)'), False, True],
+ ['authors_words_music', translate('SongsPlugin.SongsTab', 'Authors (Type "Words and Music")'), False, True],
['authors_translation_label', const.format(AuthorType.Types[AuthorType.Translation]), False, False],
- ['authors_translation', translate('SongsPlugin.SongsTab', 'Authors (Type Translation)'), False, True],
+ ['authors_translation', translate('SongsPlugin.SongsTab', 'Authors (Type "Translation")'), False, True],
+ ['authors_words_all', translate('SongsPlugin.SongsTab', 'Authors (Type "Words" & "Words and Music")'),
+ False, True],
+ ['authors_music_all', translate('SongsPlugin.SongsTab', 'Authors (Type "Music" & "Words and Music")'),
+ False, True],
['copyright', translate('SongsPlugin.SongsTab', 'Copyright information'), True, False],
['songbook_entries', translate('SongsPlugin.SongsTab', 'Songbook Entries'), False, True],
['ccli_license', translate('SongsPlugin.SongsTab', 'CCLI License'), True, False],
@@ -166,16 +169,19 @@ class SongsTab(SettingsTab):
placeholder_info += ''
placeholder_info += '\n
¹ {}'.format(translate('SongsPlugin.SongsTab', 'can be empty'))
placeholder_info += '\n
² {}:
{{#first}} True {}'\ + '{{#last}} True {}
{{entry}} {}
' \ - '{{#last}} True {}