Add new type for 'Words and Music'

This commit is contained in:
Samuel Mehrbrodt 2014-04-08 20:52:05 +02:00
parent fb85b9858a
commit 577c7321ff
3 changed files with 13 additions and 2 deletions

View File

@ -308,6 +308,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog, RegistryProperties):
# Don't iterate over the dictionary to give them this specific order # Don't iterate over the dictionary to give them this specific order
self.author_types_combo_box.addItem(AuthorType.Types[AuthorType.Words], AuthorType.Words) self.author_types_combo_box.addItem(AuthorType.Types[AuthorType.Words], AuthorType.Words)
self.author_types_combo_box.addItem(AuthorType.Types[AuthorType.Music], AuthorType.Music) self.author_types_combo_box.addItem(AuthorType.Types[AuthorType.Music], AuthorType.Music)
self.author_types_combo_box.addItem(AuthorType.Types[AuthorType.WordsAndMusic], AuthorType.WordsAndMusic)
self.author_types_combo_box.addItem(AuthorType.Types[AuthorType.Translation], AuthorType.Translation) self.author_types_combo_box.addItem(AuthorType.Types[AuthorType.Translation], AuthorType.Translation)
def load_topics(self): def load_topics(self):

View File

@ -66,13 +66,17 @@ class AuthorType(object):
""" """
Enumeration for Author types. Enumeration for Author types.
They are defined by OpenLyrics: http://openlyrics.info/dataformat.html#authors They are defined by OpenLyrics: http://openlyrics.info/dataformat.html#authors
The 'words+music' type is not an official type, but is provided for convenience.
""" """
Words = 'words' Words = 'words'
Music = 'music' Music = 'music'
WordsAndMusic = 'words+music'
Translation = 'translation' Translation = 'translation'
Types = { Types = {
Words: translate('OpenLP.Ui', 'Words'), Words: translate('OpenLP.Ui', 'Words'),
Music: translate('OpenLP.Ui', 'Music'), Music: translate('OpenLP.Ui', 'Music'),
WordsAndMusic: translate('OpenLP.Ui', 'Words and Music'),
Translation: translate('OpenLP.Ui', 'Translation') Translation: translate('OpenLP.Ui', 'Translation')
} }

View File

@ -71,7 +71,7 @@ from lxml import etree, objectify
from openlp.core.common import translate from openlp.core.common import translate
from openlp.core.lib import FormattingTags from openlp.core.lib import FormattingTags
from openlp.plugins.songs.lib import VerseType, clean_song from openlp.plugins.songs.lib import VerseType, clean_song
from openlp.plugins.songs.lib.db import Author, AuthorSong, Book, Song, Topic from openlp.plugins.songs.lib.db import Author, AuthorSong, AuthorType, Book, Song, Topic
from openlp.core.utils import get_application_version from openlp.core.utils import get_application_version
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -274,7 +274,13 @@ class OpenLyrics(object):
for author_song in song.authors_songs: for author_song in song.authors_songs:
element = self._add_text_to_element('author', authors, author_song.author.display_name) element = self._add_text_to_element('author', authors, author_song.author.display_name)
if author_song.author_type: if author_song.author_type:
element.set('type', author_song.author_type) # Handle the special case 'words+music': Need to create two separate authors for that
if author_song.author_type == AuthorType.WordsAndMusic:
element.set('type', AuthorType.Words)
element = self._add_text_to_element('author', authors, author_song.author.display_name)
element.set('type', AuthorType.Music)
else:
element.set('type', author_song.author_type)
book = self.manager.get_object_filtered(Book, Book.id == song.song_book_id) book = self.manager.get_object_filtered(Book, Book.id == song.song_book_id)
if book is not None: if book is not None:
book = book.name book = book.name