mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-08 07:27:29 -06:00
Move ConfigurationChangeModel to plugin
Contributes to CL-897
This commit is contained in:
parent
ae9faadca6
commit
82cddf07ad
4 changed files with 42 additions and 28 deletions
|
@ -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.
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, pyqtSlot
|
from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, pyqtSlot
|
||||||
|
@ -12,9 +12,6 @@ if TYPE_CHECKING:
|
||||||
from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel
|
from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel
|
||||||
from cura.PrinterOutput.ConfigurationModel import ConfigurationModel
|
from cura.PrinterOutput.ConfigurationModel import ConfigurationModel
|
||||||
|
|
||||||
from cura.PrinterOutput.ConfigurationChangeModel import ConfigurationChangeModel
|
|
||||||
|
|
||||||
|
|
||||||
class PrintJobOutputModel(QObject):
|
class PrintJobOutputModel(QObject):
|
||||||
stateChanged = pyqtSignal()
|
stateChanged = pyqtSignal()
|
||||||
timeTotalChanged = pyqtSignal()
|
timeTotalChanged = pyqtSignal()
|
||||||
|
@ -26,7 +23,6 @@ class PrintJobOutputModel(QObject):
|
||||||
configurationChanged = pyqtSignal()
|
configurationChanged = pyqtSignal()
|
||||||
previewImageChanged = pyqtSignal()
|
previewImageChanged = pyqtSignal()
|
||||||
compatibleMachineFamiliesChanged = pyqtSignal()
|
compatibleMachineFamiliesChanged = pyqtSignal()
|
||||||
configurationChangesChanged = pyqtSignal()
|
|
||||||
|
|
||||||
def __init__(self, output_controller: "PrinterOutputController", key: str = "", name: str = "", parent=None) -> None:
|
def __init__(self, output_controller: "PrinterOutputController", key: str = "", name: str = "", parent=None) -> None:
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
|
@ -44,7 +40,6 @@ class PrintJobOutputModel(QObject):
|
||||||
self._preview_image_id = 0
|
self._preview_image_id = 0
|
||||||
|
|
||||||
self._preview_image = None # type: Optional[QImage]
|
self._preview_image = None # type: Optional[QImage]
|
||||||
self._configuration_changes = [] # type: List[ConfigurationChangeModel]
|
|
||||||
|
|
||||||
@pyqtProperty("QStringList", notify=compatibleMachineFamiliesChanged)
|
@pyqtProperty("QStringList", notify=compatibleMachineFamiliesChanged)
|
||||||
def compatibleMachineFamilies(self):
|
def compatibleMachineFamilies(self):
|
||||||
|
@ -152,13 +147,3 @@ class PrintJobOutputModel(QObject):
|
||||||
@pyqtSlot(str)
|
@pyqtSlot(str)
|
||||||
def setState(self, state):
|
def setState(self, state):
|
||||||
self._output_controller.setJobState(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()
|
|
||||||
|
|
|
@ -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 UM.Version import Version # To check against firmware versions for support.
|
||||||
|
|
||||||
from cura.CuraApplication import CuraApplication
|
from cura.CuraApplication import CuraApplication
|
||||||
from cura.PrinterOutput.ConfigurationChangeModel import ConfigurationChangeModel
|
|
||||||
from cura.PrinterOutput.ConfigurationModel import ConfigurationModel
|
from cura.PrinterOutput.ConfigurationModel import ConfigurationModel
|
||||||
from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel
|
from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel
|
||||||
from cura.PrinterOutput.NetworkedPrinterOutputDevice import NetworkedPrinterOutputDevice, AuthState
|
from cura.PrinterOutput.NetworkedPrinterOutputDevice import NetworkedPrinterOutputDevice, AuthState
|
||||||
from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel
|
from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel
|
||||||
from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel
|
|
||||||
from cura.PrinterOutput.MaterialOutputModel import MaterialOutputModel
|
from cura.PrinterOutput.MaterialOutputModel import MaterialOutputModel
|
||||||
from cura.PrinterOutput.NetworkCamera import NetworkCamera
|
from cura.PrinterOutput.NetworkCamera import NetworkCamera
|
||||||
|
|
||||||
from .ClusterUM3PrinterOutputController import ClusterUM3PrinterOutputController
|
from .ClusterUM3PrinterOutputController import ClusterUM3PrinterOutputController
|
||||||
from .SendMaterialJob import SendMaterialJob
|
from .SendMaterialJob import SendMaterialJob
|
||||||
|
from .ConfigurationChangeModel import ConfigurationChangeModel
|
||||||
|
from .UM3PrintJobOutputModel import UM3PrintJobOutputModel
|
||||||
|
|
||||||
from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply
|
from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply
|
||||||
from PyQt5.QtGui import QDesktopServices, QImage
|
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._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._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")
|
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._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
|
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"))
|
QDesktopServices.openUrl(QUrl("http://" + self._address + "/printers"))
|
||||||
|
|
||||||
@pyqtProperty("QVariantList", notify = printJobsChanged)
|
@pyqtProperty("QVariantList", notify = printJobsChanged)
|
||||||
def printJobs(self)-> List[PrintJobOutputModel]:
|
def printJobs(self)-> List[UM3PrintJobOutputModel]:
|
||||||
return self._print_jobs
|
return self._print_jobs
|
||||||
|
|
||||||
@pyqtProperty("QVariantList", notify = printJobsChanged)
|
@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"]
|
return [print_job for print_job in self._print_jobs if print_job.state == "queued" or print_job.state == "error"]
|
||||||
|
|
||||||
@pyqtProperty("QVariantList", notify = printJobsChanged)
|
@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"]
|
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)
|
@pyqtProperty("QVariantList", notify = clusterPrintersChanged)
|
||||||
|
@ -543,8 +543,8 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
|
||||||
self._printers.append(printer)
|
self._printers.append(printer)
|
||||||
return printer
|
return printer
|
||||||
|
|
||||||
def _createPrintJobModel(self, data: Dict[str, Any]) -> PrintJobOutputModel:
|
def _createPrintJobModel(self, data: Dict[str, Any]) -> UM3PrintJobOutputModel:
|
||||||
print_job = PrintJobOutputModel(output_controller=ClusterUM3PrinterOutputController(self),
|
print_job = UM3PrintJobOutputModel(output_controller=ClusterUM3PrinterOutputController(self),
|
||||||
key=data["uuid"], name= data["name"])
|
key=data["uuid"], name= data["name"])
|
||||||
|
|
||||||
configuration = ConfigurationModel()
|
configuration = ConfigurationModel()
|
||||||
|
@ -564,7 +564,7 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
|
||||||
print_job.stateChanged.connect(self._printJobStateChanged)
|
print_job.stateChanged.connect(self._printJobStateChanged)
|
||||||
return print_job
|
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.updateTimeTotal(data["time_total"])
|
||||||
print_job.updateTimeElapsed(data["time_elapsed"])
|
print_job.updateTimeElapsed(data["time_elapsed"])
|
||||||
impediments_to_printing = data.get("impediments_to_printing", [])
|
impediments_to_printing = data.get("impediments_to_printing", [])
|
||||||
|
@ -647,7 +647,7 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
|
||||||
material = self._createMaterialOutputModel(material_data)
|
material = self._createMaterialOutputModel(material_data)
|
||||||
extruder.updateActiveMaterial(material)
|
extruder.updateActiveMaterial(material)
|
||||||
|
|
||||||
def _removeJob(self, job: PrintJobOutputModel) -> bool:
|
def _removeJob(self, job: UM3PrintJobOutputModel) -> bool:
|
||||||
if job not in self._print_jobs:
|
if job not in self._print_jobs:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -691,7 +691,7 @@ def checkValidGetReply(reply: QNetworkReply) -> bool:
|
||||||
return True
|
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:
|
for item in lst:
|
||||||
if item.key == key:
|
if item.key == key:
|
||||||
return item
|
return item
|
||||||
|
|
29
plugins/UM3NetworkPrinting/src/UM3PrintJobOutputModel.py
Normal file
29
plugins/UM3NetworkPrinting/src/UM3PrintJobOutputModel.py
Normal file
|
@ -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()
|
Loading…
Add table
Add a link
Reference in a new issue