From 3585bbb32e35976f269e21dfcb9b0a47c534ef88 Mon Sep 17 00:00:00 2001
From: Philipp Wolfer
Date: Tue, 19 Nov 2019 17:49:44 +0100
Subject: [PATCH] PICARD-1671: Moved tags compatibility options to separate
page
---
picard/ui/options/dialog.py | 1 +
picard/ui/options/tags.py | 77 +----
picard/ui/options/tags_compatibility.py | 121 ++++++++
picard/ui/ui_options_tags.py | 147 +---------
picard/ui/ui_options_tags_compatibility.py | 163 +++++++++++
ui/options_tags.ui | 278 +-----------------
ui/options_tags_compatibility.ui | 309 +++++++++++++++++++++
7 files changed, 602 insertions(+), 494 deletions(-)
create mode 100644 picard/ui/options/tags_compatibility.py
create mode 100644 picard/ui/ui_options_tags_compatibility.py
create mode 100644 ui/options_tags_compatibility.ui
diff --git a/picard/ui/options/dialog.py b/picard/ui/options/dialog.py
index 0b5f5f6ba..9d2bc9460 100644
--- a/picard/ui/options/dialog.py
+++ b/picard/ui/options/dialog.py
@@ -57,6 +57,7 @@ from picard.ui.options import ( # noqa: F401 # pylint: disable=unused-import
renaming,
scripting,
tags,
+ tags_compatibility,
)
from picard.ui.util import StandardButton
diff --git a/picard/ui/options/tags.py b/picard/ui/options/tags.py
index f22f7ecdb..eb135e934 100644
--- a/picard/ui/options/tags.py
+++ b/picard/ui/options/tags.py
@@ -17,7 +17,6 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-from functools import partial
import re
from PyQt5 import (
@@ -44,71 +43,31 @@ class TagsOptionsPage(OptionsPage):
ACTIVE = True
options = [
- config.BoolOption("setting", "clear_existing_tags", False),
- config.TextOption("setting", "preserved_tags", ""),
- config.BoolOption("setting", "write_id3v1", True),
- config.BoolOption("setting", "write_id3v23", True),
- config.TextOption("setting", "id3v2_encoding", "utf-16"),
- config.TextOption("setting", "id3v23_join_with", "/"),
- config.BoolOption("setting", "remove_id3_from_flac", False),
- config.BoolOption("setting", "remove_ape_from_mp3", False),
- config.BoolOption("setting", "tpe2_albumartist", False),
- config.BoolOption("setting", "itunes_compatible_grouping", False),
config.BoolOption("setting", "dont_write_tags", False),
config.BoolOption("setting", "preserve_timestamps", False),
- config.BoolOption("setting", "aac_save_ape", True),
- config.BoolOption("setting", "remove_ape_from_aac", False),
- config.BoolOption("setting", "ac3_save_ape", True),
- config.BoolOption("setting", "remove_ape_from_ac3", False),
+ config.BoolOption("setting", "clear_existing_tags", False),
+ config.BoolOption("setting", "remove_id3_from_flac", False),
+ config.BoolOption("setting", "remove_ape_from_mp3", False),
+ config.TextOption("setting", "preserved_tags", ""),
]
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_TagsOptionsPage()
self.ui.setupUi(self)
- self.ui.write_id3v23.clicked.connect(self.update_encodings)
- self.ui.write_id3v24.clicked.connect(partial(self.update_encodings, force_utf8=True))
self.completer = QtWidgets.QCompleter(sorted(TAG_NAMES.keys()), self)
self.completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
self.completer.setWidget(self.ui.preserved_tags)
self.ui.preserved_tags.textEdited.connect(self.preserved_tags_edited)
self.completer.activated.connect(self.completer_activated)
- self.ui.aac_no_tags.toggled.connect(self.ui.remove_ape_from_aac.setEnabled)
- self.ui.ac3_no_tags.toggled.connect(self.ui.remove_ape_from_ac3.setEnabled)
def load(self):
self.ui.write_tags.setChecked(not config.setting["dont_write_tags"])
self.ui.preserve_timestamps.setChecked(config.setting["preserve_timestamps"])
self.ui.clear_existing_tags.setChecked(config.setting["clear_existing_tags"])
- self.ui.write_id3v1.setChecked(config.setting["write_id3v1"])
- if config.setting["write_id3v23"]:
- self.ui.write_id3v23.setChecked(True)
- else:
- self.ui.write_id3v24.setChecked(True)
- if config.setting["id3v2_encoding"] == "iso-8859-1":
- self.ui.enc_iso88591.setChecked(True)
- elif config.setting["id3v2_encoding"] == "utf-16":
- self.ui.enc_utf16.setChecked(True)
- else:
- self.ui.enc_utf8.setChecked(True)
- self.ui.id3v23_join_with.setEditText(config.setting["id3v23_join_with"])
self.ui.remove_ape_from_mp3.setChecked(config.setting["remove_ape_from_mp3"])
self.ui.remove_id3_from_flac.setChecked(config.setting["remove_id3_from_flac"])
- self.ui.itunes_compatible_grouping.setChecked(config.setting["itunes_compatible_grouping"])
self.ui.preserved_tags.setText(config.setting["preserved_tags"])
- if config.setting["aac_save_ape"]:
- self.ui.aac_save_ape.setChecked(True)
- else:
- self.ui.aac_no_tags.setChecked(True)
- self.ui.remove_ape_from_aac.setChecked(config.setting["remove_ape_from_aac"])
- self.ui.remove_ape_from_aac.setEnabled(not config.setting["aac_save_ape"])
- if config.setting["ac3_save_ape"]:
- self.ui.ac3_save_ape.setChecked(True)
- else:
- self.ui.ac3_no_tags.setChecked(True)
- self.ui.remove_ape_from_ac3.setChecked(config.setting["remove_ape_from_ac3"])
- self.ui.remove_ape_from_ac3.setEnabled(not config.setting["ac3_save_ape"])
- self.update_encodings()
def save(self):
config.setting["dont_write_tags"] = not self.ui.write_tags.isChecked()
@@ -117,39 +76,11 @@ class TagsOptionsPage(OptionsPage):
if clear_existing_tags != config.setting["clear_existing_tags"]:
config.setting["clear_existing_tags"] = clear_existing_tags
self.tagger.window.metadata_box.update()
- config.setting["write_id3v1"] = self.ui.write_id3v1.isChecked()
- config.setting["write_id3v23"] = self.ui.write_id3v23.isChecked()
- config.setting["id3v23_join_with"] = self.ui.id3v23_join_with.currentText()
- if self.ui.enc_iso88591.isChecked():
- config.setting["id3v2_encoding"] = "iso-8859-1"
- elif self.ui.enc_utf16.isChecked():
- config.setting["id3v2_encoding"] = "utf-16"
- else:
- config.setting["id3v2_encoding"] = "utf-8"
config.setting["remove_ape_from_mp3"] = self.ui.remove_ape_from_mp3.isChecked()
config.setting["remove_id3_from_flac"] = self.ui.remove_id3_from_flac.isChecked()
- config.setting["itunes_compatible_grouping"] = self.ui.itunes_compatible_grouping.isChecked()
config.setting["preserved_tags"] = re.sub(r"[,\s]+$", "", self.ui.preserved_tags.text())
- config.setting["aac_save_ape"] = self.ui.aac_save_ape.isChecked()
- config.setting["remove_ape_from_aac"] = self.ui.remove_ape_from_aac.isChecked()
- config.setting["ac3_save_ape"] = self.ui.ac3_save_ape.isChecked()
- config.setting["remove_ape_from_ac3"] = self.ui.remove_ape_from_ac3.isChecked()
self.tagger.window.enable_tag_saving_action.setChecked(not config.setting["dont_write_tags"])
- def update_encodings(self, force_utf8=False):
- if self.ui.write_id3v23.isChecked():
- if self.ui.enc_utf8.isChecked():
- self.ui.enc_utf16.setChecked(True)
- self.ui.enc_utf8.setEnabled(False)
- self.ui.label_id3v23_join_with.setEnabled(True)
- self.ui.id3v23_join_with.setEnabled(True)
- else:
- self.ui.enc_utf8.setEnabled(True)
- if force_utf8:
- self.ui.enc_utf8.setChecked(True)
- self.ui.label_id3v23_join_with.setEnabled(False)
- self.ui.id3v23_join_with.setEnabled(False)
-
def preserved_tags_edited(self, text):
prefix = text[:self.ui.preserved_tags.cursorPosition()].split(",")[-1]
self.completer.setCompletionPrefix(prefix.strip())
diff --git a/picard/ui/options/tags_compatibility.py b/picard/ui/options/tags_compatibility.py
new file mode 100644
index 000000000..1c1246ad7
--- /dev/null
+++ b/picard/ui/options/tags_compatibility.py
@@ -0,0 +1,121 @@
+# -*- coding: utf-8 -*-
+#
+# Picard, the next-generation MusicBrainz tagger
+# Copyright (C) 2006 Lukáš Lalinský
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+from functools import partial
+
+from picard import config
+
+from picard.ui.options import (
+ OptionsPage,
+ register_options_page,
+)
+from picard.ui.ui_options_tags_compatibility import (
+ Ui_TagsCompatibilityOptionsPage,
+)
+
+
+class TagsCompatibilityOptionsPage(OptionsPage):
+
+ NAME = "tags_compatibility"
+ TITLE = N_("Tag Compatibility")
+ PARENT = "tags"
+ SORT_ORDER = 30
+ ACTIVE = True
+
+ options = [
+ config.BoolOption("setting", "write_id3v1", True),
+ config.BoolOption("setting", "write_id3v23", True),
+ config.TextOption("setting", "id3v2_encoding", "utf-16"),
+ config.TextOption("setting", "id3v23_join_with", "/"),
+ config.BoolOption("setting", "itunes_compatible_grouping", False),
+ config.BoolOption("setting", "aac_save_ape", True),
+ config.BoolOption("setting", "remove_ape_from_aac", False),
+ config.BoolOption("setting", "ac3_save_ape", True),
+ config.BoolOption("setting", "remove_ape_from_ac3", False),
+ ]
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.ui = Ui_TagsCompatibilityOptionsPage()
+ self.ui.setupUi(self)
+ self.ui.write_id3v23.clicked.connect(self.update_encodings)
+ self.ui.write_id3v24.clicked.connect(partial(self.update_encodings, force_utf8=True))
+ self.ui.aac_no_tags.toggled.connect(self.ui.remove_ape_from_aac.setEnabled)
+ self.ui.ac3_no_tags.toggled.connect(self.ui.remove_ape_from_ac3.setEnabled)
+
+ def load(self):
+ self.ui.write_id3v1.setChecked(config.setting["write_id3v1"])
+ if config.setting["write_id3v23"]:
+ self.ui.write_id3v23.setChecked(True)
+ else:
+ self.ui.write_id3v24.setChecked(True)
+ if config.setting["id3v2_encoding"] == "iso-8859-1":
+ self.ui.enc_iso88591.setChecked(True)
+ elif config.setting["id3v2_encoding"] == "utf-16":
+ self.ui.enc_utf16.setChecked(True)
+ else:
+ self.ui.enc_utf8.setChecked(True)
+ self.ui.id3v23_join_with.setEditText(config.setting["id3v23_join_with"])
+ self.ui.itunes_compatible_grouping.setChecked(config.setting["itunes_compatible_grouping"])
+ if config.setting["aac_save_ape"]:
+ self.ui.aac_save_ape.setChecked(True)
+ else:
+ self.ui.aac_no_tags.setChecked(True)
+ self.ui.remove_ape_from_aac.setChecked(config.setting["remove_ape_from_aac"])
+ self.ui.remove_ape_from_aac.setEnabled(not config.setting["aac_save_ape"])
+ if config.setting["ac3_save_ape"]:
+ self.ui.ac3_save_ape.setChecked(True)
+ else:
+ self.ui.ac3_no_tags.setChecked(True)
+ self.ui.remove_ape_from_ac3.setChecked(config.setting["remove_ape_from_ac3"])
+ self.ui.remove_ape_from_ac3.setEnabled(not config.setting["ac3_save_ape"])
+ self.update_encodings()
+
+ def save(self):
+ config.setting["write_id3v1"] = self.ui.write_id3v1.isChecked()
+ config.setting["write_id3v23"] = self.ui.write_id3v23.isChecked()
+ config.setting["id3v23_join_with"] = self.ui.id3v23_join_with.currentText()
+ if self.ui.enc_iso88591.isChecked():
+ config.setting["id3v2_encoding"] = "iso-8859-1"
+ elif self.ui.enc_utf16.isChecked():
+ config.setting["id3v2_encoding"] = "utf-16"
+ else:
+ config.setting["id3v2_encoding"] = "utf-8"
+ config.setting["itunes_compatible_grouping"] = self.ui.itunes_compatible_grouping.isChecked()
+ config.setting["aac_save_ape"] = self.ui.aac_save_ape.isChecked()
+ config.setting["remove_ape_from_aac"] = self.ui.remove_ape_from_aac.isChecked()
+ config.setting["ac3_save_ape"] = self.ui.ac3_save_ape.isChecked()
+ config.setting["remove_ape_from_ac3"] = self.ui.remove_ape_from_ac3.isChecked()
+
+ def update_encodings(self, force_utf8=False):
+ if self.ui.write_id3v23.isChecked():
+ if self.ui.enc_utf8.isChecked():
+ self.ui.enc_utf16.setChecked(True)
+ self.ui.enc_utf8.setEnabled(False)
+ self.ui.label_id3v23_join_with.setEnabled(True)
+ self.ui.id3v23_join_with.setEnabled(True)
+ else:
+ self.ui.enc_utf8.setEnabled(True)
+ if force_utf8:
+ self.ui.enc_utf8.setChecked(True)
+ self.ui.label_id3v23_join_with.setEnabled(False)
+ self.ui.id3v23_join_with.setEnabled(False)
+
+
+register_options_page(TagsCompatibilityOptionsPage)
diff --git a/picard/ui/ui_options_tags.py b/picard/ui/ui_options_tags.py
index 8b7691f7a..a38f38fdb 100644
--- a/picard/ui/ui_options_tags.py
+++ b/picard/ui/ui_options_tags.py
@@ -10,7 +10,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_TagsOptionsPage(object):
def setupUi(self, TagsOptionsPage):
TagsOptionsPage.setObjectName("TagsOptionsPage")
- TagsOptionsPage.resize(539, 633)
+ TagsOptionsPage.resize(539, 525)
self.vboxlayout = QtWidgets.QVBoxLayout(TagsOptionsPage)
self.vboxlayout.setObjectName("vboxlayout")
self.write_tags = QtWidgets.QCheckBox(TagsOptionsPage)
@@ -46,122 +46,8 @@ class Ui_TagsOptionsPage(object):
self.preserved_tags_help.setObjectName("preserved_tags_help")
self.vboxlayout1.addWidget(self.preserved_tags_help)
self.vboxlayout.addWidget(self.before_tagging)
- self.tag_compatibility = QtWidgets.QGroupBox(TagsOptionsPage)
- self.tag_compatibility.setObjectName("tag_compatibility")
- self.vboxlayout2 = QtWidgets.QVBoxLayout(self.tag_compatibility)
- self.vboxlayout2.setContentsMargins(-1, 6, -1, 7)
- self.vboxlayout2.setSpacing(2)
- self.vboxlayout2.setObjectName("vboxlayout2")
- self.id3v2_version = QtWidgets.QGroupBox(self.tag_compatibility)
- self.id3v2_version.setFlat(False)
- self.id3v2_version.setCheckable(False)
- self.id3v2_version.setObjectName("id3v2_version")
- self.horizontalLayout = QtWidgets.QHBoxLayout(self.id3v2_version)
- self.horizontalLayout.setContentsMargins(-1, 6, -1, 7)
- self.horizontalLayout.setObjectName("horizontalLayout")
- self.write_id3v24 = QtWidgets.QRadioButton(self.id3v2_version)
- self.write_id3v24.setChecked(True)
- self.write_id3v24.setObjectName("write_id3v24")
- self.horizontalLayout.addWidget(self.write_id3v24)
- self.write_id3v23 = QtWidgets.QRadioButton(self.id3v2_version)
- self.write_id3v23.setChecked(False)
- self.write_id3v23.setObjectName("write_id3v23")
- self.horizontalLayout.addWidget(self.write_id3v23)
- self.label = QtWidgets.QLabel(self.id3v2_version)
- self.label.setText("")
- self.label.setWordWrap(True)
- self.label.setObjectName("label")
- self.horizontalLayout.addWidget(self.label)
- spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.horizontalLayout.addItem(spacerItem1)
- self.vboxlayout2.addWidget(self.id3v2_version)
- self.id3v2_text_encoding = QtWidgets.QGroupBox(self.tag_compatibility)
- self.id3v2_text_encoding.setObjectName("id3v2_text_encoding")
- self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.id3v2_text_encoding)
- self.horizontalLayout_2.setContentsMargins(-1, 6, -1, 7)
- self.horizontalLayout_2.setObjectName("horizontalLayout_2")
- self.enc_utf8 = QtWidgets.QRadioButton(self.id3v2_text_encoding)
- self.enc_utf8.setObjectName("enc_utf8")
- self.horizontalLayout_2.addWidget(self.enc_utf8)
- self.enc_utf16 = QtWidgets.QRadioButton(self.id3v2_text_encoding)
- self.enc_utf16.setObjectName("enc_utf16")
- self.horizontalLayout_2.addWidget(self.enc_utf16)
- self.enc_iso88591 = QtWidgets.QRadioButton(self.id3v2_text_encoding)
- self.enc_iso88591.setObjectName("enc_iso88591")
- self.horizontalLayout_2.addWidget(self.enc_iso88591)
- spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.horizontalLayout_2.addItem(spacerItem2)
- self.label_2 = QtWidgets.QLabel(self.id3v2_text_encoding)
- self.label_2.setText("")
- self.label_2.setWordWrap(True)
- self.label_2.setObjectName("label_2")
- self.horizontalLayout_2.addWidget(self.label_2)
- self.vboxlayout2.addWidget(self.id3v2_text_encoding)
- self.hbox_id3v23_join_with = QtWidgets.QHBoxLayout()
- self.hbox_id3v23_join_with.setObjectName("hbox_id3v23_join_with")
- self.label_id3v23_join_with = QtWidgets.QLabel(self.tag_compatibility)
- sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
- sizePolicy.setHorizontalStretch(4)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.label_id3v23_join_with.sizePolicy().hasHeightForWidth())
- self.label_id3v23_join_with.setSizePolicy(sizePolicy)
- self.label_id3v23_join_with.setObjectName("label_id3v23_join_with")
- self.hbox_id3v23_join_with.addWidget(self.label_id3v23_join_with)
- self.id3v23_join_with = QtWidgets.QComboBox(self.tag_compatibility)
- sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(1)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.id3v23_join_with.sizePolicy().hasHeightForWidth())
- self.id3v23_join_with.setSizePolicy(sizePolicy)
- self.id3v23_join_with.setEditable(True)
- self.id3v23_join_with.setObjectName("id3v23_join_with")
- self.id3v23_join_with.addItem("")
- self.id3v23_join_with.setItemText(0, "/")
- self.id3v23_join_with.addItem("")
- self.id3v23_join_with.setItemText(1, "; ")
- self.id3v23_join_with.addItem("")
- self.id3v23_join_with.setItemText(2, " / ")
- self.hbox_id3v23_join_with.addWidget(self.id3v23_join_with)
- self.vboxlayout2.addLayout(self.hbox_id3v23_join_with)
- self.itunes_compatible_grouping = QtWidgets.QCheckBox(self.tag_compatibility)
- self.itunes_compatible_grouping.setObjectName("itunes_compatible_grouping")
- self.vboxlayout2.addWidget(self.itunes_compatible_grouping)
- self.write_id3v1 = QtWidgets.QCheckBox(self.tag_compatibility)
- self.write_id3v1.setObjectName("write_id3v1")
- self.vboxlayout2.addWidget(self.write_id3v1)
- self.vboxlayout.addWidget(self.tag_compatibility)
- self.aac_tags = QtWidgets.QGroupBox(TagsOptionsPage)
- self.aac_tags.setObjectName("aac_tags")
- self.verticalLayout = QtWidgets.QVBoxLayout(self.aac_tags)
- self.verticalLayout.setObjectName("verticalLayout")
- self.aac_save_ape = QtWidgets.QRadioButton(self.aac_tags)
- self.aac_save_ape.setChecked(True)
- self.aac_save_ape.setObjectName("aac_save_ape")
- self.verticalLayout.addWidget(self.aac_save_ape)
- self.aac_no_tags = QtWidgets.QRadioButton(self.aac_tags)
- self.aac_no_tags.setObjectName("aac_no_tags")
- self.verticalLayout.addWidget(self.aac_no_tags)
- self.remove_ape_from_aac = QtWidgets.QCheckBox(self.aac_tags)
- self.remove_ape_from_aac.setObjectName("remove_ape_from_aac")
- self.verticalLayout.addWidget(self.remove_ape_from_aac)
- self.vboxlayout.addWidget(self.aac_tags)
- self.ac3_files = QtWidgets.QGroupBox(TagsOptionsPage)
- self.ac3_files.setObjectName("ac3_files")
- self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.ac3_files)
- self.verticalLayout_2.setObjectName("verticalLayout_2")
- self.ac3_save_ape = QtWidgets.QRadioButton(self.ac3_files)
- self.ac3_save_ape.setChecked(True)
- self.ac3_save_ape.setObjectName("ac3_save_ape")
- self.verticalLayout_2.addWidget(self.ac3_save_ape)
- self.ac3_no_tags = QtWidgets.QRadioButton(self.ac3_files)
- self.ac3_no_tags.setObjectName("ac3_no_tags")
- self.verticalLayout_2.addWidget(self.ac3_no_tags)
- self.remove_ape_from_ac3 = QtWidgets.QCheckBox(self.ac3_files)
- self.remove_ape_from_ac3.setObjectName("remove_ape_from_ac3")
- self.verticalLayout_2.addWidget(self.remove_ape_from_ac3)
- self.vboxlayout.addWidget(self.ac3_files)
- spacerItem3 = QtWidgets.QSpacerItem(274, 41, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
- self.vboxlayout.addItem(spacerItem3)
+ spacerItem1 = QtWidgets.QSpacerItem(274, 41, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
+ self.vboxlayout.addItem(spacerItem1)
self.retranslateUi(TagsOptionsPage)
QtCore.QMetaObject.connectSlotsByName(TagsOptionsPage)
@@ -170,13 +56,6 @@ class Ui_TagsOptionsPage(object):
TagsOptionsPage.setTabOrder(self.clear_existing_tags, self.remove_id3_from_flac)
TagsOptionsPage.setTabOrder(self.remove_id3_from_flac, self.remove_ape_from_mp3)
TagsOptionsPage.setTabOrder(self.remove_ape_from_mp3, self.preserved_tags)
- TagsOptionsPage.setTabOrder(self.preserved_tags, self.write_id3v24)
- TagsOptionsPage.setTabOrder(self.write_id3v24, self.write_id3v23)
- TagsOptionsPage.setTabOrder(self.write_id3v23, self.enc_utf8)
- TagsOptionsPage.setTabOrder(self.enc_utf8, self.enc_utf16)
- TagsOptionsPage.setTabOrder(self.enc_utf16, self.enc_iso88591)
- TagsOptionsPage.setTabOrder(self.enc_iso88591, self.id3v23_join_with)
- TagsOptionsPage.setTabOrder(self.id3v23_join_with, self.write_id3v1)
def retranslateUi(self, TagsOptionsPage):
_translate = QtCore.QCoreApplication.translate
@@ -188,23 +67,3 @@ class Ui_TagsOptionsPage(object):
self.remove_ape_from_mp3.setText(_("Remove APEv2 tags from MP3 files"))
self.preserved_tags_label.setText(_("Preserve these tags from being cleared or overwritten with MusicBrainz data:"))
self.preserved_tags_help.setText(_("Tags are separated by commas, and are case-sensitive."))
- self.tag_compatibility.setTitle(_("Tag Compatibility"))
- self.id3v2_version.setTitle(_("ID3v2 Version"))
- self.write_id3v24.setText(_("2.4"))
- self.write_id3v23.setText(_("2.3"))
- self.id3v2_text_encoding.setTitle(_("ID3v2 Text Encoding"))
- self.enc_utf8.setText(_("UTF-8"))
- self.enc_utf16.setText(_("UTF-16"))
- self.enc_iso88591.setText(_("ISO-8859-1"))
- self.label_id3v23_join_with.setText(_("Join multiple ID3v2.3 tags with:"))
- self.id3v23_join_with.setToolTip(_("
Default is \'/\' to maintain compatibility with previous Picard releases.
New alternatives are \';_\' or \'_/_\' or type your own.
"))
- self.itunes_compatible_grouping.setText(_("Save iTunes compatible grouping and work"))
- self.write_id3v1.setText(_("Also include ID3v1 tags in the files"))
- self.aac_tags.setTitle(_("AAC files"))
- self.aac_save_ape.setText(_("Save APEv2 tags"))
- self.aac_no_tags.setText(_("Do not save tags"))
- self.remove_ape_from_aac.setText(_("Remove APEv2 tags from AAC files"))
- self.ac3_files.setTitle(_("AC3 files"))
- self.ac3_save_ape.setText(_("Save APEv2 tags"))
- self.ac3_no_tags.setText(_("Do not save tags"))
- self.remove_ape_from_ac3.setText(_("Remove APEv2 tags from AC3 files"))
diff --git a/picard/ui/ui_options_tags_compatibility.py b/picard/ui/ui_options_tags_compatibility.py
new file mode 100644
index 000000000..c308bc80b
--- /dev/null
+++ b/picard/ui/ui_options_tags_compatibility.py
@@ -0,0 +1,163 @@
+# -*- coding: utf-8 -*-
+
+# Automatically generated - don't edit.
+# Use `python setup.py build_ui` to update it.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_TagsCompatibilityOptionsPage(object):
+ def setupUi(self, TagsCompatibilityOptionsPage):
+ TagsCompatibilityOptionsPage.setObjectName("TagsCompatibilityOptionsPage")
+ TagsCompatibilityOptionsPage.resize(539, 525)
+ self.vboxlayout = QtWidgets.QVBoxLayout(TagsCompatibilityOptionsPage)
+ self.vboxlayout.setObjectName("vboxlayout")
+ self.tag_compatibility = QtWidgets.QGroupBox(TagsCompatibilityOptionsPage)
+ self.tag_compatibility.setObjectName("tag_compatibility")
+ self.vboxlayout1 = QtWidgets.QVBoxLayout(self.tag_compatibility)
+ self.vboxlayout1.setContentsMargins(-1, 6, -1, 7)
+ self.vboxlayout1.setSpacing(2)
+ self.vboxlayout1.setObjectName("vboxlayout1")
+ self.id3v2_version = QtWidgets.QGroupBox(self.tag_compatibility)
+ self.id3v2_version.setFlat(False)
+ self.id3v2_version.setCheckable(False)
+ self.id3v2_version.setObjectName("id3v2_version")
+ self.horizontalLayout = QtWidgets.QHBoxLayout(self.id3v2_version)
+ self.horizontalLayout.setContentsMargins(-1, 6, -1, 7)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.write_id3v24 = QtWidgets.QRadioButton(self.id3v2_version)
+ self.write_id3v24.setChecked(True)
+ self.write_id3v24.setObjectName("write_id3v24")
+ self.horizontalLayout.addWidget(self.write_id3v24)
+ self.write_id3v23 = QtWidgets.QRadioButton(self.id3v2_version)
+ self.write_id3v23.setChecked(False)
+ self.write_id3v23.setObjectName("write_id3v23")
+ self.horizontalLayout.addWidget(self.write_id3v23)
+ self.label = QtWidgets.QLabel(self.id3v2_version)
+ self.label.setText("")
+ self.label.setWordWrap(True)
+ self.label.setObjectName("label")
+ self.horizontalLayout.addWidget(self.label)
+ spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.horizontalLayout.addItem(spacerItem)
+ self.vboxlayout1.addWidget(self.id3v2_version)
+ self.id3v2_text_encoding = QtWidgets.QGroupBox(self.tag_compatibility)
+ self.id3v2_text_encoding.setObjectName("id3v2_text_encoding")
+ self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.id3v2_text_encoding)
+ self.horizontalLayout_2.setContentsMargins(-1, 6, -1, 7)
+ self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+ self.enc_utf8 = QtWidgets.QRadioButton(self.id3v2_text_encoding)
+ self.enc_utf8.setObjectName("enc_utf8")
+ self.horizontalLayout_2.addWidget(self.enc_utf8)
+ self.enc_utf16 = QtWidgets.QRadioButton(self.id3v2_text_encoding)
+ self.enc_utf16.setObjectName("enc_utf16")
+ self.horizontalLayout_2.addWidget(self.enc_utf16)
+ self.enc_iso88591 = QtWidgets.QRadioButton(self.id3v2_text_encoding)
+ self.enc_iso88591.setObjectName("enc_iso88591")
+ self.horizontalLayout_2.addWidget(self.enc_iso88591)
+ spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.horizontalLayout_2.addItem(spacerItem1)
+ self.label_2 = QtWidgets.QLabel(self.id3v2_text_encoding)
+ self.label_2.setText("")
+ self.label_2.setWordWrap(True)
+ self.label_2.setObjectName("label_2")
+ self.horizontalLayout_2.addWidget(self.label_2)
+ self.vboxlayout1.addWidget(self.id3v2_text_encoding)
+ self.hbox_id3v23_join_with = QtWidgets.QHBoxLayout()
+ self.hbox_id3v23_join_with.setObjectName("hbox_id3v23_join_with")
+ self.label_id3v23_join_with = QtWidgets.QLabel(self.tag_compatibility)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(4)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label_id3v23_join_with.sizePolicy().hasHeightForWidth())
+ self.label_id3v23_join_with.setSizePolicy(sizePolicy)
+ self.label_id3v23_join_with.setObjectName("label_id3v23_join_with")
+ self.hbox_id3v23_join_with.addWidget(self.label_id3v23_join_with)
+ self.id3v23_join_with = QtWidgets.QComboBox(self.tag_compatibility)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(1)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.id3v23_join_with.sizePolicy().hasHeightForWidth())
+ self.id3v23_join_with.setSizePolicy(sizePolicy)
+ self.id3v23_join_with.setEditable(True)
+ self.id3v23_join_with.setObjectName("id3v23_join_with")
+ self.id3v23_join_with.addItem("")
+ self.id3v23_join_with.setItemText(0, "/")
+ self.id3v23_join_with.addItem("")
+ self.id3v23_join_with.setItemText(1, "; ")
+ self.id3v23_join_with.addItem("")
+ self.id3v23_join_with.setItemText(2, " / ")
+ self.hbox_id3v23_join_with.addWidget(self.id3v23_join_with)
+ self.vboxlayout1.addLayout(self.hbox_id3v23_join_with)
+ self.itunes_compatible_grouping = QtWidgets.QCheckBox(self.tag_compatibility)
+ self.itunes_compatible_grouping.setObjectName("itunes_compatible_grouping")
+ self.vboxlayout1.addWidget(self.itunes_compatible_grouping)
+ self.write_id3v1 = QtWidgets.QCheckBox(self.tag_compatibility)
+ self.write_id3v1.setObjectName("write_id3v1")
+ self.vboxlayout1.addWidget(self.write_id3v1)
+ self.vboxlayout.addWidget(self.tag_compatibility)
+ self.aac_tags = QtWidgets.QGroupBox(TagsCompatibilityOptionsPage)
+ self.aac_tags.setObjectName("aac_tags")
+ self.verticalLayout = QtWidgets.QVBoxLayout(self.aac_tags)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.aac_save_ape = QtWidgets.QRadioButton(self.aac_tags)
+ self.aac_save_ape.setChecked(True)
+ self.aac_save_ape.setObjectName("aac_save_ape")
+ self.verticalLayout.addWidget(self.aac_save_ape)
+ self.aac_no_tags = QtWidgets.QRadioButton(self.aac_tags)
+ self.aac_no_tags.setObjectName("aac_no_tags")
+ self.verticalLayout.addWidget(self.aac_no_tags)
+ self.remove_ape_from_aac = QtWidgets.QCheckBox(self.aac_tags)
+ self.remove_ape_from_aac.setObjectName("remove_ape_from_aac")
+ self.verticalLayout.addWidget(self.remove_ape_from_aac)
+ self.vboxlayout.addWidget(self.aac_tags)
+ self.ac3_files = QtWidgets.QGroupBox(TagsCompatibilityOptionsPage)
+ self.ac3_files.setObjectName("ac3_files")
+ self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.ac3_files)
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ self.ac3_save_ape = QtWidgets.QRadioButton(self.ac3_files)
+ self.ac3_save_ape.setChecked(True)
+ self.ac3_save_ape.setObjectName("ac3_save_ape")
+ self.verticalLayout_2.addWidget(self.ac3_save_ape)
+ self.ac3_no_tags = QtWidgets.QRadioButton(self.ac3_files)
+ self.ac3_no_tags.setObjectName("ac3_no_tags")
+ self.verticalLayout_2.addWidget(self.ac3_no_tags)
+ self.remove_ape_from_ac3 = QtWidgets.QCheckBox(self.ac3_files)
+ self.remove_ape_from_ac3.setObjectName("remove_ape_from_ac3")
+ self.verticalLayout_2.addWidget(self.remove_ape_from_ac3)
+ self.vboxlayout.addWidget(self.ac3_files)
+ spacerItem2 = QtWidgets.QSpacerItem(274, 41, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
+ self.vboxlayout.addItem(spacerItem2)
+
+ self.retranslateUi(TagsCompatibilityOptionsPage)
+ QtCore.QMetaObject.connectSlotsByName(TagsCompatibilityOptionsPage)
+ TagsCompatibilityOptionsPage.setTabOrder(self.write_id3v24, self.write_id3v23)
+ TagsCompatibilityOptionsPage.setTabOrder(self.write_id3v23, self.enc_utf8)
+ TagsCompatibilityOptionsPage.setTabOrder(self.enc_utf8, self.enc_utf16)
+ TagsCompatibilityOptionsPage.setTabOrder(self.enc_utf16, self.enc_iso88591)
+ TagsCompatibilityOptionsPage.setTabOrder(self.enc_iso88591, self.id3v23_join_with)
+ TagsCompatibilityOptionsPage.setTabOrder(self.id3v23_join_with, self.write_id3v1)
+
+ def retranslateUi(self, TagsCompatibilityOptionsPage):
+ _translate = QtCore.QCoreApplication.translate
+ self.tag_compatibility.setTitle(_("ID3"))
+ self.id3v2_version.setTitle(_("ID3v2 Version"))
+ self.write_id3v24.setText(_("2.4"))
+ self.write_id3v23.setText(_("2.3"))
+ self.id3v2_text_encoding.setTitle(_("ID3v2 Text Encoding"))
+ self.enc_utf8.setText(_("UTF-8"))
+ self.enc_utf16.setText(_("UTF-16"))
+ self.enc_iso88591.setText(_("ISO-8859-1"))
+ self.label_id3v23_join_with.setText(_("Join multiple ID3v2.3 tags with:"))
+ self.id3v23_join_with.setToolTip(_("Default is \'/\' to maintain compatibility with previous Picard releases.
New alternatives are \';_\' or \'_/_\' or type your own.
"))
+ self.itunes_compatible_grouping.setText(_("Save iTunes compatible grouping and work"))
+ self.write_id3v1.setText(_("Also include ID3v1 tags in the files"))
+ self.aac_tags.setTitle(_("AAC files"))
+ self.aac_save_ape.setText(_("Save APEv2 tags"))
+ self.aac_no_tags.setText(_("Do not save tags"))
+ self.remove_ape_from_aac.setText(_("Remove APEv2 tags from AAC files"))
+ self.ac3_files.setTitle(_("AC3 files"))
+ self.ac3_save_ape.setText(_("Save APEv2 tags"))
+ self.ac3_no_tags.setText(_("Do not save tags"))
+ self.remove_ape_from_ac3.setText(_("Remove APEv2 tags from AC3 files"))
diff --git a/ui/options_tags.ui b/ui/options_tags.ui
index 4654e9818..524a46f58 100644
--- a/ui/options_tags.ui
+++ b/ui/options_tags.ui
@@ -7,7 +7,7 @@
0
0
539
- 633
+ 525
@@ -97,275 +97,6 @@
- -
-
-
- Tag Compatibility
-
-
-
- 2
-
-
- 6
-
-
- 7
-
-
-
-
-
- ID3v2 Version
-
-
- false
-
-
- false
-
-
-
- 6
-
-
- 7
-
-
-
-
-
- 2.4
-
-
- true
-
-
-
- -
-
-
- 2.3
-
-
- false
-
-
-
- -
-
-
-
-
-
- true
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
- ID3v2 Text Encoding
-
-
-
- 6
-
-
- 7
-
-
-
-
-
- UTF-8
-
-
-
- -
-
-
- UTF-16
-
-
-
- -
-
-
- ISO-8859-1
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
-
-
-
- true
-
-
-
-
-
-
- -
-
-
-
-
-
-
- 4
- 0
-
-
-
- Join multiple ID3v2.3 tags with:
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
- <html><head/><body><p>Default is '/' to maintain compatibility with previous Picard releases.</p><p>New alternatives are ';_' or '_/_' or type your own. </p></body></html>
-
-
- true
-
-
-
-
- /
-
-
- -
-
- ;
-
-
- -
-
- /
-
-
-
-
-
-
- -
-
-
- Save iTunes compatible grouping and work
-
-
-
- -
-
-
- Also include ID3v1 tags in the files
-
-
-
-
-
-
- -
-
-
- AAC files
-
-
-
-
-
-
- Save APEv2 tags
-
-
- true
-
-
-
- -
-
-
- Do not save tags
-
-
-
- -
-
-
- Remove APEv2 tags from AAC files
-
-
-
-
-
-
- -
-
-
- AC3 files
-
-
-
-
-
-
- Save APEv2 tags
-
-
- true
-
-
-
- -
-
-
- Do not save tags
-
-
-
- -
-
-
- Remove APEv2 tags from AC3 files
-
-
-
-
-
-
-
@@ -388,13 +119,6 @@
remove_id3_from_flac
remove_ape_from_mp3
preserved_tags
- write_id3v24
- write_id3v23
- enc_utf8
- enc_utf16
- enc_iso88591
- id3v23_join_with
- write_id3v1
diff --git a/ui/options_tags_compatibility.ui b/ui/options_tags_compatibility.ui
new file mode 100644
index 000000000..d66056a94
--- /dev/null
+++ b/ui/options_tags_compatibility.ui
@@ -0,0 +1,309 @@
+
+
+ TagsCompatibilityOptionsPage
+
+
+
+ 0
+ 0
+ 539
+ 525
+
+
+
+
-
+
+
+ ID3
+
+
+
+ 2
+
+
+ 6
+
+
+ 7
+
+
-
+
+
+ ID3v2 Version
+
+
+ false
+
+
+ false
+
+
+
+ 6
+
+
+ 7
+
+
-
+
+
+ 2.4
+
+
+ true
+
+
+
+ -
+
+
+ 2.3
+
+
+ false
+
+
+
+ -
+
+
+
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+ -
+
+
+ ID3v2 Text Encoding
+
+
+
+ 6
+
+
+ 7
+
+
-
+
+
+ UTF-8
+
+
+
+ -
+
+
+ UTF-16
+
+
+
+ -
+
+
+ ISO-8859-1
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+
+
+
+ true
+
+
+
+
+
+
+ -
+
+
-
+
+
+
+ 4
+ 0
+
+
+
+ Join multiple ID3v2.3 tags with:
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+ <html><head/><body><p>Default is '/' to maintain compatibility with previous Picard releases.</p><p>New alternatives are ';_' or '_/_' or type your own. </p></body></html>
+
+
+ true
+
+
-
+
+ /
+
+
+ -
+
+ ;
+
+
+ -
+
+ /
+
+
+
+
+
+
+ -
+
+
+ Save iTunes compatible grouping and work
+
+
+
+ -
+
+
+ Also include ID3v1 tags in the files
+
+
+
+
+
+
+ -
+
+
+ AAC files
+
+
+
-
+
+
+ Save APEv2 tags
+
+
+ true
+
+
+
+ -
+
+
+ Do not save tags
+
+
+
+ -
+
+
+ Remove APEv2 tags from AAC files
+
+
+
+
+
+
+ -
+
+
+ AC3 files
+
+
+
-
+
+
+ Save APEv2 tags
+
+
+ true
+
+
+
+ -
+
+
+ Do not save tags
+
+
+
+ -
+
+
+ Remove APEv2 tags from AC3 files
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 274
+ 41
+
+
+
+
+
+
+
+ write_id3v24
+ write_id3v23
+ enc_utf8
+ enc_utf16
+ enc_iso88591
+ id3v23_join_with
+ write_id3v1
+
+
+
+