FlatCAMWorker.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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. self.app.log.debug("Worker Started!")
  15. # Tasks are queued in the event listener.
  16. self.app.worker_task.connect(self.do_worker_task)
  17. def do_worker_task(self, task):
  18. # FlatCAMApp.App.log.debug("Running task: %s" % str(task))
  19. self.app.log.debug("Running task: %s" % str(task))
  20. # 'worker_name' property of task allows to target
  21. # specific worker.
  22. if 'worker_name' in task and task['worker_name'] == self.name:
  23. task['fcn'](*task['params'])
  24. return
  25. if 'worker_name' not in task and self.name is None:
  26. task['fcn'](*task['params'])
  27. return
  28. # FlatCAMApp.App.log.debug("Task ignored.")
  29. self.app.log.debug("Task ignored.")