Merge pull request #516 from samj1912/supporttags

PICARD-253: Show only supported tags in UI
This commit is contained in:
Laurent Monin
2017-01-04 14:39:44 +01:00
committed by GitHub
5 changed files with 19 additions and 8 deletions

View File

@@ -204,6 +204,9 @@ class APEv2File(File):
else:
return name.title()
def supports_tag(self, name):
return bool(name)
class MusepackFile(APEv2File):

View File

@@ -419,11 +419,7 @@ class ID3File(File):
del tags[real_name]
def supports_tag(self, name):
return (name in self.__rtranslate
or name in self.__rtranslate_freetext
or name.startswith('performer:')
or name.startswith('lyrics:') or name == 'lyrics'
or name in self.__other_supported_tags)
return ((name and not name.startswith("~")) or name == "~rating")
def _get_tag_name(self, name):
if name in self.__rtranslate:

View File

@@ -260,6 +260,9 @@ class VCommentFile(File):
else:
return name
def supports_tag(self, name):
return bool(name)
class FLACFile(VCommentFile):

View File

@@ -37,6 +37,10 @@ class EditTagDialog(PicardDialog):
self.different = False
self.default_tags = sorted(
set(TAG_NAMES.keys() + self.metadata_box.tag_diff.tag_names))
if len(self.metadata_box.files) == 1:
current_file = list(self.metadata_box.files)[0]
self.default_tags = filter(lambda x: current_file.supports_tag(x),
self.default_tags)
tag_names = self.ui.tag_names
tag_names.editTextChanged.connect(self.tag_changed)
tag_names.addItem("")

View File

@@ -462,12 +462,17 @@ class MetadataBox(QtGui.QTableWidget):
self.setRowCount(0)
return
self.setRowCount(len(result.tag_names))
orig_flags = QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled
new_flags = orig_flags | QtCore.Qt.ItemIsEditable
if len(self.files) == 1:
current_file = list(self.files)[0]
display_tags = filter(lambda x: current_file.supports_tag(x),
result.tag_names)
else:
display_tags = result.tag_names
self.setRowCount(len(display_tags))
for i, name in enumerate(result.tag_names):
for i, name in enumerate(display_tags):
length = name == "~length"
tag_item = self.item(i, 0)
orig_item = self.item(i, 1)