From 625ca2d21cd73186d3147f6d07b75c3e2c293d2a Mon Sep 17 00:00:00 2001 From: Ethanfel Date: Mon, 6 Apr 2026 13:33:13 +0200 Subject: [PATCH] feat: resize short-side field with QSettings persistence --- main.py | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/main.py b/main.py index 51ff4d9..8cf572c 100644 --- a/main.py +++ b/main.py @@ -12,7 +12,7 @@ from PyQt6.QtWidgets import ( QLabel, QPushButton, QLineEdit, QFileDialog, QFrame, QStatusBar, QListWidget, QListWidgetItem, QAbstractItemView, QSplitter, QToolTip, ) -from PyQt6.QtCore import Qt, QThread, QTimer, pyqtSignal +from PyQt6.QtCore import Qt, QThread, QTimer, pyqtSignal, QSettings from PyQt6.QtGui import QPainter, QColor, QPen, QDragEnterEvent, QDropEvent, QCursor, QFont import mpv @@ -151,14 +151,17 @@ class ExportWorker(QThread): finished = pyqtSignal(str) # output path error = pyqtSignal(str) # error message - def __init__(self, input_path: str, start: float, output_path: str): + def __init__(self, input_path: str, start: float, output_path: str, + short_side: int | None = None): super().__init__() self._input = input_path self._start = start self._output = output_path + self._short_side = short_side def run(self): - cmd = build_ffmpeg_command(self._input, self._start, self._output) + cmd = build_ffmpeg_command(self._input, self._start, self._output, + self._short_side) try: result = subprocess.run(cmd, capture_output=True, text=True, timeout=120) if result.returncode == 0: @@ -455,6 +458,15 @@ class MainWindow(QMainWindow): self._btn_folder = QPushButton("Browse") self._btn_folder.clicked.connect(self._pick_folder) + self._settings = QSettings("8cut", "8cut") + self._txt_resize = QLineEdit() + self._txt_resize.setPlaceholderText("px (opt.)") + self._txt_resize.setMaximumWidth(70) + self._txt_resize.setText(self._settings.value("resize_short_side", "")) + self._txt_resize.textChanged.connect( + lambda v: self._settings.setValue("resize_short_side", v) + ) + self._lbl_next = QLabel() self._update_next_label() @@ -479,6 +491,8 @@ class MainWindow(QMainWindow): export_row.addWidget(QLabel("Folder:")) export_row.addWidget(self._txt_folder, stretch=1) export_row.addWidget(self._btn_folder) + export_row.addWidget(QLabel("Short side:")) + export_row.addWidget(self._txt_resize) export_row.addWidget(self._lbl_next) export_row.addWidget(self._btn_export) @@ -588,10 +602,20 @@ class MainWindow(QMainWindow): self._txt_name.text() or "clip", self._export_counter, ) + + raw = self._txt_resize.text().strip() + try: + short_side = int(raw) if raw else None + if short_side is not None and short_side <= 0: + short_side = None + except ValueError: + short_side = None + self._btn_export.setEnabled(False) self.statusBar().showMessage(f"Exporting {os.path.basename(output)}…") - self._export_worker = ExportWorker(self._file_path, self._cursor, output) + self._export_worker = ExportWorker(self._file_path, self._cursor, output, + short_side) self._export_worker.finished.connect(self._on_export_done) self._export_worker.error.connect(self._on_export_error) self._export_worker.start()