from Screens.Screen import Screen from Components.ActionMap import ActionMap from Components.Label import Label from Plugins.Plugin import PluginDescriptor def getUpgradeVersion(): import os try: r = os.popen("fpupgrade --version").read() except IOError: return None if r[:16] != "FP update tool v": return None else: return int(r[16:17]) class FPUpgrade(Screen): skin = """ """ def __init__(self, session): self.skin = FPUpgrade.skin Screen.__init__(self, session) from Tools.DreamboxHardware import getFPVersion version = str(getFPVersion() or "N/A") newversion = str(getUpgradeVersion() or "N/A") self["text"] = Label(_("Your frontprocessor firmware must be upgraded.\nPress OK to start upgrade.")) self["oldversion_label"] = Label(_("Current version:")) self["newversion_label"] = Label(_("New version:")) self["oldversion"] = Label(version) self["newversion"] = Label(newversion) self["actions"] = ActionMap(["OkCancelActions"], { "ok": self.ok, "cancel": self.close, }) def ok(self): self.close(4) def Plugins(**kwargs): from Tools.DreamboxHardware import getFPVersion version = getFPVersion() newversion = getUpgradeVersion() or 0 if version is not None and version < newversion: return PluginDescriptor(name="FP Upgrade", where = PluginDescriptor.WHERE_WIZARD, fnc=(8, FPUpgrade)) else: return [ ]