Added a printerOutputController to send commands to remote.

The idea is that this class can be subclassed. CL-541
This commit is contained in:
Jaime van Kessel 2017-11-17 16:25:44 +01:00
parent 700f7179f1
commit 3a8eef9768
4 changed files with 71 additions and 21 deletions

View file

@ -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

View file

@ -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):
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)

View file

@ -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

View file

@ -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