Add View menu with a toggle to hide/show the ffmpeg log panel

This commit is contained in:
ThePendulum
2026-07-26 01:24:34 +02:00
parent 660275bf02
commit f6e6f79a34
2 changed files with 48 additions and 1 deletions
+9 -1
View File
@@ -3,7 +3,7 @@ from pathlib import Path
from typing import Optional from typing import Optional
from PyQt6.QtCore import Qt, QTimer, QThread, pyqtSignal from PyQt6.QtCore import Qt, QTimer, QThread, pyqtSignal
from PyQt6.QtGui import QShortcut, QKeySequence from PyQt6.QtGui import QShortcut, QKeySequence, QAction
from PyQt6.QtWidgets import ( from PyQt6.QtWidgets import (
QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,
QPushButton, QLabel, QSlider, QCheckBox, QDoubleSpinBox, QFileDialog, QPushButton, QLabel, QSlider, QCheckBox, QDoubleSpinBox, QFileDialog,
@@ -55,6 +55,7 @@ class MainWindow(QMainWindow):
self.player.setMinimumHeight(400) self.player.setMinimumHeight(400)
self._build_ui() self._build_ui()
self._build_menu()
self._wire_shortcuts() self._wire_shortcuts()
self._position_timer = QTimer(self) self._position_timer = QTimer(self)
@@ -155,6 +156,13 @@ class MainWindow(QMainWindow):
self.setCentralWidget(central) self.setCentralWidget(central)
def _build_menu(self):
view_menu = self.menuBar().addMenu("&View")
self.toggle_log_action = QAction("Show ffmpeg Log", self, checkable=True, checked=True)
self.toggle_log_action.toggled.connect(self.log_view.setVisible)
view_menu.addAction(self.toggle_log_action)
def _wire_shortcuts(self): def _wire_shortcuts(self):
QShortcut(QKeySequence(","), self, activated=lambda: self._step_frame(-1)) QShortcut(QKeySequence(","), self, activated=lambda: self._step_frame(-1))
QShortcut(QKeySequence("."), self, activated=lambda: self._step_frame(1)) QShortcut(QKeySequence("."), self, activated=lambda: self._step_frame(1))
+39
View File
@@ -0,0 +1,39 @@
import sys
import time
from pathlib import Path
from PyQt6.QtWidgets import QApplication
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
import main as app_main
ROOT = Path(__file__).resolve().parent.parent
OUT_DIR = ROOT / "test_media" / "seek_validation"
def main():
OUT_DIR.mkdir(exist_ok=True)
qapp = QApplication(sys.argv)
win = app_main.MainWindow()
win.show()
qapp.processEvents()
assert win.log_view.isVisible(), "log panel should be visible by default"
assert win.toggle_log_action.isChecked()
win.grab().save(str(OUT_DIR / "view_menu_log_visible.png"))
win.toggle_log_action.setChecked(False)
qapp.processEvents()
assert not win.log_view.isVisible(), "toggling the menu action should hide the log panel"
win.grab().save(str(OUT_DIR / "view_menu_log_hidden.png"))
win.toggle_log_action.setChecked(True)
qapp.processEvents()
assert win.log_view.isVisible()
win.player.shutdown()
print("PASS: View > Show ffmpeg Log toggles the log panel correctly")
if __name__ == "__main__":
main()