--- /dev/null
+from Screens.Screen import Screen
+from Components.ActionMap import ActionMap
+from Components.Label import Label
+from Plugins.Plugin import PluginDescriptor
+
+def getUpgradeVersion():
+ import os
+ r = os.popen("fpupgrade --version").read()
+ if r[:16] != "FP update tool v":
+ return None
+ else:
+ return int(r[16:])
+
+class FPUpgrade(Screen):
+ skin = """
+ <screen position="150,200" size="450,200" title="FP upgrade required" >
+ <widget name="text" position="0,0" size="550,50" font="Regular;20" />
+ <widget name="oldversion_label" position="10,100" size="290,25" font="Regular;20" />
+ <widget name="newversion_label" position="10,125" size="290,25" font="Regular;20" />
+ <widget name="oldversion" position="300,100" size="50,25" font="Regular;20" />
+ <widget name="newversion" position="300,125" size="50,25" font="Regular;20" />
+ </screen>"""
+ 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():
+ 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=FPUpgrade)
+ else:
+ return [ ]