53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
from __future__ import annotations
|
|
|
|
from app.qt_compat import QLabel, Qt, QVBoxLayout, QWidget
|
|
|
|
from app.ui.preview_modes import PREVIEW_MODE_TILE
|
|
from app.ui.preview_widget import PreviewWidget
|
|
|
|
|
|
class FullscreenPreviewWindow(QWidget):
|
|
def __init__(
|
|
self,
|
|
controller,
|
|
preview_mode: str = PREVIEW_MODE_TILE,
|
|
scene_role: str = "live",
|
|
technical_preview: bool | None = None,
|
|
parent: QWidget | None = None,
|
|
) -> None:
|
|
super().__init__(parent)
|
|
self.setWindowTitle("Infinity Mirror Preview")
|
|
self.setWindowFlag(Qt.Window, True)
|
|
self.setAttribute(Qt.WA_DeleteOnClose, False)
|
|
|
|
layout = QVBoxLayout(self)
|
|
layout.setContentsMargins(0, 0, 0, 0)
|
|
layout.setSpacing(0)
|
|
|
|
self.preview_widget = PreviewWidget(
|
|
controller,
|
|
preview_mode=preview_mode,
|
|
scene_role=scene_role,
|
|
technical_preview=technical_preview,
|
|
)
|
|
self.preview_widget.tileClicked.connect(controller.set_selected_tile)
|
|
layout.addWidget(self.preview_widget, 1)
|
|
|
|
hint = QLabel("Press F11 or Escape to leave fullscreen preview")
|
|
hint.setAlignment(Qt.AlignCenter)
|
|
hint.setStyleSheet("background: #2D2D30; color: #CCCCCC; padding: 8px; font-size: 12px; border-top: 1px solid #3C3C3C;")
|
|
layout.addWidget(hint)
|
|
|
|
def set_preview_mode(self, mode: str) -> None:
|
|
self.preview_widget.set_preview_mode(mode)
|
|
|
|
def set_technical_preview(self, enabled: bool) -> None:
|
|
self.preview_widget.set_technical_preview(enabled)
|
|
|
|
def keyPressEvent(self, event) -> None:
|
|
if event.key() in {Qt.Key_F11, Qt.Key_Escape}:
|
|
self.hide()
|
|
event.accept()
|
|
return
|
|
super().keyPressEvent(event)
|