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.
|
## Set the target hotend temperature. This ensures that it's actually sent to the remote.
|
||||||
@pyqtSlot(int)
|
@pyqtSlot(int)
|
||||||
def setTargetHotendTemperature(self, temperature: int):
|
def setTargetHotendTemperature(self, temperature: int):
|
||||||
self._setTargetHotendTemperature(temperature)
|
self._printer.getController().setTargetHotendTemperature(self._printer, self, temperature)
|
||||||
self.updateTargetHotendTemperature(temperature)
|
self.updateTargetHotendTemperature(temperature)
|
||||||
|
|
||||||
@pyqtProperty(int, notify = targetHotendTemperatureChanged)
|
@pyqtProperty(int, notify = targetHotendTemperatureChanged)
|
||||||
|
@ -60,12 +60,6 @@ class ExtruderOutputModel(QObject):
|
||||||
def hotendTemperature(self) -> int:
|
def hotendTemperature(self) -> int:
|
||||||
return self._hotendTemperature
|
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)
|
@pyqtProperty(str, notify = hotendIDChanged)
|
||||||
def hotendID(self) -> str:
|
def hotendID(self) -> str:
|
||||||
return self._hotend_id
|
return self._hotend_id
|
||||||
|
|
|
@ -2,9 +2,49 @@
|
||||||
# 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, QVariant
|
from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, QVariant
|
||||||
|
MYPY = False
|
||||||
|
if MYPY:
|
||||||
|
from cura.PrinterOutput.PrinterOutputController import PrinterOutputController
|
||||||
|
|
||||||
|
|
||||||
class PrintJobOutputModel(QObject):
|
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)
|
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:
|
if MYPY:
|
||||||
from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel
|
from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel
|
||||||
from cura.PrinterOutput.ExtruderOuputModel import ExtruderOutputModel
|
from cura.PrinterOutput.ExtruderOuputModel import ExtruderOutputModel
|
||||||
|
from cura.PrinterOutput.PrinterOutputController import PrinterOutputController
|
||||||
|
|
||||||
|
|
||||||
class PrinterOutputModel(QObject):
|
class PrinterOutputModel(QObject):
|
||||||
|
@ -18,12 +19,12 @@ class PrinterOutputModel(QObject):
|
||||||
activePrintJobChanged = pyqtSignal()
|
activePrintJobChanged = pyqtSignal()
|
||||||
nameChanged = pyqtSignal()
|
nameChanged = pyqtSignal()
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, output_controller: "PrinterOutputController", parent=None):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
self._bed_temperature = 0
|
self._bed_temperature = 0
|
||||||
self._target_bed_temperature = 0
|
self._target_bed_temperature = 0
|
||||||
self._name = ""
|
self._name = ""
|
||||||
|
self._controller = output_controller
|
||||||
self._extruders = [] # type: List[ExtruderOutputModel]
|
self._extruders = [] # type: List[ExtruderOutputModel]
|
||||||
|
|
||||||
self._active_print_job = None # type: Optional[PrintJobOutputModel]
|
self._active_print_job = None # type: Optional[PrintJobOutputModel]
|
||||||
|
@ -34,6 +35,9 @@ class PrinterOutputModel(QObject):
|
||||||
self._can_pre_heat_bed = True
|
self._can_pre_heat_bed = True
|
||||||
self._can_control_manually = True
|
self._can_control_manually = True
|
||||||
|
|
||||||
|
def getController(self):
|
||||||
|
return self._controller
|
||||||
|
|
||||||
@pyqtProperty(str, notify=nameChanged)
|
@pyqtProperty(str, notify=nameChanged)
|
||||||
def name(self):
|
def name(self):
|
||||||
return self._name
|
return self._name
|
||||||
|
@ -42,9 +46,6 @@ class PrinterOutputModel(QObject):
|
||||||
self._setName(name)
|
self._setName(name)
|
||||||
self.updateName(name)
|
self.updateName(name)
|
||||||
|
|
||||||
def _setName(self, name):
|
|
||||||
Logger.log("w", "_setTargetBedTemperature is not implemented by this model")
|
|
||||||
|
|
||||||
def updateName(self, name):
|
def updateName(self, name):
|
||||||
if self._name != name:
|
if self._name != name:
|
||||||
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.
|
## Set the target bed temperature. This ensures that it's actually sent to the remote.
|
||||||
@pyqtSlot(int)
|
@pyqtSlot(int)
|
||||||
def setTargetBedTemperature(self, temperature):
|
def setTargetBedTemperature(self, temperature):
|
||||||
self._setTargetBedTemperature(temperature)
|
self._controller.setTargetBedTemperature(self, temperature)
|
||||||
self.updateTargetBedTemperature(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):
|
def updateActivePrintJob(self, print_job):
|
||||||
if self._active_print_job != print_job:
|
if self._active_print_job != print_job:
|
||||||
self._active_print_job = print_job
|
self._active_print_job = print_job
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue