-from enigma import eTimer, quitMainloop
-from Screens.Screen import Screen
-from Screens.MessageBox import MessageBox
from Components.ActionMap import ActionMap, NumberActionMap
-from Components.ScrollLabel import ScrollLabel
-from Components.GUIComponent import *
-from Components.MenuList import MenuList
+from Components.GUIComponent import GUIComponent
from Components.Input import Input
-from Screens.Console import Console
-from Screens.MessageBox import MessageBox
+from Components.Ipkg import IpkgComponent
+from Components.Label import Label
+from Components.MenuList import MenuList
+from Components.Slider import Slider
from Plugins.Plugin import PluginDescriptor
+from Screens.Console import Console
from Screens.ImageWizard import ImageWizard
-from Components.Ipkg import Ipkg
-from Components.Slider import Slider
-from Components.Label import Label
+from Screens.MessageBox import MessageBox
+from Screens.MessageBox import MessageBox
+from Screens.Screen import Screen
+from enigma import eTimer, quitMainloop, RT_HALIGN_LEFT, RT_VALIGN_CENTER, eListboxPythonMultiContent, eListbox, gFont
+from os import popen
-import os
class UpdatePluginMenu(Screen):
skin = """
self["text"] = Input(sources[0], maxSize=False, type=Input.TEXT)
- self["actions"] = NumberActionMap(["WizardActions", "InputActions"],
+ self["actions"] = NumberActionMap(["WizardActions", "InputActions", "TextEntryActions", "KeyboardInputActions"],
{
"ok": self.go,
"back": self.close,
"left": self.keyLeft,
"right": self.keyRight,
+ "home": self.keyHome,
+ "end": self.keyEnd,
+ "deleteForward": self.deleteForward,
+ "deleteBackward": self.deleteBackward,
"1": self.keyNumberGlobal,
"2": self.keyNumberGlobal,
"3": self.keyNumberGlobal,
def keyRight(self):
self["text"].right()
+ def keyHome(self):
+ self["text"].home()
+
+ def keyEnd(self):
+ self["text"].end()
+
+ def keyDeleteForward(self):
+ self["text"].delete()
+
+ def keyDeleteBackward(self):
+ self["text"].deleteBackward()
+
def keyNumberGlobal(self, number):
print "pressed", number
self["text"].number(number)
-RT_HALIGN_LEFT = 0
-RT_HALIGN_RIGHT = 1
-RT_HALIGN_CENTER = 2
-RT_HALIGN_BLOCK = 4
-
-RT_VALIGN_TOP = 0
-RT_VALIGN_CENTER = 8
-RT_VALIGN_BOTTOM = 16
-
def PacketEntryComponent(packet):
res = [ packet ]
def fillPacketList(self):
- lines = os.popen("ipkg list", "r").readlines()
+ lines = popen("ipkg list", "r").readlines()
packetlist = []
for x in lines:
split = x.split(' - ')
packetlist.append([split[0].strip(), split[1].strip()])
- lines = os.popen("ipkg list_installed", "r").readlines()
+ lines = popen("ipkg list_installed", "r").readlines()
installedlist = {}
for x in lines:
self.close()
def doUpdateDelay(self):
- lines = os.popen("ipkg update && ipkg upgrade", "r").readlines()
+ lines = popen("ipkg update && ipkg upgrade", "r").readlines()
string = ""
for x in lines:
string += x
<screen position="100,100" size="550,200" title="Software Update..." >
<widget name="activityslider" position="0,0" size="550,5" />
<widget name="slider" position="0,100" size="550,30" />
- <widget name="package" position="10,30" size="420,20" font="Regular;18"/>
- <widget name="status" position="10,60" size="420,45" font="Regular;18"/>
+ <widget name="package" position="10,30" size="540,20" font="Regular;18"/>
+ <widget name="status" position="10,60" size="540,45" font="Regular;18"/>
</screen>"""
def __init__(self, session, args = None):
self["slider"] = self.slider
self.activityslider = Slider(0, 100)
self["activityslider"] = self.activityslider
- self.status = Label("Upgrading Dreambox... Please wait")
+ self.status = Label(_("Upgrading Dreambox... Please wait"))
self["status"] = self.status
self.package = Label()
self["package"] = self.package
self.activity = 0
self.activityTimer = eTimer()
- self.activityTimer.timeout.get().append(self.doActivityTimer)
+ self.activityTimer.callback.append(self.doActivityTimer)
self.activityTimer.start(100, False)
- self.ipkg = Ipkg()
+ self.ipkg = IpkgComponent()
self.ipkg.addCallback(self.ipkgCallback)
self.updating = True
- self.package.setText("Package list update")
- self.ipkg.cmdUpdate()
+ self.package.setText(_("Package list update"))
+ self.ipkg.startCmd(IpkgComponent.CMD_UPDATE)
self["actions"] = ActionMap(["WizardActions"],
{
self.activityslider.setValue(self.activity)
def ipkgCallback(self, event, param):
- if event == Ipkg.EVENT_DOWNLOAD:
+ if event == IpkgComponent.EVENT_DOWNLOAD:
self.status.setText(_("Downloading"))
- elif event == Ipkg.EVENT_UPGRADE:
+ 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 == Ipkg.EVENT_INSTALL:
+ elif event == IpkgComponent.EVENT_INSTALL:
self.package.setText(param)
self.status.setText(_("Installing"))
self.packages += 1
- elif event == Ipkg.EVENT_CONFIGURING:
+ elif event == IpkgComponent.EVENT_CONFIGURING:
self.package.setText(param)
self.status.setText(_("Configuring"))
- elif event == Ipkg.EVENT_ERROR:
+ elif event == IpkgComponent.EVENT_MODIFIED:
+ self.session.openWithCallback(
+ self.modificationCallback,
+ MessageBox,
+ _("A configuration file (%s) was modified since Installation.\nDo you want to keep your version?") % (param)
+ )
+ elif event == IpkgComponent.EVENT_ERROR:
self.error += 1
- elif event == Ipkg.EVENT_DONE:
+ elif event == IpkgComponent.EVENT_DONE:
if self.updating:
self.updating = False
- self.ipkg.cmdUpgrade(test_only = False)
+ self.ipkg.startCmd(IpkgComponent.CMD_UPGRADE, args = {'test_only': False})
elif self.error == 0:
self.slider.setValue(4)
self.status.setText(_("Error") + " - " + error)
#print event, "-", param
pass
-
+
+ def modificationCallback(self, res):
+ self.ipkg.write(res and "N" or "Y")
+
def exit(self):
- if self.packages != 0 and self.error == 0:
- self.session.openWithCallback(self.exitAnswer, MessageBox, _("Upgrade finished. Do you want to reboot your Dreambox?"))
- else:
- self.close()
+ if not self.ipkg.isRunning():
+ if self.packages != 0 and self.error == 0:
+ self.session.openWithCallback(self.exitAnswer, MessageBox, _("Upgrade finished. Do you want to reboot your Dreambox?"))
+ else:
+ self.close()
def exitAnswer(self, result):
if result is not None and result: