From 511895337394992ad9d4fa293b98cc1c9eed1a1f Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Thu, 21 Feb 2019 18:30:23 +0100 Subject: [PATCH] Put a change timer on the globalStacks model This decreases the time that a first thing is shown on the main screen (as the creation of the global stack model doesn't block the UI anymore) --- cura/GlobalStacksModel.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/cura/GlobalStacksModel.py b/cura/GlobalStacksModel.py index ea8a9c7961..d67d283a1c 100644 --- a/cura/GlobalStacksModel.py +++ b/cura/GlobalStacksModel.py @@ -3,7 +3,7 @@ from UM.Qt.ListModel import ListModel -from PyQt5.QtCore import pyqtProperty, Qt, pyqtSignal +from PyQt5.QtCore import pyqtProperty, Qt, pyqtSignal, QTimer from cura.PrinterOutputDevice import ConnectionType from cura.Settings.CuraContainerRegistry import CuraContainerRegistry @@ -26,18 +26,26 @@ class GlobalStacksModel(ListModel): self.addRoleName(self.MetaDataRole, "metadata") self._container_stacks = [] + self._change_timer = QTimer() + self._change_timer.setInterval(200) + self._change_timer.setSingleShot(True) + self._change_timer.timeout.connect(self._update) + # Listen to changes CuraContainerRegistry.getInstance().containerAdded.connect(self._onContainerChanged) CuraContainerRegistry.getInstance().containerMetaDataChanged.connect(self._onContainerChanged) CuraContainerRegistry.getInstance().containerRemoved.connect(self._onContainerChanged) self._filter_dict = {} - self._update() + self._updateDelayed() ## Handler for container added/removed events from registry def _onContainerChanged(self, container): # We only need to update when the added / removed container GlobalStack if isinstance(container, GlobalStack): - self._update() + self._updateDelayed() + + def _updateDelayed(self): + self._change_timer.start() def _update(self) -> None: items = []