| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- from FlatCAMGUI import FlatCAMActivityView
- class FCProcess(object):
- def __init__(self, descr):
- self.callbacks = {
- "done": []
- }
- self.descr = descr
- def done(self):
- for fcn in self.callbacks["done"]:
- fcn(self)
- def connect(self, callback, event="done"):
- if callback not in self.callbacks[event]:
- self.callbacks[event].append(callback)
- def disconnect(self, callback, event="done"):
- try:
- self.callbacks[event].remove(callback)
- except ValueError:
- pass
- def status_msg(self):
- return self.descr
- class FCProcessContainer(object):
- def __init__(self):
- self.procs = []
- def add(self, proc):
- self.procs.append(proc)
- def new(self, descr):
- proc = FCProcess(descr)
- proc.connect(self.on_done, event="done")
- def on_done(self, proc):
- pass
- def remove(self, proc):
- if proc in self.procs:
- self.procs.remove(proc)
- class FCVisibleProcessContainer(FCProcessContainer):
- def __init__(self, view):
- assert isinstance(view, FlatCAMActivityView)
- super(FCVisibleProcessContainer, self).__init__()
- self.view = view
- def on_done(self, proc):
- super(FCVisibleProcessContainer, self).on_done(proc)
- self.update_view()
- def update_view(self):
- if len(self.procs) == 0:
- self.view.set_idle()
- elif len(self.procs) == 1:
- self.view.set_busy(self.procs[0].status_msg())
- else:
- self.view.set_busy("%d processes running." % len(self.procs))
|