implement proper 'destroy' functions in Converter
[enigma2.git] / lib / python / Components / Ipkg.py
index df700d6b5b1fa5d07712983f0f06b9149344c77b..eac264289ff76dcb0eb1d738551d6fcf833feac6 100644 (file)
@@ -1,6 +1,6 @@
 from enigma import eConsoleAppContainer
 
-class Ipkg:
+class IpkgComponent:
        EVENT_INSTALL = 0
        EVENT_DOWNLOAD = 1
        EVENT_INFLATING = 2
@@ -10,6 +10,7 @@ class Ipkg:
        EVENT_LISTITEM = 9
        EVENT_DONE = 10
        EVENT_ERROR = 11
+       EVENT_MODIFIED = 12
        
        CMD_INSTALL = 0
        CMD_LIST = 1
@@ -35,25 +36,24 @@ class Ipkg:
                print "executing", self.ipkg, cmd
                self.cmd.execute(self.ipkg + " " + cmd)
                
-       def cmdFetchList(self, installed_only = False):
-               self.fetchedList = []
-               if installed_only:
-                       self.runCmd("list_installed")
-               else:
-                       self.runCmd("list")
-               self.setCurrentCommand(self.CMD_LIST)
-               
-       def cmdUpgrade(self, test_only = False):
-               append = ""
-               if test_only:
-                       append = " -test"
-               self.runCmd("upgrade" + append)
-               self.setCurrentCommand(self.CMD_UPGRADE)
-               
-       def cmdUpdate(self):
-               self.runCmd("update")
-               self.setCurrentCommand(self.CMD_UPDATE)
-               
+       def startCmd(self, cmd, args = None):
+               if cmd == self.CMD_UPDATE:
+                       self.runCmd("update")
+               elif cmd == self.CMD_UPGRADE:
+                       append = ""
+                       if args["test_only"]:
+                               append = " -test"
+                       self.runCmd("upgrade" + append)
+               elif cmd == self.CMD_LIST:
+                       self.fetchedList = []
+                       if args['installed_only']:
+                               self.runCmd("list_installed")
+                       else:
+                               self.runCmd("list")
+               elif cmd == self.CMD_INSTALL:
+                       self.runCmd("install " + args['package'])
+               self.setCurrentCommand(cmd)
+       
        def cmdFinished(self, retval):
                self.callCallbacks(self.EVENT_DONE)
        
@@ -96,6 +96,9 @@ class Ipkg:
                                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:
+                               self.callCallbacks(self.EVENT_MODIFIED, data.split(' \'', 1)[1][:-1])
+
        def callCallbacks(self, event, param = None):
                for callback in self.callbackList:
                        callback(event, param)
@@ -111,3 +114,9 @@ class Ipkg:
                
        def isRunning(self):
                return self.cmd.running()
+
+       def write(self, what):
+               if what:
+                       # We except unterminated commands
+                       what += "\n"
+                       self.cmd.write(what, len(what))