Browse Source

Use container tree to reset quality after deleting packages

Contributes to issue CURA-6600.
Ghostkeeper 5 years ago
parent
commit
ba608c5987
2 changed files with 10 additions and 4 deletions
  1. 1 1
      plugins/GCodeWriter/GCodeWriter.py
  2. 9 3
      plugins/Toolbox/src/Toolbox.py

+ 1 - 1
plugins/GCodeWriter/GCodeWriter.py

@@ -1,4 +1,4 @@
-# Copyright (c) 2017 Ultimaker B.V.
+# Copyright (c) 2019 Ultimaker B.V.
 # Cura is released under the terms of the LGPLv3 or higher.
 
 import re  # For escaping characters in the settings.

+ 9 - 3
plugins/Toolbox/src/Toolbox.py

@@ -1,4 +1,4 @@
-# Copyright (c) 2018 Ultimaker B.V.
+# Copyright (c) 2019 Ultimaker B.V.
 # Toolbox is released under the terms of the LGPLv3 or higher.
 
 import json
@@ -19,6 +19,7 @@ from UM.Version import Version
 from cura import ApplicationMetadata
 from cura import UltimakerCloudAuthentication
 from cura.CuraApplication import CuraApplication
+from cura.Machines.ContainerTree import ContainerTree
 
 from .AuthorsModel import AuthorsModel
 from .PackagesModel import PackagesModel
@@ -360,14 +361,19 @@ class Toolbox(QObject, Extension):
     def resetMaterialsQualitiesAndUninstall(self) -> None:
         application = CuraApplication.getInstance()
         material_manager = application.getMaterialManager()
-        quality_manager = application.getQualityManager()
         machine_manager = application.getMachineManager()
+        container_tree = ContainerTree.getInstance()
 
         for global_stack, extruder_nr, container_id in self._package_used_materials:
             default_material_node = material_manager.getDefaultMaterial(global_stack, extruder_nr, global_stack.extruders[extruder_nr].variant.getName())
             machine_manager.setMaterial(extruder_nr, default_material_node, global_stack = global_stack)
         for global_stack, extruder_nr, container_id in self._package_used_qualities:
-            default_quality_group = quality_manager.getDefaultQualityType(global_stack)
+            variant_names = [extruder.variant.getName() for extruder in global_stack.extruders.values()]
+            material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in global_stack.extruders.values()]
+            extruder_enabled = [extruder.isEnabled for extruder in global_stack.extruders.values()]
+            definition_id = global_stack.definition.getId()
+            machine_node = container_tree.machines[definition_id]
+            default_quality_group = machine_node.getQualityGroups(variant_names, material_bases, extruder_enabled)[machine_node.preferred_quality_type]
             machine_manager.setQualityGroup(default_quality_group, global_stack = global_stack)
 
         if self._package_id_to_uninstall is not None: