X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/98b800920d5ad05b854224bfa0ed0b18521788c4..68182033644faf17e06f10d1b98a128b5e3a7058:/lib/python/Components/Console.py diff --git a/lib/python/Components/Console.py b/lib/python/Components/Console.py index 45da72f2..c5fa5f98 100644 --- a/lib/python/Components/Console.py +++ b/lib/python/Components/Console.py @@ -19,18 +19,33 @@ class Console(object): self.extra_args[name] = extra_args self.callbacks[name] = callback self.appContainers[name] = eConsoleAppContainer() - self.appContainers[name].dataAvail.get().append(boundFunction(self.dataAvailCB,name)) - self.appContainers[name].appClosed.get().append(boundFunction(self.finishedCB,name)) + self.appContainers[name].dataAvail.append(boundFunction(self.dataAvailCB,name)) + self.appContainers[name].appClosed.append(boundFunction(self.finishedCB,name)) retval = self.appContainers[name].execute(cmd) if retval: self.finishedCB(name, retval) + def eBatch(self, cmds, callback, extra_args=[], debug=False): + self.debug = debug + cmd = cmds.pop(0) + self.ePopen(cmd, self.eBatchCB, [cmds, callback, extra_args]) + + def eBatchCB(self, data, retval, _extra_args): + (cmds, callback, extra_args) = _extra_args + if self.debug: + print '[eBatch] retval=%s, cmds left=%d, data:\n%s' % (retval, len(cmds), data) + if len(cmds): + cmd = cmds.pop(0) + self.ePopen(cmd, self.eBatchCB, [cmds, callback, extra_args]) + else: + callback(extra_args) + def dataAvailCB(self, name, data): self.appResults[name] += data def finishedCB(self, name, retval): - del self.appContainers[name].dataAvail.get()[:] - del self.appContainers[name].appClosed.get()[:] + del self.appContainers[name].dataAvail[:] + del self.appContainers[name].appClosed[:] data = self.appResults[name] extra_args = self.extra_args[name] del self.appContainers[name]