Update _remote_clusters dict when cloud printer is removed from Cura

CURA-7457
This commit is contained in:
Kostas Karmas 2020-06-02 15:23:35 +02:00
parent be814535e9
commit d0534c0476

View file

@ -9,6 +9,7 @@ from PyQt5.QtNetwork import QNetworkReply
from UM import i18nCatalog
from UM.Logger import Logger # To log errors talking to the API.
from UM.Message import Message
from UM.Settings.Interfaces import ContainerInterface
from UM.Signal import Signal
from cura.API import Account
from cura.API.Account import SyncState
@ -49,6 +50,8 @@ class CloudOutputDeviceManager:
self._syncing = False
CuraApplication.getInstance().getContainerRegistry().containerRemoved.connect(self._printerRemoved)
def start(self):
"""Starts running the cloud output device manager, thus periodically requesting cloud data."""
@ -287,3 +290,16 @@ class CloudOutputDeviceManager:
output_device_manager = CuraApplication.getInstance().getOutputDeviceManager()
if device.key not in output_device_manager.getOutputDeviceIds():
output_device_manager.addOutputDevice(device)
def _printerRemoved(self, container: ContainerInterface) -> None:
"""
Callback connected to the containerRemoved signal. Invoked when a cloud printer is removed from Cura to remove
the printer's reference from the _remote_clusters.
:param container: The ContainerInterface passed to this function whenever the ContainerRemoved signal is emitted
:return: None
"""
if isinstance(container, GlobalStack):
printer_clusters_map = {cluster.name: cluster_id for cluster_id, cluster in self._remote_clusters.items()}
if container.name in printer_clusters_map:
del self._remote_clusters[printer_clusters_map[container.name]]