# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from typing import Any, Dict, Optional from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal ## Data struct to group several quality changes instance containers together. # # Each group represents one "custom profile" as the user sees it, which # contains an instance container for the global stack and one instance # container per extruder. class QualityChangesGroup(QObject): def __init__(self, name: str, quality_type: str, intent_category: str, parent: Optional["QObject"] = None) -> None: super().__init__(parent) self._name = name self.quality_type = quality_type self.intent_category = intent_category self.is_available = False self.metadata_for_global = {} # type: Dict[str, Any] self.metadata_per_extruder = {} # type: Dict[int, Dict[str, Any]] nameChanged = pyqtSignal() def setName(self, name: str) -> None: if self._name != name: self._name = name self.nameChanged.emit() @pyqtProperty(str, fset = setName, notify = nameChanged) def name(self) -> str: return self._name def __str__(self) -> str: return "{class_name}[{name}, available = {is_available}]".format(class_name = self.__class__.__name__, name = self.name, is_available = self.is_available)