X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/6c2d3fc303542b7f77f4350974acf781a1b91c30..c224c2a18e15eaa4e41377b0ed03c4807e25aa2d:/lib/python/Screens/PluginBrowser.py diff --git a/lib/python/Screens/PluginBrowser.py b/lib/python/Screens/PluginBrowser.py index 46661ca1..5459ccce 100644 --- a/lib/python/Screens/PluginBrowser.py +++ b/lib/python/Screens/PluginBrowser.py @@ -2,11 +2,9 @@ from Screen import Screen from enigma import eConsoleAppContainer, loadPNG -from Components.MenuList import MenuList from Components.ActionMap import ActionMap from Components.PluginComponent import plugins from Components.PluginList import * -from Components.config import config from Components.Label import Label from Screens.MessageBox import MessageBox from Screens.Console import Console @@ -31,7 +29,16 @@ class PluginBrowser(Screen): "red": self.delete, "green": self.download }) - + self.onExecBegin.append(self.checkWarnings) + + def checkWarnings(self): + if len(plugins.warnings): + text = _("Some plugins are not available:\n") + for (pluginname, error) in plugins.warnings: + text += _("%s (%s)\n") % (pluginname, error) + plugins.resetWarnings() + self.session.open(MessageBox, text = text, type = MessageBox.TYPE_WARNING) + def save(self): #self.close() self.run() @@ -68,12 +75,13 @@ class PluginDownloadBrowser(Screen): self.container.appClosed.get().append(self.runFinished) self.container.dataAvail.get().append(self.dataAvail) self.onLayoutFinish.append(self.startRun) - self.onShown.append(self.setTitle) + self.onShown.append(self.setWindowTitle) self.list = [] self["list"] = PluginList(self.list) self.pluginlist = [] self.expanded = [] + self.installedplugins = [] if self.type == self.DOWNLOAD: self["text"] = Label(_("Downloading plugin information. Please wait...")) @@ -89,26 +97,31 @@ class PluginDownloadBrowser(Screen): }) def go(self): - if type(self["list"].l.getCurrentSelection()[0]) is str: # category - if self["list"].l.getCurrentSelection()[0] in self.expanded: - self.expanded.remove(self["list"].l.getCurrentSelection()[0]) + sel = self["list"].l.getCurrentSelection() + + if sel is None: + return + + if type(sel[0]) is str: # category + if sel[0] in self.expanded: + self.expanded.remove(sel[0]) else: - self.expanded.append(self["list"].l.getCurrentSelection()[0]) + self.expanded.append(sel[0]) self.updateList() else: if self.type == self.DOWNLOAD: - self.session.openWithCallback(self.runInstall, MessageBox, _("Do you really want to download\nthe plugin \"" + self["list"].l.getCurrentSelection()[0].name + "\"?")) + self.session.openWithCallback(self.runInstall, MessageBox, _("Do you really want to download\nthe plugin \"" + sel[0].name + "\"?")) elif self.type == self.REMOVE: - self.session.openWithCallback(self.runInstall, MessageBox, _("Do you really want to REMOVE\nthe plugin \"" + self["list"].l.getCurrentSelection()[0].name + "\"?")) + self.session.openWithCallback(self.runInstall, MessageBox, _("Do you really want to REMOVE\nthe plugin \"" + sel[0].name + "\"?")) def runInstall(self, val): if val: if self.type == self.DOWNLOAD: - self.session.openWithCallback(self.installFinished, Console, ["ipkg install " + "enigma2-plugin-" + self["list"].l.getCurrentSelection()[0].name]) + self.session.openWithCallback(self.installFinished, Console, cmdlist = ["ipkg install " + "enigma2-plugin-" + self["list"].l.getCurrentSelection()[0].name]) elif self.type == self.REMOVE: - self.session.openWithCallback(self.installFinished, Console, ["ipkg remove " + "enigma2-plugin-" + self["list"].l.getCurrentSelection()[0].name]) + self.session.openWithCallback(self.installFinished, Console, cmdlist = ["ipkg remove " + "enigma2-plugin-" + self["list"].l.getCurrentSelection()[0].name]) - def setTitle(self): + def setWindowTitle(self): if self.type == self.DOWNLOAD: self.setTitle(_("Downloadable new plugins")) elif self.type == self.REMOVE: @@ -130,21 +143,28 @@ class PluginDownloadBrowser(Screen): if self.run == 0: self.run = 1 if self.type == self.DOWNLOAD: - self.container.execute("ipkg list enigma2-plugin-*") + self.container.execute("ipkg list_installed enigma2-plugin-*") + elif self.run == 1 and self.type == self.DOWNLOAD: + self.run = 2 + self.container.execute("ipkg list enigma2-plugin-*") else: if len(self.pluginlist) > 0: self.updateList() self["list"].instance.show() else: - self["text"].setText("No plugins found") + self["text"].setText("No new plugins found") def dataAvail(self, str): for x in str.split('\n'): plugin = x.split(" - ") if len(plugin) == 3: - plugin.append(plugin[0][15:]) + if self.run == 1 and self.type == self.DOWNLOAD: + self.installedplugins.append(plugin[0]) + else: + if plugin[0] not in self.installedplugins: + plugin.append(plugin[0][15:]) - self.pluginlist.append(plugin) + self.pluginlist.append(plugin) def updateList(self): self.list = []