From dff14b94de4dc3b0c3d6f15177b0e29c7e93c096 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Wed, 2 Apr 2008 19:57:47 +0200 Subject: [PATCH] Added release format type to release selection. Fixes ticket #3074 --- picard/album.py | 5 +++-- picard/const.py | 18 ++++++++++++++++++ picard/mbxml.py | 2 ++ picard/ui/itemviews.py | 4 ++++ picard/util/tags.py | 1 + 5 files changed, 28 insertions(+), 2 deletions(-) diff --git a/picard/album.py b/picard/album.py index 6757f1cd9..1a93d6a1b 100644 --- a/picard/album.py +++ b/picard/album.py @@ -42,7 +42,7 @@ _TRANSLATE_TAGS = { class ReleaseEvent(object): - ATTRS = ['date', 'releasecountry', 'label', 'barcode', 'catalognumber'] + ATTRS = ['date', 'releasecountry', 'label', 'barcode', 'catalognumber', 'format'] def __init__(self): for attr in self.ATTRS: @@ -379,12 +379,13 @@ class Album(DataObject, Item): else: track.update() - def add_release_event(self, date=None, releasecountry=None, label=None, barcode=None, catalognumber=None): + def add_release_event(self, date=None, releasecountry=None, label=None, barcode=None, catalognumber=None, format=None): rel = ReleaseEvent() rel.date = date rel.releasecountry = releasecountry rel.label = label rel.barcode = barcode rel.catalognumber = catalognumber + rel.format = format self.release_events.append(rel) return rel diff --git a/picard/const.py b/picard/const.py index 1ed47c955..4f0759272 100644 --- a/picard/const.py +++ b/picard/const.py @@ -35,6 +35,24 @@ AMAZON_STORE_ASSOCIATE_IDS = { # MusicDNS client ID MUSICDNS_KEY = "0736ac2cd889ef77f26f6b5e3fb8a09c" +# Release formats +RELEASE_FORMATS = { + u'CD': N_('CD'), + u'DVD': N_('DVD'), + u'SACD': N_('SACD'), + u'LaserDisc': N_('LaserDisc'), + u'MiniDisc': N_('MiniDisc'), + u'Vinyl': N_('Vinyl'), + u'Cassette': N_('Cassette'), + u'Cartridge': N_('Cartridge (4/8-tracks)'), + u'ReelToReel': N_('Reel-to-Reel'), + u'DAT': N_('DAT'), + u'Digital': N_('Digital Media'), + u'WaxCylinder': N_('Wax Cylinder'), + u'PianoRoll': N_('Piano Roll'), + u'Other': N_('Other'), +} + # Release countries RELEASE_COUNTRIES = { u'BD': N_('Bangladesh'), diff --git a/picard/mbxml.py b/picard/mbxml.py index 1f049b1e1..07d0744c2 100644 --- a/picard/mbxml.py +++ b/picard/mbxml.py @@ -167,6 +167,8 @@ def release_to_metadata(node, m, config=None, album=None): except (AttributeError, IndexError): pass try: args['label'] = relevent.label[0].name[0].text except (AttributeError, IndexError): pass + try: args['format'] = relevent.format + except (AttributeError, IndexError): pass if album: rel = album.add_release_event(**args) elif name == 'track_list': diff --git a/picard/ui/itemviews.py b/picard/ui/itemviews.py index 3f338be4e..ea04aac8e 100644 --- a/picard/ui/itemviews.py +++ b/picard/ui/itemviews.py @@ -27,6 +27,7 @@ from picard.track import Track from picard.util import encode_filename, icontheme, partial from picard.config import Option, TextOption from picard.plugin import ExtensionPoint +from picard.const import RELEASE_FORMATS class BaseAction(QtGui.QAction): @@ -309,6 +310,9 @@ class BaseTreeView(QtGui.QTreeWidget): name.append(rel.label) if rel.catalognumber: name.append(rel.catalognumber) + if rel.format: + try: name.append(RELEASE_FORMATS[rel.format]) + except (KeyError): name.append(rel.format) action = releases_menu.addAction(" / ".join(name)) action.setData(QtCore.QVariant(i)) action.setCheckable(True) diff --git a/picard/util/tags.py b/picard/util/tags.py index 48d68c372..db941ee3c 100644 --- a/picard/util/tags.py +++ b/picard/util/tags.py @@ -66,6 +66,7 @@ tag_names = { 'label': N_('Record Label'), 'barcode': N_('Barcode'), 'catalognumber': N_('Catalog Number'), + 'format': N_('Format'), 'djmixer': N_('DJ-Mixer'), 'media': N_('Media'), 'lyrics:': N_('Lyrics'),