Browse Source

Added a printerOutputController to send commands to remote.

The idea is that this class can be subclassed. CL-541
Jaime van Kessel 7 years ago
parent
commit
3a8eef9768

+ 1 - 7
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

+ 42 - 2
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)
+    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 - 0
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

+ 7 - 12
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