Add CSV mapping rule and Undo last rename feature
Made-with: Cursor
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user