Only update printer list after printer is added/removed

This makes it emit a signal only after addPrinter and removePrinter has completed executing, so we know that updating the list is done by the time it refreshes the list view in QML.

Contributes to issue CURA-2393.
This commit is contained in:
Ghostkeeper 2016-09-26 12:01:54 +02:00
parent c0839bcfbb
commit b4ba7a64a9
No known key found for this signature in database
GPG key ID: 701948C5954A7385
2 changed files with 4 additions and 2 deletions

View file

@ -36,8 +36,7 @@ class DiscoverUM3Action(MachineAction):
def startDiscovery(self): def startDiscovery(self):
if not self._network_plugin: if not self._network_plugin:
self._network_plugin = Application.getInstance().getOutputDeviceManager().getOutputDevicePlugin("JediWifiPrintingPlugin") self._network_plugin = Application.getInstance().getOutputDeviceManager().getOutputDevicePlugin("JediWifiPrintingPlugin")
self._network_plugin.addPrinterSignal.connect(self._onPrinterDiscoveryChanged) self._network_plugin.printerListChanged.connect(self._onPrinterDiscoveryChanged)
self._network_plugin.removePrinterSignal.connect(self._onPrinterDiscoveryChanged)
self.printersChanged.emit() self.printersChanged.emit()
@pyqtSlot() @pyqtSlot()

View file

@ -30,6 +30,7 @@ class NetworkPrinterOutputDevicePlugin(OutputDevicePlugin):
addPrinterSignal = Signal() addPrinterSignal = Signal()
removePrinterSignal = Signal() removePrinterSignal = Signal()
printerListChanged = Signal()
## Start looking for devices on network. ## Start looking for devices on network.
def start(self): def start(self):
@ -73,6 +74,7 @@ class NetworkPrinterOutputDevicePlugin(OutputDevicePlugin):
if printer.getKey() not in self._old_printers: # Was the printer already connected, but a re-scan forced? if printer.getKey() not in self._old_printers: # Was the printer already connected, but a re-scan forced?
self._printers[printer.getKey()].connect() self._printers[printer.getKey()].connect()
printer.connectionStateChanged.connect(self._onPrinterConnectionStateChanged) printer.connectionStateChanged.connect(self._onPrinterConnectionStateChanged)
self.printerListChanged.emit()
def removePrinter(self, name): def removePrinter(self, name):
printer = self._printers.pop(name, None) printer = self._printers.pop(name, None)
@ -80,6 +82,7 @@ class NetworkPrinterOutputDevicePlugin(OutputDevicePlugin):
if printer.isConnected(): if printer.isConnected():
printer.connectionStateChanged.disconnect(self._onPrinterConnectionStateChanged) printer.connectionStateChanged.disconnect(self._onPrinterConnectionStateChanged)
printer.disconnect() printer.disconnect()
self.printerListChanged.emit()
## Handler for when the connection state of one of the detected printers changes ## Handler for when the connection state of one of the detected printers changes
def _onPrinterConnectionStateChanged(self, key): def _onPrinterConnectionStateChanged(self, key):