diff options
author | Lipu Fei <lipu.fei815@gmail.com> | 2018-01-30 19:32:41 +0300 |
---|---|---|
committer | Lipu Fei <lipu.fei815@gmail.com> | 2018-01-30 19:33:34 +0300 |
commit | cfd60e555745b18d2e5e5f8a123fc32131b79339 (patch) | |
tree | 038b5434879c353b73a1442bafbac0bca04a8fdb /plugins/UltimakerMachineActions | |
parent | 4cf07f5fe6efb435407952133ea5980822083b3e (diff) |
Fix Olsson Block binding in UM2 machine settings
CURA-4897
Diffstat (limited to 'plugins/UltimakerMachineActions')
-rw-r--r-- | plugins/UltimakerMachineActions/UM2UpgradeSelection.py | 34 | ||||
-rw-r--r-- | plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml | 10 |
2 files changed, 33 insertions, 11 deletions
diff --git a/plugins/UltimakerMachineActions/UM2UpgradeSelection.py b/plugins/UltimakerMachineActions/UM2UpgradeSelection.py index 1bf0b98217..0fd31ec445 100644 --- a/plugins/UltimakerMachineActions/UM2UpgradeSelection.py +++ b/plugins/UltimakerMachineActions/UM2UpgradeSelection.py @@ -2,7 +2,6 @@ # Uranium is released under the terms of the LGPLv3 or higher. from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Settings.InstanceContainer import InstanceContainer from cura.MachineAction import MachineAction from PyQt5.QtCore import pyqtSlot, pyqtSignal, pyqtProperty @@ -11,8 +10,6 @@ from UM.Application import Application from UM.Util import parseBool catalog = i18nCatalog("cura") -import UM.Settings.InstanceContainer - ## The Ultimaker 2 can have a few revisions & upgrades. class UM2UpgradeSelection(MachineAction): @@ -22,18 +19,29 @@ class UM2UpgradeSelection(MachineAction): self._container_registry = ContainerRegistry.getInstance() + self._current_global_stack = None + + from cura.CuraApplication import CuraApplication + CuraApplication.getInstance().globalContainerStackChanged.connect(self._onGlobalStackChanged) + self._reset() + def _reset(self): self.hasVariantsChanged.emit() - hasVariantsChanged = pyqtSignal() + def _onGlobalStackChanged(self): + if self._current_global_stack: + self._current_global_stack.metaDataChanged.disconnect(self._onGlobalStackMetaDataChanged) - @pyqtProperty(bool, notify = hasVariantsChanged) - def hasVariants(self): - global_container_stack = Application.getInstance().getGlobalContainerStack() - if global_container_stack: - return parseBool(global_container_stack.getMetaDataEntry("has_variants", "false")) + self._current_global_stack = Application.getInstance().getGlobalContainerStack() + if self._current_global_stack: + self._current_global_stack.metaDataChanged.connect(self._onGlobalStackMetaDataChanged) + self._reset() + + def _onGlobalStackMetaDataChanged(self): + self._reset() + + hasVariantsChanged = pyqtSignal() - @pyqtSlot(bool) def setHasVariants(self, has_variants = True): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: @@ -62,3 +70,9 @@ class UM2UpgradeSelection(MachineAction): global_container_stack.extruders["0"].variant = ContainerRegistry.getInstance().getEmptyInstanceContainer() Application.getInstance().globalContainerStackChanged.emit() + self._reset() + + @pyqtProperty(bool, fset = setHasVariants, notify = hasVariantsChanged) + def hasVariants(self): + if self._current_global_stack: + return parseBool(self._current_global_stack.getMetaDataEntry("has_variants", "false")) diff --git a/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml b/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml index 988c9d6128..793f3f00a8 100644 --- a/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml +++ b/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml @@ -13,6 +13,7 @@ import Cura 1.0 as Cura Cura.MachineAction { anchors.fill: parent; + Item { id: upgradeSelectionMachineAction @@ -39,12 +40,19 @@ Cura.MachineAction CheckBox { + id: olssonBlockCheckBox anchors.top: pageDescription.bottom anchors.topMargin: UM.Theme.getSize("default_margin").height text: catalog.i18nc("@label", "Olsson Block") checked: manager.hasVariants - onClicked: manager.setHasVariants(checked) + onClicked: manager.hasVariants = checked + + Connections + { + target: manager + onHasVariantsChanged: olssonBlockCheckBox.checked = manager.hasVariants + } } UM.I18nCatalog { id: catalog; name: "cura"; } |