X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2FComponents%2FIpkg.py;h=0ba1165ceb4d9f4dc8f7015c94e631d949227595;hp=eac264289ff76dcb0eb1d738551d6fcf833feac6;hb=f5f419866f81d7c356c633acdb39c9da91c3377c;hpb=7b0d371a7bbfb9e8d624eec9ed97e9a835f75ca7 diff --git a/lib/python/Components/Ipkg.py b/lib/python/Components/Ipkg.py old mode 100644 new mode 100755 index eac2642..0ba1165 --- a/lib/python/Components/Ipkg.py +++ b/lib/python/Components/Ipkg.py @@ -22,10 +22,7 @@ class IpkgComponent: self.ipkg = ipkg self.cmd = eConsoleAppContainer() - self.cmd.appClosed.get().append(self.cmdFinished) - self.cmd.dataAvail.get().append(self.cmdData) self.cache = None - self.callbackList = [] self.setCurrentCommand() @@ -34,8 +31,11 @@ class IpkgComponent: def runCmd(self, cmd): print "executing", self.ipkg, cmd - self.cmd.execute(self.ipkg + " " + cmd) - + self.cmd.appClosed.append(self.cmdFinished) + self.cmd.dataAvail.append(self.cmdData) + if self.cmd.execute(self.ipkg + " " + cmd): + self.cmdFinished(-1) + def startCmd(self, cmd, args = None): if cmd == self.CMD_UPDATE: self.runCmd("update") @@ -52,11 +52,15 @@ class IpkgComponent: self.runCmd("list") elif cmd == self.CMD_INSTALL: self.runCmd("install " + args['package']) + elif cmd == self.CMD_REMOVE: + self.runCmd("remove " + args['package']) self.setCurrentCommand(cmd) def cmdFinished(self, retval): self.callCallbacks(self.EVENT_DONE) - + self.cmd.appClosed.remove(self.cmdFinished) + self.cmd.dataAvail.remove(self.cmdData) + def cmdData(self, data): print "data:", data if self.cache is None: @@ -88,6 +92,8 @@ class IpkgComponent: self.callCallbacks(self.EVENT_UPGRADE, data.split(' ', 1)[1].split(' ')[0]) elif data.find('Installing') == 0: self.callCallbacks(self.EVENT_INSTALL, data.split(' ', 1)[1].split(' ')[0]) + elif data.find('Removing') == 0: + self.callCallbacks(self.EVENT_REMOVE, data.split(' ', 1)[1].split(' ')[1]) elif data.find('Configuring') == 0: self.callCallbacks(self.EVENT_CONFIGURING, data.split(' ', 1)[1].split(' ')[0]) elif data.find('An error occurred') == 0: @@ -96,7 +102,10 @@ class IpkgComponent: self.callCallbacks(self.EVENT_ERROR, None) elif data.find('ipkg_download: ERROR:') == 0: self.callCallbacks(self.EVENT_ERROR, None) - elif data.find(' Configuration file') == 0: + elif data.find(' Configuration file \'') >= 0: + # Note: the config file update question doesn't end with a newline, so + # if we get multiple config file update questions, the next ones + # don't necessarily start at the beginning of a line self.callCallbacks(self.EVENT_MODIFIED, data.split(' \'', 1)[1][:-1]) def callCallbacks(self, event, param = None):