Use stack properties instead of .findContainer(type = ...)

Recently we changed the empty containers such that there is only one empty container instance and it doesn't have the proper type any more. Instead we have properties on the stack that allows us to find the container with the proper type. It's faster and easier to use.
We've had a few bugs about this so I decided to update all of them to remove those for the future, except the ones in plugins/MachineSettingsAction/MachineSettingsAction.py because we have a pending pull request that fixes those. Fixing them would give merge conflicts for fieldOfView.

It doesn't really belong to CURA-4024 but I'm sticking it under that nomer anyway to get it reviewed.
This commit is contained in:
Ghostkeeper 2017-07-10 10:35:03 +02:00
parent 4ad9ebc444
commit 81e07b1530
No known key found for this signature in database
GPG key ID: C5F96EE2BC0F7E75
4 changed files with 11 additions and 15 deletions

View file

@ -340,10 +340,8 @@ class CuraContainerRegistry(ContainerRegistry):
# \return the ID of the active material or the empty string # \return the ID of the active material or the empty string
def _activeMaterialId(self): def _activeMaterialId(self):
global_container_stack = Application.getInstance().getGlobalContainerStack() global_container_stack = Application.getInstance().getGlobalContainerStack()
if global_container_stack: if global_container_stack and global_container_stack.material:
material = global_container_stack.findContainer({"type": "material"}) return global_container_stack.material.getId()
if material:
return material.getId()
return "" return ""
## Returns true if the current machien requires its own quality profiles ## Returns true if the current machien requires its own quality profiles

View file

@ -157,7 +157,7 @@ class MachineManager(QObject):
if str(index) == extruder.getMetaDataEntry("position"): if str(index) == extruder.getMetaDataEntry("position"):
matching_extruder = extruder matching_extruder = extruder
break break
if matching_extruder and matching_extruder.findContainer({"type": "variant"}).getName() != hotend_id: if matching_extruder and matching_extruder.variant.getName() != hotend_id:
# Save the material that needs to be changed. Multiple changes will be handled by the callback. # Save the material that needs to be changed. Multiple changes will be handled by the callback.
self._auto_hotends_changed[str(index)] = containers[0].getId() self._auto_hotends_changed[str(index)] = containers[0].getId()
self._printer_output_devices[0].materialHotendChangedMessage(self._materialHotendChangedCallback) self._printer_output_devices[0].materialHotendChangedMessage(self._materialHotendChangedCallback)
@ -181,11 +181,10 @@ class MachineManager(QObject):
matching_extruder = extruder matching_extruder = extruder
break break
if matching_extruder and matching_extruder.findContainer({"type": "material"}).getMetaDataEntry("GUID") != material_id: if matching_extruder and matching_extruder.material.getMetaDataEntry("GUID") != material_id:
# Save the material that needs to be changed. Multiple changes will be handled by the callback. # Save the material that needs to be changed. Multiple changes will be handled by the callback.
variant_container = matching_extruder.findContainer({"type": "variant"}) if self._global_container_stack.getBottom().getMetaDataEntry("has_variants") and matching_extruder.variant:
if self._global_container_stack.getBottom().getMetaDataEntry("has_variants") and variant_container: variant_id = self.getQualityVariantId(self._global_container_stack.getBottom(), matching_extruder.variant)
variant_id = self.getQualityVariantId(self._global_container_stack.getBottom(), variant_container)
for container in containers: for container in containers:
if container.getMetaDataEntry("variant") == variant_id: if container.getMetaDataEntry("variant") == variant_id:
self._auto_materials_changed[str(index)] = container.getId() self._auto_materials_changed[str(index)] = container.getId()
@ -507,9 +506,8 @@ class MachineManager(QObject):
result = [] result = []
if ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() is not None: if ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() is not None:
for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks(): for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks():
variant_container = stack.findContainer({"type": "variant"}) if stack.variant and stack.variant != self._empty_variant_container:
if variant_container and variant_container != self._empty_variant_container: result.append(stack.variant.getId())
result.append(variant_container.getId())
return result return result

View file

@ -107,9 +107,9 @@ class ProfilesModel(InstanceContainersModel):
continue continue
#Quality has no value for layer height either. Get the layer height from somewhere lower in the stack. #Quality has no value for layer height either. Get the layer height from somewhere lower in the stack.
skip_until_container = global_container_stack.findContainer({"type": "material"}) skip_until_container = global_container_stack.material
if not skip_until_container: #No material in stack. if not skip_until_container: #No material in stack.
skip_until_container = global_container_stack.findContainer({"type": "variant"}) skip_until_container = global_container_stack.variant
if not skip_until_container: #No variant in stack. if not skip_until_container: #No variant in stack.
skip_until_container = global_container_stack.getBottom() skip_until_container = global_container_stack.getBottom()
item["layer_height"] = str(global_container_stack.getRawProperty("layer_height", "value", skip_until_container = skip_until_container.getId())) + unit #Fall through to the currently loaded material. item["layer_height"] = str(global_container_stack.getRawProperty("layer_height", "value", skip_until_container = skip_until_container.getId())) + unit #Fall through to the currently loaded material.

View file

@ -36,7 +36,7 @@ class UMOUpgradeSelection(MachineAction):
global_container_stack = Application.getInstance().getGlobalContainerStack() global_container_stack = Application.getInstance().getGlobalContainerStack()
if global_container_stack: if global_container_stack:
# Make sure there is a definition_changes container to store the machine settings # Make sure there is a definition_changes container to store the machine settings
definition_changes_container = global_container_stack.findContainer({"type": "definition_changes"}) definition_changes_container = global_container_stack.definition_changes
if not definition_changes_container: if not definition_changes_container:
definition_changes_container = self._createDefinitionChangesContainer(global_container_stack) definition_changes_container = self._createDefinitionChangesContainer(global_container_stack)