diff --git a/picard/profile.py b/picard/profile.py
index f76b39ea2..9085de66f 100644
--- a/picard/profile.py
+++ b/picard/profile.py
@@ -50,30 +50,59 @@ class UserProfileGroups():
SettingDesc("analyze_new_files", N_("Automatically scan all new files"), ["analyze_new_files"]),
SettingDesc("cluster_new_files", N_("Automatically cluster all new files"), ["cluster_new_files"]),
SettingDesc("ignore_file_mbids", N_("Ignore MBIDs when loading new files"), ["ignore_file_mbids"]),
+ SettingDesc("check_for_updates", N_("Check for updates during startup"), ["check_for_updates"]),
+ SettingDesc("update_check_days", N_("Days between update checks"), ["update_check_days"]),
+ SettingDesc("update_level", N_("Updates to check"), ["update_level"]),
],
}
SETTINGS_GROUPS["metadata"] = {
"title": N_("Metadata"),
"settings": [
- SettingDesc("va_name", N_("Various Artists name"), ["va_name"]),
- SettingDesc("nat_name", N_("Standalone recordings name"), ["nat_name"]),
+ # Main Metadata Page
SettingDesc("translate_artist_names", N_("Translate artist names"), ["translate_artist_names"]),
SettingDesc("artist_locales", N_("Translation locales"), ["selected_locales"]),
SettingDesc("translate_artist_names_script_exception", N_("Translate artist names exception"), ["translate_artist_names_script_exception"]),
SettingDesc("script_exceptions", N_("Translation script exceptions"), ["selected_scripts"]),
- SettingDesc("release_ars", N_("Use release relationships"), ["release_ars"]),
- SettingDesc("track_ars", N_("Use track relationships"), ["track_ars"]),
- SettingDesc("convert_punctuation", N_("Convert Unicode punctuation characters to ASCII"), ["convert_punctuation"]),
SettingDesc("standardize_artists", N_("Use standardized artist names"), ["standardize_artists"]),
SettingDesc("standardize_instruments", N_("Use standardized instrument and vocal credits"), ["standardize_instruments"]),
+ SettingDesc("convert_punctuation", N_("Convert Unicode punctuation characters to ASCII"), ["convert_punctuation"]),
+ SettingDesc("release_ars", N_("Use release relationships"), ["release_ars"]),
+ SettingDesc("track_ars", N_("Use track relationships"), ["track_ars"]),
SettingDesc("guess_tracknumber_and_title", N_("Guess track number and title from filename if empty"), ["guess_tracknumber_and_title"]),
+ SettingDesc("va_name", N_("Various Artists name"), ["va_name"]),
+ SettingDesc("nat_name", N_("Standalone recordings name"), ["nat_name"]),
+
+ # Preferred Releases Page
+ SettingDesc("release_type_scores", N_("Release type preferences"), ["type_group"]),
+ SettingDesc("preferred_release_countries", N_("Preferred release countries"), ["country_group"]),
+ SettingDesc("preferred_release_formats", N_("Preferred release formats"), ["format_group"]),
+
+ # Genres Page
+ SettingDesc("use_genres", N_("Use genres from MusicBrainz"), []), # No highlight specified because the "use_genres"
+ # object is a QGroupBox and it highlights all sub
+ # options, even if the sub options are not selected.
+ SettingDesc("only_my_genres", N_("Use only my genres"), ["only_my_genres"]),
+ SettingDesc("artists_genres", N_("Use album artist genres"), ["artists_genres"]),
+ SettingDesc("folksonomy_tags", N_("Use folksonomy tags as genre"), ["folksonomy_tags"]),
+ SettingDesc("min_genre_usage", N_("Minimal genre usage"), ["min_genre_usage"]),
+ SettingDesc("max_genres", N_("Maximum number of genres"), ["max_genres"]),
+ SettingDesc("join_genres", N_("Join multiple genres with"), ["join_genres"]),
+ SettingDesc("genres_filter", N_("Genres to include or exclude"), ["genres_filter"]),
+
+ # Ratings Page
+ SettingDesc("enable_ratings", N_("Enable track ratings"), []), # No highlight specified because the "enable_ratings"
+ # object is a QGroupBox and it highlights all sub options,
+ # even if the sub options are not selected.
+ SettingDesc("rating_user_email", N_("Email to use when submitting ratings"), ["rating_user_email"]),
+ SettingDesc("submit_ratings", N_("Submit ratings to MusicBrainz"), ["submit_ratings"]),
],
}
SETTINGS_GROUPS["tags"] = {
"title": N_("Tags"),
"settings": [
+ # Main Tags Page
SettingDesc("dont_write_tags", N_("Don't write tags"), ["write_tags"]),
SettingDesc("preserve_timestamps", N_("Preserve timestamps of tagged files"), ["preserve_timestamps"]),
SettingDesc("clear_existing_tags", N_("Clear existing tags"), ["clear_existing_tags"]),
@@ -82,15 +111,23 @@ class UserProfileGroups():
SettingDesc("remove_ape_from_mp3", N_("Remove APEv2 tags from MP3 files"), ["remove_ape_from_mp3"]),
SettingDesc("fix_missing_seekpoints_flac", N_("Fix missing seekpoints for FLAC files"), ["fix_missing_seekpoints_flac"]),
SettingDesc("preserved_tags", N_("Preserved tags list"), ["preserved_tags"]),
- SettingDesc("aac_save_ape", N_("Save APEv2 tags to AAC"), ["aac_save_ape", "aac_no_tags"]),
- SettingDesc("remove_ape_from_aac", N_("Remove APEv2 tags from AAC files"), ["remove_ape_from_aac"]),
- SettingDesc("ac3_save_ape", N_("Save APEv2 tags to AC3"), ["ac3_save_ape", "ac3_no_tags"]),
- SettingDesc("remove_ape_from_ac3", N_("Remove APEv2 tags from AC3 files"), ["remove_ape_from_ac3"]),
- SettingDesc("write_id3v1", N_("Write ID3v1 tags"), ["write_id3v1"]),
- SettingDesc("write_id3v23", N_("Write ID3v2.3 tags"), ["write_id3v23", "write_id3v24"]),
+
+ # ID3 Tags Page
+ SettingDesc("write_id3v23", N_("ID3v2 version to write"), ["write_id3v23", "write_id3v24"]),
SettingDesc("id3v2_encoding", N_("ID3v2 text encoding"), ["enc_utf8", "enc_utf16", "enc_iso88591"]),
SettingDesc("id3v23_join_with", N_("ID3v2.3 join character"), ["id3v23_join_with"]),
SettingDesc("itunes_compatible_grouping", N_("Save iTunes compatible grouping and work"), ["itunes_compatible_grouping"]),
+ SettingDesc("write_id3v1", N_("Write ID3v1 tags"), ["write_id3v1"]),
+
+ # AAC Tags Page
+ SettingDesc("aac_save_ape", N_("Save APEv2 tags to AAC"), ["aac_save_ape", "aac_no_tags"]),
+ SettingDesc("remove_ape_from_aac", N_("Remove APEv2 tags from AAC files"), ["remove_ape_from_aac"]),
+
+ # AC3 Tags Page
+ SettingDesc("ac3_save_ape", N_("Save APEv2 tags to AC3"), ["ac3_save_ape", "ac3_no_tags"]),
+ SettingDesc("remove_ape_from_ac3", N_("Remove APEv2 tags from AC3 files"), ["remove_ape_from_ac3"]),
+
+ # WAVE Tags Page
SettingDesc("write_wave_riff_info", N_("Write RIFF INFO tags to WAVE files"), ["write_wave_riff_info"]),
SettingDesc("remove_wave_riff_info", N_("Remove existing RIFF INFO tags from WAVE files"), ["remove_wave_riff_info"]),
SettingDesc("wave_riff_info_encoding", N_("RIFF INFO text encoding"), ["wave_riff_info_enc_cp1252", "wave_riff_info_enc_utf8"]),
@@ -114,15 +151,22 @@ class UserProfileGroups():
SETTINGS_GROUPS["filerenaming"] = {
"title": N_("File Naming"),
"settings": [
- SettingDesc("windows_compatibility", N_("Windows compatibility"), ["windows_compatibility"]),
- SettingDesc("ascii_filenames", N_("Replace non-ASCII characters"), ["ascii_filenames"]),
- SettingDesc("rename_files", N_("Rename files"), ["rename_files"]),
+ # Main File Naming Page
SettingDesc("move_files", N_("Move files"), ["move_files"]),
SettingDesc("move_files_to", N_("Destination directory"), ["move_files_to"]),
SettingDesc("move_additional_files", N_("Move additional files"), ["move_additional_files"]),
SettingDesc("move_additional_files_pattern", N_("Additional file patterns"), ["move_additional_files_pattern"]),
SettingDesc("delete_empty_dirs", N_("Delete empty directories"), ["delete_empty_dirs"]),
+ SettingDesc("rename_files", N_("Rename files"), ["rename_files"]),
SettingDesc("selected_file_naming_script_id", N_("Selected file naming script"), ["naming_script_selector"]),
+
+ # File Naming Compatibility Page
+ SettingDesc("ascii_filenames", N_("Replace non-ASCII characters"), ["ascii_filenames"]),
+ SettingDesc("windows_compatibility", N_("Windows compatibility"), ["windows_compatibility"]),
+ SettingDesc("win_compat_replacements", N_("Replacement characters used for Windows compatibility"), ["win_compat_replacements"]),
+ SettingDesc("windows_long_paths", N_("Windows long path support"), ["windows_long_paths"]),
+ SettingDesc("replace_spaces_with_underscores", N_("Replace spaces with underscores"), ["replace_spaces_with_underscores"]),
+ SettingDesc("replace_dir_separator", N_("Replacement character to use for directory separators"), ["replace_dir_separator"]),
],
}
@@ -137,19 +181,37 @@ class UserProfileGroups():
SETTINGS_GROUPS["interface"] = {
"title": N_("User Interface"),
"settings": [
+ # Main User Interface Page
+ SettingDesc("toolbar_show_labels", N_("Show text labels under icons"), ["toolbar_show_labels"]),
+ SettingDesc("show_menu_icons", N_("Show icons in menus"), ["show_menu_icons"]),
+ SettingDesc("ui_language", N_("User interface language"), ["ui_language"]),
+ SettingDesc("ui_theme", N_("User interface color theme"), ["ui_theme"]),
SettingDesc("toolbar_multiselect", N_("Allow selection of multiple directories"), ["toolbar_multiselect"]),
SettingDesc("builtin_search", N_("Use builtin search rather than looking in browser"), ["builtin_search"]),
- SettingDesc("use_adv_search_syntax", N_("Use builtin search rather than looking in browser"), ["use_adv_search_syntax"]),
+ SettingDesc("use_adv_search_syntax", N_("Use advanced search syntax"), ["use_adv_search_syntax"]),
+ SettingDesc("show_new_user_dialog", N_("Show a usage warning dialog when Picard starts"), ["new_user_dialog"]),
SettingDesc("quit_confirmation", N_("Show a quit confirmation dialog for unsaved changes"), ["quit_confirmation"]),
+ SettingDesc("file_save_warning", N_("Show a confirmation dialog when saving files"), ["file_save_warning"]),
SettingDesc("filebrowser_horizontal_autoscroll", N_("Adjust horizontal position in file browser automatically"), ["filebrowser_horizontal_autoscroll"]),
SettingDesc("starting_directory", N_("Begin browsing in a specific directory"), ["starting_directory"]),
SettingDesc("starting_directory_path", N_("Directory to begin browsing"), ["starting_directory_path"]),
+
+ # User Interface Colors Page
+ SettingDesc("interface_colors", N_("Colors to use for standard theme"), ["colors"]),
+ SettingDesc("interface_colors_dark", N_("Colors to use for dark theme"), ["colors"]),
+
+ # User Interface Top Tags Page
+ SettingDesc("metadatabox_top_tags", N_("Tags to show at the top"), ["top_tags_groupBox"]),
+
+ # User Interface Action Toolbar Page
+ SettingDesc("toolbar_layout", N_("Layout of the tool bar"), ["toolbar_layout_list"]),
],
}
SETTINGS_GROUPS["advanced"] = {
"title": N_("Advanced"),
"settings": [
+ # Main Advanced Options Page
SettingDesc("ignore_regex", N_("Ignore file paths matching a regular expression"), ["ignore_regex"]),
SettingDesc("ignore_hidden_files", N_("Ignore hidden files"), ["ignore_hidden_files"]),
SettingDesc("recursively_add_files", N_("Include sub-folders when adding files from folder"), ["recursively_add_files"]),
@@ -168,6 +230,27 @@ class UserProfileGroups():
SettingDesc("completeness_ignore_data", N_("Completeness check ignore: Data tracks"), ["completeness_ignore_data"]),
SettingDesc("completeness_ignore_silence", N_("Completeness check ignore: Silent tracks"), ["completeness_ignore_silence"]),
SettingDesc("compare_ignore_tags", N_("Tags to ignore for comparison"), ["groupBox_2"]),
+
+ # Network Options Page
+ SettingDesc("use_proxy", N_("Use a web proxy server"), []), # No highlight specified because the "use_proxy"
+ # object is a QGroupBox and it highlights all sub
+ # options, even if the sub options are not selected.
+ SettingDesc("proxy_type", N_("type of proxy server"), ["proxy_type_socks", "proxy_type_http"]),
+ SettingDesc("proxy_server_host", N_("Proxy server address"), ["server_host"]),
+ SettingDesc("proxy_server_port", N_("Proxy server port"), ["server_port"]),
+ SettingDesc("proxy_username", N_("Proxy username"), ["username"]),
+ SettingDesc("proxy_password", N_("Proxy password"), ["password"]),
+ SettingDesc("network_transfer_timeout_seconds", N_("Request timeout in seconds"), ["transfer_timeout"]),
+ SettingDesc("browser_integration", N_("Browser integration"), []), # No highlight specified because the "browser_integration"
+ # object is a QGroupBox and it highlights all sub options,
+ # even if the sub options are not selected.
+ SettingDesc("browser_integration_port", N_("Default listening port"), ["browser_integration_port"]),
+ SettingDesc("browser_integration_localhost_only", N_("Listen only on localhost"), ["browser_integration_localhost_only"]),
+
+ # Matching Options Page
+ SettingDesc("file_lookup_threshold", N_("Minimal similarity for file lookups"), ["file_lookup_threshold"]),
+ SettingDesc("cluster_lookup_threshold", N_("Minimal similarity for cluster lookups"), ["cluster_lookup_threshold"]),
+ SettingDesc("track_matching_threshold", N_("Minimal similarity for matching files to tracks"), ["track_matching_threshold"]),
],
}
diff --git a/picard/ui/ui_options_interface_top_tags.py b/picard/ui/ui_options_interface_top_tags.py
index caf905549..f2004a8ed 100644
--- a/picard/ui/ui_options_interface_top_tags.py
+++ b/picard/ui/ui_options_interface_top_tags.py
@@ -1,38 +1,38 @@
-# -*- 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_InterfaceTopTagsOptionsPage(object):
- def setupUi(self, InterfaceTopTagsOptionsPage):
- InterfaceTopTagsOptionsPage.setObjectName("InterfaceTopTagsOptionsPage")
- InterfaceTopTagsOptionsPage.resize(418, 310)
- self.vboxlayout = QtWidgets.QVBoxLayout(InterfaceTopTagsOptionsPage)
- self.vboxlayout.setContentsMargins(9, 9, 9, 9)
- self.vboxlayout.setSpacing(6)
- self.vboxlayout.setObjectName("vboxlayout")
- self.groupBox = QtWidgets.QGroupBox(InterfaceTopTagsOptionsPage)
- self.groupBox.setObjectName("groupBox")
- self.verticalLayout = QtWidgets.QVBoxLayout(self.groupBox)
- self.verticalLayout.setObjectName("verticalLayout")
- self.top_tags_list = TagListEditor(self.groupBox)
- sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.top_tags_list.sizePolicy().hasHeightForWidth())
- self.top_tags_list.setSizePolicy(sizePolicy)
- self.top_tags_list.setObjectName("top_tags_list")
- self.verticalLayout.addWidget(self.top_tags_list)
- self.vboxlayout.addWidget(self.groupBox)
-
- self.retranslateUi(InterfaceTopTagsOptionsPage)
- QtCore.QMetaObject.connectSlotsByName(InterfaceTopTagsOptionsPage)
-
- def retranslateUi(self, InterfaceTopTagsOptionsPage):
- _translate = QtCore.QCoreApplication.translate
- self.groupBox.setTitle(_("Show the below tags above all other tags in the metadata view"))
-from picard.ui.widgets.taglisteditor import TagListEditor
+# -*- 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_InterfaceTopTagsOptionsPage(object):
+ def setupUi(self, InterfaceTopTagsOptionsPage):
+ InterfaceTopTagsOptionsPage.setObjectName("InterfaceTopTagsOptionsPage")
+ InterfaceTopTagsOptionsPage.resize(418, 310)
+ self.vboxlayout = QtWidgets.QVBoxLayout(InterfaceTopTagsOptionsPage)
+ self.vboxlayout.setContentsMargins(9, 9, 9, 9)
+ self.vboxlayout.setSpacing(6)
+ self.vboxlayout.setObjectName("vboxlayout")
+ self.top_tags_groupBox = QtWidgets.QGroupBox(InterfaceTopTagsOptionsPage)
+ self.top_tags_groupBox.setObjectName("top_tags_groupBox")
+ self.verticalLayout = QtWidgets.QVBoxLayout(self.top_tags_groupBox)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.top_tags_list = TagListEditor(self.top_tags_groupBox)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.top_tags_list.sizePolicy().hasHeightForWidth())
+ self.top_tags_list.setSizePolicy(sizePolicy)
+ self.top_tags_list.setObjectName("top_tags_list")
+ self.verticalLayout.addWidget(self.top_tags_list)
+ self.vboxlayout.addWidget(self.top_tags_groupBox)
+
+ self.retranslateUi(InterfaceTopTagsOptionsPage)
+ QtCore.QMetaObject.connectSlotsByName(InterfaceTopTagsOptionsPage)
+
+ def retranslateUi(self, InterfaceTopTagsOptionsPage):
+ _translate = QtCore.QCoreApplication.translate
+ self.top_tags_groupBox.setTitle(_("Show the below tags above all other tags in the metadata view"))
+from picard.ui.widgets.taglisteditor import TagListEditor
diff --git a/ui/options_interface_top_tags.ui b/ui/options_interface_top_tags.ui
index 9841dba88..5558dff6b 100644
--- a/ui/options_interface_top_tags.ui
+++ b/ui/options_interface_top_tags.ui
@@ -1,60 +1,60 @@
-
-
- InterfaceTopTagsOptionsPage
-
-
-
- 0
- 0
- 418
- 310
-
-
-
-
- 6
-
-
- 9
-
-
- 9
-
-
- 9
-
-
- 9
-
- -
-
-
- Show the below tags above all other tags in the metadata view
-
-
-
-
-
-
-
- 0
- 0
-
-
-
-
-
-
-
-
-
-
-
- TagListEditor
- QWidget
- picard.ui.widgets.taglisteditor
- 1
-
-
-
-
-
+
+
+ InterfaceTopTagsOptionsPage
+
+
+
+ 0
+ 0
+ 418
+ 310
+
+
+
+
+ 6
+
+
+ 9
+
+
+ 9
+
+
+ 9
+
+
+ 9
+
+ -
+
+
+ Show the below tags above all other tags in the metadata view
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+
+
+ TagListEditor
+ QWidget
+ picard.ui.widgets.taglisteditor
+ 1
+
+
+
+
+