From a8695db1c898ae26821ef8280d382a0be10a7507 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 8 Dec 2017 10:44:05 +0100 Subject: [PATCH] Fixed displaying of icons in monitor stage tab CL-541 --- plugins/MonitorStage/MonitorStage.py | 47 ++++++++++++++++------------ 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/plugins/MonitorStage/MonitorStage.py b/plugins/MonitorStage/MonitorStage.py index 0736f49858..21d5bb6cde 100644 --- a/plugins/MonitorStage/MonitorStage.py +++ b/plugins/MonitorStage/MonitorStage.py @@ -40,34 +40,41 @@ class MonitorStage(CuraStage): ## Find the correct status icon depending on the active output device state def _getActiveOutputDeviceStatusIcon(self): - output_device = Application.getInstance().getOutputDeviceManager().getActiveDevice() - - if not output_device: + # We assume that you are monitoring the device with the highest priority. + try: + output_device = Application.getInstance().getMachineManager().printerOutputDevices[0] + except IndexError: return "tab_status_unknown" - if hasattr(output_device, "acceptsCommands") and not output_device.acceptsCommands: + if not output_device.acceptsCommands: return "tab_status_unknown" - if not hasattr(output_device, "printerState") or not hasattr(output_device, "jobState"): - return "tab_status_unknown" - - # TODO: refactor to use enum instead of hardcoded strings? - if output_device.printerState == "maintenance": - return "tab_status_busy" - - if output_device.jobState in ["printing", "pre_print", "pausing", "resuming"]: - return "tab_status_busy" - - if output_device.jobState == "wait_cleanup": - return "tab_status_finished" - - if output_device.jobState in ["ready", ""]: + if output_device.activePrinter is None: return "tab_status_connected" - if output_device.jobState == "paused": + # TODO: refactor to use enum instead of hardcoded strings? + if output_device.activePrinter.state == "maintenance": + return "tab_status_busy" + + if output_device.state == "maintenance": + return "tab_status_busy" + + if output_device.activePrinter.activeJob is None: + return "tab_status_connected" + + if output_device.activePrinter.activeJob.state in ["printing", "pre_print", "pausing", "resuming"]: + return "tab_status_busy" + + if output_device.activePrinter.activeJob.state == "wait_cleanup": + return "tab_status_finished" + + if output_device.activePrinter.activeJob.state in ["ready", ""]: + return "tab_status_connected" + + if output_device.activePrinter.activeJob.state == "paused": return "tab_status_paused" - if output_device.jobState == "error": + if output_device.activePrinter.activeJob.state == "error": return "tab_status_stopped" return "tab_status_unknown"