mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
No longer trigger rebuilding node tree from quality manager
Also remove part of that from the material manager while we're at it. Contributes to issue CURA-6600.
This commit is contained in:
parent
71aed6858c
commit
2bf4ac8522
2 changed files with 0 additions and 93 deletions
|
@ -67,89 +67,6 @@ class QualityManager(QObject):
|
||||||
self._container_registry.containerAdded.connect(self._onContainerMetadataChanged)
|
self._container_registry.containerAdded.connect(self._onContainerMetadataChanged)
|
||||||
self._container_registry.containerRemoved.connect(self._onContainerMetadataChanged)
|
self._container_registry.containerRemoved.connect(self._onContainerMetadataChanged)
|
||||||
|
|
||||||
# When a custom quality gets added/imported, there can be more than one InstanceContainers. In those cases,
|
|
||||||
# we don't want to react on every container/metadata changed signal. The timer here is to buffer it a bit so
|
|
||||||
# we don't react too many time.
|
|
||||||
self._update_timer = QTimer(self)
|
|
||||||
self._update_timer.setInterval(300)
|
|
||||||
self._update_timer.setSingleShot(True)
|
|
||||||
self._update_timer.timeout.connect(self._updateMaps)
|
|
||||||
|
|
||||||
def initialize(self) -> None:
|
|
||||||
|
|
||||||
# Initialize the lookup tree for quality profiles with following structure:
|
|
||||||
# <machine> -> <nozzle> -> <buildplate> -> <material>
|
|
||||||
# <machine> -> <material>
|
|
||||||
|
|
||||||
self._machine_nozzle_buildplate_material_quality_type_to_quality_dict = {} # for quality lookup
|
|
||||||
self._machine_quality_type_to_quality_changes_dict = {} # for quality_changes lookup
|
|
||||||
|
|
||||||
quality_metadata_list = self._container_registry.findContainersMetadata(type = "quality")
|
|
||||||
for metadata in quality_metadata_list:
|
|
||||||
if metadata["id"] == "empty_quality":
|
|
||||||
continue
|
|
||||||
|
|
||||||
definition_id = metadata["definition"]
|
|
||||||
quality_type = metadata["quality_type"]
|
|
||||||
|
|
||||||
root_material_id = metadata.get("material")
|
|
||||||
nozzle_name = metadata.get("variant")
|
|
||||||
buildplate_name = metadata.get("buildplate")
|
|
||||||
is_global_quality = metadata.get("global_quality", False)
|
|
||||||
is_global_quality = is_global_quality or (root_material_id is None and nozzle_name is None and buildplate_name is None)
|
|
||||||
|
|
||||||
# Sanity check: material+variant and is_global_quality cannot be present at the same time
|
|
||||||
if is_global_quality and (root_material_id or nozzle_name):
|
|
||||||
ConfigurationErrorMessage.getInstance().addFaultyContainers(metadata["id"])
|
|
||||||
continue
|
|
||||||
|
|
||||||
if definition_id not in self._machine_nozzle_buildplate_material_quality_type_to_quality_dict:
|
|
||||||
self._machine_nozzle_buildplate_material_quality_type_to_quality_dict[definition_id] = QualityNode()
|
|
||||||
machine_node = cast(QualityNode, self._machine_nozzle_buildplate_material_quality_type_to_quality_dict[definition_id])
|
|
||||||
|
|
||||||
if is_global_quality:
|
|
||||||
# For global qualities, save data in the machine node
|
|
||||||
machine_node.addQualityMetadata(quality_type, metadata)
|
|
||||||
continue
|
|
||||||
|
|
||||||
current_node = machine_node
|
|
||||||
intermediate_node_info_list = [nozzle_name, buildplate_name, root_material_id]
|
|
||||||
current_intermediate_node_info_idx = 0
|
|
||||||
|
|
||||||
while current_intermediate_node_info_idx < len(intermediate_node_info_list):
|
|
||||||
node_name = intermediate_node_info_list[current_intermediate_node_info_idx]
|
|
||||||
if node_name is not None:
|
|
||||||
# There is specific information, update the current node to go deeper so we can add this quality
|
|
||||||
# at the most specific branch in the lookup tree.
|
|
||||||
if node_name not in current_node.children_map:
|
|
||||||
current_node.children_map[node_name] = QualityNode()
|
|
||||||
current_node = cast(QualityNode, current_node.children_map[node_name])
|
|
||||||
|
|
||||||
current_intermediate_node_info_idx += 1
|
|
||||||
|
|
||||||
current_node.addQualityMetadata(quality_type, metadata)
|
|
||||||
|
|
||||||
# Initialize the lookup tree for quality_changes profiles with following structure:
|
|
||||||
# <machine> -> <quality_type> -> <name>
|
|
||||||
quality_changes_metadata_list = self._container_registry.findContainersMetadata(type = "quality_changes")
|
|
||||||
for metadata in quality_changes_metadata_list:
|
|
||||||
if metadata["id"] == "empty_quality_changes":
|
|
||||||
continue
|
|
||||||
|
|
||||||
machine_definition_id = metadata["definition"]
|
|
||||||
quality_type = metadata["quality_type"]
|
|
||||||
|
|
||||||
if machine_definition_id not in self._machine_quality_type_to_quality_changes_dict:
|
|
||||||
self._machine_quality_type_to_quality_changes_dict[machine_definition_id] = QualityNode()
|
|
||||||
machine_node = self._machine_quality_type_to_quality_changes_dict[machine_definition_id]
|
|
||||||
machine_node.addQualityChangesMetadata(quality_type, metadata)
|
|
||||||
|
|
||||||
Logger.log("d", "Lookup tables updated.")
|
|
||||||
self.qualitiesUpdated.emit()
|
|
||||||
|
|
||||||
def _updateMaps(self) -> None:
|
|
||||||
self.initialize()
|
|
||||||
|
|
||||||
def _onContainerMetadataChanged(self, container: InstanceContainer) -> None:
|
def _onContainerMetadataChanged(self, container: InstanceContainer) -> None:
|
||||||
self._onContainerChanged(container)
|
self._onContainerChanged(container)
|
||||||
|
|
||||||
|
@ -158,9 +75,6 @@ class QualityManager(QObject):
|
||||||
if container_type not in ("quality", "quality_changes"):
|
if container_type not in ("quality", "quality_changes"):
|
||||||
return
|
return
|
||||||
|
|
||||||
# update the cache table
|
|
||||||
self._update_timer.start()
|
|
||||||
|
|
||||||
# Returns a dict of "custom profile name" -> QualityChangesGroup
|
# Returns a dict of "custom profile name" -> QualityChangesGroup
|
||||||
def getQualityChangesGroups(self, machine: "GlobalStack") -> dict:
|
def getQualityChangesGroups(self, machine: "GlobalStack") -> dict:
|
||||||
machine_definition_id = getMachineDefinitionIDForQualitySearch(machine.definition)
|
machine_definition_id = getMachineDefinitionIDForQualitySearch(machine.definition)
|
||||||
|
|
|
@ -919,9 +919,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
||||||
application = CuraApplication.getInstance()
|
application = CuraApplication.getInstance()
|
||||||
material_manager = application.getMaterialManager()
|
material_manager = application.getMaterialManager()
|
||||||
|
|
||||||
# Force update lookup tables first
|
|
||||||
material_manager.initialize()
|
|
||||||
|
|
||||||
for position, extruder_stack in extruder_stack_dict.items():
|
for position, extruder_stack in extruder_stack_dict.items():
|
||||||
if position not in self._machine_info.extruder_info_dict:
|
if position not in self._machine_info.extruder_info_dict:
|
||||||
continue
|
continue
|
||||||
|
@ -979,10 +976,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
||||||
material_manager = Application.getInstance().getMaterialManager()
|
material_manager = Application.getInstance().getMaterialManager()
|
||||||
quality_manager = Application.getInstance().getQualityManager()
|
quality_manager = Application.getInstance().getQualityManager()
|
||||||
|
|
||||||
# Force update the lookup maps first
|
|
||||||
material_manager.initialize()
|
|
||||||
quality_manager.initialize()
|
|
||||||
|
|
||||||
machine_manager.setActiveMachine(global_stack.getId())
|
machine_manager.setActiveMachine(global_stack.getId())
|
||||||
|
|
||||||
if self._quality_changes_to_apply:
|
if self._quality_changes_to_apply:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue