FlatCAMWorker.py 985 B

1234567891011121314151617181920212223242526272829303132333435
  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. FlatCAMApp.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. FlatCAMApp.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:
  21. task['fcn'](*task['params'])
  22. return
  23. if 'worker_name' not in task and self.name is None:
  24. task['fcn'](*task['params'])
  25. return
  26. FlatCAMApp.App.log.debug("Task ignored.")