diff --git a/cura/MachineManagerModel.py b/cura/MachineManagerModel.py index 4bd42c9c9d..d34e392720 100644 --- a/cura/MachineManagerModel.py +++ b/cura/MachineManagerModel.py @@ -41,9 +41,15 @@ class MachineManagerModel(QObject): activeVariantChanged = pyqtSignal() activeQualityChanged = pyqtSignal() + globalPropertyChanged = pyqtSignal() # Emitted whenever a property inside global container is changed. + + def _onGlobalPropertyChanged(self, key, property_name): + self.globalPropertyChanged.emit() + def _onGlobalContainerChanged(self): if self._global_container_stack: self._global_container_stack.containersChanged.disconnect(self._onInstanceContainersChanged) + self._global_container_stack.propertyChanged.disconnect(self._onGlobalPropertyChanged) self._global_container_stack = Application.getInstance().getGlobalContainerStack() self.globalContainerChanged.emit() @@ -51,6 +57,7 @@ class MachineManagerModel(QObject): if self._global_container_stack: Preferences.getInstance().setValue("cura/active_machine", self._global_container_stack.getId()) self._global_container_stack.containersChanged.connect(self._onInstanceContainersChanged) + self._global_container_stack.propertyChanged.connect(self._onGlobalPropertyChanged) def _onInstanceContainersChanged(self, container): container_type = container.getMetaDataEntry("type") @@ -160,6 +167,21 @@ class MachineManagerModel(QObject): return unique_name + @pyqtSlot() + def clearUserSettings(self): + if not self._global_container_stack: + return + user_settings = self._global_container_stack.getTop() + user_settings.clear() + + @pyqtProperty(bool, notify = globalPropertyChanged) + def hasUserSettings(self): + if not self._global_container_stack: + return + + user_settings = self._global_container_stack.getTop().findInstances(**{}) + return len(user_settings) != 0 + @pyqtProperty(str, notify = globalContainerChanged) def activeMachineName(self): if self._global_container_stack: diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index f3bce7b993..6dd851c3d5 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -6,6 +6,7 @@ pragma Singleton import QtQuick 2.2 import QtQuick.Controls 1.1 import UM 1.1 as UM +import Cura 1.0 as Cura Item { @@ -117,9 +118,9 @@ Item Action { id: resetProfileAction; - enabled: UM.ActiveProfile.valid && UM.ActiveProfile.hasCustomisedValues + enabled: Cura.MachineManager.hasUserSettings text: catalog.i18nc("@action:inmenu menubar:profile","&Reload Current Profile"); - onTriggered: UM.ActiveProfile.discardChanges(); + onTriggered: Cura.MachineManager.clearUserSettings(); } Action