diff --git a/cura/PrinterOutput/ExtruderOuputModel.py b/cura/PrinterOutput/ExtruderOuputModel.py index d465b7250a..121e9a69d9 100644 --- a/cura/PrinterOutput/ExtruderOuputModel.py +++ b/cura/PrinterOutput/ExtruderOuputModel.py @@ -49,7 +49,7 @@ class ExtruderOutputModel(QObject): ## Set the target hotend temperature. This ensures that it's actually sent to the remote. @pyqtSlot(int) def setTargetHotendTemperature(self, temperature: int): - self._setTargetHotendTemperature(temperature) + self._printer.getController().setTargetHotendTemperature(self._printer, self, temperature) self.updateTargetHotendTemperature(temperature) @pyqtProperty(int, notify = targetHotendTemperatureChanged) @@ -60,12 +60,6 @@ class ExtruderOutputModel(QObject): def hotendTemperature(self) -> int: return self._hotendTemperature - ## Protected setter for the hotend temperature of the connected printer (if any). - # /parameter temperature Temperature hotend needs to go to (in deg celsius) - # /sa setTargetHotendTemperature - def _setTargetHotendTemperature(self, temperature): - Logger.log("w", "_setTargetHotendTemperature is not implemented by this model") - @pyqtProperty(str, notify = hotendIDChanged) def hotendID(self) -> str: return self._hotend_id diff --git a/cura/PrinterOutput/PrintJobOutputModel.py b/cura/PrinterOutput/PrintJobOutputModel.py index b2eb3824e3..1e0d82f1b0 100644 --- a/cura/PrinterOutput/PrintJobOutputModel.py +++ b/cura/PrinterOutput/PrintJobOutputModel.py @@ -2,9 +2,49 @@ # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, QVariant +MYPY = False +if MYPY: + from cura.PrinterOutput.PrinterOutputController import PrinterOutputController class PrintJobOutputModel(QObject): + stateChanged = pyqtSignal() + timeTotalChanged = pyqtSignal() + timeElapsedChanged = pyqtSignal() - def __init__(self, parent=None): - super().__init__(parent) \ No newline at end of file + def __init__(self, output_controller: "PrinterOutputController", parent=None): + super().__init__(parent) + self._output_controller = output_controller + self._state = "" + self._time_total = 0 + self._time_elapsed = 0 + + @pyqtProperty(int, notify = timeTotalChanged) + def timeTotal(self): + return self._time_total + + @pyqtProperty(int, notify = timeElapsedChanged) + def timeElapsed(self): + return self._time_elapsed + + @pyqtProperty(str, notify=stateChanged) + def state(self): + return self._state + + def updateTimeTotal(self, new_time_total): + if self._time_total != new_time_total: + self._time_total = new_time_total + self.timeTotalChanged.emit() + + def updateTimeElapsed(self, new_time_elapsed): + if self._time_elapsed != new_time_elapsed: + self._time_elapsed = new_time_elapsed + self.timeElapsedChanged.emit() + + def updateState(self, new_state): + if self._state != new_state: + self._state = new_state + self.stateChanged.emit() + + def setState(self, state): + self._output_controller.setJobState(self, state) \ No newline at end of file diff --git a/cura/PrinterOutput/PrinterOutputController.py b/cura/PrinterOutput/PrinterOutputController.py new file mode 100644 index 0000000000..c69b49e6e3 --- /dev/null +++ b/cura/PrinterOutput/PrinterOutputController.py @@ -0,0 +1,21 @@ + + +MYPY = False +if MYPY: + from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel + from cura.PrinterOutput.ExtruderOuputModel import ExtruderOuputModel + from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel + +class PrinterOutputController: + def __init__(self): + pass + + def setTargetHotendTemperature(self, printer: "PrinterOutputModel", extruder: "ExtruderOuputModel", temperature: int): + # TODO: implement + pass + + def setTargetBedTemperature(self, printer: "PrinterOutputModel", temperature: int): + pass + + def setJobState(self, job: "PrintJobOutputModel", state: str): + pass \ No newline at end of file diff --git a/cura/PrinterOutput/PrinterOutputModel.py b/cura/PrinterOutput/PrinterOutputModel.py index ec1a268631..d34883a56b 100644 --- a/cura/PrinterOutput/PrinterOutputModel.py +++ b/cura/PrinterOutput/PrinterOutputModel.py @@ -9,6 +9,7 @@ MYPY = False if MYPY: from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel from cura.PrinterOutput.ExtruderOuputModel import ExtruderOutputModel + from cura.PrinterOutput.PrinterOutputController import PrinterOutputController class PrinterOutputModel(QObject): @@ -18,12 +19,12 @@ class PrinterOutputModel(QObject): activePrintJobChanged = pyqtSignal() nameChanged = pyqtSignal() - def __init__(self, parent=None): + def __init__(self, output_controller: "PrinterOutputController", parent=None): super().__init__(parent) self._bed_temperature = 0 self._target_bed_temperature = 0 self._name = "" - + self._controller = output_controller self._extruders = [] # type: List[ExtruderOutputModel] self._active_print_job = None # type: Optional[PrintJobOutputModel] @@ -34,6 +35,9 @@ class PrinterOutputModel(QObject): self._can_pre_heat_bed = True self._can_control_manually = True + def getController(self): + return self._controller + @pyqtProperty(str, notify=nameChanged) def name(self): return self._name @@ -42,9 +46,6 @@ class PrinterOutputModel(QObject): self._setName(name) self.updateName(name) - def _setName(self, name): - Logger.log("w", "_setTargetBedTemperature is not implemented by this model") - def updateName(self, name): if self._name != name: self._name = name @@ -64,15 +65,9 @@ class PrinterOutputModel(QObject): ## Set the target bed temperature. This ensures that it's actually sent to the remote. @pyqtSlot(int) def setTargetBedTemperature(self, temperature): - self._setTargetBedTemperature(temperature) + self._controller.setTargetBedTemperature(self, temperature) self.updateTargetBedTemperature(temperature) - ## Protected setter for the bed temperature of the connected printer (if any). - # /parameter temperature Temperature bed needs to go to (in deg celsius) - # /sa setTargetBedTemperature - def _setTargetBedTemperature(self, temperature): - Logger.log("w", "_setTargetBedTemperature is not implemented by this model") - def updateActivePrintJob(self, print_job): if self._active_print_job != print_job: self._active_print_job = print_job