Added preview image to print cluster monitor

CL-894
This commit is contained in:
Jaime van Kessel 2018-08-14 14:54:27 +02:00
parent 78ebdb13f4
commit 94b9782110
6 changed files with 84 additions and 3 deletions

View file

@ -4,6 +4,9 @@
from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, pyqtSlot
from typing import Optional, TYPE_CHECKING
from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QImage
if TYPE_CHECKING:
from cura.PrinterOutput.PrinterOutputController import PrinterOutputController
from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel
@ -18,7 +21,8 @@ class PrintJobOutputModel(QObject):
keyChanged = pyqtSignal()
assignedPrinterChanged = pyqtSignal()
ownerChanged = pyqtSignal()
configurationChanged =pyqtSignal()
configurationChanged = pyqtSignal()
previewImageChanged = pyqtSignal()
def __init__(self, output_controller: "PrinterOutputController", key: str = "", name: str = "", parent=None) -> None:
super().__init__(parent)
@ -33,6 +37,27 @@ class PrintJobOutputModel(QObject):
self._configuration = None # type: Optional[ConfigurationModel]
self._preview_image_id = 0
self._preview_image = None
@pyqtProperty(QUrl, notify=previewImageChanged)
def preview_image_url(self):
self._preview_image_id += 1
# There is an image provider that is called "camera". In order to ensure that the image qml object, that
# requires a QUrl to function, updates correctly we add an increasing number. This causes to see the QUrl
# as new (instead of relying on cached version and thus forces an update.
temp = "image://print_job_preview/" + str(self._preview_image_id) + "/" + self._key
return QUrl(temp, QUrl.TolerantMode)
def getPreviewImage(self):
return self._preview_image
def updatePreviewImage(self, preview_image: Optional[QImage]):
if self._preview_image != preview_image:
self._preview_image = preview_image
self.previewImageChanged.emit()
@pyqtProperty(QObject, notify=configurationChanged)
def configuration(self) -> Optional["ConfigurationModel"]:
return self._configuration