Browse Source

List intents per category

This is the naive one. We want to list the default intents multiple times, once for every quality level.

Contributes to issue CURA-6597.
Ghostkeeper 5 years ago
parent
commit
3f29bce263
1 changed files with 15 additions and 3 deletions
  1. 15 3
      cura/Machines/Models/IntentModel.py

+ 15 - 3
cura/Machines/Models/IntentModel.py

@@ -4,11 +4,10 @@
 from typing import Optional
 from PyQt5.QtCore import QObject
 from UM.Qt.ListModel import ListModel
-from PyQt5.QtCore import Qt
+from PyQt5.QtCore import Qt, pyqtProperty, pyqtSignal
 
 from UM.Settings.ContainerRegistry import ContainerRegistry
 
-
 class IntentModel(ListModel):
     NameRole = Qt.UserRole + 1
     IdRole = Qt.UserRole + 2
@@ -21,18 +20,31 @@ class IntentModel(ListModel):
         self.addRoleName(self.IdRole, "id")
         self.addRoleName(self.ContainerRole, "container")
 
+        self._intent_category = "engineering"
+
         ContainerRegistry.getInstance().containerAdded.connect(self._onChanged)
         ContainerRegistry.getInstance().containerRemoved.connect(self._onChanged)
 
         self._update()
 
+    _intent_category_changed = pyqtSignal()
+
+    def setIntentCategory(self, new_category: str) -> None:
+        if self._intent_category != new_category:
+            self._intent_category = new_category
+            self._intent_category_changed.emit()
+
+    @pyqtProperty(str, fset=setIntentCategory, notify=_intent_category_changed)
+    def intentCategory(self) -> str:
+        return self._intent_category
+
     def _onChanged(self, container):
         if container.getMetaDataEntry("type") == "intent":
             self._update()
 
     def _update(self) -> None:
         new_items = []
-        for container in ContainerRegistry.getInstance().findInstanceContainers(type="intent"):
+        for container in ContainerRegistry.getInstance().findInstanceContainers(type = "intent", intent_category = self._intent_category):
             new_items.append({"name": container.getName(), "id": container.getId(), "container": container})
 
         self.setItems(new_items)