ProfilesPageModel.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435
  1. # Copyright (c) 2016 Ultimaker B.V.
  2. # Cura is released under the terms of the AGPLv3 or higher.
  3. from UM.Application import Application
  4. from UM.Settings.ContainerRegistry import ContainerRegistry
  5. from cura.QualityManager import QualityManager
  6. from cura.Settings.ProfilesModel import ProfilesModel
  7. ## QML Model for listing the current list of valid quality and quality changes profiles.
  8. #
  9. class ProfilesPageModel(ProfilesModel):
  10. def __init__(self, parent = None):
  11. super().__init__(parent)
  12. ## Fetch the list of containers to display.
  13. #
  14. # See UM.Settings.Models.InstanceContainersModel._fetchInstanceContainers().
  15. def _fetchInstanceContainers(self):
  16. # Fetch the list of qualities
  17. quality_list = super()._fetchInstanceContainers()
  18. # Fetch the list of quality changes.
  19. quality_manager = QualityManager.getInstance()
  20. application = Application.getInstance()
  21. machine_definition = quality_manager.getParentMachineDefinition(application.getGlobalContainerStack().getBottom())
  22. if machine_definition.getMetaDataEntry("has_machine_quality"):
  23. definition_id = machine_definition.getId()
  24. else:
  25. definition_id = "fdmprinter"
  26. filter_dict = { "type": "quality_changes", "extruder": None, "definition": definition_id }
  27. quality_changes_list = ContainerRegistry.getInstance().findInstanceContainers(**filter_dict)
  28. return quality_list + quality_changes_list