Release v1.0.9: persist UI layout and fix SxxExx double-S renames.
Save window geometry, splitter sizes, and preview column widths on exit; restore on launch. Fix episode rewrite duplicating the season letter. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
+35
-1
@@ -25,7 +25,7 @@ from PyQt6.QtWidgets import (
|
||||
QCheckBox,
|
||||
QComboBox,
|
||||
)
|
||||
from PyQt6.QtCore import Qt, QDir, QItemSelectionModel
|
||||
from PyQt6.QtCore import Qt, QDir, QItemSelectionModel, QSettings
|
||||
from PyQt6.QtGui import QFont, QColor
|
||||
|
||||
from engine.pipeline import compute_preview, perform_renames, save_undo_log, load_undo_log, perform_undo
|
||||
@@ -53,7 +53,9 @@ class MainWindow(QMainWindow):
|
||||
self._base_dir = ""
|
||||
self._file_names: list[str] = []
|
||||
self._preview_by_orig: dict[str, str] = {} # original name -> new name for selection preview
|
||||
self._split: QSplitter | None = None
|
||||
self._setup_ui()
|
||||
self._restore_layout()
|
||||
self._refresh_preview()
|
||||
|
||||
def _setup_ui(self):
|
||||
@@ -172,8 +174,40 @@ class MainWindow(QMainWindow):
|
||||
split.addWidget(right)
|
||||
|
||||
split.setSizes([320, 680])
|
||||
self._split = split
|
||||
layout.addWidget(split, 1)
|
||||
|
||||
def _settings(self) -> QSettings:
|
||||
return QSettings()
|
||||
|
||||
def _restore_layout(self) -> None:
|
||||
settings = self._settings()
|
||||
geometry = settings.value("window/geometry")
|
||||
if geometry is not None:
|
||||
self.restoreGeometry(geometry)
|
||||
if self._split is not None:
|
||||
split_state = settings.value("splitter/state")
|
||||
if split_state is not None:
|
||||
self._split.restoreState(split_state)
|
||||
header = self.preview_table.horizontalHeader()
|
||||
header_state = settings.value("preview_table/header")
|
||||
if header_state is not None:
|
||||
header.restoreState(header_state)
|
||||
|
||||
def _save_layout(self) -> None:
|
||||
settings = self._settings()
|
||||
settings.setValue("window/geometry", self.saveGeometry())
|
||||
if self._split is not None:
|
||||
settings.setValue("splitter/state", self._split.saveState())
|
||||
settings.setValue(
|
||||
"preview_table/header",
|
||||
self.preview_table.horizontalHeader().saveState(),
|
||||
)
|
||||
|
||||
def closeEvent(self, event) -> None:
|
||||
self._save_layout()
|
||||
super().closeEvent(event)
|
||||
|
||||
def _browse(self):
|
||||
path = QFileDialog.getExistingDirectory(self, "Select folder")
|
||||
if path:
|
||||
|
||||
Reference in New Issue
Block a user