X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2FScreens%2FPluginBrowser.py;h=0f7148a4cccc60ffccd13c68dccb609ac38a336a;hp=cce08aed3340e7ee801a45a2b2f838458faaafcb;hb=HEAD;hpb=c430cd50ce7bc9e0a91bccb558e54dafc8d5ef75 diff --git a/lib/python/Screens/PluginBrowser.py b/lib/python/Screens/PluginBrowser.py index cce08ae..0f7148a 100755 --- a/lib/python/Screens/PluginBrowser.py +++ b/lib/python/Screens/PluginBrowser.py @@ -38,9 +38,20 @@ class PluginBrowser(Screen): "red": self.delete, "green": self.download }) + self["SoftwareActions"] = ActionMap(["ColorActions"], + { + "red": self.openExtensionmanager + }) self["PluginDownloadActions"].setEnabled(False) + self["SoftwareActions"].setEnabled(False) self.onFirstExecBegin.append(self.checkWarnings) self.onShown.append(self.updateList) + self.onLayoutFinish.append(self.saveListsize) + + def saveListsize(self): + listsize = self["list"].instance.size() + self.listWidth = listsize.width() + self.listHeight = listsize.height() def checkWarnings(self): if len(plugins.warnings): @@ -59,15 +70,17 @@ class PluginBrowser(Screen): def updateList(self): self.pluginlist = plugins.getPlugins(PluginDescriptor.WHERE_PLUGINMENU) - self.list = [PluginEntryComponent(plugin) for plugin in self.pluginlist] + self.list = [PluginEntryComponent(plugin, self.listWidth) for plugin in self.pluginlist] self["list"].l.setList(self.list) if fileExists(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SoftwareManager/plugin.py")): - self["red"].setText("") + self["red"].setText(_("Manage extensions")) self["green"].setText("") + self["SoftwareActions"].setEnabled(True) self["PluginDownloadActions"].setEnabled(False) else: self["red"].setText(_("Remove Plugins")) self["green"].setText(_("Download Plugins")) + self["SoftwareActions"].setEnabled(False) self["PluginDownloadActions"].setEnabled(True) def delete(self): @@ -80,6 +93,14 @@ class PluginBrowser(Screen): self.updateList() self.checkWarnings() + def openExtensionmanager(self): + if fileExists(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SoftwareManager/plugin.py")): + try: + from Plugins.SystemPlugins.SoftwareManager.plugin import PluginManager + except ImportError: + self.session.open(MessageBox, _("The Softwaremanagement extension is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 ) + else: + self.session.openWithCallback(self.PluginDownloadBrowserClosed, PluginManager) class PluginDownloadBrowser(Screen): DOWNLOAD = 0 @@ -140,9 +161,9 @@ class PluginDownloadBrowser(Screen): def runInstall(self, val): if val: if self.type == self.DOWNLOAD: - self.session.openWithCallback(self.installFinished, Console, cmdlist = ["ipkg install " + "enigma2-plugin-" + self["list"].l.getCurrentSelection()[0].name]) + self.session.openWithCallback(self.installFinished, Console, cmdlist = ["opkg install " + "enigma2-plugin-" + self["list"].l.getCurrentSelection()[0].name]) elif self.type == self.REMOVE: - self.session.openWithCallback(self.installFinished, Console, cmdlist = ["ipkg remove " + "enigma2-plugin-" + self["list"].l.getCurrentSelection()[0].name]) + self.session.openWithCallback(self.installFinished, Console, cmdlist = ["opkg remove " + "enigma2-plugin-" + self["list"].l.getCurrentSelection()[0].name]) def setWindowTitle(self): if self.type == self.DOWNLOAD: @@ -151,17 +172,20 @@ class PluginDownloadBrowser(Screen): self.setTitle(_("Remove plugins")) def startIpkgListInstalled(self): - self.container.execute("ipkg list_installed enigma2-plugin-*") + self.container.execute("opkg list_installed enigma2-plugin-*") def startIpkgListAvailable(self): - self.container.execute("ipkg list enigma2-plugin-*") + self.container.execute("opkg list enigma2-plugin-*") def startRun(self): + listsize = self["list"].instance.size() self["list"].instance.hide() + self.listWidth = listsize.width() + self.listHeight = listsize.height() if self.type == self.DOWNLOAD: if not PluginDownloadBrowser.lastDownloadDate or (time() - PluginDownloadBrowser.lastDownloadDate) > 3600: # Only update from internet once per hour - self.container.execute("ipkg update") + self.container.execute("opkg update") PluginDownloadBrowser.lastDownloadDate = time() else: self.startIpkgListAvailable() @@ -205,8 +229,8 @@ class PluginDownloadBrowser(Screen): self.remainingdata = "" for x in lines: - plugin = x.split(" - ", 2) - if len(plugin) == 3: + plugin = x.split(" - ") + if len(plugin) >= 2: if self.run == 1 and self.type == self.DOWNLOAD: if plugin[0] not in self.installedplugins: self.installedplugins.append(plugin[0]) @@ -224,6 +248,13 @@ class PluginDownloadBrowser(Screen): self.plugins = {} for x in self.pluginlist: + if len(x) < 4: + split = x[0].split('-',3) + if not self.plugins.has_key(split[2]): + self.plugins[split[2]] = [] + self.plugins[split[2]].append((PluginDescriptor(name = x[2], description = " ", icon = verticallineIcon), split[3])) + continue + split = x[3].split('-', 1) if len(split) < 2: continue @@ -234,11 +265,11 @@ class PluginDownloadBrowser(Screen): for x in self.plugins.keys(): if x in self.expanded: - list.append(PluginCategoryComponent(x, expandedIcon)) - list.extend([PluginDownloadComponent(plugin[0], plugin[1]) for plugin in self.plugins[x]]) + list.append(PluginCategoryComponent(x, expandedIcon, self.listWidth)) + list.extend([PluginDownloadComponent(plugin[0], plugin[1], self.listWidth) for plugin in self.plugins[x]]) else: - list.append(PluginCategoryComponent(x, expandableIcon)) + list.append(PluginCategoryComponent(x, expandableIcon, self.listWidth)) self.list = list self["list"].l.setList(list) -language.addCallback(languageChanged) \ No newline at end of file +language.addCallback(languageChanged)