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 dbc99653e7f417eb7c9e2f3a56315698da9c6319..eac264289ff76dcb0eb1d738551d6fcf833feac6 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 505b0cddb58fd1fa1c31b25cc62bf879dbd4f759..c283dd04957028cc5eabebe2922b0f1a48f01113 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 07a7eca4e3f631a110c3f284a0bf391900ec4ac4..216cf8c85b96244de6691327bc34dfb080c9c4dc 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()