diff options
| author | Stefan Pluecken <stefan.pluecken@multimedia-labs.de> | 2006-12-19 07:34:37 +0000 |
|---|---|---|
| committer | Stefan Pluecken <stefan.pluecken@multimedia-labs.de> | 2006-12-19 07:34:37 +0000 |
| commit | 8d1bd687bb25d258942a1b34d15536e213a130a5 (patch) | |
| tree | d8fe988b1ec0b31fb807c237fc642a903521e997 /lib/python/Screens/Ipkg.py | |
| parent | 5346cb6fc890e76e3b61c616aa6fb7c9ecbe5ae8 (diff) | |
| download | enigma2-8d1bd687bb25d258942a1b34d15536e213a130a5.tar.gz enigma2-8d1bd687bb25d258942a1b34d15536e213a130a5.zip | |
add missing file
Diffstat (limited to 'lib/python/Screens/Ipkg.py')
| -rw-r--r-- | lib/python/Screens/Ipkg.py | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/lib/python/Screens/Ipkg.py b/lib/python/Screens/Ipkg.py new file mode 100644 index 00000000..95bf4f15 --- /dev/null +++ b/lib/python/Screens/Ipkg.py @@ -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() |
