Let IntentModel update on a timer

This prevents some double updates
This commit is contained in:
Jaime van Kessel 2020-01-03 14:13:13 +01:00
parent 1fae17ecac
commit 7954f6633f
No known key found for this signature in database
GPG key ID: 3710727397403C91

View file

@ -2,7 +2,7 @@
# Cura is released under the terms of the LGPLv3 or higher.
from typing import Optional, Dict, Any, Set, List
from PyQt5.QtCore import Qt, QObject, pyqtProperty, pyqtSignal
from PyQt5.QtCore import Qt, QObject, pyqtProperty, pyqtSignal, QTimer
import cura.CuraApplication
from UM.Qt.ListModel import ListModel
@ -32,9 +32,14 @@ class IntentModel(ListModel):
self._intent_category = "engineering"
self._update_timer = QTimer()
self._update_timer.setInterval(100)
self._update_timer.setSingleShot(True)
self._update_timer.timeout.connect(self._update)
machine_manager = cura.CuraApplication.CuraApplication.getInstance().getMachineManager()
machine_manager.globalContainerChanged.connect(self._update)
machine_manager.extruderChanged.connect(self._update) # We also need to update if an extruder gets disabled
machine_manager.globalContainerChanged.connect(self._updateDelayed)
machine_manager.extruderChanged.connect(self._updateDelayed) # We also need to update if an extruder gets disabled
ContainerRegistry.getInstance().containerAdded.connect(self._onChanged)
ContainerRegistry.getInstance().containerRemoved.connect(self._onChanged)
self._layer_height_unit = "" # This is cached
@ -52,9 +57,12 @@ class IntentModel(ListModel):
def intentCategory(self) -> str:
return self._intent_category
def _updateDelayed(self):
self._update_timer.start()
def _onChanged(self, container):
if container.getMetaDataEntry("type") == "intent":
self._update()
self._updateDelayed()
def _update(self) -> None:
new_items = [] # type: List[Dict[str, Any]]