Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGhostkeeper <rubend@tutanota.com>2017-09-22 13:58:40 +0300
committerGhostkeeper <rubend@tutanota.com>2017-09-22 13:58:40 +0300
commitc02c2201e21c2f985f583ef7545cd193b72810f9 (patch)
treed033b0daa9922cc40c081118314b1a01018c4863 /cura/Settings
parent12ccc8abe0002ab0db370f04551a518f7e43a3a5 (diff)
parent2020e355a2558a6dc3cde29e0e5693ad57604bd2 (diff)
Merge branch '3.0'
Diffstat (limited to 'cura/Settings')
-rwxr-xr-xcura/Settings/MachineManager.py73
-rw-r--r--cura/Settings/ProfilesModel.py28
2 files changed, 45 insertions, 56 deletions
diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py
index e807e49200..69f672ab0f 100755
--- a/cura/Settings/MachineManager.py
+++ b/cura/Settings/MachineManager.py
@@ -1,6 +1,9 @@
# Copyright (c) 2017 Ultimaker B.V.
# Cura is released under the terms of the AGPLv3 or higher.
-from typing import Union
+
+#Type hinting.
+from typing import Union, List, Dict
+from UM.Signal import Signal
from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal, QTimer
from UM.FlameProfiler import pyqtSlot
@@ -366,7 +369,7 @@ class MachineManager(QObject):
def _createUniqueName(self, container_type: str, current_name: str, new_name: str, fallback_name: str) -> str:
return ContainerRegistry.getInstance().createUniqueName(container_type, current_name, new_name, fallback_name)
- def _checkStacksHaveErrors(self):
+ def _checkStacksHaveErrors(self) -> bool:
if self._global_container_stack is None: #No active machine.
return False
@@ -390,7 +393,7 @@ class MachineManager(QObject):
## Check if the global_container has instances in the user container
@pyqtProperty(bool, notify = activeStackValueChanged)
- def hasUserSettings(self):
+ def hasUserSettings(self) -> bool:
if not self._global_container_stack:
return False
@@ -405,7 +408,7 @@ class MachineManager(QObject):
return False
@pyqtProperty(int, notify = activeStackValueChanged)
- def numUserSettings(self):
+ def numUserSettings(self) -> int:
if not self._global_container_stack:
return 0
num_user_settings = 0
@@ -450,7 +453,7 @@ class MachineManager(QObject):
# Note that the _stacks_have_errors is cached due to performance issues
# Calling _checkStack(s)ForErrors on every change is simply too expensive
@pyqtProperty(bool, notify = stacksValidationChanged)
- def stacksHaveErrors(self):
+ def stacksHaveErrors(self) -> bool:
return bool(self._stacks_have_errors)
@pyqtProperty(str, notify = activeStackChanged)
@@ -475,7 +478,7 @@ class MachineManager(QObject):
return ""
@pyqtProperty(QObject, notify = globalContainerChanged)
- def activeMachine(self) -> "GlobalStack":
+ def activeMachine(self) -> Optional["GlobalStack"]:
return self._global_container_stack
@pyqtProperty(str, notify = activeStackChanged)
@@ -495,10 +498,11 @@ class MachineManager(QObject):
return ""
@pyqtProperty("QVariantList", notify=activeVariantChanged)
- def activeVariantNames(self):
+ def activeVariantNames(self) -> List[str]:
result = []
- if ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() is not None:
- for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks():
+ active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks()
+ if active_stacks is not None:
+ for stack in active_stacks:
variant_container = stack.variant
if variant_container and variant_container != self._empty_variant_container:
result.append(variant_container.getName())
@@ -506,10 +510,11 @@ class MachineManager(QObject):
return result
@pyqtProperty("QVariantList", notify = activeMaterialChanged)
- def activeMaterialNames(self):
+ def activeMaterialNames(self) -> List[str]:
result = []
- if ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() is not None:
- for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks():
+ active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks()
+ if active_stacks is not None:
+ for stack in active_stacks:
material_container = stack.material
if material_container and material_container != self._empty_material_container:
result.append(material_container.getName())
@@ -525,34 +530,30 @@ class MachineManager(QObject):
return ""
@pyqtProperty("QVariantMap", notify = activeVariantChanged)
- def allActiveVariantIds(self):
- if not self._global_container_stack:
- return {}
-
+ def allActiveVariantIds(self) -> Dict[str, str]:
result = {}
+ active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks()
+ if active_stacks is not None: #If we have a global stack.
+ for stack in active_stacks:
+ variant_container = stack.variant
+ if not variant_container:
+ continue
- for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks():
- variant_container = stack.variant
- if not variant_container:
- continue
-
- result[stack.getId()] = variant_container.getId()
+ result[stack.getId()] = variant_container.getId()
return result
@pyqtProperty("QVariantMap", notify = activeMaterialChanged)
- def allActiveMaterialIds(self):
- if not self._global_container_stack:
- return {}
-
+ def allActiveMaterialIds(self) -> Dict[str, str]:
result = {}
+ active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks()
+ if active_stacks is not None: #If we have a global stack.
+ for stack in active_stacks:
+ material_container = stack.material
+ if not material_container:
+ continue
- for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks():
- material_container = stack.material
- if not material_container:
- continue
-
- result[stack.getId()] = material_container.getId()
+ result[stack.getId()] = material_container.getId()
return result
@@ -862,7 +863,7 @@ class MachineManager(QObject):
# \param quality_name \type{str} the name of the quality.
# \return \type{List[Dict]} with keys "stack", "quality" and "quality_changes".
@UM.FlameProfiler.profile
- def determineQualityAndQualityChangesForQualityType(self, quality_type: str):
+ def determineQualityAndQualityChangesForQualityType(self, quality_type: str) -> List[Dict[str, Union["CuraContainerStack", InstanceContainer]]]:
quality_manager = QualityManager.getInstance()
result = []
empty_quality_changes = self._empty_quality_changes_container
@@ -899,7 +900,7 @@ class MachineManager(QObject):
#
# \param quality_changes_name \type{str} the name of the quality changes.
# \return \type{List[Dict]} with keys "stack", "quality" and "quality_changes".
- def _determineQualityAndQualityChangesForQualityChanges(self, quality_changes_name: str):
+ def _determineQualityAndQualityChangesForQualityChanges(self, quality_changes_name: str) -> Optional[List[Dict[str, Union["CuraContainerStack", InstanceContainer]]]]:
result = []
quality_manager = QualityManager.getInstance()
@@ -1136,7 +1137,7 @@ class MachineManager(QObject):
return MachineManager()
@deprecated("Use ExtruderStack.material = ... and it won't be necessary", "2.7")
- def _updateMaterialContainer(self, definition: "DefinitionContainer", stack: "ContainerStack", variant_container: Optional["InstanceContainer"] = None, preferred_material_name: Optional[str] = None):
+ def _updateMaterialContainer(self, definition: "DefinitionContainer", stack: "ContainerStack", variant_container: Optional["InstanceContainer"] = None, preferred_material_name: Optional[str] = None) -> InstanceContainer:
if not definition.getMetaDataEntry("has_materials"):
return self._empty_material_container
@@ -1182,7 +1183,7 @@ class MachineManager(QObject):
def _onQualityNameChanged(self):
self.activeQualityChanged.emit()
- def _getContainerChangedSignals(self):
+ def _getContainerChangedSignals(self) -> List[Signal]:
stacks = ExtruderManager.getInstance().getActiveExtruderStacks()
stacks.append(self._global_container_stack)
return [ s.containersChanged for s in stacks ]
diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py
index e39ed949b0..c7348ea920 100644
--- a/cura/Settings/ProfilesModel.py
+++ b/cura/Settings/ProfilesModel.py
@@ -110,12 +110,11 @@ class ProfilesModel(InstanceContainersModel):
# active machine and material, and later yield the right ones.
tmp_all_quality_items = OrderedDict()
for item in super()._recomputeItems():
- profile = container_registry.findContainers(id = item["id"])
+ profile = container_registry.findContainers(id=item["id"])
quality_type = profile[0].getMetaDataEntry("quality_type") if profile else ""
if quality_type not in tmp_all_quality_items:
- tmp_all_quality_items[quality_type] = {"suitable_container": None,
- "all_containers": []}
+ tmp_all_quality_items[quality_type] = {"suitable_container": None, "all_containers": []}
tmp_all_quality_items[quality_type]["all_containers"].append(item)
if tmp_all_quality_items[quality_type]["suitable_container"] is None and profile[0] in qualities:
@@ -126,25 +125,14 @@ class ProfilesModel(InstanceContainersModel):
for key in reversed(tmp_all_quality_items.keys()):
all_quality_items[key] = tmp_all_quality_items[key]
- # First the suitable containers are set in the model
- containers = []
- for data_item in all_quality_items.values():
- suitable_item = data_item["suitable_container"]
- if suitable_item is None:
- suitable_item = data_item["all_containers"][0]
- containers.append(suitable_item)
-
- # Once the suitable containers are collected, the rest of the containers are appended
for data_item in all_quality_items.values():
- for item in data_item["all_containers"]:
- if item not in containers:
- containers.append(item)
+ item = data_item["suitable_container"]
+ if item is None:
+ item = data_item["all_containers"][0]
- # Now all the containers are set
- for item in containers:
profile = container_registry.findContainers(id = item["id"])
if not profile:
- item["layer_height"] = "" #Can't update a profile that is unknown.
+ item["layer_height"] = "" # Can't update a profile that is unknown.
item["available"] = False
yield item
continue
@@ -152,13 +140,13 @@ class ProfilesModel(InstanceContainersModel):
profile = profile[0]
item["available"] = profile in qualities
- #Easy case: This profile defines its own layer height.
+ # Easy case: This profile defines its own layer height.
if profile.hasProperty("layer_height", "value"):
self._setItemLayerHeight(item, profile.getProperty("layer_height", "value"), unit)
yield item
continue
- #Quality-changes profile that has no value for layer height. Get the corresponding quality profile and ask that profile.
+ # Quality-changes profile that has no value for layer height. Get the corresponding quality profile and ask that profile.
quality_type = profile.getMetaDataEntry("quality_type", None)
if quality_type:
quality_results = machine_manager.determineQualityAndQualityChangesForQualityType(quality_type)