forked from openlp/openlp
Always display copyright symbol in footer
This commit is contained in:
parent
046f661d37
commit
60f11d9173
@ -218,12 +218,12 @@ class Ui_EditSongDialog(object):
|
|||||||
self.rights_layout.setObjectName('rights_layout')
|
self.rights_layout.setObjectName('rights_layout')
|
||||||
self.copyright_layout = QtGui.QHBoxLayout()
|
self.copyright_layout = QtGui.QHBoxLayout()
|
||||||
self.copyright_layout.setObjectName('copyright_layout')
|
self.copyright_layout.setObjectName('copyright_layout')
|
||||||
|
self.copyright_label = QtGui.QLabel(self.rights_group_box)
|
||||||
|
self.copyright_label.setObjectName('copyright_label')
|
||||||
|
self.copyright_layout.addWidget(self.copyright_label)
|
||||||
self.copyright_edit = QtGui.QLineEdit(self.rights_group_box)
|
self.copyright_edit = QtGui.QLineEdit(self.rights_group_box)
|
||||||
self.copyright_edit.setObjectName('copyright_edit')
|
self.copyright_edit.setObjectName('copyright_edit')
|
||||||
self.copyright_layout.addWidget(self.copyright_edit)
|
self.copyright_layout.addWidget(self.copyright_edit)
|
||||||
self.copyright_insert_button = QtGui.QToolButton(self.rights_group_box)
|
|
||||||
self.copyright_insert_button.setObjectName('copyright_insert_button')
|
|
||||||
self.copyright_layout.addWidget(self.copyright_insert_button)
|
|
||||||
self.rights_layout.addLayout(self.copyright_layout)
|
self.rights_layout.addLayout(self.copyright_layout)
|
||||||
self.ccli_layout = QtGui.QHBoxLayout()
|
self.ccli_layout = QtGui.QHBoxLayout()
|
||||||
self.ccli_layout.setObjectName('ccli_layout')
|
self.ccli_layout.setObjectName('ccli_layout')
|
||||||
@ -318,7 +318,7 @@ class Ui_EditSongDialog(object):
|
|||||||
self.theme_group_box.setTitle(UiStrings().Theme)
|
self.theme_group_box.setTitle(UiStrings().Theme)
|
||||||
self.theme_add_button.setText(translate('SongsPlugin.EditSongForm', 'New &Theme'))
|
self.theme_add_button.setText(translate('SongsPlugin.EditSongForm', 'New &Theme'))
|
||||||
self.rights_group_box.setTitle(translate('SongsPlugin.EditSongForm', 'Copyright Information'))
|
self.rights_group_box.setTitle(translate('SongsPlugin.EditSongForm', 'Copyright Information'))
|
||||||
self.copyright_insert_button.setText(SongStrings.CopyrightSymbol)
|
self.copyright_label.setText(translate('SongsPlugin.EditSongForm', 'Copyright:'))
|
||||||
self.ccli_label.setText(UiStrings().CCLINumberLabel)
|
self.ccli_label.setText(UiStrings().CCLINumberLabel)
|
||||||
self.comments_group_box.setTitle(translate('SongsPlugin.EditSongForm', 'Comments'))
|
self.comments_group_box.setTitle(translate('SongsPlugin.EditSongForm', 'Comments'))
|
||||||
self.song_tab_widget.setTabText(self.song_tab_widget.indexOf(self.theme_tab),
|
self.song_tab_widget.setTabText(self.song_tab_widget.indexOf(self.theme_tab),
|
||||||
|
@ -75,7 +75,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog, RegistryProperties):
|
|||||||
self.topic_add_button.clicked.connect(self.on_topic_add_button_clicked)
|
self.topic_add_button.clicked.connect(self.on_topic_add_button_clicked)
|
||||||
self.topic_remove_button.clicked.connect(self.on_topic_remove_button_clicked)
|
self.topic_remove_button.clicked.connect(self.on_topic_remove_button_clicked)
|
||||||
self.topics_list_view.itemClicked.connect(self.on_topic_list_view_clicked)
|
self.topics_list_view.itemClicked.connect(self.on_topic_list_view_clicked)
|
||||||
self.copyright_insert_button.clicked.connect(self.on_copyright_insert_button_triggered)
|
|
||||||
self.verse_add_button.clicked.connect(self.on_verse_add_button_clicked)
|
self.verse_add_button.clicked.connect(self.on_verse_add_button_clicked)
|
||||||
self.verse_list_widget.doubleClicked.connect(self.on_verse_edit_button_clicked)
|
self.verse_list_widget.doubleClicked.connect(self.on_verse_edit_button_clicked)
|
||||||
self.verse_edit_button.clicked.connect(self.on_verse_edit_button_clicked)
|
self.verse_edit_button.clicked.connect(self.on_verse_edit_button_clicked)
|
||||||
@ -796,18 +795,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog, RegistryProperties):
|
|||||||
label_text = self.not_all_verses_used_warning
|
label_text = self.not_all_verses_used_warning
|
||||||
self.warning_label.setText(label_text)
|
self.warning_label.setText(label_text)
|
||||||
|
|
||||||
def on_copyright_insert_button_triggered(self):
|
|
||||||
"""
|
|
||||||
Copyright insert button pressed
|
|
||||||
"""
|
|
||||||
text = self.copyright_edit.text()
|
|
||||||
pos = self.copyright_edit.cursorPosition()
|
|
||||||
sign = SongStrings.CopyrightSymbol
|
|
||||||
text = text[:pos] + sign + text[pos:]
|
|
||||||
self.copyright_edit.setText(text)
|
|
||||||
self.copyright_edit.setFocus()
|
|
||||||
self.copyright_edit.setCursorPosition(pos + len(sign))
|
|
||||||
|
|
||||||
def on_maintenance_button_clicked(self):
|
def on_maintenance_button_clicked(self):
|
||||||
"""
|
"""
|
||||||
Maintenance button pressed
|
Maintenance button pressed
|
||||||
|
@ -506,7 +506,8 @@ class SongMediaItem(MediaManagerItem):
|
|||||||
if authors_translation:
|
if authors_translation:
|
||||||
item.raw_footer.append("%s: %s" % (AuthorType.Types[AuthorType.Translation],
|
item.raw_footer.append("%s: %s" % (AuthorType.Types[AuthorType.Translation],
|
||||||
create_separated_list(authors_translation)))
|
create_separated_list(authors_translation)))
|
||||||
item.raw_footer.append(song.copyright)
|
if song.copyright:
|
||||||
|
item.raw_footer.append('%s %s' % (SongStrings.CopyrightSymbol, song.copyright))
|
||||||
if self.display_songbook and song.book:
|
if self.display_songbook and song.book:
|
||||||
item.raw_footer.append("%s #%s" % (song.book.name, song.song_number))
|
item.raw_footer.append("%s #%s" % (song.book.name, song.song_number))
|
||||||
if Settings().value('core/ccli number'):
|
if Settings().value('core/ccli number'):
|
||||||
|
@ -27,8 +27,7 @@
|
|||||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
"""
|
"""
|
||||||
The :mod:`upgrade` module provides a way for the database and schema that is the
|
The :mod:`upgrade` module provides a way for the database and schema that is the backend for the Songs plugin
|
||||||
backend for the Songs plugin
|
|
||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@ -39,7 +38,7 @@ from sqlalchemy.sql.expression import func, false, null, text
|
|||||||
from openlp.core.lib.db import get_upgrade_op
|
from openlp.core.lib.db import get_upgrade_op
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
__version__ = 4
|
__version__ = 5
|
||||||
|
|
||||||
|
|
||||||
def upgrade_1(session, metadata):
|
def upgrade_1(session, metadata):
|
||||||
@ -119,3 +118,17 @@ def upgrade_4(session, metadata):
|
|||||||
op.rename_table('authors_songs_tmp', 'authors_songs')
|
op.rename_table('authors_songs_tmp', 'authors_songs')
|
||||||
except OperationalError:
|
except OperationalError:
|
||||||
log.info('Upgrade 4 has already been run')
|
log.info('Upgrade 4 has already been run')
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade_5(session, metadata):
|
||||||
|
"""
|
||||||
|
Version 5 upgrade
|
||||||
|
|
||||||
|
This upgrade removes all hard-coded copyright symbols from the copyright field in the songs.
|
||||||
|
The copyright symbol is now being added directly in the footer.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
op = get_upgrade_op(session)
|
||||||
|
op.execute('UPDATE songs SET copyright=TRIM(REPLACE(copyright, "©", ""))')
|
||||||
|
except OperationalError:
|
||||||
|
log.info('Upgrade 5 has already been run')
|
||||||
|
@ -58,7 +58,7 @@ class TestMediaItem(TestCase, TestMixin):
|
|||||||
author_list = self.media_item.generate_footer(service_item, mock_song)
|
author_list = self.media_item.generate_footer(service_item, mock_song)
|
||||||
|
|
||||||
# THEN: I get the following Array returned
|
# THEN: I get the following Array returned
|
||||||
self.assertEqual(service_item.raw_footer, ['My Song', 'Written by: my author', 'My copyright'],
|
self.assertEqual(service_item.raw_footer, ['My Song', 'Written by: my author', '© My copyright'],
|
||||||
'The array should be returned correctly with a song, one author and copyright')
|
'The array should be returned correctly with a song, one author and copyright')
|
||||||
self.assertEqual(author_list, ['my author'],
|
self.assertEqual(author_list, ['my author'],
|
||||||
'The author list should be returned correctly with one author')
|
'The author list should be returned correctly with one author')
|
||||||
@ -97,7 +97,7 @@ class TestMediaItem(TestCase, TestMixin):
|
|||||||
|
|
||||||
# THEN: I get the following Array returned
|
# THEN: I get the following Array returned
|
||||||
self.assertEqual(service_item.raw_footer, ['My Song', 'Words: another author', 'Music: my author',
|
self.assertEqual(service_item.raw_footer, ['My Song', 'Words: another author', 'Music: my author',
|
||||||
'Translation: translator', 'My copyright'],
|
'Translation: translator', '© My copyright'],
|
||||||
'The array should be returned correctly with a song, two authors and copyright')
|
'The array should be returned correctly with a song, two authors and copyright')
|
||||||
self.assertEqual(author_list, ['another author', 'my author', 'translator'],
|
self.assertEqual(author_list, ['another author', 'my author', 'translator'],
|
||||||
'The author list should be returned correctly with two authors')
|
'The author list should be returned correctly with two authors')
|
||||||
@ -117,7 +117,7 @@ class TestMediaItem(TestCase, TestMixin):
|
|||||||
self.media_item.generate_footer(service_item, mock_song)
|
self.media_item.generate_footer(service_item, mock_song)
|
||||||
|
|
||||||
# THEN: I get the following Array returned
|
# THEN: I get the following Array returned
|
||||||
self.assertEqual(service_item.raw_footer, ['My Song', 'My copyright', 'CCLI License: 1234'],
|
self.assertEqual(service_item.raw_footer, ['My Song', '© My copyright', 'CCLI License: 1234'],
|
||||||
'The array should be returned correctly with a song, an author, copyright and ccli')
|
'The array should be returned correctly with a song, an author, copyright and ccli')
|
||||||
|
|
||||||
# WHEN: I amend the CCLI value
|
# WHEN: I amend the CCLI value
|
||||||
@ -125,7 +125,7 @@ class TestMediaItem(TestCase, TestMixin):
|
|||||||
self.media_item.generate_footer(service_item, mock_song)
|
self.media_item.generate_footer(service_item, mock_song)
|
||||||
|
|
||||||
# THEN: I would get an amended footer string
|
# THEN: I would get an amended footer string
|
||||||
self.assertEqual(service_item.raw_footer, ['My Song', 'My copyright', 'CCLI License: 4321'],
|
self.assertEqual(service_item.raw_footer, ['My Song', '© My copyright', 'CCLI License: 4321'],
|
||||||
'The array should be returned correctly with a song, an author, copyright and amended ccli')
|
'The array should be returned correctly with a song, an author, copyright and amended ccli')
|
||||||
|
|
||||||
def build_song_footer_base_songbook_test(self):
|
def build_song_footer_base_songbook_test(self):
|
||||||
@ -145,14 +145,14 @@ class TestMediaItem(TestCase, TestMixin):
|
|||||||
self.media_item.generate_footer(service_item, mock_song)
|
self.media_item.generate_footer(service_item, mock_song)
|
||||||
|
|
||||||
# THEN: The songbook should not be in the footer
|
# THEN: The songbook should not be in the footer
|
||||||
self.assertEqual(service_item.raw_footer, ['My Song', 'My copyright'])
|
self.assertEqual(service_item.raw_footer, ['My Song', '© My copyright'])
|
||||||
|
|
||||||
# WHEN: I activate the "display songbook" option
|
# WHEN: I activate the "display songbook" option
|
||||||
self.media_item.display_songbook = True
|
self.media_item.display_songbook = True
|
||||||
self.media_item.generate_footer(service_item, mock_song)
|
self.media_item.generate_footer(service_item, mock_song)
|
||||||
|
|
||||||
# THEN: The songbook should be in the footer
|
# THEN: The songbook should be in the footer
|
||||||
self.assertEqual(service_item.raw_footer, ['My Song', 'My copyright', 'My songbook #12'])
|
self.assertEqual(service_item.raw_footer, ['My Song', '© My copyright', 'My songbook #12'])
|
||||||
|
|
||||||
def authors_match_test(self):
|
def authors_match_test(self):
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user