From 79daf3706b79a904263d5b7e3259a63270e16ea9 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Wed, 28 Mar 2018 11:07:48 +0200 Subject: [PATCH] CURA-5158 Create a custom signal that is emitted when global container changes and output devices change. --- cura/Settings/MachineManager.py | 13 +++++++++++-- plugins/UM3NetworkPrinting/UM3InfoComponents.qml | 2 +- .../UpgradeFirmwareMachineAction.qml | 2 +- resources/qml/MachineSelection.qml | 4 ++-- resources/qml/MonitorButton.qml | 2 +- resources/qml/Preferences/MachinesPage.qml | 2 +- resources/qml/Sidebar.qml | 2 +- resources/qml/SidebarHeader.qml | 2 +- resources/qml/Topbar.qml | 2 +- 9 files changed, 20 insertions(+), 11 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 09d9fc67b3..2e9a643be4 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -131,6 +131,10 @@ class MachineManager(QObject): self._material_manager.materialsUpdated.connect(self._updateUponMaterialMetadataChange) self.rootMaterialChanged.connect(self._onRootMaterialChanged) + # Emit the printerConnectedStatusChanged when either globalContainerChanged or outputDevicesChanged are emitted + self.globalContainerChanged.connect(self.printerConnectedStatusChanged) + self.outputDevicesChanged.connect(self.printerConnectedStatusChanged) + activeQualityGroupChanged = pyqtSignal() activeQualityChangesGroupChanged = pyqtSignal() @@ -151,6 +155,7 @@ class MachineManager(QObject): outputDevicesChanged = pyqtSignal() currentConfigurationChanged = pyqtSignal() # Emitted every time the current configurations of the machine changes + printerConnectedStatusChanged = pyqtSignal() # Emitted every time the active machine change or the outputdevices change rootMaterialChanged = pyqtSignal() @@ -466,13 +471,17 @@ class MachineManager(QObject): return self._global_container_stack.getId() return "" - @pyqtProperty(str, notify = outputDevicesChanged) + @pyqtProperty(bool, notify = printerConnectedStatusChanged) + def printerConnected(self): + return bool(self._printer_output_devices) + + @pyqtProperty(str, notify = printerConnectedStatusChanged) def activeMachineNetworkKey(self) -> str: if self._global_container_stack: return self._global_container_stack.getMetaDataEntry("um_network_key", "") return "" - @pyqtProperty(str, notify = outputDevicesChanged) + @pyqtProperty(str, notify = printerConnectedStatusChanged) def activeMachineNetworkGroupName(self) -> str: if self._global_container_stack: return self._global_container_stack.getMetaDataEntry("connect_group_name", "") diff --git a/plugins/UM3NetworkPrinting/UM3InfoComponents.qml b/plugins/UM3NetworkPrinting/UM3InfoComponents.qml index 5a9cc096e7..a19d1be60d 100644 --- a/plugins/UM3NetworkPrinting/UM3InfoComponents.qml +++ b/plugins/UM3NetworkPrinting/UM3InfoComponents.qml @@ -12,7 +12,7 @@ Item property string activeQualityDefinitionId: Cura.MachineManager.activeQualityDefinitionId property bool isUM3: activeQualityDefinitionId == "ultimaker3" || activeQualityDefinitionId.match("ultimaker_") != null - property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 + property bool printerConnected: Cura.MachineManager.printerConnected property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands property bool authenticationRequested: printerConnected && (Cura.MachineManager.printerOutputDevices[0].authenticationState == 2 || Cura.MachineManager.printerOutputDevices[0].authenticationState == 5) // AuthState.AuthenticationRequested or AuthenticationReceived. diff --git a/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml b/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml index f36788daa5..ed771d2a04 100644 --- a/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml +++ b/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml @@ -14,7 +14,7 @@ import Cura 1.0 as Cura Cura.MachineAction { anchors.fill: parent; - property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 + property bool printerConnected: Cura.MachineManager.printerConnected property var activeOutputDevice: printerConnected ? Cura.MachineManager.printerOutputDevices[0] : null Item diff --git a/resources/qml/MachineSelection.qml b/resources/qml/MachineSelection.qml index d075486eb2..7a8a6b476b 100644 --- a/resources/qml/MachineSelection.qml +++ b/resources/qml/MachineSelection.qml @@ -14,8 +14,8 @@ ToolButton { id: base property bool isNetworkPrinter: Cura.MachineManager.activeMachineNetworkKey != "" - property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 - property var printerStatus: Cura.MachineManager.printerOutputDevices.length != 0 ? "connected" : "disconnected" + property bool printerConnected: Cura.MachineManager.printerConnected + property var printerStatus: Cura.MachineManager.printerConnected ? "connected" : "disconnected" text: isNetworkPrinter ? Cura.MachineManager.activeMachineNetworkGroupName : Cura.MachineManager.activeMachineName tooltip: Cura.MachineManager.activeMachineName diff --git a/resources/qml/MonitorButton.qml b/resources/qml/MonitorButton.qml index c3ae200464..9888b811e4 100644 --- a/resources/qml/MonitorButton.qml +++ b/resources/qml/MonitorButton.qml @@ -15,7 +15,7 @@ Item id: base; UM.I18nCatalog { id: catalog; name:"cura"} - property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 + property bool printerConnected: Cura.MachineManager.printerConnected property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands property var activePrinter: printerConnected ? Cura.MachineManager.printerOutputDevices[0].activePrinter : null property var activePrintJob: activePrinter ? activePrinter.activePrintJob: null diff --git a/resources/qml/Preferences/MachinesPage.qml b/resources/qml/Preferences/MachinesPage.qml index 665586d29f..4dc5465dc6 100644 --- a/resources/qml/Preferences/MachinesPage.qml +++ b/resources/qml/Preferences/MachinesPage.qml @@ -138,7 +138,7 @@ UM.ManagementPage visible: base.currentItem - property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 + property bool printerConnected: Cura.MachineManager.printerConnected property var connectedPrinter: printerConnected ? Cura.MachineManager.printerOutputDevices[0] : null property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands property var printJob: connectedPrinter != null ? connectedPrinter.activePrintJob: null diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index 1c1bfca7c3..590ab29880 100644 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -20,7 +20,7 @@ Rectangle // Is there an output device for this printer? property bool isNetworkPrinter: Cura.MachineManager.activeMachineNetworkKey != "" - property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 + property bool printerConnected: Cura.MachineManager.printerConnected property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands property var connectedPrinter: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index 1ba04c387e..7590beddc4 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -16,7 +16,7 @@ Column property int currentExtruderIndex: Cura.ExtruderManager.activeExtruderIndex; property bool currentExtruderVisible: extrudersList.visible; - property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 + property bool printerConnected: Cura.MachineManager.printerConnected property bool hasManyPrinterTypes: printerConnected ? Cura.MachineManager.printerOutputDevices[0].connectedPrintersTypeCount.length > 1 : false spacing: Math.round(UM.Theme.getSize("sidebar_margin").width * 0.9) diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 69d27d483a..56b7bccb0e 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -18,7 +18,7 @@ Rectangle height: UM.Theme.getSize("sidebar_header").height color: UM.Controller.activeStage.stageId == "MonitorStage" ? UM.Theme.getColor("topbar_background_color_monitoring") : UM.Theme.getColor("topbar_background_color") - property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 + property bool printerConnected: Cura.MachineManager.printerConnected property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands property int rightMargin: UM.Theme.getSize("sidebar").width + UM.Theme.getSize("default_margin").width;