Add CSV mapping rule and Undo last rename feature

Made-with: Cursor
This commit is contained in:
Bulk Renamer
2026-03-03 22:42:57 -06:00
parent 94fa790d48
commit d1a13115a4
6 changed files with 285 additions and 14 deletions
+45
View File
@@ -13,6 +13,8 @@ from PyQt6.QtWidgets import (
QGroupBox,
QFormLayout,
QStackedWidget,
QPushButton,
QFileDialog,
)
from PyQt6.QtCore import pyqtSignal
@@ -25,6 +27,7 @@ from engine.rules import (
EpisodeRenumberRule,
RegexRule,
PrefixSuffixRule,
CsvMappingRule,
)
@@ -325,3 +328,45 @@ class PrefixSuffixRuleWidget(QWidget):
r = PrefixSuffixRule(prefix=self.prefix.text(), suffix=self.suffix.text())
r.enabled = self.enabled_cb.isChecked()
return r
class CsvMappingRuleWidget(QWidget):
ruleChanged = pyqtSignal()
def __init__(self, parent=None):
super().__init__(parent)
layout = QFormLayout(self)
self.enabled_cb = QCheckBox("Use this rule")
self.enabled_cb.setChecked(False)
self.enabled_cb.toggled.connect(self._emit)
layout.addRow(self.enabled_cb)
path_row = QHBoxLayout()
self.path_edit = QLineEdit()
self.path_edit.setPlaceholderText("Path to CSV file…")
self.path_edit.textChanged.connect(self._emit)
browse_btn = QPushButton("Browse…")
browse_btn.clicked.connect(self._browse)
path_row.addWidget(self.path_edit, 1)
path_row.addWidget(browse_btn)
layout.addRow("CSV file:", path_row)
info = QLabel('CSV must have columns "Original Name" and "Target Name". Lookup is by current filename.')
info.setWordWrap(True)
layout.addRow(info)
def _browse(self):
path, _ = QFileDialog.getOpenFileName(
self,
"Select CSV",
"",
"CSV (*.csv);;All files (*)",
)
if path:
self.path_edit.setText(path)
def _emit(self):
self.ruleChanged.emit()
def getRule(self) -> CsvMappingRule:
r = CsvMappingRule(csv_path=self.path_edit.text().strip())
r.enabled = self.enabled_cb.isChecked()
return r