From 2e0205f174e3f778943f08978e051eaa752e283c Mon Sep 17 00:00:00 2001 From: Arjen Hiemstra Date: Wed, 25 May 2016 11:21:33 +0200 Subject: [PATCH] Store the global container stack as an instance property This reduces the amount of function calls and makes it simpler to check for container existance --- cura/MachineManagerModel.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/cura/MachineManagerModel.py b/cura/MachineManagerModel.py index 0f45f0a7b1..b0fce98311 100644 --- a/cura/MachineManagerModel.py +++ b/cura/MachineManagerModel.py @@ -8,7 +8,10 @@ import UM.Settings class MachineManagerModel(QObject): def __init__(self, parent = None): super().__init__(parent) + + self._global_container_stack = None Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged) + self._onGlobalContainerChanged() ## When the global container is changed, active material probably needs to be updated. self.globalContainerChanged.connect(self.activeMaterialChanged) @@ -31,10 +34,16 @@ class MachineManagerModel(QObject): activeQualityChanged = pyqtSignal() def _onGlobalContainerChanged(self): - Preferences.getInstance().setValue("cura/active_machine", Application.getInstance().getGlobalContainerStack().getId()) - Application.getInstance().getGlobalContainerStack().containersChanged.connect(self._onInstanceContainersChanged) + if self._global_container_stack: + self._global_container_stack.containersChanged.disconnect(self._onInstanceContainersChanged) + + self._global_container_stack = Application.getInstance().getGlobalContainerStack() self.globalContainerChanged.emit() + if self._global_container_stack: + Preferences.getInstance().setValue("cura/active_machine", self._global_container_stack.getId()) + self._global_container_stack.containersChanged.connect(self._onInstanceContainersChanged) + def _onInstanceContainersChanged(self, container): container_type = container.getMetaDataEntry("type") if container_type == "material":