Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions BlocksScreen/lib/panels/mainWindow.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,8 @@ def __init__(self):
self.printPanel.request_change_page.connect(
slot=self.global_change_page
)


self.filamentPanel.request_back.connect(slot=self.global_back)
self.filamentPanel.request_change_page.connect(
slot=self.global_change_page
Expand All @@ -102,6 +104,26 @@ def __init__(self):
self.utilitiesPanel.request_change_page.connect(
slot=self.global_change_page
)


self.printer.print_stats_update[str, str].connect(
self.screensaver.on_object_config
)
self.printer.print_stats_update[str, dict].connect(
self.screensaver.on_object_config
)
self.printer.print_stats_update[str, float].connect(
self.screensaver.on_object_config
)

self.screensaver.request_file_info.connect(
self.file_data.on_request_fileinfo
)

self.file_data.fileinfo.connect(self.screensaver.on_fileinfo)



self.ui.extruder_temp_display.clicked.connect(
partial(self.global_change_page, 2, 4)
)
Expand Down
3 changes: 2 additions & 1 deletion BlocksScreen/lib/panels/widgets/filesPage.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,8 @@ def on_fileinfo(self, filedata: dict) -> None:

self.button.setRightText(f"{filament_type} - {time_str}")
return
self.file_selected.emit(str(self._current_file_name), filedata)
if self.isVisible():
self.file_selected.emit(str(self._current_file_name), filedata)

@QtCore.pyqtSlot(name="reload_list")
def reload_list(self) -> None:
Expand Down
65 changes: 46 additions & 19 deletions BlocksScreen/screensaver.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
import helper_methods as helper_methods
from PyQt6 import QtCore, QtWidgets

from PyQt6 import QtCore, QtWidgets ,QtGui
import typing

class ScreenSaver(QtCore.QObject):
timer = QtCore.QTimer()

dpms_off_timeout = helper_methods.get_dpms_timeouts().get("off_timeout")
dpms_suspend_timeout = helper_methods.get_dpms_timeouts().get(
"suspend_timeout"
)
dpms_standby_timeout = helper_methods.get_dpms_timeouts().get(
"standby_timeout"
)
request_file_info: typing.ClassVar[QtCore.pyqtSignal] = QtCore.pyqtSignal(
str, name="request_file_info"
)


touch_blocked: bool = False

Expand All @@ -31,7 +34,21 @@ def __init__(self, parent) -> None:
self.blank_timeout = self.screensaver_config.getint(
"timeout", default=500000
)
self.image_widget = QtWidgets.QLabel()
self.image_widget.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.image_widget.setWindowFlags(
QtCore.Qt.WindowType.FramelessWindowHint
| QtCore.Qt.WindowType.WindowStaysOnTopHint
)
self.image=QtGui.QPixmap("BlocksScreen/lib/ui/resources/media/logoblocks.png")

self.image_widget.setStyleSheet("background-color: black;")
self.image_widget.setScaledContents(True)

# load image from config or hardcode

QtWidgets.QApplication.instance().installEventFilter(self)

self.timer.timeout.connect(self.check_dpms)
self.timer.setInterval(self.blank_timeout)
self.timer.start()
Expand All @@ -46,21 +63,11 @@ def eventFilter(self, object, event) -> bool:
QtCore.QEvent.Type.MouseButtonPress,
QtCore.QEvent.Type.MouseButtonDblClick,
):
dpms_info = helper_methods.get_dpms_info()
if (
dpms_info.get("state")
in (
helper_methods.DPMSState.OFF,
helper_methods.DPMSState.STANDBY,
helper_methods.DPMSState.SUSPEND,
)
or self.touch_blocked
):
if not self.timer.isActive():
self.touch_blocked = False
helper_methods.set_dpms_mode(helper_methods.DPMSState.ON)
self.timer.start()
return True # filter out the event, block touch events on the application
if self.image_widget.isVisible() or self.touch_blocked:
self.touch_blocked = False
self.image_widget.hide()
self.timer.start()
return True # block the wake-up touch
return False

def timerEvent(self, a0: QtCore.QTimerEvent) -> None:
Expand All @@ -69,5 +76,25 @@ def timerEvent(self, a0: QtCore.QTimerEvent) -> None:
def check_dpms(self) -> None:
"""Checks the X11 extension dpms for the status of the screen"""
self.touch_blocked = True
helper_methods.set_dpms_mode(helper_methods.DPMSState.STANDBY)
if self.state == "printing":
self.request_file_info.emit(self.filename)
self.image = QtGui.QPixmap(self.thumbnail[2])
self.image_widget.setPixmap(self.image)
self.image_widget.setMaximumWidth(self.image.width())
self.image_widget.showFullScreen()
self.timer.stop()

@QtCore.pyqtSlot(dict, name="on_fileinfo")
def on_fileinfo(self, filedata: dict) -> None:
self.thumbnail = filedata["thumbnail_images"]


@QtCore.pyqtSlot(str, dict, name="on_object_config")
@QtCore.pyqtSlot(str, float, name="on_object_config")
@QtCore.pyqtSlot(str, str, name="on_object_config")
def on_object_config(self, field: str, value: dict | float | str) -> None:
if field == "filename":
self.filename = value
if field == "state":
self.state = value
print(self.state)