2 from Screens.Screen import Screen
3 from Screens.MessageBox import MessageBox
4 from Components.ActionMap import ActionMap
5 from Components.ScrollLabel import ScrollLabel
6 from Components.GUIComponent import *
7 from Plugins.Plugin import PluginDescriptor
11 class Upgrade(Screen):
13 <screen position="100,100" size="550,400" title="IPKG upgrade..." >
14 <widget name="text" position="0,0" size="550,400" font="Regular;15" />
17 def __init__(self, session, args = None):
18 self.skin = Upgrade.skin
19 Screen.__init__(self, session)
21 self["text"] = ScrollLabel(_("Please press OK!"))
23 self["actions"] = ActionMap(["WizardActions", "DirectionActions"],
27 "up": self["text"].pageUp,
28 "down": self["text"].pageDown
32 self.delayTimer = eTimer()
33 self.delayTimer.timeout.get().append(self.doUpdateDelay)
37 self.session.openWithCallback(self.doUpdate, MessageBox, _("Do you want to update your Dreambox?\nAfter pressing OK, please wait!"))
41 def doUpdateDelay(self):
42 lines = os.popen("ipkg update && ipkg upgrade -force-defaults -force-overwrite", "r").readlines()
46 self["text"].setText(_("Updating finished. Here is the result:") + "\n\n" + string)
50 def doUpdate(self, val = False):
52 self["text"].setText(_("Updating... Please wait... This can take some minutes..."))
53 self.delayTimer.start(0, 1)
66 def PacketEntryComponent(packet):
69 res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 0,250, 30, 0, RT_HALIGN_LEFT|RT_VALIGN_CENTER, packet[0]))
70 res.append((eListboxPythonMultiContent.TYPE_TEXT, 250, 0, 200, 30, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, packet[1]))
71 res.append((eListboxPythonMultiContent.TYPE_TEXT, 450, 0, 100, 30, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, packet[2]))
74 class PacketList(GUIComponent):
75 def __init__(self, list):
76 GUIComponent.__init__(self)
77 self.l = eListboxPythonMultiContent()
79 self.l.setFont(0, gFont("Regular", 20))
80 self.l.setFont(1, gFont("Regular", 18))
83 return self.l.getCurrentSelection()
85 def GUIcreate(self, parent):
86 self.instance = eListbox(parent)
87 self.instance.setContent(self.l)
88 self.instance.setItemHeight(30)
91 self.instance.setContent(None)
99 <screen position="100,100" size="550,400" title="IPKG upgrade..." >
100 <widget name="list" position="0,0" size="550,400" scrollbarMode="showOnDemand" />
103 def __init__(self, session, args = None):
104 self.skin = Ipkg.skin
105 Screen.__init__(self, session)
109 self.fillPacketList()
111 self["list"] = PacketList(self.list)
113 self["actions"] = ActionMap(["WizardActions"],
120 def fillPacketList(self):
121 lines = os.popen("ipkg list", "r").readlines()
124 split = x.split(' - ')
125 packetlist.append([split[0].strip(), split[1].strip()])
127 lines = os.popen("ipkg list_installed", "r").readlines()
131 split = x.split(' - ')
132 installedlist[split[0].strip()] = split[1].strip()
136 if installedlist.has_key(x[0]):
137 if installedlist[x[0]] == x[1]:
140 status = "upgradable"
141 self.list.append(PacketEntryComponent([x[0], x[1], status]))
145 self.session.openWithCallback(self.doUpdate, MessageBox, _("Do you want to update your Dreambox?\nAfter pressing OK, please wait!"))
149 def doUpdateDelay(self):
150 lines = os.popen("ipkg update && ipkg upgrade", "r").readlines()
154 self["text"].setText(_("Updating finished. Here is the result:") + "\n\n" + string)
158 def doUpdate(self, val = False):
160 self["text"].setText(_("Updating... Please wait... This can take some minutes..."))
161 self.delayTimer.start(0, 1)
166 session.open(Upgrade)
169 return PluginDescriptor(name="Softwareupdate", description="Updates your receiver's software", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=main)