From 3cf2e1969202694d802448f2e93a8a18fb4ddc91 Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Mon, 20 May 2019 10:59:34 +0200 Subject: [PATCH 1/3] Put override logic in Python instead of QML Contributes to CL-1259 --- .../UM3NetworkPrinting/src/ConfigurationChangeModel.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/plugins/UM3NetworkPrinting/src/ConfigurationChangeModel.py b/plugins/UM3NetworkPrinting/src/ConfigurationChangeModel.py index ef8a212b76..6645115fbc 100644 --- a/plugins/UM3NetworkPrinting/src/ConfigurationChangeModel.py +++ b/plugins/UM3NetworkPrinting/src/ConfigurationChangeModel.py @@ -3,11 +3,16 @@ from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, pyqtSlot +BLOCKING_CHANGE_TYPES = [ + "material_insert", "buildplate_change" +] + class ConfigurationChangeModel(QObject): def __init__(self, type_of_change: str, index: int, target_name: str, origin_name: str) -> None: super().__init__() self._type_of_change = type_of_change # enum = ["material", "print_core_change"] + self._can_override = False if self._type_of_change in BLOCKING_CHANGE_TYPES else True self._index = index self._target_name = target_name self._origin_name = origin_name @@ -27,3 +32,7 @@ class ConfigurationChangeModel(QObject): @pyqtProperty(str, constant = True) def originName(self) -> str: return self._origin_name + + @pyqtProperty(bool, constant = True) + def canOverride(self) -> bool: + return self._can_override \ No newline at end of file From 6dc43f9ed1a51d5811c01d316726ea3149c2ff7c Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Mon, 20 May 2019 10:59:51 +0200 Subject: [PATCH 2/3] Hide override button if it can't be overridden Contributes to CL-1259 --- .../resources/qml/MonitorConfigOverrideDialog.qml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml index 1c61504103..d380915633 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml @@ -32,18 +32,23 @@ UM.Dialog } visible: { + // Don't show the button if we're missing a printer or print job if (!printer || !printer.activePrintJob) { - return true + return false } - var canOverride = false + // Check each required change... for (var i = 0; i < printer.activePrintJob.configurationChanges.length; i++) { var change = printer.activePrintJob.configurationChanges[i] - canOverride = canOverride || change.typeOfChange === "material_change"; + // If that type of change is in the list of blocking changes, hide the button + if (!change.canOverride) + { + return false + } } - return canOverride + return true } }, Button From 2a80a8d0dbc78bbf122d0168dc0a62edc714bcc5 Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Mon, 20 May 2019 15:12:08 +0200 Subject: [PATCH 3/3] Simplify can_override conditional Contributes to CL-1259 --- plugins/UM3NetworkPrinting/src/ConfigurationChangeModel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/UM3NetworkPrinting/src/ConfigurationChangeModel.py b/plugins/UM3NetworkPrinting/src/ConfigurationChangeModel.py index 6645115fbc..7136d8b93f 100644 --- a/plugins/UM3NetworkPrinting/src/ConfigurationChangeModel.py +++ b/plugins/UM3NetworkPrinting/src/ConfigurationChangeModel.py @@ -12,7 +12,7 @@ class ConfigurationChangeModel(QObject): super().__init__() self._type_of_change = type_of_change # enum = ["material", "print_core_change"] - self._can_override = False if self._type_of_change in BLOCKING_CHANGE_TYPES else True + self._can_override = self._type_of_change not in BLOCKING_CHANGE_TYPES self._index = index self._target_name = target_name self._origin_name = origin_name