mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-25 07:33:57 -06:00
Ensure we initialize the list of containers for GlobalStack
This commit is contained in:
parent
39803cf7dd
commit
b6fafb06ed
1 changed files with 58 additions and 2 deletions
|
@ -22,6 +22,7 @@ class GlobalStack(ContainerStack):
|
||||||
|
|
||||||
self._empty_instance_container = ContainerRegistry.getInstance().getEmptyInstanceContainer()
|
self._empty_instance_container = ContainerRegistry.getInstance().getEmptyInstanceContainer()
|
||||||
|
|
||||||
|
self._containers = [self._empty_instance_container for i in range(len(_ContainerIndexes.IndexTypeMap))]
|
||||||
self._extruders = []
|
self._extruders = []
|
||||||
|
|
||||||
self.containersChanged.connect(self._onContainersChanged)
|
self.containersChanged.connect(self._onContainersChanged)
|
||||||
|
@ -32,9 +33,16 @@ class GlobalStack(ContainerStack):
|
||||||
def userChanges(self) -> InstanceContainer:
|
def userChanges(self) -> InstanceContainer:
|
||||||
return self._containers[_ContainerIndexes.UserChanges]
|
return self._containers[_ContainerIndexes.UserChanges]
|
||||||
|
|
||||||
def setQualtiyChanges(self, new_quality_changes: InstanceContainer) -> None:
|
def setQualityChanges(self, new_quality_changes: InstanceContainer) -> None:
|
||||||
self.replaceContainer(_ContainerIndexes.QualityChanges, new_quality_changes)
|
self.replaceContainer(_ContainerIndexes.QualityChanges, new_quality_changes)
|
||||||
|
|
||||||
|
def setQualityChangesById(self, new_quality_changes_id: str) -> None:
|
||||||
|
quality_changes = ContainerRegistry.getInstance().findInstanceContainers(id = new_quality_changes_id)
|
||||||
|
if quality_changes:
|
||||||
|
self.setQualityChanges(quality_changes[0])
|
||||||
|
else:
|
||||||
|
raise Exceptions.InvalidContainerError("Could not find container with id {id}".format(id = new_quality_changes_id))
|
||||||
|
|
||||||
@pyqtProperty(InstanceContainer, notify = pyqtContainersChanged)
|
@pyqtProperty(InstanceContainer, notify = pyqtContainersChanged)
|
||||||
def qualityChanges(self) -> InstanceContainer:
|
def qualityChanges(self) -> InstanceContainer:
|
||||||
return self._containers[_ContainerIndexes.QualityChanges]
|
return self._containers[_ContainerIndexes.QualityChanges]
|
||||||
|
@ -42,6 +50,13 @@ class GlobalStack(ContainerStack):
|
||||||
def setQuality(self, new_quality: InstanceContainer) -> None:
|
def setQuality(self, new_quality: InstanceContainer) -> None:
|
||||||
self.replaceContainer(_ContainerIndexes.Quality, new_quality)
|
self.replaceContainer(_ContainerIndexes.Quality, new_quality)
|
||||||
|
|
||||||
|
def setQualityById(self, new_quality_id: str) -> None:
|
||||||
|
quality = ContainerRegistry.getInstance().findInstanceContainers(id = new_quality_id)
|
||||||
|
if quality:
|
||||||
|
self.setQuality(quality[0])
|
||||||
|
else:
|
||||||
|
raise Exceptions.InvalidContainerError("Could not find container with id {id}".format(id = new_quality_id))
|
||||||
|
|
||||||
@pyqtProperty(InstanceContainer, notify = pyqtContainersChanged)
|
@pyqtProperty(InstanceContainer, notify = pyqtContainersChanged)
|
||||||
def quality(self) -> InstanceContainer:
|
def quality(self) -> InstanceContainer:
|
||||||
return self._containers[_ContainerIndexes.Quality]
|
return self._containers[_ContainerIndexes.Quality]
|
||||||
|
@ -49,6 +64,13 @@ class GlobalStack(ContainerStack):
|
||||||
def setMaterial(self, new_material: InstanceContainer) -> None:
|
def setMaterial(self, new_material: InstanceContainer) -> None:
|
||||||
self.replaceContainer(_ContainerIndexes.Material, new_material)
|
self.replaceContainer(_ContainerIndexes.Material, new_material)
|
||||||
|
|
||||||
|
def setMaterialById(self, new_material_id: str) -> None:
|
||||||
|
material = ContainerRegistry.getInstance().findInstanceContainers(id = new_material_id)
|
||||||
|
if material:
|
||||||
|
self.setMaterial(material[0])
|
||||||
|
else:
|
||||||
|
raise Exceptions.InvalidContainerError("Could not find container with id {id}".format(id = new_material_id))
|
||||||
|
|
||||||
@pyqtProperty(InstanceContainer, notify = pyqtContainersChanged)
|
@pyqtProperty(InstanceContainer, notify = pyqtContainersChanged)
|
||||||
def material(self) -> InstanceContainer:
|
def material(self) -> InstanceContainer:
|
||||||
return self._containers[_ContainerIndexes.Material]
|
return self._containers[_ContainerIndexes.Material]
|
||||||
|
@ -56,10 +78,27 @@ class GlobalStack(ContainerStack):
|
||||||
def setVariant(self, new_variant: InstanceContainer) -> None:
|
def setVariant(self, new_variant: InstanceContainer) -> None:
|
||||||
self.replaceContainer(_ContainerIndexes.Variant, new_variant)
|
self.replaceContainer(_ContainerIndexes.Variant, new_variant)
|
||||||
|
|
||||||
|
def setVariantById(self, new_variant_id: str) -> None:
|
||||||
|
variant = ContainerRegistry.getInstance().findInstanceContainers(id = new_variant_id)
|
||||||
|
if variant:
|
||||||
|
self.setVariant(variant[0])
|
||||||
|
else:
|
||||||
|
raise Exceptions.InvalidContainerError("Could not find container with id {id}".format(id = new_variant_id))
|
||||||
|
|
||||||
@pyqtProperty(InstanceContainer, notify = pyqtContainersChanged)
|
@pyqtProperty(InstanceContainer, notify = pyqtContainersChanged)
|
||||||
def variant(self) -> InstanceContainer:
|
def variant(self) -> InstanceContainer:
|
||||||
return self._containers[_ContainerIndexes.Variant]
|
return self._containers[_ContainerIndexes.Variant]
|
||||||
|
|
||||||
|
def setDefinitionChanges(self, new_definition_changes: InstanceContainer) -> None:
|
||||||
|
self.replaceContainer(_ContainerIndexes.DefinitionChanges, new_definition_changes)
|
||||||
|
|
||||||
|
def setDefinitionChangesById(self, new_definition_changes_id: str) -> None:
|
||||||
|
new_definition_changes = ContainerRegistry.getInstance().findInstanceContainers(id = new_definition_changes_id)
|
||||||
|
if new_definition_changes:
|
||||||
|
self.setDefinitionChanges(new_definition_changes[0])
|
||||||
|
else:
|
||||||
|
raise Exceptions.InvalidContainerError("Could not find container with id {id}".format(id = new_definition_changes_id))
|
||||||
|
|
||||||
@pyqtProperty(InstanceContainer, notify = pyqtContainersChanged)
|
@pyqtProperty(InstanceContainer, notify = pyqtContainersChanged)
|
||||||
def definitionChanges(self) -> InstanceContainer:
|
def definitionChanges(self) -> InstanceContainer:
|
||||||
return self._containers[_ContainerIndexes.DefinitionChanges]
|
return self._containers[_ContainerIndexes.DefinitionChanges]
|
||||||
|
@ -97,7 +136,7 @@ class GlobalStack(ContainerStack):
|
||||||
|
|
||||||
## Overridden from ContainerStack
|
## Overridden from ContainerStack
|
||||||
@override(ContainerStack)
|
@override(ContainerStack)
|
||||||
def getProperty(self, key: str, property_name: str):
|
def getProperty(self, key: str, property_name: str) -> Any:
|
||||||
if property_name == "value":
|
if property_name == "value":
|
||||||
if not self.hasUserValue(key):
|
if not self.hasUserValue(key):
|
||||||
resolve = super().getProperty(key, "resolve")
|
resolve = super().getProperty(key, "resolve")
|
||||||
|
@ -106,6 +145,13 @@ class GlobalStack(ContainerStack):
|
||||||
|
|
||||||
return super().getProperty(key, property_name)
|
return super().getProperty(key, property_name)
|
||||||
|
|
||||||
|
def setProperty(self, key: str, property_name: str, new_value: Any, target_container: str = "user") -> None:
|
||||||
|
container_index = _ContainerIndexes.indexForType(target_container)
|
||||||
|
if container_index != -1:
|
||||||
|
self._containers[container_index].setProperty(key, property_name, new_value)
|
||||||
|
else:
|
||||||
|
raise IndexError("Invalid target container {type}".format(type = target_container))
|
||||||
|
|
||||||
## Overridden from ContainerStack
|
## Overridden from ContainerStack
|
||||||
@override(ContainerStack)
|
@override(ContainerStack)
|
||||||
def setNextStack(self, next_stack: ContainerStack) -> None:
|
def setNextStack(self, next_stack: ContainerStack) -> None:
|
||||||
|
@ -145,6 +191,7 @@ class GlobalStack(ContainerStack):
|
||||||
super().deserialize(contents)
|
super().deserialize(contents)
|
||||||
|
|
||||||
new_containers = self._containers.copy()
|
new_containers = self._containers.copy()
|
||||||
|
print("containers before", new_containers)
|
||||||
while(len(new_containers) < len(_ContainerIndexes.IndexTypeMap)):
|
while(len(new_containers) < len(_ContainerIndexes.IndexTypeMap)):
|
||||||
new_containers.append(self._empty_instance_container)
|
new_containers.append(self._empty_instance_container)
|
||||||
|
|
||||||
|
@ -169,6 +216,7 @@ class GlobalStack(ContainerStack):
|
||||||
if actual_container:
|
if actual_container:
|
||||||
new_containers[index] = actual_container
|
new_containers[index] = actual_container
|
||||||
|
|
||||||
|
print("containers after", new_containers)
|
||||||
self._containers = new_containers
|
self._containers = new_containers
|
||||||
|
|
||||||
def _onContainersChanged(self, container):
|
def _onContainersChanged(self, container):
|
||||||
|
@ -204,3 +252,11 @@ class _ContainerIndexes:
|
||||||
DefinitionChanges: "definition_changes",
|
DefinitionChanges: "definition_changes",
|
||||||
Definition: "definition",
|
Definition: "definition",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def indexForType(cls, type_name: str) -> int:
|
||||||
|
for key, value in cls.IndexTypeMap.items():
|
||||||
|
if value == type_name:
|
||||||
|
return key
|
||||||
|
|
||||||
|
return -1
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue