IntentModel.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. # Copyright (c) 2019 Ultimaker B.V.
  2. # Cura is released under the terms of the LGPLv3 or higher.
  3. from typing import Optional
  4. from PyQt5.QtCore import QObject
  5. from UM.Qt.ListModel import ListModel
  6. from PyQt5.QtCore import Qt
  7. from UM.Settings.ContainerRegistry import ContainerRegistry
  8. class IntentModel(ListModel):
  9. NameRole = Qt.UserRole + 1
  10. IdRole = Qt.UserRole + 2
  11. def __init__(self, parent: Optional[QObject] = None) -> None:
  12. super().__init__(parent)
  13. self.addRoleName(self.NameRole, "name")
  14. self.addRoleName(self.IdRole, "id")
  15. ContainerRegistry.getInstance().containerAdded.connect(self._onChanged)
  16. ContainerRegistry.getInstance().containerRemoved.connect(self._onChanged)
  17. self._update()
  18. def _onChanged(self, container):
  19. if container.getMetaDataEntry("type") == "intent":
  20. self._update()
  21. def _update(self) -> None:
  22. new_items = []
  23. for container in ContainerRegistry.getInstance().findInstanceContainers(type="intent"):
  24. new_items.append({"name": container.getName(), "id": container.getId()})
  25. self.setItems(new_items)