feat: resize short-side field with QSettings persistence

This commit is contained in:
2026-04-06 13:33:13 +02:00
parent 798c5ff4f4
commit 625ca2d21c
+28 -4
View File
@@ -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()