1 from enigma import eConsoleAppContainer
2 from Tools.BoundFunction import boundFunction
6 self.appContainers = {}
11 def ePopen(self, cmd, callback, extra_args=[]):
14 while self.appContainers.has_key(name):
15 name = cmd +'_'+ str(i)
17 print "[ePopen] command:", cmd
18 self.appResults[name] = ""
19 self.extra_args[name] = extra_args
20 self.callbacks[name] = callback
21 self.appContainers[name] = eConsoleAppContainer()
22 self.appContainers[name].dataAvail.append(boundFunction(self.dataAvailCB,name))
23 self.appContainers[name].appClosed.append(boundFunction(self.finishedCB,name))
24 retval = self.appContainers[name].execute(cmd)
26 self.finishedCB(name, retval)
28 def dataAvailCB(self, name, data):
29 self.appResults[name] += data
31 def finishedCB(self, name, retval):
32 del self.appContainers[name].dataAvail[:]
33 del self.appContainers[name].appClosed[:]
34 data = self.appResults[name]
35 extra_args = self.extra_args[name]
36 del self.appContainers[name]
37 del self.extra_args[name]
38 self.callbacks[name](data,retval,extra_args)
39 del self.callbacks[name]