mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Fix empty material/quality profiles when switching variants
CURA-1278
This commit is contained in:
parent
dc2384c92d
commit
a7939c6f3d
1 changed files with 26 additions and 6 deletions
|
@ -401,9 +401,9 @@ class MachineManagerModel(QObject):
|
||||||
|
|
||||||
preferred_material = None
|
preferred_material = None
|
||||||
if old_material:
|
if old_material:
|
||||||
preferred_material = old_material.getId()
|
preferred_material_name = old_material.getName()
|
||||||
|
|
||||||
self.setActiveMaterial(self._updateMaterialContainer(self._global_container_stack.getBottom(), containers[0], preferred_material).id)
|
self.setActiveMaterial(self._updateMaterialContainer(self._global_container_stack.getBottom(), containers[0], preferred_material_name).id)
|
||||||
|
|
||||||
@pyqtSlot(str)
|
@pyqtSlot(str)
|
||||||
def setActiveQuality(self, quality_id):
|
def setActiveQuality(self, quality_id):
|
||||||
|
@ -519,7 +519,7 @@ class MachineManagerModel(QObject):
|
||||||
|
|
||||||
return self._empty_variant_container
|
return self._empty_variant_container
|
||||||
|
|
||||||
def _updateMaterialContainer(self, definition, variant_container = None, preferred_material = None):
|
def _updateMaterialContainer(self, definition, variant_container = None, preferred_material_name = None):
|
||||||
if not definition.getMetaDataEntry("has_materials"):
|
if not definition.getMetaDataEntry("has_materials"):
|
||||||
return self._empty_material_container
|
return self._empty_material_container
|
||||||
|
|
||||||
|
@ -533,15 +533,26 @@ class MachineManagerModel(QObject):
|
||||||
else:
|
else:
|
||||||
search_criteria["definition"] = "fdmprinter"
|
search_criteria["definition"] = "fdmprinter"
|
||||||
|
|
||||||
if not preferred_material:
|
if preferred_material_name:
|
||||||
|
search_criteria["name"] = preferred_material_name
|
||||||
|
else:
|
||||||
preferred_material = definition.getMetaDataEntry("preferred_material")
|
preferred_material = definition.getMetaDataEntry("preferred_material")
|
||||||
if preferred_material:
|
if preferred_material:
|
||||||
search_criteria["id"] = preferred_material
|
search_criteria["id"] = preferred_material
|
||||||
|
|
||||||
containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(**search_criteria)
|
containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(**search_criteria)
|
||||||
if containers:
|
if containers:
|
||||||
return containers[0]
|
return containers[0]
|
||||||
|
|
||||||
|
if "name" in search_criteria or "id" in search_criteria:
|
||||||
|
# If a material by this name can not be found, try a wider set of search criteria
|
||||||
|
search_criteria.pop("name", None)
|
||||||
|
search_criteria.pop("id", None)
|
||||||
|
|
||||||
|
containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(**search_criteria)
|
||||||
|
if containers:
|
||||||
|
return containers[0]
|
||||||
|
|
||||||
return self._empty_material_container
|
return self._empty_material_container
|
||||||
|
|
||||||
def _updateQualityContainer(self, definition, material_container = None, preferred_quality_name = None):
|
def _updateQualityContainer(self, definition, material_container = None, preferred_quality_name = None):
|
||||||
|
@ -566,6 +577,15 @@ class MachineManagerModel(QObject):
|
||||||
if containers:
|
if containers:
|
||||||
return containers[0]
|
return containers[0]
|
||||||
|
|
||||||
|
if "name" in search_criteria or "id" in search_criteria:
|
||||||
|
# If a quality by this name can not be found, try a wider set of search criteria
|
||||||
|
search_criteria.pop("name", None)
|
||||||
|
search_criteria.pop("id", None)
|
||||||
|
|
||||||
|
containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(**search_criteria)
|
||||||
|
if containers:
|
||||||
|
return containers[0]
|
||||||
|
|
||||||
return self._empty_quality_container
|
return self._empty_quality_container
|
||||||
|
|
||||||
def createMachineManagerModel(engine, script_engine):
|
def createMachineManagerModel(engine, script_engine):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue