Browse Source

Allow floating point in bed temperature

This is consistent with the hotend temperature. Only we round it just before outputting it to g-code because the g-code doesn't support it.
This fixes a typing error that my IDE gave me.
Ghostkeeper 6 years ago
parent
commit
c5eb3b0e25

+ 4 - 4
cura/PrinterOutput/GenericOutputController.py

@@ -81,8 +81,8 @@ class GenericOutputController(PrinterOutputController):
             self._output_device.cancelPrint()
             pass
 
-    def setTargetBedTemperature(self, printer: "PrinterOutputModel", temperature: int) -> None:
-        self._output_device.sendCommand("M140 S%s" % temperature)
+    def setTargetBedTemperature(self, printer: "PrinterOutputModel", temperature: float) -> None:
+        self._output_device.sendCommand("M140 S%s" % round(temperature)) # The API doesn't allow floating point.
 
     def _onTargetBedTemperatureChanged(self) -> None:
         if self._preheat_bed_timer.isActive() and self._preheat_printer and self._preheat_printer.targetBedTemperature == 0:
@@ -96,14 +96,14 @@ class GenericOutputController(PrinterOutputController):
         except ValueError:
             return  # Got invalid values, can't pre-heat.
 
-        self.setTargetBedTemperature(printer, temperature=temperature)
+        self.setTargetBedTemperature(printer, temperature = temperature)
         self._preheat_bed_timer.setInterval(duration * 1000)
         self._preheat_bed_timer.start()
         self._preheat_printer = printer
         printer.updateIsPreheating(True)
 
     def cancelPreheatBed(self, printer: "PrinterOutputModel") -> None:
-        self.setTargetBedTemperature(printer, temperature=0)
+        self.setTargetBedTemperature(printer, temperature = 0)
         self._preheat_bed_timer.stop()
         printer.updateIsPreheating(False)
 

+ 3 - 3
cura/PrinterOutput/PrinterOutputController.py

@@ -1,4 +1,4 @@
-# Copyright (c) 2018 Ultimaker B.V.
+# Copyright (c) 2019 Ultimaker B.V.
 # Cura is released under the terms of the LGPLv3 or higher.
 
 from UM.Logger import Logger
@@ -25,10 +25,10 @@ class PrinterOutputController:
         self.can_update_firmware = False
         self._output_device = output_device
 
-    def setTargetHotendTemperature(self, printer: "PrinterOutputModel", position: int, temperature: Union[int, float]) -> None:
+    def setTargetHotendTemperature(self, printer: "PrinterOutputModel", position: int, temperature: float) -> None:
         Logger.log("w", "Set target hotend temperature not implemented in controller")
 
-    def setTargetBedTemperature(self, printer: "PrinterOutputModel", temperature: int) -> None:
+    def setTargetBedTemperature(self, printer: "PrinterOutputModel", temperature: float) -> None:
         Logger.log("w", "Set target bed temperature not implemented in controller")
 
     def setJobState(self, job: "PrintJobOutputModel", state: str) -> None:

+ 18 - 18
cura/PrinterOutput/PrinterOutputModel.py

@@ -1,4 +1,4 @@
-# Copyright (c) 2018 Ultimaker B.V.
+# Copyright (c) 2019 Ultimaker B.V.
 # Cura is released under the terms of the LGPLv3 or higher.
 
 from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, QVariant, pyqtSlot, QUrl
@@ -30,8 +30,8 @@ class PrinterOutputModel(QObject):
 
     def __init__(self, output_controller: "PrinterOutputController", number_of_extruders: int = 1, parent=None, firmware_version = "") -> None:
         super().__init__(parent)
-        self._bed_temperature = -1  # Use -1 for no heated bed.
-        self._target_bed_temperature = 0
+        self._bed_temperature = -1  # type: float  # Use -1 for no heated bed.
+        self._target_bed_temperature = 0 # type: float
         self._name = ""
         self._key = ""  # Unique identifier
         self._controller = output_controller
@@ -188,19 +188,19 @@ class PrinterOutputModel(QObject):
             self.nameChanged.emit()
 
     ##  Update the bed temperature. This only changes it locally.
-    def updateBedTemperature(self, temperature: int) -> None:
+    def updateBedTemperature(self, temperature: float) -> None:
         if self._bed_temperature != temperature:
             self._bed_temperature = temperature
             self.bedTemperatureChanged.emit()
 
-    def updateTargetBedTemperature(self, temperature: int) -> None:
+    def updateTargetBedTemperature(self, temperature: float) -> None:
         if self._target_bed_temperature != temperature:
             self._target_bed_temperature = temperature
             self.targetBedTemperatureChanged.emit()
 
     ##  Set the target bed temperature. This ensures that it's actually sent to the remote.
-    @pyqtSlot(int)
-    def setTargetBedTemperature(self, temperature: int) -> None:
+    @pyqtSlot(float)
+    def setTargetBedTemperature(self, temperature: float) -> None:
         self._controller.setTargetBedTemperature(self, temperature)
         self.updateTargetBedTemperature(temperature)
 
@@ -225,55 +225,55 @@ class PrinterOutputModel(QObject):
     def activePrintJob(self) -> Optional["PrintJobOutputModel"]:
         return self._active_print_job
 
-    @pyqtProperty(str, notify=stateChanged)
+    @pyqtProperty(str, notify = stateChanged)
     def state(self) -> str:
         return self._printer_state
 
-    @pyqtProperty(int, notify=bedTemperatureChanged)
-    def bedTemperature(self) -> int:
+    @pyqtProperty(float, notify = bedTemperatureChanged)
+    def bedTemperature(self) -> float:
         return self._bed_temperature
 
-    @pyqtProperty(int, notify=targetBedTemperatureChanged)
-    def targetBedTemperature(self) -> int:
+    @pyqtProperty(float, notify = targetBedTemperatureChanged)
+    def targetBedTemperature(self) -> float:
         return self._target_bed_temperature
 
     # Does the printer support pre-heating the bed at all
-    @pyqtProperty(bool, constant=True)
+    @pyqtProperty(bool, constant = True)
     def canPreHeatBed(self) -> bool:
         if self._controller:
             return self._controller.can_pre_heat_bed
         return False
 
     # Does the printer support pre-heating the bed at all
-    @pyqtProperty(bool, constant=True)
+    @pyqtProperty(bool, constant = True)
     def canPreHeatHotends(self) -> bool:
         if self._controller:
             return self._controller.can_pre_heat_hotends
         return False
 
     # Does the printer support sending raw G-code at all
-    @pyqtProperty(bool, constant=True)
+    @pyqtProperty(bool, constant = True)
     def canSendRawGcode(self) -> bool:
         if self._controller:
             return self._controller.can_send_raw_gcode
         return False
 
     # Does the printer support pause at all
-    @pyqtProperty(bool, constant=True)
+    @pyqtProperty(bool, constant = True)
     def canPause(self) -> bool:
         if self._controller:
             return self._controller.can_pause
         return False
 
     # Does the printer support abort at all
-    @pyqtProperty(bool, constant=True)
+    @pyqtProperty(bool, constant = True)
     def canAbort(self) -> bool:
         if self._controller:
             return self._controller.can_abort
         return False
 
     # Does the printer support manual control at all
-    @pyqtProperty(bool, constant=True)
+    @pyqtProperty(bool, constant = True)
     def canControlManually(self) -> bool:
         if self._controller:
             return self._controller.can_control_manually