From: acid-burn Date: Sun, 31 Oct 2010 13:25:59 +0000 (+0100) Subject: SoftwareManager/plugin.py: don't display upgradeable packages also as installed packa... X-Git-Tag: 3.0.1~5^2 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/8600c86a6928e70d8468a55970d6933bbb9f71c3 SoftwareManager/plugin.py: don't display upgradeable packages also as installed packages inside PacketManager. This fixes #609 --- diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py index 00608ee2..707663a0 100755 --- a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py @@ -1679,6 +1679,7 @@ class PacketManager(Screen, NumericalTextInput): self.list_updating = True self.packetlist = [] self.installed_packetlist = {} + self.upgradeable_packages = {} self.Console = Console() self.cmdList = [] self.cachelist = [] @@ -1686,6 +1687,7 @@ class PacketManager(Screen, NumericalTextInput): self.cache_file = '/usr/lib/enigma2/python/Plugins/SystemPlugins/SoftwareManager/packetmanager.cache' #Path to cache directory self.oktext = _("\nAfter pressing OK, please wait!") self.unwanted_extensions = ('-dbg', '-dev', '-doc', 'busybox') + self.opkgAvail = fileExists('/usr/bin/opkg') self.ipkg = IpkgComponent() self.ipkg.addCallback(self.ipkgCallback) @@ -1847,14 +1849,19 @@ class PacketManager(Screen, NumericalTextInput): def IpkgList_Finished(self, result, retval, extra_args = None): if result: self.packetlist = [] + last_name = "" for x in result.splitlines(): - tokens = x.split(' - ') #self.blacklisted_packages + tokens = x.split(' - ') name = tokens[0].strip() if not any(name.endswith(x) for x in self.unwanted_extensions): l = len(tokens) version = l > 1 and tokens[1].strip() or "" descr = l > 2 and tokens[2].strip() or "" + if name == last_name: + continue + last_name = name self.packetlist.append([name, version, descr]) + if not self.Console: self.Console = Console() cmd = "ipkg list_installed" @@ -1864,30 +1871,47 @@ class PacketManager(Screen, NumericalTextInput): if result: self.installed_packetlist = {} for x in result.splitlines(): - tokens = x.split(' - ') #self.blacklisted_packages + tokens = x.split(' - ') name = tokens[0].strip() if not any(name.endswith(x) for x in self.unwanted_extensions): l = len(tokens) version = l > 1 and tokens[1].strip() or "" self.installed_packetlist[name] = version - self.buildPacketList() + if self.opkgAvail: + if not self.Console: + self.Console = Console() + cmd = "opkg list-upgradable" + self.Console.ePopen(cmd, self.OpkgListUpgradeable_Finished) + else: + self.buildPacketList() + def OpkgListUpgradeable_Finished(self, result, retval, extra_args = None): + if result: + self.upgradeable_packages = {} + for x in result.splitlines(): + tokens = x.split(' - ') + name = tokens[0].strip() + if not any(name.endswith(x) for x in self.unwanted_extensions): + l = len(tokens) + version = l > 2 and tokens[2].strip() or "" + self.upgradeable_packages[name] = version + self.buildPacketList() + def buildEntryComponent(self, name, version, description, state): divpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/div-h.png")) if state == 'installed': installedpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_PLUGIN, "SystemPlugins/SoftwareManager/installed.png")) - return((name, version, description, state, installedpng, divpng)) + return((name, version, _(description), state, installedpng, divpng)) elif state == 'upgradeable': upgradeablepng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_PLUGIN, "SystemPlugins/SoftwareManager/upgradeable.png")) - return((name, version, description, state, upgradeablepng, divpng)) + return((name, version, _(description), state, upgradeablepng, divpng)) else: installablepng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_PLUGIN, "SystemPlugins/SoftwareManager/installable.png")) - return((name, version, description, state, installablepng, divpng)) + return((name, version, _(description), state, installablepng, divpng)) def buildPacketList(self): self.list = [] self.cachelist = [] - if self.cache_ttl > 0 and self.vc != 0: print 'Loading packagelist cache from ',self.cache_file try: @@ -1903,24 +1927,28 @@ class PacketManager(Screen, NumericalTextInput): print 'rebuilding fresh package list' for x in self.packetlist: status = "" - if self.installed_packetlist.has_key(x[0].strip()): - if self.installed_packetlist[x[0].strip()] == x[1].strip(): - status = "installed" - self.list.append(self.buildEntryComponent(x[0].strip(), x[1].strip(), x[2].strip(), status)) + if self.installed_packetlist.has_key(x[0]): + if self.opkgAvail: + if self.upgradeable_packages.has_key(x[0]): + status = "upgradeable" + else: + status = "installed" else: - status = "upgradeable" - self.list.append(self.buildEntryComponent(x[0].strip(), x[1].strip(), x[2].strip(), status)) + if self.installed_packetlist[x[0]] == x[1]: + status = "installed" + else: + status = "upgradeable" else: status = "installable" - self.list.append(self.buildEntryComponent(x[0].strip(), x[1].strip(), x[2].strip(), status)) - if not any(x[0].strip().endswith(x) for x in self.unwanted_extensions): - self.cachelist.append([x[0].strip(), x[1].strip(), x[2].strip(), status]) + self.list.append(self.buildEntryComponent(x[0], x[1], x[2], status)) + self.cachelist.append([x[0], x[1], x[2], status]) write_cache(self.cache_file, self.cachelist) self['list'].setList(self.list) def reloadPluginlist(self): plugins.readPluginList(resolveFilename(SCOPE_PLUGINS)) + class IpkgInstaller(Screen): skin = """