From 6ba70f3425dec0391e56871b4133b144854ce898 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 4 Jul 2019 11:04:44 +0200 Subject: [PATCH] Rewrite IntentModel to return quality types rather than actual profiles We don't want the profiles, because that'd be specific to one extruder. We want the quality types and intent categories as tuples again. Contributes to issue CURA-6597. --- cura/Machines/Models/IntentModel.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/cura/Machines/Models/IntentModel.py b/cura/Machines/Models/IntentModel.py index 26467b1d90..b9839aa2ad 100644 --- a/cura/Machines/Models/IntentModel.py +++ b/cura/Machines/Models/IntentModel.py @@ -7,18 +7,18 @@ from UM.Qt.ListModel import ListModel from PyQt5.QtCore import Qt, pyqtProperty, pyqtSignal from UM.Settings.ContainerRegistry import ContainerRegistry +from cura.Settings.IntentManager import IntentManager +import cura.CuraApplication class IntentModel(ListModel): NameRole = Qt.UserRole + 1 - IdRole = Qt.UserRole + 2 - ContainerRole = Qt.UserRole + 3 + QualityTypeRole = Qt.UserRole + 2 def __init__(self, parent: Optional[QObject] = None) -> None: super().__init__(parent) self.addRoleName(self.NameRole, "name") - self.addRoleName(self.IdRole, "id") - self.addRoleName(self.ContainerRole, "container") + self.addRoleName(self.QualityTypeRole, "quality_type") self._intent_category = "engineering" @@ -34,7 +34,7 @@ class IntentModel(ListModel): self._intent_category = new_category self._intent_category_changed.emit() - @pyqtProperty(str, fset=setIntentCategory, notify=_intent_category_changed) + @pyqtProperty(str, fset = setIntentCategory, notify = _intent_category_changed) def intentCategory(self) -> str: return self._intent_category @@ -44,7 +44,12 @@ class IntentModel(ListModel): def _update(self) -> None: new_items = [] - for container in ContainerRegistry.getInstance().findInstanceContainers(type = "intent", intent_category = self._intent_category): - new_items.append({"name": container.getName(), "id": container.getId(), "container": container}) + application = cura.CuraApplication.CuraApplication.getInstance() + quality_manager = application.getQualityManager() + global_stack = application.getGlobalContainerStack() + + for intent_category, quality_type in IntentManager.getInstance().currentAvailableIntents(): + if intent_category == self._intent_category: + new_items.append({"name": quality_manager.getQualityGroups(global_stack)[quality_type].name, "quality_type": quality_type}) self.setItems(new_items)