Ensure the model checker doesn't update a gazillion times on multiply

CURA-6237
This commit is contained in:
Jaime van Kessel 2019-02-21 21:09:49 +01:00
parent 41f2a0e222
commit 198ea3c74f

View file

@ -3,7 +3,7 @@
import os import os
from PyQt5.QtCore import QObject, pyqtSlot, pyqtSignal, pyqtProperty from PyQt5.QtCore import QObject, pyqtSlot, pyqtSignal, pyqtProperty, QTimer
from UM.Application import Application from UM.Application import Application
from UM.Extension import Extension from UM.Extension import Extension
@ -30,18 +30,22 @@ class ModelChecker(QObject, Extension):
lifetime = 0, lifetime = 0,
title = catalog.i18nc("@info:title", "3D Model Assistant")) title = catalog.i18nc("@info:title", "3D Model Assistant"))
self._change_timer = QTimer()
self._change_timer.setInterval(200)
self._change_timer.setSingleShot(True)
self._change_timer.timeout.connect(self.onChanged)
Application.getInstance().initializationFinished.connect(self._pluginsInitialized) Application.getInstance().initializationFinished.connect(self._pluginsInitialized)
Application.getInstance().getController().getScene().sceneChanged.connect(self._onChanged) Application.getInstance().getController().getScene().sceneChanged.connect(self._onChanged)
Application.getInstance().globalContainerStackChanged.connect(self._onChanged) Application.getInstance().globalContainerStackChanged.connect(self._onChanged)
## Pass-through to allow UM.Signal to connect with a pyqtSignal.
def _onChanged(self, *args, **kwargs): def _onChanged(self, *args, **kwargs):
# Ignore camera updates. # Ignore camera updates.
if len(args) == 0: if len(args) == 0:
self.onChanged.emit() self._change_timer.start()
return return
if not isinstance(args[0], Camera): if not isinstance(args[0], Camera):
self.onChanged.emit() self._change_timer.start()
## Called when plug-ins are initialized. ## Called when plug-ins are initialized.
# #