mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 06:57:28 -06:00
Simplify task queue for machine error check
CURA-5059
This commit is contained in:
parent
9e0a78929a
commit
c8a882849f
1 changed files with 11 additions and 19 deletions
|
@ -9,6 +9,8 @@ from PyQt5.QtCore import QObject, QTimer, pyqtSignal, pyqtProperty
|
||||||
|
|
||||||
from UM.Application import Application
|
from UM.Application import Application
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
|
from UM.Settings.SettingDefinition import SettingDefinition
|
||||||
|
from UM.Settings.Validator import ValidatorState
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -31,8 +33,7 @@ class MachineErrorChecker(QObject):
|
||||||
self._error_keys = set() # A set of settings keys that have errors
|
self._error_keys = set() # A set of settings keys that have errors
|
||||||
self._error_keys_in_progress = set() # The variable that stores the results of the currently in progress check
|
self._error_keys_in_progress = set() # The variable that stores the results of the currently in progress check
|
||||||
|
|
||||||
self._stacks_to_check = None # a FIFO queue of stacks to check for errors
|
self._stacks_and_keys_to_check = None # a FIFO queue of tuples (stack, key) to check for errors
|
||||||
self._keys_to_check = None # a FIFO queue of setting keys to check for errors
|
|
||||||
|
|
||||||
self._need_to_check = False # Whether we need to schedule a new check or not. This flag is set when a new
|
self._need_to_check = False # Whether we need to schedule a new check or not. This flag is set when a new
|
||||||
# error check needs to take place while there is already one running at the moment.
|
# error check needs to take place while there is already one running at the moment.
|
||||||
|
@ -117,17 +118,17 @@ class MachineErrorChecker(QObject):
|
||||||
Logger.log("i", "No active machine, nothing to check.")
|
Logger.log("i", "No active machine, nothing to check.")
|
||||||
return
|
return
|
||||||
|
|
||||||
self._stacks_to_check = deque([global_stack] + list(global_stack.extruders.values()))
|
# Populate the (stack, key) tuples to check
|
||||||
self._keys_to_check = deque(global_stack.getAllKeys())
|
self._stacks_and_keys_to_check = deque()
|
||||||
|
for stack in [global_stack] + list(global_stack.extruders.values()):
|
||||||
|
for key in stack.getAllKeys():
|
||||||
|
self._stacks_and_keys_to_check.append((stack, key))
|
||||||
|
|
||||||
self._application.callLater(self._checkStack)
|
self._application.callLater(self._checkStack)
|
||||||
self._start_time = time.time()
|
self._start_time = time.time()
|
||||||
Logger.log("d", "New error check scheduled.")
|
Logger.log("d", "New error check scheduled.")
|
||||||
|
|
||||||
def _checkStack(self):
|
def _checkStack(self):
|
||||||
from UM.Settings.SettingDefinition import SettingDefinition
|
|
||||||
from UM.Settings.Validator import ValidatorState
|
|
||||||
|
|
||||||
if self._need_to_check:
|
if self._need_to_check:
|
||||||
Logger.log("d", "Need to check for errors again. Discard the current progress and reschedule a check.")
|
Logger.log("d", "Need to check for errors again. Discard the current progress and reschedule a check.")
|
||||||
self._check_in_progress = False
|
self._check_in_progress = False
|
||||||
|
@ -137,22 +138,13 @@ class MachineErrorChecker(QObject):
|
||||||
self._check_in_progress = True
|
self._check_in_progress = True
|
||||||
|
|
||||||
# If there is nothing to check any more, it means there is no error.
|
# If there is nothing to check any more, it means there is no error.
|
||||||
if not self._stacks_to_check or not self._keys_to_check:
|
if not self._stacks_and_keys_to_check:
|
||||||
# Finish
|
# Finish
|
||||||
self._setResult(False)
|
self._setResult(False)
|
||||||
return
|
return
|
||||||
|
|
||||||
stack = self._stacks_to_check[0]
|
# Get the next stack and key to check
|
||||||
key = self._keys_to_check.popleft()
|
stack, key = self._stacks_and_keys_to_check.popleft()
|
||||||
|
|
||||||
# If there is no key left in this stack, check the next stack later.
|
|
||||||
if not self._keys_to_check:
|
|
||||||
if len(self._stacks_to_check) == 1:
|
|
||||||
stacks = None
|
|
||||||
keys = None
|
|
||||||
else:
|
|
||||||
stack = self._stacks_to_check.popleft()
|
|
||||||
self._keys_to_check = deque(stack.getAllKeys())
|
|
||||||
|
|
||||||
enabled = stack.getProperty(key, "enabled")
|
enabled = stack.getProperty(key, "enabled")
|
||||||
if not enabled:
|
if not enabled:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue