Changing Author type functional

This commit is contained in:
Samuel Mehrbrodt 2014-07-05 21:56:32 +02:00
parent aec5a8546b
commit 5d7b60f714
2 changed files with 38 additions and 7 deletions

View File

@ -356,12 +356,9 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog, RegistryProperties):
# Types # Types
self.author_types_combo_box.clear() self.author_types_combo_box.clear()
self.author_types_combo_box.addItem('')
# 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) for author_type in AuthorType.SortedTypes:
self.author_types_combo_box.addItem(AuthorType.Types[AuthorType.Music], AuthorType.Music) self.author_types_combo_box.addItem(AuthorType.Types[author_type], author_type)
self.author_types_combo_box.addItem(AuthorType.Types[AuthorType.WordsAndMusic], AuthorType.WordsAndMusic)
self.author_types_combo_box.addItem(AuthorType.Types[AuthorType.Translation], AuthorType.Translation)
def load_topics(self): def load_topics(self):
""" """
@ -612,8 +609,17 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog, RegistryProperties):
self.author_edit_button.setEnabled(False) self.author_edit_button.setEnabled(False)
item = self.authors_list_view.currentItem() item = self.authors_list_view.currentItem()
author_id, author_type = item.data(QtCore.Qt.UserRole) author_id, author_type = item.data(QtCore.Qt.UserRole)
choice, ok = QtGui.QInputDialog.getItem(self, translate('SongsPlugin.EditSongForm', 'Edit Author Type'),
#dialog = QtGui.QDialog(self) translate('SongsPlugin.EditSongForm', 'Choose type for this author'),
AuthorType.TranslatedTypes,
current=AuthorType.SortedTypes.index(author_type),
editable=False)
if not ok:
return
author = self.manager.get_object(Author, author_id)
author_type = AuthorType.from_translated_text(choice)
item.setData(QtCore.Qt.UserRole, (author_id, author_type))
item.setText(author.get_display_name(author_type))
def on_author_remove_button_clicked(self): def on_author_remove_button_clicked(self):
""" """

View File

@ -69,17 +69,42 @@ class AuthorType(object):
The 'words+music' type is not an official type, but is provided for convenience. The 'words+music' type is not an official type, but is provided for convenience.
""" """
NoType = ''
Words = 'words' Words = 'words'
Music = 'music' Music = 'music'
WordsAndMusic = 'words+music' WordsAndMusic = 'words+music'
Translation = 'translation' Translation = 'translation'
Types = { Types = {
NoType: '',
Words: translate('SongsPlugin.AuthorType', 'Words', 'Author who wrote the lyrics of a song'), Words: translate('SongsPlugin.AuthorType', 'Words', 'Author who wrote the lyrics of a song'),
Music: translate('SongsPlugin.AuthorType', 'Music', 'Author who wrote the music of a song'), Music: translate('SongsPlugin.AuthorType', 'Music', 'Author who wrote the music of a song'),
WordsAndMusic: translate('SongsPlugin.AuthorType', 'Words and Music', WordsAndMusic: translate('SongsPlugin.AuthorType', 'Words and Music',
'Author who wrote both lyrics and music of a song'), 'Author who wrote both lyrics and music of a song'),
Translation: translate('SongsPlugin.AuthorType', 'Translation', 'Author who translated the song') Translation: translate('SongsPlugin.AuthorType', 'Translation', 'Author who translated the song')
} }
SortedTypes = [
NoType,
Words,
Music,
WordsAndMusic
]
TranslatedTypes = [
Types[NoType],
Types[Words],
Types[Music],
Types[WordsAndMusic]
]
@staticmethod
def from_translated_text(translated_type):
"""
Get the AuthorType from a translated string.
:param translated_type: Translated Author type.
"""
for key, value in AuthorType.Types.items():
if value == translated_type:
return key
return None
class Book(BaseModel): class Book(BaseModel):