Browse Source

Show error text in print monitor

CURA-1990
fieldOfView 8 years ago
parent
commit
a74d5dd8cb
2 changed files with 30 additions and 11 deletions
  1. 13 0
      cura/PrinterOutputDevice.py
  2. 17 11
      resources/qml/MonitorButton.qml

+ 13 - 0
cura/PrinterOutputDevice.py

@@ -35,6 +35,7 @@ class PrinterOutputDevice(QObject, OutputDevice):
         self._time_total = 0
         self._time_total = 0
         self._job_state = ""
         self._job_state = ""
         self._job_name = ""
         self._job_name = ""
+        self._error_text = ""
 
 
     def requestWrite(self, node, file_name = None, filter_by_machine = False):
     def requestWrite(self, node, file_name = None, filter_by_machine = False):
         raise NotImplementedError("requestWrite needs to be implemented")
         raise NotImplementedError("requestWrite needs to be implemented")
@@ -77,6 +78,8 @@ class PrinterOutputDevice(QObject, OutputDevice):
 
 
     jobNameChanged = pyqtSignal()
     jobNameChanged = pyqtSignal()
 
 
+    errorTextChanged = pyqtSignal()
+
     @pyqtProperty(str, notify = jobStateChanged)
     @pyqtProperty(str, notify = jobStateChanged)
     def jobState(self):
     def jobState(self):
         return self._job_state
         return self._job_state
@@ -102,6 +105,16 @@ class PrinterOutputDevice(QObject, OutputDevice):
             self._job_name = name
             self._job_name = name
             self.jobNameChanged.emit()
             self.jobNameChanged.emit()
 
 
+    @pyqtProperty(str, notify = errorTextChanged)
+    def errorText(self):
+        return self._error_text
+
+    ##  Set the error-text that is shown in the print monitor in case of an error
+    def setErrorText(self, error_text):
+        if self._error_text != error_text:
+            self._error_text = error_text
+            self.errorTextChanged.emit()
+
     ##  Get the bed temperature of the bed (if any)
     ##  Get the bed temperature of the bed (if any)
     #   This function is "final" (do not re-implement)
     #   This function is "final" (do not re-implement)
     #   /sa _getBedTemperature implementation function
     #   /sa _getBedTemperature implementation function

+ 17 - 11
resources/qml/MonitorButton.qml

@@ -43,24 +43,30 @@ Rectangle
     {
     {
         if(!printerConnected)
         if(!printerConnected)
         {
         {
-            return catalog.i18nc("@label:", "Not connected to a printer")
-        } else if(Cura.MachineManager.printerOutputDevices[0].jobState == "offline")
+            return catalog.i18nc("@label:MonitorStatus", "Not connected to a printer")
+        }
+        var printerOutputDevice = Cura.MachineManager.printerOutputDevices[0]
+        if(printerOutputDevice.jobState == "offline")
+        {
+            return catalog.i18nc("@label:MonitorStatus", "Lost connection with the printer")
+        } else if(printerOutputDevice.jobState == "printing")
         {
         {
-            return catalog.i18nc("@label:", "Lost connection with the printer")
-        } else if(Cura.MachineManager.printerOutputDevices[0].jobState == "printing")
+            return catalog.i18nc("@label:MonitorStatus", "Printing...")
+        } else if(printerOutputDevice.jobState == "paused")
         {
         {
-            return catalog.i18nc("@label:", "Printing...")
-        } else if(Cura.MachineManager.printerOutputDevices[0].jobState == "paused")
+            return catalog.i18nc("@label:MonitorStatus", "Paused")
+        }
+        else if(printerOutputDevice.jobState == "pre_print")
         {
         {
-            return catalog.i18nc("@label:", "Paused")
+            return catalog.i18nc("@label:MonitorStatus", "Preparing...")
         }
         }
-        else if(Cura.MachineManager.printerOutputDevices[0].jobState == "pre_print")
+        else if(printerOutputDevice.jobState == "wait_cleanup")
         {
         {
-            return catalog.i18nc("@label:", "Preparing...")
+            return catalog.i18nc("@label:MonitorStatus", "Please remove the print")
         }
         }
-        else if(Cura.MachineManager.printerOutputDevices[0].jobState == "wait_cleanup")
+        else if(printerOutputDevice.jobState == "error")
         {
         {
-            return catalog.i18nc("@label:", "Waiting for cleanup...")
+            return printerOutputDevice.errorText
         }
         }
         else
         else
         {
         {