FlatCAMWorker.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from PyQt4 import QtCore
  2. #import FlatCAMApp
  3. class Worker(QtCore.QObject):
  4. """
  5. Implements a queue of tasks to be carried out in order
  6. in a single independent thread.
  7. """
  8. def __init__(self, app, name=None):
  9. super(Worker, self).__init__()
  10. self.app = app
  11. self.name = name
  12. def run(self):
  13. self.app.log.debug("Worker Started!")
  14. # Tasks are queued in the event listener.
  15. self.app.worker_task.connect(self.do_worker_task)
  16. def do_worker_task(self, task):
  17. self.app.log.debug("Running task: %s" % str(task))
  18. # 'worker_name' property of task allows to target
  19. # specific worker.
  20. if ('worker_name' in task and task['worker_name'] == self.name) or \
  21. ('worker_name' not in task and self.name is None):
  22. try:
  23. task['fcn'](*task['params'])
  24. except Exception as e:
  25. self.app.thread_exception.emit(e)
  26. raise e
  27. return
  28. # FlatCAMApp.App.log.debug("Task ignored.")
  29. self.app.log.debug("Task ignored.")