diff --git a/cura/PrinterOutput/PrintJobOutputModel.py b/cura/PrinterOutput/PrintJobOutputModel.py index c194f5df32..ce3c20fcfb 100644 --- a/cura/PrinterOutput/PrintJobOutputModel.py +++ b/cura/PrinterOutput/PrintJobOutputModel.py @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, pyqtSlot @@ -12,9 +12,6 @@ if TYPE_CHECKING: from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel from cura.PrinterOutput.ConfigurationModel import ConfigurationModel -from cura.PrinterOutput.ConfigurationChangeModel import ConfigurationChangeModel - - class PrintJobOutputModel(QObject): stateChanged = pyqtSignal() timeTotalChanged = pyqtSignal() @@ -26,7 +23,6 @@ class PrintJobOutputModel(QObject): configurationChanged = pyqtSignal() previewImageChanged = pyqtSignal() compatibleMachineFamiliesChanged = pyqtSignal() - configurationChangesChanged = pyqtSignal() def __init__(self, output_controller: "PrinterOutputController", key: str = "", name: str = "", parent=None) -> None: super().__init__(parent) @@ -44,7 +40,6 @@ class PrintJobOutputModel(QObject): self._preview_image_id = 0 self._preview_image = None # type: Optional[QImage] - self._configuration_changes = [] # type: List[ConfigurationChangeModel] @pyqtProperty("QStringList", notify=compatibleMachineFamiliesChanged) def compatibleMachineFamilies(self): @@ -152,13 +147,3 @@ class PrintJobOutputModel(QObject): @pyqtSlot(str) def setState(self, state): self._output_controller.setJobState(self, state) - - @pyqtProperty("QVariantList", notify=configurationChangesChanged) - def configurationChanges(self) -> List[ConfigurationChangeModel]: - return self._configuration_changes - - def updateConfigurationChanges(self, changes: List[ConfigurationChangeModel]) -> None: - if len(self._configuration_changes) == 0 and len(changes) == 0: - return - self._configuration_changes = changes - self.configurationChangesChanged.emit() diff --git a/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py b/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py index 79040373ae..88ac1c1e76 100644 --- a/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py +++ b/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py @@ -17,17 +17,17 @@ from UM.Scene.SceneNode import SceneNode # For typing. from UM.Version import Version # To check against firmware versions for support. from cura.CuraApplication import CuraApplication -from cura.PrinterOutput.ConfigurationChangeModel import ConfigurationChangeModel from cura.PrinterOutput.ConfigurationModel import ConfigurationModel from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel from cura.PrinterOutput.NetworkedPrinterOutputDevice import NetworkedPrinterOutputDevice, AuthState from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel -from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel from cura.PrinterOutput.MaterialOutputModel import MaterialOutputModel from cura.PrinterOutput.NetworkCamera import NetworkCamera from .ClusterUM3PrinterOutputController import ClusterUM3PrinterOutputController from .SendMaterialJob import SendMaterialJob +from .ConfigurationChangeModel import ConfigurationChangeModel +from .UM3PrintJobOutputModel import UM3PrintJobOutputModel from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply from PyQt5.QtGui import QDesktopServices, QImage @@ -61,7 +61,7 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): self._dummy_lambdas = ("", {}, io.BytesIO()) #type: Tuple[str, Dict, Union[io.StringIO, io.BytesIO]] - self._print_jobs = [] # type: List[PrintJobOutputModel] + self._print_jobs = [] # type: List[UM3PrintJobOutputModel] self._monitor_view_qml_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../resources/qml/ClusterMonitorItem.qml") self._control_view_qml_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../resources/qml/ClusterControlItem.qml") @@ -91,7 +91,7 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): self._printer_uuid_to_unique_name_mapping = {} # type: Dict[str, str] - self._finished_jobs = [] # type: List[PrintJobOutputModel] + self._finished_jobs = [] # type: List[UM3PrintJobOutputModel] self._cluster_size = int(properties.get(b"cluster_size", 0)) # type: int @@ -350,15 +350,15 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): QDesktopServices.openUrl(QUrl("http://" + self._address + "/printers")) @pyqtProperty("QVariantList", notify = printJobsChanged) - def printJobs(self)-> List[PrintJobOutputModel]: + def printJobs(self)-> List[UM3PrintJobOutputModel]: return self._print_jobs @pyqtProperty("QVariantList", notify = printJobsChanged) - def queuedPrintJobs(self) -> List[PrintJobOutputModel]: + def queuedPrintJobs(self) -> List[UM3PrintJobOutputModel]: return [print_job for print_job in self._print_jobs if print_job.state == "queued" or print_job.state == "error"] @pyqtProperty("QVariantList", notify = printJobsChanged) - def activePrintJobs(self) -> List[PrintJobOutputModel]: + def activePrintJobs(self) -> List[UM3PrintJobOutputModel]: return [print_job for print_job in self._print_jobs if print_job.assignedPrinter is not None and print_job.state != "queued"] @pyqtProperty("QVariantList", notify = clusterPrintersChanged) @@ -543,8 +543,8 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): self._printers.append(printer) return printer - def _createPrintJobModel(self, data: Dict[str, Any]) -> PrintJobOutputModel: - print_job = PrintJobOutputModel(output_controller=ClusterUM3PrinterOutputController(self), + def _createPrintJobModel(self, data: Dict[str, Any]) -> UM3PrintJobOutputModel: + print_job = UM3PrintJobOutputModel(output_controller=ClusterUM3PrinterOutputController(self), key=data["uuid"], name= data["name"]) configuration = ConfigurationModel() @@ -564,7 +564,7 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): print_job.stateChanged.connect(self._printJobStateChanged) return print_job - def _updatePrintJob(self, print_job: PrintJobOutputModel, data: Dict[str, Any]) -> None: + def _updatePrintJob(self, print_job: UM3PrintJobOutputModel, data: Dict[str, Any]) -> None: print_job.updateTimeTotal(data["time_total"]) print_job.updateTimeElapsed(data["time_elapsed"]) impediments_to_printing = data.get("impediments_to_printing", []) @@ -647,7 +647,7 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): material = self._createMaterialOutputModel(material_data) extruder.updateActiveMaterial(material) - def _removeJob(self, job: PrintJobOutputModel) -> bool: + def _removeJob(self, job: UM3PrintJobOutputModel) -> bool: if job not in self._print_jobs: return False @@ -691,7 +691,7 @@ def checkValidGetReply(reply: QNetworkReply) -> bool: return True -def findByKey(lst: List[Union[PrintJobOutputModel, PrinterOutputModel]], key: str) -> Optional[PrintJobOutputModel]: +def findByKey(lst: List[Union[UM3PrintJobOutputModel, PrinterOutputModel]], key: str) -> Optional[UM3PrintJobOutputModel]: for item in lst: if item.key == key: return item diff --git a/cura/PrinterOutput/ConfigurationChangeModel.py b/plugins/UM3NetworkPrinting/src/ConfigurationChangeModel.py similarity index 100% rename from cura/PrinterOutput/ConfigurationChangeModel.py rename to plugins/UM3NetworkPrinting/src/ConfigurationChangeModel.py diff --git a/plugins/UM3NetworkPrinting/src/UM3PrintJobOutputModel.py b/plugins/UM3NetworkPrinting/src/UM3PrintJobOutputModel.py new file mode 100644 index 0000000000..2ac3e6ba4f --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/UM3PrintJobOutputModel.py @@ -0,0 +1,29 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, pyqtSlot +from typing import Optional, TYPE_CHECKING, List +from PyQt5.QtCore import QUrl +from PyQt5.QtGui import QImage + +from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel + +from .ConfigurationChangeModel import ConfigurationChangeModel + + +class UM3PrintJobOutputModel(PrintJobOutputModel): + configurationChangesChanged = pyqtSignal() + + def __init__(self, output_controller: "PrinterOutputController", key: str = "", name: str = "", parent=None) -> None: + super().__init__(output_controller, key, name, parent) + self._configuration_changes = [] # type: List[ConfigurationChangeModel] + + @pyqtProperty("QVariantList", notify=configurationChangesChanged) + def configurationChanges(self) -> List[ConfigurationChangeModel]: + return self._configuration_changes + + def updateConfigurationChanges(self, changes: List[ConfigurationChangeModel]) -> None: + if len(self._configuration_changes) == 0 and len(changes) == 0: + return + self._configuration_changes = changes + self.configurationChangesChanged.emit()