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.
This commit is contained in:
Ghostkeeper 2019-07-03 16:51:47 +02:00
parent 5620ee811f
commit 3f29bce263
No known key found for this signature in database
GPG key ID: 86BEF881AE2CF276

View file

@ -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)