Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLipu Fei <lipu.fei815@gmail.com>2018-01-30 19:32:41 +0300
committerLipu Fei <lipu.fei815@gmail.com>2018-01-30 19:33:34 +0300
commitcfd60e555745b18d2e5e5f8a123fc32131b79339 (patch)
tree038b5434879c353b73a1442bafbac0bca04a8fdb /plugins/UltimakerMachineActions
parent4cf07f5fe6efb435407952133ea5980822083b3e (diff)
Fix Olsson Block binding in UM2 machine settings
CURA-4897
Diffstat (limited to 'plugins/UltimakerMachineActions')
-rw-r--r--plugins/UltimakerMachineActions/UM2UpgradeSelection.py34
-rw-r--r--plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml10
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"; }