Support turbo2.
[vuplus_dvbapp] / lib / python / Screens / Ipkg.py
old mode 100644 (file)
new mode 100755 (executable)
index af80e00..7f98f3d
@@ -3,6 +3,7 @@ from Components.Ipkg import IpkgComponent
 from Components.Label import Label
 from Components.Slider import Slider
 from Screens.Screen import Screen
+from Screens.MessageBox import MessageBox
 from enigma import eTimer
 
 class Ipkg(Screen):
@@ -10,6 +11,8 @@ class Ipkg(Screen):
                Screen.__init__(self, session)
                
                self.cmdList = cmdList
+
+               self.sliderPackages = {}
                
                self.slider = Slider(0, len(cmdList))
                self["slider"] = self.slider
@@ -22,10 +25,11 @@ class Ipkg(Screen):
                
                self.packages = 0
                self.error = 0
+               self.processed_packages = []
                
                self.activity = 0
                self.activityTimer = eTimer()
-               self.activityTimer.timeout.get().append(self.doActivityTimer)
+               self.activityTimer.callback.append(self.doActivityTimer)
                #self.activityTimer.start(100, False)
                                
                self.ipkg = IpkgComponent()
@@ -51,7 +55,7 @@ class Ipkg(Screen):
                        self.slider.setValue(len(self.cmdList))
                                
                        self.package.setText("")
-                       self.status.setText(_("Done - Installed or upgraded %d packages with %d errors") % (self.packages, self.error))
+                       self.status.setText(_("Done - Installed, upgraded or removed %d packages with %d errors") % (self.packages, self.error))
                        return False
                else:
                        cmd = self.cmdList[self.runningCmd]
@@ -82,11 +86,21 @@ class Ipkg(Screen):
                                self.slider.setValue(self.sliderPackages[param])
                        self.package.setText(param)
                        self.status.setText(_("Upgrading"))
-                       self.packages += 1
+                       if not param in self.processed_packages:
+                               self.processed_packages.append(param)
+                               self.packages += 1
                elif event == IpkgComponent.EVENT_INSTALL:
                        self.package.setText(param)
                        self.status.setText(_("Installing"))
-                       self.packages += 1
+                       if not param in self.processed_packages:
+                               self.processed_packages.append(param)
+                               self.packages += 1
+               elif event == IpkgComponent.EVENT_REMOVE:
+                       self.package.setText(param)
+                       self.status.setText(_("Removing"))
+                       if not param in self.processed_packages:
+                               self.processed_packages.append(param)
+                               self.packages += 1
                elif event == IpkgComponent.EVENT_CONFIGURING:
                        self.package.setText(param)
                        self.status.setText(_("Configuring"))
@@ -94,7 +108,16 @@ class Ipkg(Screen):
                        self.error += 1
                elif event == IpkgComponent.EVENT_DONE:
                        self.runNextCmd()
-       
+               elif event == IpkgComponent.EVENT_MODIFIED:
+                       self.session.openWithCallback(
+                               self.modificationCallback,
+                               MessageBox,
+                               _("A configuration file (%s) was modified since Installation.\nDo you want to keep your version?") % (param)
+                       )
+
+       def modificationCallback(self, res):
+               self.ipkg.write(res and "N" or "Y")
+
        def exit(self):
                if not self.ipkg.isRunning():
                        self.close()