some ipkg changes.. (done by ritzmo)
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Mon, 29 Oct 2007 16:01:37 +0000 (16:01 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Mon, 29 Oct 2007 16:01:37 +0000 (16:01 +0000)
lib/python/Components/Ipkg.py
lib/python/Plugins/SystemPlugins/SoftwareUpdate/plugin.py
lib/python/Screens/Ipkg.py

index dbc9965..eac2642 100644 (file)
@@ -10,6 +10,7 @@ class IpkgComponent:
        EVENT_LISTITEM = 9
        EVENT_DONE = 10
        EVENT_ERROR = 11
+       EVENT_MODIFIED = 12
        
        CMD_INSTALL = 0
        CMD_LIST = 1
@@ -95,6 +96,9 @@ 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:
+                               self.callCallbacks(self.EVENT_MODIFIED, data.split(' \'', 1)[1][:-1])
+
        def callCallbacks(self, event, param = None):
                for callback in self.callbackList:
                        callback(event, param)
@@ -110,3 +114,9 @@ class IpkgComponent:
                
        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))
index 505b0cd..c283dd0 100644 (file)
@@ -290,6 +290,12 @@ class UpdatePlugin(Screen):
                elif event == IpkgComponent.EVENT_CONFIGURING:
                        self.package.setText(param)
                        self.status.setText(_("Configuring"))
+               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)
+                       )
                elif event == IpkgComponent.EVENT_ERROR:
                        self.error += 1
                elif event == IpkgComponent.EVENT_DONE:
@@ -315,7 +321,10 @@ class UpdatePlugin(Screen):
                                self.status.setText(_("Error") +  " - " + error)
                #print event, "-", param
                pass
-       
+
+       def modificationCallback(self, res):
+               self.ipkg.write(res and "N" or "Y")
+
        def exit(self):
                if not self.ipkg.isRunning():
                        if self.packages != 0 and self.error == 0:
index 07a7eca..216cf8c 100644 (file)
@@ -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):
@@ -96,7 +97,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()