BuildPlateModel.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from PyQt5.QtCore import Qt
  2. from UM.Application import Application
  3. from UM.Qt.ListModel import ListModel
  4. from UM.Util import parseBool
  5. from cura.Machines.VariantManager import VariantType
  6. class BuildPlateModel(ListModel):
  7. NameRole = Qt.UserRole + 1
  8. ContainerNodeRole = Qt.UserRole + 2
  9. def __init__(self, parent = None):
  10. super().__init__(parent)
  11. self.addRoleName(self.NameRole, "name")
  12. self.addRoleName(self.ContainerNodeRole, "container_node")
  13. self._application = Application.getInstance()
  14. self._variant_manager = self._application._variant_manager
  15. self._machine_manager = self._application.getMachineManager()
  16. self._machine_manager.globalContainerChanged.connect(self._update)
  17. self._update()
  18. def _update(self):
  19. global_stack = self._machine_manager._global_container_stack
  20. if not global_stack:
  21. self.setItems([])
  22. return
  23. has_variants = parseBool(global_stack.getMetaDataEntry("has_variant_buildplates", False))
  24. if not has_variants:
  25. self.setItems([])
  26. return
  27. variant_dict = self._variant_manager.getVariantNodes(global_stack, variant_type = VariantType.BUILD_PLATE)
  28. item_list = []
  29. for name, variant_node in variant_dict.items():
  30. item = {"name": name,
  31. "container_node": variant_node}
  32. item_list.append(item)
  33. self.setItems(item_list)