add missing file
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Tue, 19 Dec 2006 07:34:37 +0000 (07:34 +0000)
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Tue, 19 Dec 2006 07:34:37 +0000 (07:34 +0000)
lib/python/Screens/Ipkg.py [new file with mode: 0644]

diff --git a/lib/python/Screens/Ipkg.py b/lib/python/Screens/Ipkg.py
new file mode 100644 (file)
index 0000000..95bf4f1
--- /dev/null
@@ -0,0 +1,99 @@
+from Components.ActionMap import ActionMap
+from Components.Ipkg import IpkgComponent
+from Components.Label import Label
+from Components.Slider import Slider
+from Screens.Screen import Screen
+from enigma import eTimer
+
+class Ipkg(Screen):
+       def __init__(self, session, cmdList = []):
+               Screen.__init__(self, session)
+               
+               self.cmdList = cmdList
+               
+               self.slider = Slider(0, len(cmdList))
+               self["slider"] = self.slider
+               self.activityslider = Slider(0, 100)
+               self["activityslider"] = self.activityslider
+               self.status = Label(_("Preparing... Please wait"))
+               self["status"] = self.status
+               self.package = Label()
+               self["package"] = self.package
+               
+               self.packages = 0
+               self.error = 0
+               
+               self.activity = 0
+               self.activityTimer = eTimer()
+               self.activityTimer.timeout.get().append(self.doActivityTimer)
+               #self.activityTimer.start(100, False)
+                               
+               self.ipkg = IpkgComponent()
+               self.ipkg.addCallback(self.ipkgCallback)
+               
+               self.runningCmd = None
+               self.runNextCmd()
+               
+               self["actions"] = ActionMap(["WizardActions"], 
+               {
+                       "ok": self.exit, 
+                       "back": self.exit
+               }, -1)
+               
+       def runNextCmd(self):
+               if self.runningCmd is None:
+                       self.runningCmd = 0
+               else:
+                       self.runningCmd += 1
+               print len(self.cmdList), self.runningCmd
+               if len(self.cmdList) - 1 < self.runningCmd:
+                       self.activityslider.setValue(0)
+                       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))
+                       return False
+               else:
+                       cmd = self.cmdList[self.runningCmd]
+                       self.slider.setValue(self.runningCmd)
+                       self.ipkg.startCmd(cmd[0], args = cmd[1])
+                       self.startActivityTimer()
+                       
+       def doActivityTimer(self):
+               if not self.ipkg.isRunning():
+                       self.stopActivityTimer()
+               else:
+                       self.activity += 1
+                       if self.activity == 100:
+                               self.activity = 0
+                       self.activityslider.setValue(self.activity)
+               
+       def startActivityTimer(self):
+               self.activityTimer.start(100, False)
+               
+       def stopActivityTimer(self):
+               self.activityTimer.stop()
+               
+       def ipkgCallback(self, event, param):
+               if event == IpkgComponent.EVENT_DOWNLOAD:
+                       self.status.setText(_("Downloading"))
+               elif event == IpkgComponent.EVENT_UPGRADE:
+                       if self.sliderPackages.has_key(param):
+                               self.slider.setValue(self.sliderPackages[param])
+                       self.package.setText(param)
+                       self.status.setText(_("Upgrading"))
+                       self.packages += 1
+               elif event == IpkgComponent.EVENT_INSTALL:
+                       self.package.setText(param)
+                       self.status.setText(_("Installing"))
+                       self.packages += 1
+               elif event == IpkgComponent.EVENT_CONFIGURING:
+                       self.package.setText(param)
+                       self.status.setText(_("Configuring"))
+               elif event == IpkgComponent.EVENT_ERROR:
+                       self.error += 1
+               elif event == IpkgComponent.EVENT_DONE:
+                       self.runNextCmd()
+       
+       def exit(self):
+               self.close()