mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 06:57:28 -06:00
Added a printerOutputController to send commands to remote.
The idea is that this class can be subclassed. CL-541
This commit is contained in:
parent
700f7179f1
commit
3a8eef9768
4 changed files with 71 additions and 21 deletions
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
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)
|
21
cura/PrinterOutput/PrinterOutputController.py
Normal file
21
cura/PrinterOutput/PrinterOutputController.py
Normal 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
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue