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)