mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-08 04:29:01 +08:00
Merge pull request #6340 from Ultimaker/CS-59_new_printers_found_popup
CS-59: Message when new cloud printers were added to your account
This commit is contained in:
commit
08e088e607
@ -13,6 +13,7 @@ from cura.Settings.GlobalStack import GlobalStack
|
|||||||
from .CloudApiClient import CloudApiClient
|
from .CloudApiClient import CloudApiClient
|
||||||
from .CloudOutputDevice import CloudOutputDevice
|
from .CloudOutputDevice import CloudOutputDevice
|
||||||
from ..Models.Http.CloudClusterResponse import CloudClusterResponse
|
from ..Models.Http.CloudClusterResponse import CloudClusterResponse
|
||||||
|
from ..Messages.CloudPrinterDetectedMessage import CloudPrinterDetectedMessage
|
||||||
|
|
||||||
|
|
||||||
## The cloud output device manager is responsible for using the Ultimaker Cloud APIs to manage remote clusters.
|
## The cloud output device manager is responsible for using the Ultimaker Cloud APIs to manage remote clusters.
|
||||||
@ -108,6 +109,7 @@ class CloudOutputDeviceManager:
|
|||||||
)
|
)
|
||||||
self._remote_clusters[device.getId()] = device
|
self._remote_clusters[device.getId()] = device
|
||||||
self.discoveredDevicesChanged.emit()
|
self.discoveredDevicesChanged.emit()
|
||||||
|
self._checkIfNewClusterWasAdded(device.clusterData.cluster_id)
|
||||||
self._connectToActiveMachine()
|
self._connectToActiveMachine()
|
||||||
|
|
||||||
def _onDiscoveredDeviceUpdated(self, cluster_data: CloudClusterResponse) -> None:
|
def _onDiscoveredDeviceUpdated(self, cluster_data: CloudClusterResponse) -> None:
|
||||||
@ -179,3 +181,10 @@ class CloudOutputDeviceManager:
|
|||||||
output_device_manager = CuraApplication.getInstance().getOutputDeviceManager()
|
output_device_manager = CuraApplication.getInstance().getOutputDeviceManager()
|
||||||
if device.key not in output_device_manager.getOutputDeviceIds():
|
if device.key not in output_device_manager.getOutputDeviceIds():
|
||||||
output_device_manager.addOutputDevice(device)
|
output_device_manager.addOutputDevice(device)
|
||||||
|
|
||||||
|
## Checks if Cura has a machine stack (printer) for the given cluster ID and shows a message if it hasn't.
|
||||||
|
def _checkIfNewClusterWasAdded(self, cluster_id: str) -> None:
|
||||||
|
container_registry = CuraApplication.getInstance().getContainerRegistry()
|
||||||
|
cloud_machines = container_registry.findContainersMetadata(**{self.META_CLUSTER_ID: "*"}) # all cloud machines
|
||||||
|
if not any(machine[self.META_CLUSTER_ID] == cluster_id for machine in cloud_machines):
|
||||||
|
CloudPrinterDetectedMessage().show()
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
# Copyright (c) 2019 Ultimaker B.V.
|
||||||
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
from UM import i18nCatalog
|
||||||
|
from UM.Message import Message
|
||||||
|
|
||||||
|
|
||||||
|
I18N_CATALOG = i18nCatalog("cura")
|
||||||
|
|
||||||
|
|
||||||
|
## Message shown when a new printer was added to your account but not yet in Cura.
|
||||||
|
class CloudPrinterDetectedMessage(Message):
|
||||||
|
|
||||||
|
# Singleton used to prevent duplicate messages of this type at the same time.
|
||||||
|
__is_visible = False
|
||||||
|
|
||||||
|
def __init__(self) -> None:
|
||||||
|
super().__init__(
|
||||||
|
title=I18N_CATALOG.i18nc("@info:title", "New cloud printers found"),
|
||||||
|
text=I18N_CATALOG.i18nc("@info:message", "New printers have been found connected to your account, "
|
||||||
|
"you can find them in your list of discovered printers."),
|
||||||
|
lifetime=10,
|
||||||
|
dismissable=True
|
||||||
|
)
|
||||||
|
|
||||||
|
def show(self) -> None:
|
||||||
|
if CloudPrinterDetectedMessage.__is_visible:
|
||||||
|
return
|
||||||
|
super().show()
|
||||||
|
CloudPrinterDetectedMessage.__is_visible = True
|
||||||
|
|
||||||
|
def hide(self, send_signal = True) -> None:
|
||||||
|
super().hide(send_signal)
|
||||||
|
CloudPrinterDetectedMessage.__is_visible = False
|
Loading…
x
Reference in New Issue
Block a user