from Components.ActionMap import ActionMap from Components.Ipkg import IpkgComponent from Components.Label import Label from Components.SelectionList import SelectionList from Plugins.Plugin import PluginDescriptor from Screens.Ipkg import Ipkg from Screens.Screen import Screen class IpkgInstaller(Screen): skin = """ """ def __init__(self, session, list): self.skin = IpkgInstaller.skin Screen.__init__(self, session) self.list = SelectionList() self["list"] = self.list for listindex in range(len(list)): self.list.addSelection(list[listindex], list[listindex], listindex, True) self["red"] = Label() self["green"] = Label() self["yellow"] = Label() self["blue"] = Label() self["actions"] = ActionMap(["OkCancelActions", "ColorActions"], { "ok": self.list.toggleSelection, "cancel": self.close, "green": self.install }, -1) def install(self): list = self.list.getSelectionsList() cmdList = [] for item in list: cmdList.append((IpkgComponent.CMD_INSTALL, { "package": item[1] })) print cmdList self.session.open(Ipkg, cmdList = cmdList) def filescan_open(list, session, **kwargs): session.open(IpkgInstaller, list) # list def filescan(**kwargs): # we expect not to be called if the MediaScanner plugin is not available, # thus we don't catch an ImportError exception here from Plugins.Extensions.MediaScanner.plugin import Scanner, ScanPath return \ Scanner(extensions = ["ipk"], paths_to_scan = [ ScanPath(path = "ipk", with_subdirs = True), ScanPath(path = "", with_subdirs = False), ], name = "Ipkg", description = "Install software updates...", openfnc = filescan_open, ) def Plugins(**kwargs): return [ PluginDescriptor(name="Ipkg", where = PluginDescriptor.WHERE_FILESCAN, fnc = filescan) ]