QualityChangesGroup.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. # Copyright (c) 2019 Ultimaker B.V.
  2. # Cura is released under the terms of the LGPLv3 or higher.
  3. from typing import Any, Dict, Optional
  4. from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal
  5. ## Data struct to group several quality changes instance containers together.
  6. #
  7. # Each group represents one "custom profile" as the user sees it, which
  8. # contains an instance container for the global stack and one instance
  9. # container per extruder.
  10. class QualityChangesGroup(QObject):
  11. def __init__(self, name: str, quality_type: str, intent_category: str, parent: Optional["QObject"] = None) -> None:
  12. super().__init__(parent)
  13. self._name = name
  14. self.quality_type = quality_type
  15. self.intent_category = intent_category
  16. self.is_available = False
  17. self.metadata_for_global = {} # type: Dict[str, Any]
  18. self.metadata_per_extruder = {} # type: Dict[int, Dict[str, Any]]
  19. nameChanged = pyqtSignal()
  20. def setName(self, name: str) -> None:
  21. if self._name != name:
  22. self._name = name
  23. self.nameChanged.emit()
  24. @pyqtProperty(str, fset = setName, notify = nameChanged)
  25. def name(self) -> str:
  26. return self._name
  27. def __str__(self) -> str:
  28. return "{class_name}[{name}, available = {is_available}]".format(class_name = self.__class__.__name__, name = self.name, is_available = self.is_available)