When an printer gets added / removed, this is now correctly shown

CL-541
This commit is contained in:
Jaime van Kessel 2017-11-30 15:01:28 +01:00
parent 339d7ca4c9
commit 1c1c195b93
3 changed files with 23 additions and 3 deletions

View file

@ -268,6 +268,9 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
return
printer_list_changed = False
# TODO: Ensure that printers that have been removed are also removed locally.
printers_seen = []
for printer_data in result:
uuid = printer_data["uuid"]
@ -282,6 +285,8 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
self._printers.append(printer)
printer_list_changed = True
printers_seen.append(printer)
printer.updateName(printer_data["friendly_name"])
printer.updateKey(uuid)
printer.updateType(printer_data["machine_variant"])
@ -292,7 +297,11 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
for index in range(0, self._number_of_extruders):
extruder = printer.extruders[index]
extruder_data = printer_data["configuration"][index]
try:
extruder_data = printer_data["configuration"][index]
except IndexError:
break
try:
hotend_id = extruder_data["print_core_id"]
except KeyError:
@ -322,6 +331,14 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
color = color,
name = name)
extruder.updateActiveMaterial(material)
removed_printers = [printer for printer in self._printers if printer not in printers_seen]
for removed_printer in removed_printers:
self._printers.remove(removed_printer)
printer_list_changed = True
if self._active_printer == removed_printer:
self._active_printer = None
self.activePrinterChanged.emit()
if printer_list_changed:
self.printersChanged.emit()