mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-12 09:17:50 -06:00
Add convenience function to get quality groups for current printer
This is used very often all over the code. Contributes to issue CURA-6600.
This commit is contained in:
parent
3f944462ed
commit
d4cd5a7ea5
3 changed files with 21 additions and 11 deletions
|
@ -5,10 +5,15 @@ from UM.Logger import Logger
|
||||||
from UM.Settings.ContainerRegistry import ContainerRegistry # To listen to containers being added.
|
from UM.Settings.ContainerRegistry import ContainerRegistry # To listen to containers being added.
|
||||||
from UM.Settings.DefinitionContainer import DefinitionContainer
|
from UM.Settings.DefinitionContainer import DefinitionContainer
|
||||||
from UM.Settings.Interfaces import ContainerInterface
|
from UM.Settings.Interfaces import ContainerInterface
|
||||||
|
import cura.CuraApplication # Imported like this to prevent circular dependencies.
|
||||||
from cura.Machines.MachineNode import MachineNode
|
from cura.Machines.MachineNode import MachineNode
|
||||||
|
|
||||||
from typing import Dict
|
from typing import Dict, List, TYPE_CHECKING
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from cura.Machines.QualityGroup import QualityGroup
|
||||||
|
|
||||||
## This class contains a look-up tree for which containers are available at
|
## This class contains a look-up tree for which containers are available at
|
||||||
# which stages of configuration.
|
# which stages of configuration.
|
||||||
#
|
#
|
||||||
|
@ -29,6 +34,19 @@ class ContainerTree:
|
||||||
container_registry.containerAdded.connect(self._machineAdded)
|
container_registry.containerAdded.connect(self._machineAdded)
|
||||||
self._loadAll()
|
self._loadAll()
|
||||||
|
|
||||||
|
## Get the quality groups available for the currently activated printer.
|
||||||
|
#
|
||||||
|
# This contains all quality groups, enabled or disabled. To check whether
|
||||||
|
# the quality group can be activated, test for the
|
||||||
|
# ``QualityGroup.is_available`` property.
|
||||||
|
# \return For every quality type, one quality group.
|
||||||
|
def getCurrentQualityGroups(self) -> Dict[str, "QualityGroup"]:
|
||||||
|
global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack()
|
||||||
|
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()]
|
||||||
|
return self.machines[global_stack.definition.getId()].getQualityGroups(variant_names, material_bases, extruder_enabled)
|
||||||
|
|
||||||
## Builds the initial container tree.
|
## Builds the initial container tree.
|
||||||
def _loadAll(self):
|
def _loadAll(self):
|
||||||
Logger.log("i", "Building container tree.")
|
Logger.log("i", "Building container tree.")
|
||||||
|
|
|
@ -52,11 +52,7 @@ class IntentModel(ListModel):
|
||||||
if not global_stack:
|
if not global_stack:
|
||||||
self.setItems(new_items)
|
self.setItems(new_items)
|
||||||
return
|
return
|
||||||
definition_id = global_stack.definition.getId()
|
quality_groups = ContainerTree.getInstance().getCurrentQualityGroups()
|
||||||
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()]
|
|
||||||
quality_groups = ContainerTree.getInstance().machines[definition_id].getQualityGroups(variant_names, material_bases, extruder_enabled)
|
|
||||||
|
|
||||||
for intent_category, quality_type in IntentManager.getInstance().getCurrentAvailableIntents():
|
for intent_category, quality_type in IntentManager.getInstance().getCurrentAvailableIntents():
|
||||||
if intent_category == self._intent_category:
|
if intent_category == self._intent_category:
|
||||||
|
|
|
@ -43,11 +43,7 @@ class QualityManagementModel(ListModel):
|
||||||
self.setItems([])
|
self.setItems([])
|
||||||
return
|
return
|
||||||
|
|
||||||
variant_names = [extruder.variant.getName() for extruder in global_stack.extruders]
|
quality_group_dict = ContainerTree.getInstance().getCurrentQualityGroups()
|
||||||
material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in global_stack.extruders]
|
|
||||||
extruder_enabled = [extruder.isEnabled for extruder in global_stack.extruders]
|
|
||||||
definition_id = global_stack.definition.getId()
|
|
||||||
quality_group_dict = ContainerTree.getInstance().machines[definition_id].getQualityGroups(variant_names, material_bases, extruder_enabled)
|
|
||||||
quality_changes_group_dict = self._quality_manager.getQualityChangesGroups(global_stack)
|
quality_changes_group_dict = self._quality_manager.getQualityChangesGroups(global_stack)
|
||||||
|
|
||||||
available_quality_types = set(quality_type for quality_type, quality_group in quality_group_dict.items()
|
available_quality_types = set(quality_type for quality_type, quality_group in quality_group_dict.items()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue