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 *
10 class Upgrade(Screen):
12 <screen position="100,100" size="550,400" title="IPKG upgrade..." >
13 <widget name="text" position="0,0" size="550,400" font="Regular;15" />
16 def __init__(self, session, args = None):
17 self.skin = Upgrade.skin
18 Screen.__init__(self, session)
20 self["text"] = ScrollLabel(_("Please press OK!"))
22 self["actions"] = ActionMap(["WizardActions", "DirectionActions"],
26 "up": self["text"].pageUp,
27 "down": self["text"].pageDown
31 self.delayTimer = eTimer()
32 self.delayTimer.timeout.get().append(self.doUpdateDelay)
36 self.session.openWithCallback(self.doUpdate, MessageBox, _("Do you want to update your Dreambox?\nAfter pressing OK, please wait!"))
40 def doUpdateDelay(self):
41 lines = os.popen("ipkg update && ipkg upgrade -force-defaults -force-overwrite", "r").readlines()
45 self["text"].setText(_("Updating finished. Here is the result:") + "\n\n" + string)
49 def doUpdate(self, val = False):
51 self["text"].setText(_("Updating... Please wait... This can take some minutes..."))
52 self.delayTimer.start(0, 1)
65 def PacketEntryComponent(packet):
68 res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 0,250, 30, 0, RT_HALIGN_LEFT|RT_VALIGN_CENTER, packet[0]))
69 res.append((eListboxPythonMultiContent.TYPE_TEXT, 250, 0, 200, 30, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, packet[1]))
70 res.append((eListboxPythonMultiContent.TYPE_TEXT, 450, 0, 100, 30, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, packet[2]))
73 class PacketList(GUIComponent):
74 def __init__(self, list):
75 GUIComponent.__init__(self)
76 self.l = eListboxPythonMultiContent()
78 self.l.setFont(0, gFont("Regular", 20))
79 self.l.setFont(1, gFont("Regular", 18))
82 return self.l.getCurrentSelection()
84 def GUIcreate(self, parent):
85 self.instance = eListbox(parent)
86 self.instance.setContent(self.l)
87 self.instance.setItemHeight(30)
90 self.instance.setContent(None)
98 <screen position="100,100" size="550,400" title="IPKG upgrade..." >
99 <widget name="list" position="0,0" size="550,400" scrollbarMode="showOnDemand" />
102 def __init__(self, session, args = None):
103 self.skin = Ipkg.skin
104 Screen.__init__(self, session)
108 self.fillPacketList()
110 self["list"] = PacketList(self.list)
112 self["actions"] = ActionMap(["WizardActions"],
119 def fillPacketList(self):
120 lines = os.popen("ipkg list", "r").readlines()
123 split = x.split(' - ')
124 packetlist.append([split[0].strip(), split[1].strip()])
126 lines = os.popen("ipkg list_installed", "r").readlines()
130 split = x.split(' - ')
131 installedlist[split[0].strip()] = split[1].strip()
135 if installedlist.has_key(x[0]):
136 if installedlist[x[0]] == x[1]:
139 status = "upgradable"
140 self.list.append(PacketEntryComponent([x[0], x[1], status]))
144 self.session.openWithCallback(self.doUpdate, MessageBox, _("Do you want to update your Dreambox?\nAfter pressing OK, please wait!"))
148 def doUpdateDelay(self):
149 lines = os.popen("ipkg update && ipkg upgrade", "r").readlines()
153 self["text"].setText(_("Updating finished. Here is the result:") + "\n\n" + string)
157 def doUpdate(self, val = False):
159 self["text"].setText(_("Updating... Please wait... This can take some minutes..."))
160 self.delayTimer.start(0, 1)
168 os.popen("ipkg update", "r")
171 #print "**************************** AUTOEND"
173 def getPicturePaths():
174 return ["update.png", "update.png"]
177 return [("Softwareupdate", "Updates your receiver's software", "screen", "Upgrade"),
178 ("IPKG", "Updates your receiver's software", "screen", "Ipkg")]
180 def getMenuRegistrationList():
182 list.append(("setup", 2, "Softwareupdate", "Upgrade"))