diff --git a/data/display480/skin_display.xml b/data/display480/skin_display.xml index dd7a1c8d3f..0fda59b286 100644 --- a/data/display480/skin_display.xml +++ b/data/display480/skin_display.xml @@ -564,10 +564,17 @@ - + + + + + + + + diff --git a/lib/base/eerror.cpp b/lib/base/eerror.cpp index e14a6d134e..192357a549 100644 --- a/lib/base/eerror.cpp +++ b/lib/base/eerror.cpp @@ -144,7 +144,8 @@ int formatTime(char *buf, int bufferSize, int flags) if (!(flags & _DBGFLG_NOTIME)) { if (debugTime & 1) { clock_gettime(CLOCK_MONOTONIC, &tp); - pos += snprintf(buf, bufferSize, "<%6lu.%04lu> ", tp.tv_sec, tp.tv_nsec/100000); +/* Cast to (long long) is to cater for older 32-bit time fields */ + pos += snprintf(buf, bufferSize, "<%6lld.%04lld> ", (long long)tp.tv_sec, (long long)tp.tv_nsec/100000); } if (debugTime & 2) { @@ -152,8 +153,9 @@ int formatTime(char *buf, int bufferSize, int flags) struct timeval tim; gettimeofday(&tim, NULL); localtime_r(&tim.tv_sec, &loctime); - pos += snprintf(buf + pos, bufferSize - pos, "%02d:%02d:%02d.%04lu ", - loctime.tm_hour, loctime.tm_min, loctime.tm_sec, tim.tv_usec / 100L); +/* Cast to (long long) is to cater for older 32-bit time fields */ + pos += snprintf(buf + pos, bufferSize - pos, "%02d:%02d:%02d.%04lld ", + loctime.tm_hour, loctime.tm_min, loctime.tm_sec, (long long)tim.tv_usec / 100L); } } diff --git a/lib/python/Components/Addons/Pager.py b/lib/python/Components/Addons/Pager.py index 967017e91a..ba575edba1 100644 --- a/lib/python/Components/Addons/Pager.py +++ b/lib/python/Components/Addons/Pager.py @@ -33,12 +33,12 @@ def __init__(self): def onContainerShown(self): # disable listboxes default scrollbars if hasattr(self.source, "instance") and hasattr(self.source.instance, "setScrollbarMode"): - self.source.instance.setScrollbarMode(2) + self.source.instance.setScrollbarMode(eListbox.showNever) - if hasattr(self.source, "onSelectionChanged") and self.initPager not in self.source.onSelectionChanged: - self.source.onSelectionChanged.append(self.initPager) - if hasattr(self.source, "onSelChanged") and self.initPager not in self.source.onSelChanged: - self.source.onSelChanged.append(self.initPager) + onSelectionChanged = x if (x := getattr(self.source, "onSelectionChanged", None)) else getattr(self.source, "onSelChanged", None) + + if isinstance(onSelectionChanged, list) and self.initPager not in onSelectionChanged: + onSelectionChanged.append(self.initPager) self.initPager() diff --git a/lib/python/Components/EpgListGrid.py b/lib/python/Components/EpgListGrid.py index 06ecea72d4..e0dbc8f8de 100644 --- a/lib/python/Components/EpgListGrid.py +++ b/lib/python/Components/EpgListGrid.py @@ -91,6 +91,7 @@ def __init__(self, session, isInfobar, selChangedCB=None): self.eventBorderWidth = 1 self.eventNamePadding = 3 self.serviceNumberWidth = 0 + self.eventTextSidesMargin = 0 self.l.setBuildFunc(self.buildEntry) self.loadConfig() @@ -146,6 +147,9 @@ def applySkin(self, desktop, screen): elif attrib == "EntryForegroundColorNowSelected": self.foreColorNowSelected = parseColor(value).argb() + elif attrib == "EventTextSidesMargin": + self.eventTextSidesMargin = parseScale(value) + elif attrib == "ServiceBorderColor": self.borderColorService = parseColor(value).argb() elif attrib == "ServiceBorderWidth": @@ -615,6 +619,10 @@ def buildEntry(self, service, serviceName, events, picon, channel): pos=(left + xpos + self.eventBorderWidth, evY), size=(ewidth - 2 * self.eventBorderWidth, evH), png=infoPix, flags=BT_ALIGN_CENTER)) else: + evW -= self.eventTextSidesMargin * 2 + evX += self.eventTextSidesMargin + if evW < 0: + evW = 0 res.append(MultiContentEntryText( pos=(evX, evY), size=(evW, evH), font=1, flags=int(config.epgselection.grid.event_alignment.value), @@ -655,16 +663,19 @@ def buildEntry(self, service, serviceName, events, picon, channel): pix_size = timerIcon.size() pix_width = pix_size.width() pix_height = pix_size.height() + isTimerIconAdded = False if config.epgselection.grid.rec_icon_height.value == "middle": recIconHeight = top + (height - pix_height) // 2 elif config.epgselection.grid.rec_icon_height.value == "top": recIconHeight = top + 3 else: - recIconHeight = top + height - pix_height - applySkinFactor(5) + recIconHeight = top + height - pix_height - 10 if matchType == 0: - pos = (left + xpos + ewidth - pix_width - applySkinFactor(5), recIconHeight) + pos = (left + xpos + ewidth - pix_width - 10, recIconHeight) + isTimerIconAdded = True else: - pos = (left + xpos + ewidth - pix_width - applySkinFactor(5), recIconHeight) + pos = (left + xpos + ewidth - pix_width - 10, recIconHeight) + isTimerIconAdded = True res.append(MultiContentEntryPixmapAlphaBlend( pos=pos, size=(pix_width, pix_height), png=timerIcon)) @@ -673,7 +684,7 @@ def buildEntry(self, service, serviceName, events, picon, channel): pix_width = pix_size.width() pix_height = pix_size.height() res.append(MultiContentEntryPixmapAlphaBlend( - pos=(pos[0] - pix_width - applySkinFactor(5), pos[1]), size=(pix_width, pix_height), + pos=(pos[0] - pix_width - (5 if isTimerIconAdded else 10), pos[1]), size=(pix_width, pix_height), png=autoTimerIcon)) return res diff --git a/lib/python/Components/EpgListSingle.py b/lib/python/Components/EpgListSingle.py index 1af1b1d0d1..61f81d93e1 100644 --- a/lib/python/Components/EpgListSingle.py +++ b/lib/python/Components/EpgListSingle.py @@ -91,13 +91,14 @@ def buildEntry(self, service, eventId, beginTime, duration, eventName): pix_width = pix_size.width() pix_height = pix_size.height() eventW -= pix_width - res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHABLEND, r3.left() + r3.width() - pix_width, (r3.height() - pix_height) // 2, pix_width, pix_height, timerIcon)) + posX = r3.left() + r3.width() - pix_width + res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHABLEND, posX, (r3.height() - pix_height) // 2, pix_width, pix_height, timerIcon)) if autoTimerIcon: pix_size = autoTimerIcon.size() pix_width = pix_size.width() pix_height = pix_size.height() - eventW -= pix_width - res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHABLEND, r3.left() + r3.width() - pix_width * 2 - 10, (r3.height() - pix_height) // 2, pix_width, pix_height, autoTimerIcon)) + eventW -= pix_width + 6 + res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHABLEND, posX - pix_width - 6, (r3.height() - pix_height) // 2, pix_width, pix_height, autoTimerIcon)) res.append((eListboxPythonMultiContent.TYPE_TEXT, r3.left(), r3.top(), eventW, r3.height(), 0, RT_HALIGN_LEFT | RT_VALIGN_CENTER, eventName)) return res diff --git a/lib/python/Plugins/SystemPlugins/OBH/Makefile.am b/lib/python/Plugins/SystemPlugins/OBH/Makefile.am index 8f573e3d72..4fa7447db2 100644 --- a/lib/python/Plugins/SystemPlugins/OBH/Makefile.am +++ b/lib/python/Plugins/SystemPlugins/OBH/Makefile.am @@ -4,7 +4,6 @@ SUBDIRS = images install_PYTHON = *.py -install_DATA = *.png \ - *.xml \ +install_DATA = *.xml \ LICENSE \ maintainer.info \ No newline at end of file diff --git a/lib/python/Plugins/SystemPlugins/OBH/PackageManager.py b/lib/python/Plugins/SystemPlugins/OBH/PackageManager.py index 7c4114319e..a276b7adfb 100644 --- a/lib/python/Plugins/SystemPlugins/OBH/PackageManager.py +++ b/lib/python/Plugins/SystemPlugins/OBH/PackageManager.py @@ -1,13 +1,9 @@ -import os -import time -import pickle - -from enigma import eRCInput, getPrevAsciiCode +from time import time from Components.Console import Console from Components.Ipkg import IpkgComponent from Components.Sources.List import List -from Components.ActionMap import NumberActionMap +from Components.ActionMap import ActionMap from Components.PluginComponent import plugins from Components.Sources.StaticText import StaticText @@ -16,35 +12,8 @@ from Screens.Screen import Screen, ScreenSummary from Screens.Standby import TryQuitMainloop -from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_CURRENT_PLUGIN, SCOPE_CURRENT_SKIN +from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_CURRENT_SKIN from Tools.LoadPixmap import LoadPixmap -from Tools.NumericalTextInput import NumericalTextInput - - -def write_cache(cache_file, cache_data): - try: - path = os.path.dirname(cache_file) - if not os.path.isdir(path): - os.mkdir(path) - pickle.dump(cache_data, open(cache_file, "wb"), -1) - except Exception as ex: - print("Failed to write cache data to %s:" % cache_file, ex) - - -def valid_cache(cache_file, cache_ttl): - try: - mtime = os.stat(cache_file)[os.stat.ST_MTIME] - except: - return 0 - curr_time = time.time() - if (curr_time - mtime) > cache_ttl: - return 0 - else: - return 1 - - -def load_cache(cache_file): - return pickle.load(open(cache_file, "rb")) class PackageManagerSummary(ScreenSummary): @@ -52,7 +21,7 @@ def __init__(self, session, parent): ScreenSummary.__init__(self, session, parent=parent) -class PackageManager(Screen, NumericalTextInput): +class PackageManager(Screen): skin = [""" @@ -89,196 +58,98 @@ class PackageManager(Screen, NumericalTextInput): def __init__(self, session): Screen.__init__(self, session) - NumericalTextInput.__init__(self) self.title = _("Package manager") - self.setUseableChars("1234567890abcdefghijklmnopqrstuvwxyz") - - self["shortcuts"] = NumberActionMap(["SetupActions", "InputAsciiActions"], + self["actions"] = ActionMap(["SetupActions"], { "ok": self.go, - "cancel": self.exit, - "gotAsciiCode": self.keyGotAscii, - "1": self.keyNumberGlobal, - "2": self.keyNumberGlobal, - "3": self.keyNumberGlobal, - "4": self.keyNumberGlobal, - "5": self.keyNumberGlobal, - "6": self.keyNumberGlobal, - "7": self.keyNumberGlobal, - "8": self.keyNumberGlobal, - "9": self.keyNumberGlobal, - "0": self.keyNumberGlobal + "save": self.rebuildList, + "cancel": self.cancel, }, -1) - self["filterActions"] = NumberActionMap(["SetupActions"], + self["filterActions"] = ActionMap(["SetupActions"], { "deleteBackward": self.filterPrev, "deleteForward": self.filterNext, - "save": self.reload, }, -1) self["filterActions"].setEnabled(False) self.list = [] - self.statuslist = [] self["list"] = List(self.list) self["key_red"] = StaticText(_("Close")) - self["key_green"] = StaticText() + self["key_green"] = StaticText(_("opkg update")) self["key_previous"] = StaticText() self["key_next"] = StaticText() - self.imagePath = "%s/images/" % os.path.dirname(os.path.realpath(__file__)) - self.list_updating = True + self.list_updating = False # because IpkgComponent sends multiple responses and we only want to react to one of them self.packetlist = [] self.installed_packetlist = {} self.upgradeable_packages = {} self.Console = Console() - self.cmdList = [] - self.cachelist = [] - self.cache_ttl = 86400 #600 is default, 0 disables, Seconds cache is considered valid (24h should be ok for caching opkgs) - self.cache_file = "/etc/enigma2/packetmanager.cache" # Path to cache directory - self.oktext = _("\nAfter pressing OK, please wait!") self.unwanted_extensions = ("-dbg", "-dev", "-doc", "-staticdev", "-src", "busybox") - self.filters = {"All": _("All"), "Installed": _("Installed"), "Upgradeable": _("Upgradeable"), "Installable": _("Installable")} + self.filters = {"all": _("All"), "installed": _("Installed"), "upgradeable": _("Upgradeable"), "installable": _("Installable")} - self.installedpng = LoadPixmap(cached=True, path=self.imagePath + "installed.png") - self.upgradeablepng = LoadPixmap(cached=True, path=self.imagePath + "upgradeable.png") - self.installablepng = LoadPixmap(cached=True, path=self.imagePath + "installable.png") + self.installedpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "icons/installed.png")) + self.upgradeablepng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "icons/upgradeable.png")) + self.installablepng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "icons/installable.png")) + self.divpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "div-h.png")) + self.upgradepng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "icons/upgrade.png")) + self.removepng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "icons/remove.png")) self.ipkg = IpkgComponent() self.ipkg.addCallback(self.ipkgCallback) - self.onLayoutFinish.append(self.rebuildList) - - rcinput = eRCInput.getInstance() - rcinput.setKeyboardMode(rcinput.kmAscii) - - def keyNumberGlobal(self, val): - key = self.getKey(val) - if key is not None: - keyvalue = key.encode("utf-8") - if len(keyvalue) == 1: - self.setNextIdx(keyvalue[0]) - - def keyGotAscii(self): - keyvalue = chr(getPrevAsciiCode()).encode("utf-8") - if len(keyvalue) == 1: - self.setNextIdx(keyvalue[0]) - - def setNextIdx(self, char): - if char in ("0", "1", "a"): - self["list"].setIndex(0) - else: - idx = self.getNextIdx(char) - if idx and idx <= self["list"].count: - self["list"].setIndex(idx) - - def getNextIdx(self, char): - for idx, i in enumerate(self["list"].list): - if i[0] and (i[0][0] == char): - return idx - - def exit(self): + self.onLayoutFinish.append(self.buildList) + + def cancel(self): self.ipkg.stop() - if self.Console is not None: - self.Console.killAll() - rcinput = eRCInput.getInstance() - rcinput.setKeyboardMode(rcinput.kmNone) + self.Console.killAll() self.close() - def reload(self): - if os.path.exists(self.cache_file): - os.unlink(self.cache_file) - self.list_updating = True - self.rebuildList() - - def setStatus(self, status=None): - if status: - self.statuslist = [] - divpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "div-h.png")) - if status == "update": - statuspng = LoadPixmap(cached=True, path=self.imagePath + "upgrade.png") - self.statuslist.append((_("Package list update"), "", _("Downloading a new packet list. Please wait..."), "", statuspng, divpng)) - self["list"].setList(self.statuslist) - elif status == "error": - statuspng = LoadPixmap(cached=True, path=self.imagePath + "remove.png") - self.statuslist.append((_("Error"), "", _("An error occurred while downloading the packetlist. Please try again."), "", statuspng, divpng)) - self["list"].setList(self.statuslist) + def setStatus(self, status): + if status == "updating": + self["list"].setList([(_("Running opkg update"), "", _("Downloading the latest package list. Please wait..."), "", self.upgradepng, self.divpng)]) + elif status == "loading": + self["list"].setList([(_("Package list loading"), "", _("Loading the package list. Please wait..."), "", self.upgradepng, self.divpng)]) + elif status == "error": + self["list"].setList([(_("Error"), "", _("An error occurred while downloading the packetlist. Please try again."), "", self.removepng, self.divpng)]) def rebuildList(self): - self.setStatus("update") - self.inv_cache = 0 - self.vc = valid_cache(self.cache_file, self.cache_ttl) - if self.cache_ttl > 0 and self.vc != 0: - try: - self.buildPacketList() - except: - self.inv_cache = 1 - if self.cache_ttl == 0 or self.inv_cache == 1 or self.vc == 0: - self.run = 0 - self.ipkg.startCmd(IpkgComponent.CMD_UPDATE) + if not self.list_updating: + self.list_updating = True + self.setStatus("updating") + self.ipkg.startCmd(IpkgComponent.CMD_UPDATE) # sync opkg with the feeds def go(self, returnValue=None): - cur = self["list"].getCurrent() - if cur: + if cur := self["list"].getCurrent(): status = cur[3] package = cur[0] - self.cmdList = [] + self.wasRemove = False if status == "installed": - self.cmdList.append((IpkgComponent.CMD_REMOVE, {"package": package})) - if len(self.cmdList): - self.session.openWithCallback(self.runRemove, MessageBox, _("Do you want to remove the package:\n") + package + "\n" + self.oktext) + self.wasRemove = True + self.cmd = (IpkgComponent.CMD_REMOVE, {"package": package}) + self.session.openWithCallback(self.runCommand, MessageBox, _("Do you want to remove the package:\n") + package) elif status == "upgradeable": - self.cmdList.append((IpkgComponent.CMD_INSTALL, {"package": package})) - if len(self.cmdList): - self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to update the package:\n") + package + "\n" + self.oktext) + self.cmd = (IpkgComponent.CMD_INSTALL, {"package": package}) + self.session.openWithCallback(self.runCommand, MessageBox, _("Do you want to update the package:\n") + package) elif status == "installable": - self.cmdList.append((IpkgComponent.CMD_INSTALL, {"package": package})) - if len(self.cmdList): - self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to install the package:\n") + package + "\n" + self.oktext) + self.cmd = (IpkgComponent.CMD_INSTALL, {"package": package}) + self.session.openWithCallback(self.runCommand, MessageBox, _("Do you want to install the package:\n") + package) - def runRemove(self, result): - if result: - self.session.openWithCallback(self.runRemoveFinished, Ipkg, cmdList=self.cmdList) - - def runRemoveFinished(self): - self.session.openWithCallback(self.RemoveReboot, MessageBox, _("Removal has completed.") + "\n" + _("Do you want to reboot your receiver?"), MessageBox.TYPE_YESNO) - - def RemoveReboot(self, result): - if result is None: - return - if not result: - cur = self["list"].getCurrent() - if cur: - item = self["list"].getIndex() - self.list[item] = self.buildEntryComponent(cur[0], cur[1], cur[2], "installable") - self.cachelist[item] = [cur[0], cur[1], cur[2], "installable"] - self["list"].setList(self.list) - write_cache(self.cache_file, self.cachelist) - self.reloadPluginlist() + def runCommand(self, result): if result: - self.session.open(TryQuitMainloop, retvalue=3) + self.session.openWithCallback(self.runCommandFinished, Ipkg, cmdList=[self.cmd]) - def runUpgrade(self, result): - if result: - self.session.openWithCallback(self.runUpgradeFinished, Ipkg, cmdList=self.cmdList) - - def runUpgradeFinished(self): - self.session.openWithCallback(self.UpgradeReboot, MessageBox, _("Update has completed.") + "\n" + _("Do you want to reboot your receiver?"), MessageBox.TYPE_YESNO) - - def UpgradeReboot(self, result): - if result is None: - return - if not result: - cur = self["list"].getCurrent() - if cur: - item = self["list"].getIndex() - self.list[item] = self.buildEntryComponent(cur[0], cur[1], cur[2], "installed") - self.cachelist[item] = [cur[0], cur[1], cur[2], "installed"] - self["list"].setList(self.list) - write_cache(self.cache_file, self.cachelist) - self.reloadPluginlist() + def runCommandFinished(self): + msg = _("Removal has completed.") if self.wasRemove else _("Update has completed.") + self.session.openWithCallback(self.Reboot, MessageBox, msg + "\n" + _("Do you want to reboot your receiver?"), MessageBox.TYPE_YESNO) + + def Reboot(self, result): if result: self.session.open(TryQuitMainloop, retvalue=3) + elif cur := self["list"].getCurrent(): + self.list[self.list.index(cur)] = self.buildEntryComponent(cur[0], cur[1], cur[2], "installable" if self.wasRemove else "installed") + self.filterList() + self.reloadPluginlist() def ipkgCallback(self, event, param): if event == IpkgComponent.EVENT_ERROR: @@ -287,11 +158,12 @@ def ipkgCallback(self, event, param): elif event == IpkgComponent.EVENT_DONE: if self.list_updating: self.list_updating = False - if not self.Console: - self.Console = Console() - cmd = self.ipkg.ipkg + " list" - self.Console.ePopen(cmd, self.OpkgList_Finished) - pass + self.buildList() + + def buildList(self): + self.setStatus("loading") + cmd = self.ipkg.ipkg + " list" + self.Console.ePopen(cmd, self.OpkgList_Finished) def OpkgList_Finished(self, result, retval, extra_args=None): if result: @@ -315,80 +187,50 @@ def OpkgList_Finished(self, result, retval, extra_args=None): last_packet = self.packetlist[-1] last_packet[2] = last_packet[2] + x self.packetlist[:-1] + last_packet - - if not self.Console: - self.Console = Console() cmd = self.ipkg.ipkg + " list_installed" self.Console.ePopen(cmd, self.OpkgListInstalled_Finished) def OpkgListInstalled_Finished(self, result, retval, extra_args=None): if result: - self.installed_packetlist = {} - 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 > 1 and tokens[1].strip() or "" - self.installed_packetlist[name] = version - if not self.Console: - self.Console = Console() - cmd = "opkg list-upgradable" + self.installed_packetlist = self.parseResult(result) + cmd = self.ipkg.ipkg + " list-upgradable" self.Console.ePopen(cmd, self.OpkgListUpgradeable_Finished) 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.upgradeable_packages = self.parseResult(result) self.buildPacketList() + def parseResult(self, result): + 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 > 1 and tokens[-1].strip() or "" + packages[name] = version + return packages + def buildEntryComponent(self, name, version, description, state): - divpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "div-h.png")) - if not description: - description = "No description available." - if state == "installed": - return ((name, version, _(description), state, self.installedpng, divpng)) - elif state == "upgradeable": - return ((name, version, _(description), state, self.upgradeablepng, divpng)) - else: - return ((name, version, _(description), state, self.installablepng, divpng)) + description = _(description) if description else _("No description available.") + png = state == "installed" and self.installedpng or state == "upgradeable" and self.upgradeablepng or self.installablepng + return ((name, version, description, state, png, self.divpng)) def buildPacketList(self): self.list = [] - self.cachelist = [] self.i = 0 - if self.cache_ttl > 0 and self.vc != 0: - print("Loading packagelist cache from ", self.cache_file) - try: - self.cachelist = load_cache(self.cache_file) - if len(self.cachelist) > 0: - for x in self.cachelist: - self.list.append(self.buildEntryComponent(x[0], x[1], x[2], x[3])) - self["list"].setList(self.list) - except: - self.inv_cache = 1 - - if self.cache_ttl == 0 or self.inv_cache == 1 or self.vc == 0: - print("rebuilding fresh package list") - for x in self.packetlist: - status = "" - if x[0] in self.installed_packetlist: - if x[0] in self.upgradeable_packages: - status = "upgradeable" - else: - status = "installed" + for x in self.packetlist: + status = "" + if x[0] in self.installed_packetlist: + if x[0] in self.upgradeable_packages: + status = "upgradeable" else: - status = "installable" - 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) + status = "installed" + else: + status = "installable" + self.list.append(self.buildEntryComponent(x[0], x[1], x[2], status)) + self["list"].setList(self.list) self.updateTexts() def filterPrev(self): @@ -401,15 +243,7 @@ def filterNext(self): def filterList(self): if self.list: - filter = self.getCurrentFilter() - if filter == "All": - self["list"].setList(self.list) - elif filter == "Installed": - self["list"].setList([x for x in self.list if x[4] is self.installedpng]) - elif filter == "Upgradeable": - self["list"].setList([x for x in self.list if x[4] is self.upgradeablepng]) - elif filter == "Installable": - self["list"].setList([x for x in self.list if x[4] is self.installablepng]) + self["list"].setList(self.list if (filter := self.getCurrentFilter()) == "all" else [x for x in self.list if x[3] == filter]) self.updateTexts() def getCurrentFilter(self): @@ -419,15 +253,8 @@ def updateTexts(self): if self.list: self["filterActions"].setEnabled(True) self.title = _("Package manager") + " - " + self.filters[self.getCurrentFilter()] - self["key_green"].text = _("Refresh list") self["key_previous"].text = _("PREVIOUS") self["key_next"].text = _("NEXT") - else: - self["filterActions"].setEnabled(False) - self.title = _("Package manager") - self["key_green"].text = "" - self["key_previous"].text = "" - self["key_next"].text = "" def reloadPluginlist(self): plugins.readPluginList(resolveFilename(SCOPE_PLUGINS)) diff --git a/lib/python/Plugins/SystemPlugins/OBH/images/installable.png b/lib/python/Plugins/SystemPlugins/OBH/images/installable.png deleted file mode 100644 index f52b66c25b..0000000000 Binary files a/lib/python/Plugins/SystemPlugins/OBH/images/installable.png and /dev/null differ diff --git a/lib/python/Plugins/SystemPlugins/OBH/images/installed.png b/lib/python/Plugins/SystemPlugins/OBH/images/installed.png deleted file mode 100644 index 479088db9c..0000000000 Binary files a/lib/python/Plugins/SystemPlugins/OBH/images/installed.png and /dev/null differ diff --git a/lib/python/Plugins/SystemPlugins/OBH/images/remove.png b/lib/python/Plugins/SystemPlugins/OBH/images/remove.png deleted file mode 100644 index 28b29c0553..0000000000 Binary files a/lib/python/Plugins/SystemPlugins/OBH/images/remove.png and /dev/null differ diff --git a/lib/python/Plugins/SystemPlugins/OBH/images/upgrade.png b/lib/python/Plugins/SystemPlugins/OBH/images/upgrade.png deleted file mode 100644 index 860d3f1360..0000000000 Binary files a/lib/python/Plugins/SystemPlugins/OBH/images/upgrade.png and /dev/null differ diff --git a/lib/python/Plugins/SystemPlugins/OBH/images/upgradeable.png b/lib/python/Plugins/SystemPlugins/OBH/images/upgradeable.png deleted file mode 100644 index a75373c2b7..0000000000 Binary files a/lib/python/Plugins/SystemPlugins/OBH/images/upgradeable.png and /dev/null differ diff --git a/lib/python/Plugins/SystemPlugins/OBH/install.png b/lib/python/Plugins/SystemPlugins/OBH/install.png deleted file mode 100644 index 1287c35a68..0000000000 Binary files a/lib/python/Plugins/SystemPlugins/OBH/install.png and /dev/null differ diff --git a/lib/python/Plugins/SystemPlugins/OBH/installable.png b/lib/python/Plugins/SystemPlugins/OBH/installable.png deleted file mode 100644 index 09baa812ce..0000000000 Binary files a/lib/python/Plugins/SystemPlugins/OBH/installable.png and /dev/null differ diff --git a/lib/python/Plugins/SystemPlugins/OBH/installed.png b/lib/python/Plugins/SystemPlugins/OBH/installed.png deleted file mode 100644 index 75dfc4f33a..0000000000 Binary files a/lib/python/Plugins/SystemPlugins/OBH/installed.png and /dev/null differ diff --git a/lib/python/Plugins/SystemPlugins/OBH/noprev.png b/lib/python/Plugins/SystemPlugins/OBH/noprev.png deleted file mode 100644 index 0a7cf2b480..0000000000 Binary files a/lib/python/Plugins/SystemPlugins/OBH/noprev.png and /dev/null differ diff --git a/lib/python/Plugins/SystemPlugins/OBH/remove.png b/lib/python/Plugins/SystemPlugins/OBH/remove.png deleted file mode 100644 index 4d00781e5f..0000000000 Binary files a/lib/python/Plugins/SystemPlugins/OBH/remove.png and /dev/null differ diff --git a/lib/python/Plugins/SystemPlugins/OBH/update.png b/lib/python/Plugins/SystemPlugins/OBH/update.png deleted file mode 100644 index 0ece6c76a7..0000000000 Binary files a/lib/python/Plugins/SystemPlugins/OBH/update.png and /dev/null differ diff --git a/lib/python/Plugins/SystemPlugins/OBH/upgrade.png b/lib/python/Plugins/SystemPlugins/OBH/upgrade.png deleted file mode 100644 index 135058409c..0000000000 Binary files a/lib/python/Plugins/SystemPlugins/OBH/upgrade.png and /dev/null differ diff --git a/lib/python/Plugins/SystemPlugins/OBH/upgradeable.png b/lib/python/Plugins/SystemPlugins/OBH/upgradeable.png deleted file mode 100644 index 1702177f7b..0000000000 Binary files a/lib/python/Plugins/SystemPlugins/OBH/upgradeable.png and /dev/null differ