"""
This module contains the ControlViewFullscreen class, which is responsible for managing the
interactions related to the full-screen view in the application.
"""
from PyQt6 import QtCore, QtWidgets, QtGui
[docs]
class ControlViewFullscreen:
"""
Class for controlling full-screen view.
Attributes:
_controller: The controller object.
_model: The model object.
_new_window: The new window object for full-screen view.
_full_screen_mode: A boolean indicating whether full-screen mode is active.
Methods:
__init__(self, controller): Initializes the ControlViewFullscreen object.
resize_event_new_window(self, a0: QtGui.QResizeEvent) -> None: Handles resize events for the new window.
label_full_screen_double_click_event(self, event): Handles double-click event on the full-screen label.
control_fov_full_screen(self): Controls field of view for the original image in full-screen mode.
_add_full_screen_window(self): Adds components to create the full-screen window.
"""
[docs]
def __init__(self, controller):
"""
Initialize the ControlViewFullscreen object.
Arg:
controller: The controller object.
Return:
None
"""
self._controller = controller
self._model = controller.model
self._new_window = None
self._full_screen_mode = False
self._add_full_screen_window()
self.new_window.resizeEvent = self.resize_event_new_window
self.spinBox_fov_full_screen.valueChanged.connect(self.control_fov_full_screen)
self.label_full_screen.mouseDoubleClickEvent = self.label_full_screen_double_click_event
[docs]
def resize_event_new_window(self, a0: QtGui.QResizeEvent) -> None:
"""
Handle the resize event for the new window.
This method is triggered when the new window is resized. If the original image exists in the model,
it updates the UI to display the image accordingly.
Arg:
a0 (QtGui.QResizeEvent): The resize event.
Return:
None
"""
if self._model.image_original is not None:
self._controller.display_image_to_ui()
@property
def new_window(self):
"""
Getter property for the new window.
Return:
QtWidgets.QWidget: The new window.
"""
return self._new_window
@property
def full_screen_mode(self):
"""
Getter property for the full screen mode.
Return:
bool: The current full screen mode.
"""
return self._full_screen_mode
@full_screen_mode.setter
def full_screen_mode(self, value):
"""
Setter property for the full screen mode.
Arg:
value (bool): The new value for the full screen mode.
Return:
None
"""
self._full_screen_mode = value
[docs]
def label_full_screen_double_click_event(self, event):
"""
Handle the double-click event on the full-screen label.
Arg:
event: The event object.
"""
if self._model.debug_mode:
self._model.activity_logger.info("ControlViewFullscreen: label_full_screen_double_click_event(), "
"Mouse even double click for full screen")
self._controller.show()
self.new_window.hide()
self.full_screen_mode = False
self._controller.ctrl_img_result.create_image_result()
[docs]
def control_fov_full_screen(self):
"""
Control field of view for the original image in full-screen mode.
"""
if self._model.debug_mode:
self._model.activity_logger.info("ControlViewFullscreen: control_fov_full_screen(), "
"Control value FoV for original image full screen mode")
print("change fov")
[docs]
def _add_full_screen_window(self):
"""
Add components to create the full-screen window.
"""
if self._model.debug_mode:
self._model.activity_logger.info("ControlViewFullscreen: _add_full_screen_window(), "
"Add full screen window")
self._new_window = QtWidgets.QWidget()
self._new_window.setWindowTitle("Full Screen Window")
self._new_window.setMinimumSize(QtCore.QSize(800, 600))
self.horizontalLayout = QtWidgets.QHBoxLayout(self._new_window)
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout.setSpacing(0)
self.horizontalLayout.setObjectName("horizontalLayout")
self.scrollArea = QtWidgets.QScrollArea(self._new_window)
self.scrollArea.setWidgetResizable(True)
self.scrollArea.setObjectName("scrollArea")
self.scrollAreaWidgetContents = QtWidgets.QWidget()
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 962, 598))
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.scrollAreaWidgetContents)
self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_3.setSpacing(0)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.label_full_screen = QtWidgets.QLabel(self.scrollAreaWidgetContents)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding,
QtWidgets.QSizePolicy.Policy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_full_screen.sizePolicy().hasHeightForWidth())
self.label_full_screen.setSizePolicy(sizePolicy)
self.label_full_screen.setFrameShape(QtWidgets.QFrame.Shape.NoFrame)
self.label_full_screen.setText("")
self.label_full_screen.setObjectName("label_full_screen")
self.label_full_screen_origin_image = QtWidgets.QLabel(self.scrollArea)
self.label_full_screen_origin_image.setGeometry(5, 5, 320, 240)
self.label_full_screen_origin_image.setFrameShape(QtWidgets.QFrame.Shape.NoFrame)
self.label_full_screen_origin_image.setText("")
self.label_full_screen_origin_image.setObjectName("label_full_screen_origin_image")
self.label_fff = QtWidgets.QLabel(self.scrollArea)
self.label_fff.setGeometry(QtCore.QRect(10, 11, 60, 30))
self.label_fff.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_fff.setStyleSheet("background-color: rgb(255,255,255);"
"color: rgb(30 31 34);"
"font-family: 'Segoe UI';"
"font-size: 12px;")
self.label_fff.setText("FoV Line: ")
self.spinBox_fov_full_screen = QtWidgets.QSpinBox(self.scrollArea)
self.spinBox_fov_full_screen.setGeometry(QtCore.QRect(10, 39, 60, 30))
self.spinBox_fov_full_screen.setMinimumSize(QtCore.QSize(50, 30))
self.spinBox_fov_full_screen.setMaximum(110)
self.spinBox_fov_full_screen.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.spinBox_fov_full_screen.setSuffix("°")
self.spinBox_fov_full_screen.setProperty("value", 110)
self.horizontalLayout_3.addWidget(self.label_full_screen)
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
self.horizontalLayout.addWidget(self.scrollArea)
self.scrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
self.scrollArea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
self._new_window.setLayout(self.horizontalLayout)
self._controller.showMaximized()