diff options
author | Jaime van Kessel <nallath@gmail.com> | 2020-01-03 12:17:54 +0300 |
---|---|---|
committer | Jaime van Kessel <nallath@gmail.com> | 2020-01-03 12:17:54 +0300 |
commit | 5da77472e7e3451e8494691799ef2fcee2203938 (patch) | |
tree | d94613264c564f4a17c1d8f0ec07926f46bc584e /cura/Scene | |
parent | c261065d68b1b62c7188e255e0486487149ccc17 (diff) |
Add some timers to sceneChanged
Diffstat (limited to 'cura/Scene')
-rw-r--r-- | cura/Scene/CuraSceneController.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/cura/Scene/CuraSceneController.py b/cura/Scene/CuraSceneController.py index 91ff26cadc..36d9e68c8f 100644 --- a/cura/Scene/CuraSceneController.py +++ b/cura/Scene/CuraSceneController.py @@ -1,6 +1,6 @@ from UM.Logger import Logger -from PyQt5.QtCore import Qt, pyqtSlot, QObject +from PyQt5.QtCore import Qt, pyqtSlot, QObject, QTimer from PyQt5.QtWidgets import QApplication from UM.Scene.Camera import Camera @@ -26,16 +26,23 @@ class CuraSceneController(QObject): self._last_selected_index = 0 self._max_build_plate = 1 # default + self._change_timer = QTimer() + self._change_timer.setInterval(100) + self._change_timer.setSingleShot(True) + self._change_timer.timeout.connect(self.updateMaxBuildPlate) + Application.getInstance().getController().getScene().sceneChanged.connect(self.updateMaxBuildPlateDelayed) - Application.getInstance().getController().getScene().sceneChanged.connect(self.updateMaxBuildPlate) # it may be a bit inefficient when changing a lot simultaneously - - def updateMaxBuildPlate(self, *args): + def updateMaxBuildPlateDelayed(self, *args): if args: source = args[0] else: source = None + if not isinstance(source, SceneNode) or isinstance(source, Camera): return + self._change_timer.start() + + def updateMaxBuildPlate(self, *args): max_build_plate = self._calcMaxBuildPlate() changed = False if max_build_plate != self._max_build_plate: |