diff --git a/cura/PrinterOutput/PrinterOutputModel.py b/cura/PrinterOutput/PrinterOutputModel.py index f82d568e63..4189b9fcbd 100644 --- a/cura/PrinterOutput/PrinterOutputModel.py +++ b/cura/PrinterOutput/PrinterOutputModel.py @@ -49,17 +49,21 @@ class PrinterOutputModel(QObject): self._printer_configuration.extruderConfigurations = [extruder.extruderConfiguration for extruder in self._extruders] - self._camera_url = None # type: Optional[QUrl] + self._camera_url = QUrl() # type: QUrl @pyqtProperty(str, constant = True) def firmwareVersion(self) -> str: return self._firmware_version - def setCameraUrl(self, camera_url: Optional["QUrl"]) -> None: - if self._camera_url is not camera_url: + def setCameraUrl(self, camera_url: "QUrl") -> None: + if self._camera_url != camera_url: self._camera_url = camera_url self.cameraUrlChanged.emit() + @pyqtProperty(QUrl, fset = setCameraUrl, notify = cameraUrlChanged) + def cameraUrl(self) -> "QUrl": + return self._camera_url + def updateIsPreheating(self, pre_heating: bool) -> None: if self._is_preheating != pre_heating: self._is_preheating = pre_heating @@ -69,10 +73,6 @@ class PrinterOutputModel(QObject): def isPreheating(self) -> bool: return self._is_preheating - @pyqtProperty(QUrl, notify=cameraUrlChanged) - def cameraUrl(self) -> Optional["QUrl"]: - return self._camera_url - @pyqtProperty(str, notify = printerTypeChanged) def type(self) -> str: return self._printer_type diff --git a/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml b/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml index 7ec0cb880a..7e5c254e5c 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml @@ -31,8 +31,8 @@ Rectangle { anchors.fill: parent; hoverEnabled: true; onClicked: { - if (OutputDevice.activeCameraUrl !== null) { - OutputDevice.setActiveCameraUrl(null) + if (OutputDevice.activeCameraUrl != "") { + OutputDevice.setActiveCameraUrl(""); } else { OutputDevice.setActiveCameraUrl(modelData.cameraUrl); } diff --git a/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml b/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml index a9166432ae..d210ab40f3 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml @@ -16,7 +16,7 @@ Component { height: maximumHeight; onVisibleChanged: { if (monitorFrame != null && !monitorFrame.visible) { - OutputDevice.setActiveCameraUrl(null); + OutputDevice.setActiveCameraUrl(""); } } width: maximumWidth; @@ -126,7 +126,7 @@ Component { PrinterVideoStream { anchors.fill: parent; cameraUrl: OutputDevice.activeCameraUrl; - visible: OutputDevice.activeCameraUrl != null; + visible: OutputDevice.activeCameraUrl != ""; } } } diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrinterVideoStream.qml b/plugins/UM3NetworkPrinting/resources/qml/PrinterVideoStream.qml index 9b79a8d008..77b481f6d8 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/PrinterVideoStream.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/PrinterVideoStream.qml @@ -8,7 +8,7 @@ import UM 1.3 as UM import Cura 1.0 as Cura Item { - property var cameraUrl: null; + property var cameraUrl: ""; Rectangle { anchors.fill:parent; @@ -18,7 +18,7 @@ Item { MouseArea { anchors.fill: parent; - onClicked: OutputDevice.setActiveCameraUrl(null); + onClicked: OutputDevice.setActiveCameraUrl(""); z: 0; } @@ -41,11 +41,11 @@ Item { height: Math.round((imageHeight === 0 ? 600 * screenScaleFactor : imageHeight) * width / imageWidth); onVisibleChanged: { if (visible) { - if (cameraUrl != null) { + if (cameraUrl != "") { start(); } } else { - if (cameraUrl != null) { + if (cameraUrl != "") { stop(); } } @@ -58,7 +58,7 @@ Item { MouseArea { anchors.fill: cameraImage; onClicked: { - OutputDevice.setActiveCameraUrl(null); + OutputDevice.setActiveCameraUrl(""); } z: 1; } diff --git a/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py b/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py index 368273102b..7504d55ad9 100644 --- a/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py +++ b/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py @@ -99,7 +99,7 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): self._latest_reply_handler = None # type: Optional[QNetworkReply] self._sending_job = None - self._active_camera_url = None # type: Optional[QUrl] + self._active_camera_url = QUrl() # type: QUrl def requestWrite(self, nodes: List[SceneNode], file_name: Optional[str] = None, limit_mimetypes: bool = False, file_handler: Optional[FileHandler] = None, **kwargs: str) -> None: self.writeStarted.emit(self) @@ -263,27 +263,20 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): def activePrinter(self) -> Optional[PrinterOutputModel]: return self._active_printer - @pyqtProperty(QUrl, notify=activeCameraUrlChanged) - def activeCameraUrl(self) -> Optional[QUrl]: - return self._active_camera_url - @pyqtSlot(QObject) def setActivePrinter(self, printer: Optional[PrinterOutputModel]) -> None: if self._active_printer != printer: self._active_printer = printer self.activePrinterChanged.emit() - @pyqtSlot(QObject) - def setActiveCameraUrl(self, camera_url: Optional[QUrl]) -> None: + @pyqtProperty(QUrl, notify = activeCameraUrlChanged) + def activeCameraUrl(self) -> "QUrl": + return self._active_camera_url + + @pyqtSlot(QUrl) + def setActiveCameraUrl(self, camera_url: "QUrl") -> None: if self._active_camera_url != camera_url: - if self._active_camera_url: - self._active_camera_url.stop() - self._active_camera_url = camera_url - - if self._active_camera_url: - self._active_camera_url.start() - self.activeCameraUrlChanged.emit() def _onPostPrintJobFinished(self, reply: QNetworkReply) -> None: