From 7221b23457568507cf061b412eff3c48f0d9dda0 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Thu, 21 Feb 2019 20:47:38 +0100 Subject: [PATCH 1/2] Add a property to temporarily disable the material models from updating. This allows the QMl to stop the updating when it's not even visible --- cura/Machines/Models/BaseMaterialsModel.py | 16 +++++++++++++++- .../ConfigurationMenu/CustomConfiguration.qml | 1 + resources/qml/Menus/MaterialMenu.qml | 4 ++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/cura/Machines/Models/BaseMaterialsModel.py b/cura/Machines/Models/BaseMaterialsModel.py index 212e4fcf1e..01960683a7 100644 --- a/cura/Machines/Models/BaseMaterialsModel.py +++ b/cura/Machines/Models/BaseMaterialsModel.py @@ -16,6 +16,7 @@ from cura.Machines.MaterialNode import MaterialNode class BaseMaterialsModel(ListModel): extruderPositionChanged = pyqtSignal() + enabledChanged = pyqtSignal() def __init__(self, parent = None): super().__init__(parent) @@ -60,6 +61,7 @@ class BaseMaterialsModel(ListModel): self._available_materials = None # type: Optional[Dict[str, MaterialNode]] self._favorite_ids = set() # type: Set[str] + self._enabled = True def _updateExtruderStack(self): global_stack = self._machine_manager.activeMachine @@ -86,6 +88,18 @@ class BaseMaterialsModel(ListModel): def extruderPosition(self) -> int: return self._extruder_position + def setEnabled(self, enabled): + if self._enabled != enabled: + self._enabled = enabled + if self._enabled: + # ensure the data is there again. + self._update() + self.enabledChanged.emit() + + @pyqtProperty(bool, fset=setEnabled, notify=enabledChanged) + def enabled(self): + return self._enabled + ## This is an abstract method that needs to be implemented by the specific # models themselves. def _update(self): @@ -97,7 +111,7 @@ class BaseMaterialsModel(ListModel): def _canUpdate(self): global_stack = self._machine_manager.activeMachine - if global_stack is None: + if global_stack is None or not self._enabled: return False extruder_position = str(self._extruder_position) diff --git a/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml b/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml index 29e9cd6353..d05ef09c92 100644 --- a/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml +++ b/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml @@ -254,6 +254,7 @@ Item menu: Cura.MaterialMenu { extruderIndex: Cura.ExtruderManager.activeExtruderIndex + updateModels: materialSelection.visible } } } diff --git a/resources/qml/Menus/MaterialMenu.qml b/resources/qml/Menus/MaterialMenu.qml index 0116169ed6..ba35a160ba 100644 --- a/resources/qml/Menus/MaterialMenu.qml +++ b/resources/qml/Menus/MaterialMenu.qml @@ -15,22 +15,26 @@ Menu property int extruderIndex: 0 property string currentRootMaterialId: Cura.MachineManager.currentRootMaterialId[extruderIndex] property string activeMaterialId: Cura.MachineManager.allActiveMaterialIds[Cura.ExtruderManager.extruderIds[extruderIndex]] + property bool updateModels: true Cura.FavoriteMaterialsModel { id: favoriteMaterialsModel extruderPosition: menu.extruderIndex + enabled: updateModels } Cura.GenericMaterialsModel { id: genericMaterialsModel extruderPosition: menu.extruderIndex + enabled: updateModels } Cura.MaterialBrandsModel { id: brandModel extruderPosition: menu.extruderIndex + enabled: updateModels } MenuItem From 69d3813f987ae9c50b0e4fb02aa921c02784e952 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 22 Feb 2019 11:19:16 +0100 Subject: [PATCH 2/2] No longer disable viewMenu when user loaded presliced g-code --- resources/qml/Menus/ViewMenu.qml | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/qml/Menus/ViewMenu.qml b/resources/qml/Menus/ViewMenu.qml index 217975c803..59e6dd24d0 100644 --- a/resources/qml/Menus/ViewMenu.qml +++ b/resources/qml/Menus/ViewMenu.qml @@ -11,7 +11,6 @@ Menu { title: catalog.i18nc("@title:menu menubar:toplevel", "&View") id: base - enabled: !PrintInformation.preSliced property var multiBuildPlateModel: CuraApplication.getMultiBuildPlateModel()