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 + + + +