diff --git a/cura/PrinterOutput/PrinterOutputModel.py b/cura/PrinterOutput/PrinterOutputModel.py index 23423609f7..97f5c69723 100644 --- a/cura/PrinterOutput/PrinterOutputModel.py +++ b/cura/PrinterOutput/PrinterOutputModel.py @@ -11,7 +11,6 @@ MYPY = False if MYPY: from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel from cura.PrinterOutput.PrinterOutputController import PrinterOutputController - from cura.PrinterOutput.ExtruderOuputModel import ExtruderOutputModel class PrinterOutputModel(QObject): diff --git a/plugins/UM3NetworkPrinting/LegacyUM3OutputDevice.py b/plugins/UM3NetworkPrinting/LegacyUM3OutputDevice.py index b7736d675b..67b2032e6a 100644 --- a/plugins/UM3NetworkPrinting/LegacyUM3OutputDevice.py +++ b/plugins/UM3NetworkPrinting/LegacyUM3OutputDevice.py @@ -568,6 +568,7 @@ class LegacyUM3OutputDevice(NetworkedPrinterOutputDevice): if not self._printers: self._printers = [PrinterOutputModel(output_controller=None, number_of_extruders=self._number_of_extruders)] + self.printersChanged.emit() # LegacyUM3 always has a single printer. printer = self._printers[0] diff --git a/plugins/UM3NetworkPrinting/UM3InfoComponents.qml b/plugins/UM3NetworkPrinting/UM3InfoComponents.qml index d0c95e1524..939c6bcb39 100644 --- a/plugins/UM3NetworkPrinting/UM3InfoComponents.qml +++ b/plugins/UM3NetworkPrinting/UM3InfoComponents.qml @@ -13,7 +13,7 @@ Item property bool isUM3: Cura.MachineManager.activeQualityDefinitionId == "ultimaker3" property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands - property bool authenticationRequested: printerConnected && Cura.MachineManager.printerOutputDevices[0].authenticationState == 2 // AuthState.AuthenticationRequested + property bool authenticationRequested: printerConnected && (Cura.MachineManager.printerOutputDevices[0].authenticationState == 2 || Cura.MachineManager.printerOutputDevices[0].authenticationState == 5) // AuthState.AuthenticationRequested or AuthenticationReceived. Row { @@ -119,7 +119,9 @@ Item onClicked: manager.loadConfigurationFromPrinter() function isClusterPrinter() { - if(Cura.MachineManager.printerOutputDevices.length == 0) + return false + //TODO: Hardcoded this for the moment now. These info components might also need to move. + /*if(Cura.MachineManager.printerOutputDevices.length == 0) { return false; } @@ -129,7 +131,7 @@ Item { return false; } - return true; + return true;*/ } } } diff --git a/plugins/UM3NetworkPrinting/UM3OutputDevicePlugin.py b/plugins/UM3NetworkPrinting/UM3OutputDevicePlugin.py index 09bff8e7b8..aecbc1717c 100644 --- a/plugins/UM3NetworkPrinting/UM3OutputDevicePlugin.py +++ b/plugins/UM3NetworkPrinting/UM3OutputDevicePlugin.py @@ -84,7 +84,6 @@ class UM3OutputDevicePlugin(OutputDevicePlugin): def _onDeviceConnectionStateChanged(self, key): if key not in self._discovered_devices: return - print("STATE CHANGED", key) if self._discovered_devices[key].isConnected(): self.getOutputDeviceManager().addOutputDevice(self._discovered_devices[key]) else: diff --git a/resources/qml/MonitorButton.qml b/resources/qml/MonitorButton.qml index 29b00f50e6..07a9e1913b 100644 --- a/resources/qml/MonitorButton.qml +++ b/resources/qml/MonitorButton.qml @@ -17,16 +17,39 @@ Item property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands - property real progress: printerConnected ? Cura.MachineManager.printerOutputDevices[0].progress : 0 + property var activePrinter: printerConnected ? Cura.MachineManager.printerOutputDevices[0].activePrinter : null + property var activePrintJob: activePrinter ? activePrinter.activePrintJob: null + property real progress: + { + if(!printerConnected) + { + return 0 + } + if(activePrinter == null) + { + return 0 + } + if(activePrintJob == null) + { + return 0 + } + if(activePrintJob.timeTotal == 0) + { + return 0 // Prevent devision by 0 + } + return activePrintJob.timeElapsed / activePrintJob.timeTotal * 100 + } + property int backendState: UM.Backend.state property bool showProgress: { // determine if we need to show the progress bar + percentage - if(!printerConnected || !printerAcceptsCommands) { + if(activePrintJob == null) + { return false; } - switch(Cura.MachineManager.printerOutputDevices[0].jobState) + switch(base.activePrintJob.state) { case "printing": case "paused": @@ -50,7 +73,7 @@ Item if(!printerConnected || !printerAcceptsCommands) return UM.Theme.getColor("text"); - switch(Cura.MachineManager.printerOutputDevices[0].printerState) + switch(activePrinter.printerState) { case "maintenance": return UM.Theme.getColor("status_busy"); @@ -58,7 +81,7 @@ Item return UM.Theme.getColor("status_stopped"); } - switch(Cura.MachineManager.printerOutputDevices[0].jobState) + switch(base.activePrintJob.state) { case "printing": case "pre_print": @@ -85,17 +108,27 @@ Item property string statusText: { if(!printerConnected) + { return catalog.i18nc("@label:MonitorStatus", "Not connected to a printer"); + } if(!printerAcceptsCommands) + { return catalog.i18nc("@label:MonitorStatus", "Printer does not accept commands"); + } var printerOutputDevice = Cura.MachineManager.printerOutputDevices[0] - if(printerOutputDevice.printerState == "maintenance") + if(activePrinter.printerState == "maintenance") { return catalog.i18nc("@label:MonitorStatus", "In maintenance. Please check the printer"); } - switch(printerOutputDevice.jobState) + + if(base.activePrintJob == null) + { + return " " + } + + switch(base.activePrintJob.state) { case "offline": return catalog.i18nc("@label:MonitorStatus", "Lost connection with the printer"); @@ -163,7 +196,11 @@ Item { return false; } - switch(Cura.MachineManager.printerOutputDevices[0].jobState) + if(base.activePrintJob == null) + { + return false + } + switch(base.activePrintJob.state) { case "pausing": case "resuming": @@ -185,7 +222,8 @@ Item anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width; } - Row { + Row + { id: buttonsRow height: abortButton.height anchors.top: progressBar.bottom @@ -194,17 +232,21 @@ Item anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width spacing: UM.Theme.getSize("default_margin").width - Row { + Row + { id: additionalComponentsRow spacing: UM.Theme.getSize("default_margin").width } - Connections { + Connections + { target: Printer onAdditionalComponentsChanged: { - if(areaId == "monitorButtons") { - for (var component in CuraApplication.additionalComponents["monitorButtons"]) { + if(areaId == "monitorButtons") + { + for (var component in CuraApplication.additionalComponents["monitorButtons"]) + { CuraApplication.additionalComponents["monitorButtons"][component].parent = additionalComponentsRow } } @@ -220,7 +262,7 @@ Item property bool userClicked: false property string lastJobState: "" - visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].canPause + visible: printerConnected && activePrinter.canPause enabled: (!userClicked) && printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands && (["paused", "printing"].indexOf(Cura.MachineManager.printerOutputDevices[0].jobState) >= 0) @@ -261,8 +303,8 @@ Item { id: abortButton - visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].canAbort - enabled: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands && + visible: printerConnected && activePrinter.canAbort + enabled: printerConnected && activePrinter.acceptsCommands && (["paused", "printing", "pre_print"].indexOf(Cura.MachineManager.printerOutputDevices[0].jobState) >= 0) height: UM.Theme.getSize("save_button_save_to_button").height