From c0fc0a7eba1b44c2cf94d964f7d0c5c641a0a1aa Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 9 Jul 2018 17:06:05 +0200 Subject: [PATCH] Disable material if not compatible Similar to how it's displayed in the printer. Contributes to issue CURA-5460. --- cura/Machines/Models/BaseMaterialsModel.py | 4 +++- cura/Machines/Models/BrandMaterialsModel.py | 3 ++- cura/Machines/Models/GenericMaterialsModel.py | 5 +++-- resources/qml/Menus/MaterialMenu.qml | 1 + resources/qml/SidebarHeader.qml | 6 +++--- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/cura/Machines/Models/BaseMaterialsModel.py b/cura/Machines/Models/BaseMaterialsModel.py index 4759c8b5b0..4d0b9eea36 100644 --- a/cura/Machines/Models/BaseMaterialsModel.py +++ b/cura/Machines/Models/BaseMaterialsModel.py @@ -21,10 +21,11 @@ class BaseMaterialsModel(ListModel): MaterialRole = Qt.UserRole + 5 ColorRole = Qt.UserRole + 6 ContainerNodeRole = Qt.UserRole + 7 + CompatibleRole = Qt.UserRole + 8 extruderPositionChanged = pyqtSignal() - def __init__(self, parent = None): + def __init__(self, parent = None) -> None: super().__init__(parent) self._application = Application.getInstance() self._machine_manager = self._application.getMachineManager() @@ -36,6 +37,7 @@ class BaseMaterialsModel(ListModel): self.addRoleName(self.MaterialRole, "material") self.addRoleName(self.ColorRole, "color_name") self.addRoleName(self.ContainerNodeRole, "container_node") + self.addRoleName(self.CompatibleRole, "compatible") self._extruder_position = 0 self._extruder_stack = None diff --git a/cura/Machines/Models/BrandMaterialsModel.py b/cura/Machines/Models/BrandMaterialsModel.py index 236f105d12..5adc3d10fd 100644 --- a/cura/Machines/Models/BrandMaterialsModel.py +++ b/cura/Machines/Models/BrandMaterialsModel.py @@ -122,7 +122,8 @@ class BrandMaterialsModel(ListModel): "brand": metadata["brand"], "material": metadata["material"], "color_name": metadata["color_name"], - "container_node": container_node + "container_node": container_node, + "compatible": metadata.get("compatible", "unknown") } brand_group_dict[brand][material_type].append(item) diff --git a/cura/Machines/Models/GenericMaterialsModel.py b/cura/Machines/Models/GenericMaterialsModel.py index 2fac919f3e..48f4c4ea50 100644 --- a/cura/Machines/Models/GenericMaterialsModel.py +++ b/cura/Machines/Models/GenericMaterialsModel.py @@ -19,7 +19,7 @@ class GenericMaterialsModel(BaseMaterialsModel): self._material_manager.materialsUpdated.connect(self._update) #Update when the list of materials changes. self._update() - def _update(self): + def _update(self) -> None: Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) global_stack = self._machine_manager.activeMachine @@ -51,7 +51,8 @@ class GenericMaterialsModel(BaseMaterialsModel): "brand": metadata["brand"], "material": metadata["material"], "color_name": metadata["color_name"], - "container_node": container_node + "container_node": container_node, + "compatible": metadata.get("compatible", "unknown") } item_list.append(item) diff --git a/resources/qml/Menus/MaterialMenu.qml b/resources/qml/Menus/MaterialMenu.qml index 64b3130724..c2de8f31e9 100644 --- a/resources/qml/Menus/MaterialMenu.qml +++ b/resources/qml/Menus/MaterialMenu.qml @@ -22,6 +22,7 @@ Menu text: model.name checkable: true checked: model.root_material_id == Cura.MachineManager.currentRootMaterialId[extruderIndex] + enabled: model.compatible exclusiveGroup: group onTriggered: { diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index 0e5ac852e8..d39e2b9416 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -1,5 +1,5 @@ -// Copyright (c) 2017 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. +//Copyright (c) 2018 Ultimaker B.V. +//Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 import QtQuick.Controls 1.1 @@ -402,7 +402,7 @@ Column property var valueError: !isMaterialSupported() property var valueWarning: ! Cura.MachineManager.isActiveQualitySupported - function isMaterialSupported () + function isMaterialSupported() { if (!hasActiveExtruder) {