From 0934ae70a8533765b03e34b92b9cdec78a50117a Mon Sep 17 00:00:00 2001 From: Arjen Hiemstra Date: Thu, 4 Aug 2016 02:11:35 +0200 Subject: [PATCH] Introduce clearUserContainers and updateQualityChanges methods in ContainerManager They are moved from MachineManager which is really getting too large and complicated. Contributes to CURA-2006 --- cura/Settings/ContainerManager.py | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index a93c7ae96c..ad9c61366f 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -14,6 +14,8 @@ import UM.Platform import UM.MimeTypeDatabase import UM.Logger +from .ExtruderManager import ExtruderManager + from UM.MimeTypeDatabase import MimeTypeNotFoundError from UM.i18n import i18nCatalog @@ -349,6 +351,36 @@ class ContainerManager(QObject): return { "status": "success", "message": "Successfully imported container {0}".format(container.getName()) } + @pyqtSlot(result = bool) + def updateQualityChanges(self): + global_stack = UM.Application.getInstance().getGlobalContainerStack() + + containers_to_merge = [] + + global_quality_changes = global_stack.findContainer(type = "quality_changes") + if not global_quality_changes or global_quality_changes.isReadOnly(): + return False + + containers_to_merge.append((global_quality_changes, global_stack.getTop())) + + for extruder in ExtruderManager.getInstance().getMachineExtruders(global_stack.getId()): + quality_changes = extruder.findContainer(type = "quality_changes") + if not quality_changes or quality_changes.isReadOnly(): + return False + + containers_to_merge.append((quality_changes, extruder.getTop())) + + for merge_into, merge in containers_to_merge: + self._performMerge(merge_into, merge) + + @pyqtSlot() + def clearUserContainers(self): + global_stack = UM.Application.getInstance().getGlobalContainerStack() + + for extruder in ExtruderManager.getInstance().getMachineExtruders(global_stack.getId()): + extruder.getTop().clear() + + global_stack.getTop().clear() # Factory function, used by QML @staticmethod def createContainerManager(engine, js_engine):