Add View menu with a toggle to hide/show the ffmpeg log panel
This commit is contained in:
@@ -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))
|
||||||
|
|||||||
@@ -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()
|
||||||
Reference in New Issue
Block a user