mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-08 23:46:22 -06:00
All error checks now use the timer instead of re-checking multiple times.
This significantly speeds up all setting / container changes for multi extrusion machines CURA-3780
This commit is contained in:
parent
6493bcd5b5
commit
19bc6bb710
2 changed files with 11 additions and 9 deletions
|
@ -5,7 +5,8 @@ import os.path
|
||||||
|
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
|
||||||
from PyQt5.QtCore import pyqtProperty, pyqtSlot, pyqtSignal
|
from PyQt5.QtCore import pyqtProperty, pyqtSignal
|
||||||
|
from UM.FlameProfiler import pyqtSlot
|
||||||
|
|
||||||
from UM.Decorators import override
|
from UM.Decorators import override
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
|
|
|
@ -45,6 +45,11 @@ class MachineManager(QObject):
|
||||||
self._active_container_stack = None # type: ContainerStack
|
self._active_container_stack = None # type: ContainerStack
|
||||||
self._global_container_stack = None # type: ContainerStack
|
self._global_container_stack = None # type: ContainerStack
|
||||||
|
|
||||||
|
self._error_check_timer = QTimer()
|
||||||
|
self._error_check_timer.setInterval(250)
|
||||||
|
self._error_check_timer.setSingleShot(True)
|
||||||
|
self._error_check_timer.timeout.connect(self._updateStacksHaveErrors)
|
||||||
|
|
||||||
Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged)
|
Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged)
|
||||||
## When the global container is changed, active material probably needs to be updated.
|
## When the global container is changed, active material probably needs to be updated.
|
||||||
self.globalContainerChanged.connect(self.activeMaterialChanged)
|
self.globalContainerChanged.connect(self.activeMaterialChanged)
|
||||||
|
@ -94,10 +99,7 @@ class MachineManager(QObject):
|
||||||
self._material_incompatible_message = Message(catalog.i18nc("@info:status",
|
self._material_incompatible_message = Message(catalog.i18nc("@info:status",
|
||||||
"The selected material is incompatible with the selected machine or configuration."))
|
"The selected material is incompatible with the selected machine or configuration."))
|
||||||
|
|
||||||
self._error_check_timer = QTimer()
|
|
||||||
self._error_check_timer.setInterval(250)
|
|
||||||
self._error_check_timer.setSingleShot(True)
|
|
||||||
self._error_check_timer.timeout.connect(self._updateStacksHaveErrors)
|
|
||||||
|
|
||||||
globalContainerChanged = pyqtSignal() # Emitted whenever the global stack is changed (ie: when changing between printers, changing a global profile, but not when changing a value)
|
globalContainerChanged = pyqtSignal() # Emitted whenever the global stack is changed (ie: when changing between printers, changing a global profile, but not when changing a value)
|
||||||
activeMaterialChanged = pyqtSignal()
|
activeMaterialChanged = pyqtSignal()
|
||||||
|
@ -290,8 +292,7 @@ class MachineManager(QObject):
|
||||||
|
|
||||||
quality = self._global_container_stack.quality
|
quality = self._global_container_stack.quality
|
||||||
quality.nameChanged.connect(self._onQualityNameChanged)
|
quality.nameChanged.connect(self._onQualityNameChanged)
|
||||||
|
self._error_check_timer.start()
|
||||||
self._updateStacksHaveErrors()
|
|
||||||
|
|
||||||
## Update self._stacks_valid according to _checkStacksForErrors and emit if change.
|
## Update self._stacks_valid according to _checkStacksForErrors and emit if change.
|
||||||
def _updateStacksHaveErrors(self):
|
def _updateStacksHaveErrors(self):
|
||||||
|
@ -308,7 +309,7 @@ class MachineManager(QObject):
|
||||||
if not self._active_container_stack:
|
if not self._active_container_stack:
|
||||||
self._active_container_stack = self._global_container_stack
|
self._active_container_stack = self._global_container_stack
|
||||||
|
|
||||||
self._updateStacksHaveErrors()
|
self._error_check_timer.start()
|
||||||
|
|
||||||
if old_active_container_stack != self._active_container_stack:
|
if old_active_container_stack != self._active_container_stack:
|
||||||
# Many methods and properties related to the active quality actually depend
|
# Many methods and properties related to the active quality actually depend
|
||||||
|
@ -330,7 +331,7 @@ class MachineManager(QObject):
|
||||||
self.activeVariantChanged.emit()
|
self.activeVariantChanged.emit()
|
||||||
self.activeMaterialChanged.emit()
|
self.activeMaterialChanged.emit()
|
||||||
|
|
||||||
self._updateStacksHaveErrors()
|
self._error_check_timer.start()
|
||||||
|
|
||||||
def _onPropertyChanged(self, key, property_name):
|
def _onPropertyChanged(self, key, property_name):
|
||||||
if property_name == "value":
|
if property_name == "value":
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue