From 560be2931a49a31bfd5b86670e0d0c6401a5d9ac Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 23 Oct 2017 15:41:45 +0200 Subject: [PATCH] Create empty not supported container dynamically when no qualities are found - CURA-4451 --- cura/CrashHandler.py | 1 + cura/Settings/ProfilesModel.py | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/cura/CrashHandler.py b/cura/CrashHandler.py index a78ecb8a72..ad80d286c3 100644 --- a/cura/CrashHandler.py +++ b/cura/CrashHandler.py @@ -53,6 +53,7 @@ class CrashHandler: self.exception_type = exception_type self.value = value self.traceback = tb + self.dialog = QDialog() # While we create the GUI, the information will be stored for sending afterwards self.data = dict() diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py index bf1993b184..d7d413ea20 100644 --- a/cura/Settings/ProfilesModel.py +++ b/cura/Settings/ProfilesModel.py @@ -7,6 +7,7 @@ from PyQt5.QtCore import Qt from UM.Application import Application from UM.Settings.ContainerRegistry import ContainerRegistry +from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.Models.InstanceContainersModel import InstanceContainersModel from cura.QualityManager import QualityManager @@ -61,6 +62,7 @@ class ProfilesModel(InstanceContainersModel): active_extruder = extruder_manager.getActiveExtruderStack() extruder_stacks = extruder_manager.getActiveExtruderStacks() materials = [global_container_stack.material] + if active_extruder in extruder_stacks: extruder_stacks.remove(active_extruder) extruder_stacks = [active_extruder] + extruder_stacks @@ -83,8 +85,30 @@ class ProfilesModel(InstanceContainersModel): if quality.getMetaDataEntry("quality_type") not in quality_type_set: result.append(quality) + # If not qualities are found we dynamically create an empty container with name "Not Supported" + if len(result) == 0: + machine_id = global_container_stack.definition.getId() + material_id = extruder_stacks[0].material.getId() + result.append(self.generateNoSupportedInstanceContainer(machine_id, material_id)) + return result + def generateNoSupportedInstanceContainer(self, machine_id: str, material_id: str): + container = InstanceContainer("not_supported") + container.setName("Not Supported") + container.metaData["quality_type"] = "normal" + container.metaData["setting_version"] = 3 + container.metaData["supported"] = False + container.metaData["type"] = "quality" + container.metaData["weight"] = "0" + container.metaData["material"] = material_id + container.readOnly = True + container.setDirty(False) + container.setCachedValues({}) + definition = ContainerRegistry.getInstance().findDefinitionContainers(id = machine_id) + container.setDefinition(definition) + return container + ## Re-computes the items in this model, and adds the layer height role. def _recomputeItems(self): #Some globals that we can re-use.