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
19 changes: 2 additions & 17 deletions BlocksScreen/lib/panels/widgets/amuWidgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,26 +163,11 @@ def paintEvent(self, a0: QtGui.QPaintEvent) -> None:
if self.status in [GateStatus.AVAILABLE, GateStatus.AVAILABLE_FROM_BUFFER]
else self._unloaded_icon
)
scaled = icon.scaled(
icon_size,
icon_size,
QtCore.Qt.AspectRatioMode.KeepAspectRatio,
QtCore.Qt.TransformationMode.SmoothTransformation,
)
scaled = BlocksPixmap.get(icon, QtCore.QSize(icon_size, icon_size))
x = (self.width() - scaled.width()) // 2
y = int((self.height() - scaled.height()) // 1.1)

tinted = QtGui.QPixmap(scaled.size())
tinted.fill(QtCore.Qt.GlobalColor.transparent)
p2 = QtGui.QPainter(tinted)
p2.drawPixmap(0, 0, scaled)
p2.setCompositionMode(QtGui.QPainter.CompositionMode.CompositionMode_SourceIn)
p2.fillRect(tinted.rect(), white)
p2.end()
painter.drawPixmap(x, y, tinted)

tinted = QtGui.QPixmap(scaled.size())
tinted.fill(QtCore.Qt.GlobalColor.transparent)
painter.drawPixmap(x, y, BlocksPixmap.tinted(scaled, white))

painter.setPen(QtCore.Qt.PenStyle.NoPen)
painter.end()
Expand Down
24 changes: 9 additions & 15 deletions BlocksScreen/lib/panels/widgets/cancelPage.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import logging
import typing

from lib.moonrakerComm import MoonWebSocket
from lib.utils.blocks_button import BlocksCustomButton
from lib.utils.blocks_frame import BlocksCustomFrame
from lib.utils.blocks_label import BlocksLabel
from lib.utils.blocks_pixmap import BlocksPixmap, Icon
from PyQt6 import QtCore, QtGui, QtWidgets
import typing

from lib.moonrakerComm import MoonWebSocket
logger = logging.getLogger(__name__)


class CancelPage(QtWidgets.QWidget):
Expand Down Expand Up @@ -76,12 +79,7 @@ def set_pixmap(self, pixmap: QtGui.QPixmap) -> None:
# Scene rectangle (available display area)
graphics_rect = self.cf_thumbnail.rect().toRectF()

# Scale pixmap preserving aspect ratio
pixmap = pixmap.scaled(
graphics_rect.size().toSize(),
QtCore.Qt.AspectRatioMode.KeepAspectRatio,
QtCore.Qt.TransformationMode.SmoothTransformation,
)
pixmap = BlocksPixmap.get(pixmap, graphics_rect)

adjusted_x = (graphics_rect.width() - pixmap.width()) / 2.0
adjusted_y = (graphics_rect.height() - pixmap.height()) / 2.0
Expand All @@ -105,14 +103,10 @@ def _show_screen_thumbnail(self, dict):
last_thumb = QtGui.QPixmap.fromImage(thumbnails[-1])

if last_thumb.isNull():
last_thumb = QtGui.QPixmap(
"BlocksScreen/lib/ui/resources/media/logoblocks400x300.png"
)
last_thumb = BlocksPixmap.source(Icon.LOGO_BLOCKS)
except Exception as e:
print(e)
last_thumb = QtGui.QPixmap(
"BlocksScreen/lib/ui/resources/media/logoblocks400x300.png"
)
logger.warning("No job thumbnail, falling back to the logo: %s", e)
last_thumb = BlocksPixmap.source(Icon.LOGO_BLOCKS)
self.set_pixmap(last_thumb)

def _setupUI(self) -> None:
Expand Down
22 changes: 12 additions & 10 deletions BlocksScreen/lib/panels/widgets/confirmPage.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ def __init__(self, parent) -> None:
self.setMouseTracking(True)
self.setAttribute(QtCore.Qt.WidgetAttribute.WA_AcceptTouchEvents, True)
self.thumbnail: QtGui.QImage = self._blocksthumbnail
self._thumbnails: typing.List = []
self._thumbnail_key: int = 0
self._thumbnail_cache: QtGui.QPixmap = QtGui.QPixmap()
self._thumbnails: list = []
self.directory = "gcodes"
self.filename = ""
self.confirm_button.clicked.connect(
Expand Down Expand Up @@ -108,6 +110,13 @@ def hide(self):
self.filename = ""
return super().hide()

def _thumbnail_as_pixmap(self) -> QtGui.QPixmap:
"""Convert the thumbnail QImage once per image, not once per paint."""
if self.thumbnail.cacheKey() != self._thumbnail_key:
self._thumbnail_key = self.thumbnail.cacheKey()
self._thumbnail_cache = QtGui.QPixmap.fromImage(self.thumbnail)
return self._thumbnail_cache

def paintEvent(self, event: QtGui.QPaintEvent) -> None:
"""Re-implemented method, paint widget"""
if not self.isVisible():
Expand All @@ -120,12 +129,7 @@ def paintEvent(self, event: QtGui.QPaintEvent) -> None:
# Scene rectangle (available display area)
graphics_rect = self.cf_thumbnail.rect().toRectF()

# Scale pixmap preserving aspect ratio
pixmap = QtGui.QPixmap.fromImage(self.thumbnail).scaled(
graphics_rect.size().toSize(),
QtCore.Qt.AspectRatioMode.KeepAspectRatio,
QtCore.Qt.TransformationMode.SmoothTransformation,
)
pixmap = BlocksPixmap.get(self._thumbnail_as_pixmap(), graphics_rect)

# Centering offsets
adjusted_x = (graphics_rect.width() - pixmap.width()) / 2.0
Expand Down Expand Up @@ -316,6 +320,4 @@ def _setupUI(self) -> None:
QtCore.Qt.AlignmentFlag.AlignRight | QtCore.Qt.AlignmentFlag.AlignVCenter,
)
self.verticalLayout_4.addLayout(self.cf_content_vertical_layout)
self._blocksthumbnail = QtGui.QImage(
"BlocksScreen/lib/ui/resources/media/logoblocks400x300.png"
)
self._blocksthumbnail = QtGui.QImage(str(Icon.LOGO_BLOCKS))
12 changes: 6 additions & 6 deletions BlocksScreen/lib/panels/widgets/optionCardWidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,13 @@ def enable_button(self) -> None:

def set_card_icon(self, pixmap: QtGui.QPixmap) -> None:
"""Set widget icon"""
scaled = pixmap.scaled(
300,
300,
QtCore.Qt.AspectRatioMode.IgnoreAspectRatio,
QtCore.Qt.TransformationMode.SmoothTransformation,
self.option_icon.setPixmap(
BlocksPixmap.get(
pixmap,
QtCore.QSize(300, 300),
QtCore.Qt.AspectRatioMode.IgnoreAspectRatio,
)
)
self.option_icon.setPixmap(scaled)
self.repaint()

def set_card_text(self, text: str) -> None:
Expand Down
1 change: 1 addition & 0 deletions BlocksScreen/lib/ui/resources/graphic_resources.qrc
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<RCC>
<qresource prefix="graphics">
<file>media/graphics/babystep_graphic.png</file>
<file>media/logoblocks400x300.png</file>
</qresource>
</RCC>
Loading
Loading