diff --git a/picard/file.py b/picard/file.py index 0b5033dbc..d94205c5d 100644 --- a/picard/file.py +++ b/picard/file.py @@ -374,7 +374,7 @@ class File(QtCore.QObject, Item): return new_filename, ext def _format_filename(self, new_dirname, new_filename, metadata, settings): - # TODO: tests !! + old_filename = new_filename new_filename, ext = self._fixed_splitext(new_filename) ext = ext.lower() new_filename = new_filename + ext @@ -385,6 +385,8 @@ class File(QtCore.QObject, Item): new_filename = self._script_to_filename(naming_format, metadata, settings) # NOTE: the _script_to_filename strips the extension away new_filename = new_filename + ext + if not settings['rename_files']: + new_filename = os.path.join(os.path.dirname(new_filename), old_filename) if not settings['move_files']: new_filename = os.path.basename(new_filename) win_compat = IS_WIN or settings['windows_compatibility'] @@ -404,7 +406,7 @@ class File(QtCore.QObject, Item): new_filename = unicodedata.normalize("NFD", new_filename) return new_filename - def _make_filename(self, filename, metadata, settings=None): + def make_filename(self, filename, metadata, settings=None): """Constructs file name based on metadata and file naming formats.""" if settings is None: settings = config.setting @@ -416,7 +418,7 @@ class File(QtCore.QObject, Item): new_dirname = os.path.dirname(filename) new_filename = os.path.basename(filename) - if settings["rename_files"]: + if settings["rename_files"] or settings["move_files"]: new_filename = self._format_filename(new_dirname, new_filename, metadata, settings) new_path = os.path.join(new_dirname, new_filename) @@ -428,7 +430,7 @@ class File(QtCore.QObject, Item): def _rename(self, old_filename, metadata): new_filename, ext = os.path.splitext( - self._make_filename(old_filename, metadata)) + self.make_filename(old_filename, metadata)) if old_filename == new_filename + ext: return old_filename diff --git a/picard/ui/options/renaming.py b/picard/ui/options/renaming.py index 784e324d9..c1e260a05 100644 --- a/picard/ui/options/renaming.py +++ b/picard/ui/options/renaming.py @@ -150,7 +150,7 @@ class RenamingOptionsPage(OptionsPage): if s_enabled and s_text: parser = ScriptParser() parser.eval(s_text, file.metadata) - filename = file._make_filename(file.filename, file.metadata, settings) + filename = file.make_filename(file.filename, file.metadata, settings) if not settings["move_files"]: return os.path.basename(filename) return filename diff --git a/picard/ui/ui_options_renaming.py b/picard/ui/ui_options_renaming.py index a3c2b5852..041f943e6 100644 --- a/picard/ui/ui_options_renaming.py +++ b/picard/ui/ui_options_renaming.py @@ -3,8 +3,10 @@ # Automatically generated - don't edit. # Use `python setup.py build_ui` to update it. + from PyQt5 import QtCore, QtGui, QtWidgets + class Ui_RenamingOptionsPage(object): def setupUi(self, RenamingOptionsPage): RenamingOptionsPage.setObjectName("RenamingOptionsPage") @@ -52,24 +54,16 @@ class Ui_RenamingOptionsPage(object): self.delete_empty_dirs.setObjectName("delete_empty_dirs") self.verticalLayout_4.addWidget(self.delete_empty_dirs) self.verticalLayout_5.addWidget(self.move_files) - self.rename_files = QtWidgets.QGroupBox(RenamingOptionsPage) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.rename_files.sizePolicy().hasHeightForWidth()) - self.rename_files.setSizePolicy(sizePolicy) - self.rename_files.setCheckable(True) - self.rename_files.setChecked(False) + self.rename_files = QtWidgets.QCheckBox(RenamingOptionsPage) self.rename_files.setObjectName("rename_files") - self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.rename_files) - self.verticalLayout_3.setObjectName("verticalLayout_3") - self.ascii_filenames = QtWidgets.QCheckBox(self.rename_files) + self.verticalLayout_5.addWidget(self.rename_files) + self.ascii_filenames = QtWidgets.QCheckBox(RenamingOptionsPage) self.ascii_filenames.setObjectName("ascii_filenames") - self.verticalLayout_3.addWidget(self.ascii_filenames) - self.windows_compatibility = QtWidgets.QCheckBox(self.rename_files) + self.verticalLayout_5.addWidget(self.ascii_filenames) + self.windows_compatibility = QtWidgets.QCheckBox(RenamingOptionsPage) self.windows_compatibility.setObjectName("windows_compatibility") - self.verticalLayout_3.addWidget(self.windows_compatibility) - self.file_naming_format_group = QtWidgets.QGroupBox(self.rename_files) + self.verticalLayout_5.addWidget(self.windows_compatibility) + self.file_naming_format_group = QtWidgets.QGroupBox(RenamingOptionsPage) self.file_naming_format_group.setObjectName("file_naming_format_group") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.file_naming_format_group) self.verticalLayout_2.setObjectName("verticalLayout_2") @@ -110,15 +104,14 @@ class Ui_RenamingOptionsPage(object): self.file_naming_format_default.setObjectName("file_naming_format_default") self.horizontalLayout.addWidget(self.file_naming_format_default) self.verticalLayout_2.addLayout(self.horizontalLayout) - self.verticalLayout_3.addWidget(self.file_naming_format_group) - self.file_naming_format_documentation = QtWidgets.QLabel(self.rename_files) + self.verticalLayout_5.addWidget(self.file_naming_format_group) + self.file_naming_format_documentation = QtWidgets.QLabel(RenamingOptionsPage) self.file_naming_format_documentation.setText("") self.file_naming_format_documentation.setTextFormat(QtCore.Qt.RichText) self.file_naming_format_documentation.setWordWrap(True) self.file_naming_format_documentation.setOpenExternalLinks(True) self.file_naming_format_documentation.setObjectName("file_naming_format_documentation") - self.verticalLayout_3.addWidget(self.file_naming_format_documentation) - self.verticalLayout_5.addWidget(self.rename_files) + self.verticalLayout_5.addWidget(self.file_naming_format_documentation) self.groupBox = QtWidgets.QGroupBox(RenamingOptionsPage) self.groupBox.setObjectName("groupBox") self.verticalLayout = QtWidgets.QVBoxLayout(self.groupBox) @@ -149,10 +142,7 @@ class Ui_RenamingOptionsPage(object): RenamingOptionsPage.setTabOrder(self.move_files_to_browse, self.move_additional_files) RenamingOptionsPage.setTabOrder(self.move_additional_files, self.move_additional_files_pattern) RenamingOptionsPage.setTabOrder(self.move_additional_files_pattern, self.delete_empty_dirs) - RenamingOptionsPage.setTabOrder(self.delete_empty_dirs, self.rename_files) - RenamingOptionsPage.setTabOrder(self.rename_files, self.ascii_filenames) - RenamingOptionsPage.setTabOrder(self.ascii_filenames, self.windows_compatibility) - RenamingOptionsPage.setTabOrder(self.windows_compatibility, self.file_naming_format) + RenamingOptionsPage.setTabOrder(self.delete_empty_dirs, self.file_naming_format) RenamingOptionsPage.setTabOrder(self.file_naming_format, self.file_naming_format_default) def retranslateUi(self, RenamingOptionsPage): @@ -162,7 +152,7 @@ class Ui_RenamingOptionsPage(object): self.move_files_to_browse.setText(_("Browse...")) self.move_additional_files.setText(_("Move additional files (case insensitive):")) self.delete_empty_dirs.setText(_("Delete empty directories")) - self.rename_files.setTitle(_("Rename files when saving")) + self.rename_files.setText(_("Rename files when saving")) self.ascii_filenames.setText(_("Replace non-ASCII characters")) self.windows_compatibility.setText(_("Windows compatibility")) self.file_naming_format_group.setTitle(_("Name files like this")) @@ -173,4 +163,3 @@ class Ui_RenamingOptionsPage(object): "