mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 06:57:28 -06:00
Add option to remove all printers not linked to the account
When the "Printers removed from account" message pops up, it will give the option to the user to remove all the printers that are not linked to his/her account from Cura. Since this action removes all configurations, it first pops a confirmation question box, and if the user insists, these printers are purged from Cura. Note: In order to properly delete all the files, the printers have to be activated first before they are removed, or else some extruder files in %appdata%/cura/<version>/user and %appdata%/cura/<version>/ extruders remain. CURA-7454
This commit is contained in:
parent
5c898b8c57
commit
567f6dabdc
1 changed files with 25 additions and 2 deletions
|
@ -4,6 +4,7 @@ import os
|
|||
from typing import Dict, List, Optional, Set
|
||||
|
||||
from PyQt5.QtNetwork import QNetworkReply
|
||||
from PyQt5.QtWidgets import QMessageBox
|
||||
|
||||
from UM import i18nCatalog
|
||||
from UM.Logger import Logger # To log errors talking to the API.
|
||||
|
@ -293,6 +294,12 @@ class CloudOutputDeviceManager:
|
|||
icon = "",
|
||||
description = "Keep the configuration of the cloud printer(s) synced with Cura which are not linked to your account.",
|
||||
button_align = Message.ActionButtonAlignment.ALIGN_RIGHT)
|
||||
removed_printers_message.addAction("remove_printers_action",
|
||||
name = self.I18N_CATALOG.i18nc("@action:button", "Remove printers"),
|
||||
icon = "",
|
||||
description = "Remove the cloud printer(s) which are not linked to your account.",
|
||||
button_style = Message.ActionButtonStyle.SECONDARY,
|
||||
button_align = Message.ActionButtonAlignment.ALIGN_LEFT)
|
||||
removed_printers_message.actionTriggered.connect(self._onRemovedPrintersMessageActionTriggered)
|
||||
|
||||
output_device_manager = CuraApplication.getInstance().getOutputDeviceManager()
|
||||
|
@ -397,7 +404,23 @@ class CloudOutputDeviceManager:
|
|||
if container_cluster_id in self._remote_clusters.keys():
|
||||
del self._remote_clusters[container_cluster_id]
|
||||
|
||||
@staticmethod
|
||||
def _onRemovedPrintersMessageActionTriggered(removed_printers_message: Message, action: str) -> None:
|
||||
def _onRemovedPrintersMessageActionTriggered(self, removed_printers_message: Message, action: str) -> None:
|
||||
if action == "keep_printer_configurations_action":
|
||||
removed_printers_message.hide()
|
||||
elif action == "remove_printers_action":
|
||||
machine_manager = CuraApplication.getInstance().getMachineManager()
|
||||
remove_printers_ids = {self._um_cloud_printers[i].getId() for i in self.reported_device_ids}
|
||||
all_ids = {m.getId() for m in CuraApplication.getInstance().getContainerRegistry().findContainerStacks(type = "machine")}
|
||||
|
||||
question_title = self.I18N_CATALOG.i18nc("@title:window", "Remove printers?")
|
||||
question_content = self.I18N_CATALOG.i18nc("@label", "You are about to remove {} printer(s) from Cura. This action cannot be undone. \nAre you sure you want to continue?".format(len(remove_printers_ids)))
|
||||
if remove_printers_ids == all_ids:
|
||||
question_content = self.I18N_CATALOG.i18nc("@label", "You are about to remove all printers from Cura. This action cannot be undone. \nAre you sure you want to continue?")
|
||||
result = QMessageBox.question(None, question_title, question_content)
|
||||
if result == QMessageBox.No:
|
||||
return
|
||||
|
||||
for machine_cloud_id in self.reported_device_ids:
|
||||
machine_manager.setActiveMachine(self._um_cloud_printers[machine_cloud_id].getId())
|
||||
machine_manager.removeMachine(self._um_cloud_printers[machine_cloud_id].getId())
|
||||
removed_printers_message.hide()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue