From 95eba60bb57cdf518da194c45859632e28df7032 Mon Sep 17 00:00:00 2001 From: "Mr.Servo" Date: Thu, 21 Aug 2025 19:38:34 +0200 Subject: [PATCH 1/9] [LCD4linux] V5.0-r29 tiny bugfix (#913) - user request: https://www.opena.tv/viewtopic.php?p=589223#p589212 --- lcd4linux/src/plugin.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lcd4linux/src/plugin.py b/lcd4linux/src/plugin.py index de8f163..3224410 100644 --- a/lcd4linux/src/plugin.py +++ b/lcd4linux/src/plugin.py @@ -5329,11 +5329,12 @@ def askForConfigName(self, name): def askForDelete(self, retval): if (retval): current = self["menu"].getCurrent() - if current and isfile(current[2]): + if len(current) > 1 and isfile(current[2]): currentEntry = current[1] - i = int(currentEntry.split()[1]) - self.list[i] = (_("deleted"),) + self.list[i][1:] - rmFile(current[2]) + if len(currentEntry): + i = int(currentEntry.split()[1]) + self.list[i] = (_("deleted"),) + self.list[i][1:] + rmFile(current[2]) def cancel(self): self.close(False, self.session) From 8998e983ab4cb2e0a38dc90c2262571bfc2d3164 Mon Sep 17 00:00:00 2001 From: "Mr.Servo" Date: Wed, 27 Aug 2025 19:20:20 +0200 Subject: [PATCH 2/9] [LCD4linux] V5.0-r30 bugfixed and improved LCDdisplayMenu (#914) THX to User KenTucky @ OpenA.TV details see: https://www.opena.tv/viewtopic.php?p=589547#p589520 HINT: **LCD4linux** is still working under Python2 and Python3 --- lcd4linux/src/plugin.py | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/lcd4linux/src/plugin.py b/lcd4linux/src/plugin.py index 3224410..d6d6894 100644 --- a/lcd4linux/src/plugin.py +++ b/lcd4linux/src/plugin.py @@ -172,7 +172,7 @@ if find_library("usb-0.1") is not None or find_library("usb-1.0") is not None: print("[LCD4linux] libusb found :-)", getEnigmaVersionString()) USBok = True -Version = "V5.0-r29" +Version = "V5.0-r30" L4LElist = L4Lelement() L4LdoThread = True LCD4enigma2config = resolveFilename(SCOPE_CONFIG) # /etc/enigma2/ @@ -5264,12 +5264,13 @@ class LCDdisplayMenu(Screen): skin = """ + + """ def __init__(self, session, args=None): Screen.__init__(self, session) self.session = session - self.list = [] self.SetList() self["menu"] = MenuList(self.list) self["key_red"] = StaticText(_("Delete")) @@ -5286,10 +5287,11 @@ def SetList(self): self.list.append((_("Load Defaults / Empty Config"), "LoadDefault", "")) self.list.append((_("Save Config to File... (%s)") % LCD4linux.ConfigPath.value, "SaveToConfig", "")) Cdir = sorted(glob(join(LCD4linux.ConfigPath.value, "*.lcd"))) - xx = 3 + self.xx = 3 for ii in Cdir: - self.list.append((_("Load File : %s") % basename(ii), "LoadFile %d" % xx, ii)) - xx += 1 + self.list.append((_("Load File : %s") % basename(ii), "LoadFile %d" % self.xx, ii)) + self.xx += 1 + self.LastSavedConfig = 0 def entfernen(self): current = self["menu"].getCurrent() @@ -5310,31 +5312,38 @@ def keyOK(self): LCD4linux.loadFromFile(LCD4default) LCD4linux.loadFromFile(LCD4config) LCD4linux.load() + self.cancel() elif currentEntry == "SaveToConfig": - self.session.openWithCallback(self.askForConfigName, InputBox, title="Save Filename", text="LCD4linux-%s" % (strftime("%Y%m%d_%H%M")), type=Input.TEXT) + if self.LastSavedConfig == 0: + self.session.openWithCallback(self.askForConfigName, InputBox, title="Save Filename", text="LCD4linux-%s" % (strftime("%Y%m%d_%H%M")), type=Input.TEXT) elif currentEntry.startswith("LoadFile"): if isfile(current[2]): L4LoadNewConfig(current[2]) + self.cancel() elif currentEntry == "LoadDefault" and isfile(LCD4default): L4log("Config-Load", LCD4default) LCD4linux.loadFromFile(LCD4default) LCD4linux.load() + self.cancel() def askForConfigName(self, name): if name is not None and isdir(LCD4linux.ConfigPath.value): LCD4linux.save() LCD4linux.saveToFile(join(LCD4linux.ConfigPath.value, "%s.lcd" % name)) - self.list.append((_("Load File : %s") % ("%s.lcd" % name), "LoadFile", join(LCD4linux.ConfigPath.value, "%s.lcd" % name))) + self.list.append((_("Load File : %s") % ("%s.lcd" % name), "LoadFile %d" % self.xx, join(LCD4linux.ConfigPath.value, "%s.lcd" % name))) + self.LastSavedConfig = self.xx + self.xx += 1 def askForDelete(self, retval): if (retval): current = self["menu"].getCurrent() - if len(current) > 1 and isfile(current[2]): + if current and isfile(current[2]): currentEntry = current[1] - if len(currentEntry): - i = int(currentEntry.split()[1]) - self.list[i] = (_("deleted"),) + self.list[i][1:] - rmFile(current[2]) + i = int(currentEntry.split()[1]) + if i == self.LastSavedConfig: + self.LastSavedConfig = 0 + self.list[i] = (_("deleted"),) + self.list[i][1:] + rmFile(current[2]) def cancel(self): self.close(False, self.session) From c345282b40f46560d2d614fb338338322a70b033 Mon Sep 17 00:00:00 2001 From: "Mr.Servo" Date: Sat, 6 Sep 2025 10:14:46 +0200 Subject: [PATCH 3/9] [LCD4linux] V5.0-r31 fix for Py3-PIL rotate function - Py3-PIL library needs an additional parameter 'expand=True' for proper rotation of picture THX to User KenTucky @ OpenA.TV details see: https://www.opena.tv/viewtopic.php?p=589947#p589940 HINT: **LCD4linux** is still working under Python2 and Python3 --- lcd4linux/src/plugin.py | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/lcd4linux/src/plugin.py b/lcd4linux/src/plugin.py index d6d6894..6d28aec 100644 --- a/lcd4linux/src/plugin.py +++ b/lcd4linux/src/plugin.py @@ -172,7 +172,7 @@ if find_library("usb-0.1") is not None or find_library("usb-1.0") is not None: print("[LCD4linux] libusb found :-)", getEnigmaVersionString()) USBok = True -Version = "V5.0-r30" +Version = "V5.0-r31" L4LElist = L4Lelement() L4LdoThread = True LCD4enigma2config = resolveFilename(SCOPE_CONFIG) # /etc/enigma2/ @@ -3247,7 +3247,7 @@ def writeLCD1(s, im, quality, SAVE=True): doDPF(1, im, s) if "1" in LCD4linux.SavePicture.value and SAVE == True: if str(LCD4linux.LCDRotate1.value) != "0": - s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate1.value)) + s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate1.value), expand=True) try: s.im[im].save(bild, "PNG" if LCD4linux.BilderTyp.value == "png" else "JPEG") if isfile(bild): @@ -3280,7 +3280,7 @@ def writeLCD1(s, im, quality, SAVE=True): try: if "1" in LCD4linux.SavePicture.value and SAVE == True: if str(LCD4linux.LCDRotate1.value) != "0": - s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate1.value)) + s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate1.value), expand=True) s.im[im].save(bild, "PNG" if LCD4linux.BilderTyp.value == "png" else "JPEG") if isfile(bild): rename(bild, "%s.png" % PIC) @@ -3331,7 +3331,7 @@ def writeLCD1(s, im, quality, SAVE=True): try: datei = "%s.jpg" % PICtmp if str(LCD4linux.LCDRotate1.value) != "0": - s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate1.value)) + s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate1.value), expand=True) s.im[im].save(datei, "JPEG") elif pic is not None: open(datei, "wb").write(pic) @@ -3367,7 +3367,7 @@ def writeLCD2(s, im, quality, SAVE=True): doDPF(2, im, s) if "2" in LCD4linux.SavePicture.value and SAVE == True: if str(LCD4linux.LCDRotate2.value) != "0": - s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate2.value)) + s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate2.value), expand=True) try: s.im[im].save(bild, "PNG" if LCD4linux.BilderTyp.value == "png" else "JPEG") if isfile(bild): @@ -3389,7 +3389,7 @@ def writeLCD2(s, im, quality, SAVE=True): s.im[im].save("/tmp/usbtft-bmp", "BMP") if "2" in LCD4linux.SavePicture.value and SAVE == True: if str(LCD4linux.LCDRotate2.value) != "0": - s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate2.value)) + s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate2.value), expand=True) s.im[im].save(bild, "PNG" if LCD4linux.BilderTyp.value == "png" else "JPEG") if isfile(bild): rename(bild, "%s.png" % PIC2) @@ -3400,7 +3400,7 @@ def writeLCD2(s, im, quality, SAVE=True): try: if "2" in LCD4linux.SavePicture.value and SAVE == True: if str(LCD4linux.LCDRotate2.value) != "0": - s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate2.value)) + s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate2.value), expand=True) s.im[im].save(bild, "PNG" if LCD4linux.BilderTyp.value == "png" else "JPEG") if isfile(bild): rename(bild, "%s.png" % PIC2) @@ -3451,7 +3451,7 @@ def writeLCD2(s, im, quality, SAVE=True): try: datei = "%s.jpg" % PIC2tmp if str(LCD4linux.LCDRotate2.value) != "0": - s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate2.value)) + s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate2.value), expand=True) s.im[im].save(datei, "JPEG") elif pic is not None: open(datei, "wb").write(pic) @@ -3487,7 +3487,7 @@ def writeLCD3(s, im, quality, SAVE=True): doDPF(3, im, s) if "3" in LCD4linux.SavePicture.value and SAVE == True: if str(LCD4linux.LCDRotate3.value) != "0": - s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate3.value)) + s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate3.value), expand=True) try: s.im[im].save(bild, "PNG" if LCD4linux.BilderTyp.value == "png" else "JPEG") if isfile(bild): @@ -3509,7 +3509,7 @@ def writeLCD3(s, im, quality, SAVE=True): s.im[im].save("/tmp/usbtft-bmp", "BMP") if "3" in LCD4linux.SavePicture.value and SAVE == True: if str(LCD4linux.LCDRotate3.value) != "0": - s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate3.value)) + s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate3.value), expand=True) s.im[im].save(bild, "PNG" if LCD4linux.BilderTyp.value == "png" else "JPEG") if isfile(bild): rename(bild, "%s.png" % PIC3) @@ -3520,7 +3520,7 @@ def writeLCD3(s, im, quality, SAVE=True): try: if "3" in LCD4linux.SavePicture.value and SAVE == True: if str(LCD4linux.LCDRotate3.value) != "0": - s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate3.value)) + s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate3.value), expand=True) s.im[im].save(bild, "PNG" if LCD4linux.BilderTyp.value == "png" else "JPEG") if isfile(bild): rename(bild, "%s.png" % PIC3) @@ -3571,7 +3571,7 @@ def writeLCD3(s, im, quality, SAVE=True): try: datei = "%s.jpg" % PIC3tmp if str(LCD4linux.LCDRotate3.value) != "0": - s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate3.value)) + s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate3.value), expand=True) s.im[im].save(datei, "JPEG") elif pic is not None: open(datei, "wb").write(pic) @@ -11722,7 +11722,7 @@ def putClock(workaround, draw, im): else: pil_image = pil_image.resize((x1, y1), Image.LANCZOS if PY3 else Image.ANTIALIAS) S = int(strftime("%H")) % 12 - pil_image = pil_image.rotate(360 - int(30 * S + int(int(strftime("%M")) / 2))).convert("RGBA") # 360/12 + pil_image = pil_image.rotate(360 - int(30 * S + int(int(strftime("%M")) / 2)), expand=True).convert("RGBA") # 360/12 self.im[im].paste(pil_image, (POSX + int((x - x1) / 2), ConfigPos + int((y - y1) / 2)), pil_image) # Minute pil_image = Image.open(Clock + str(ConfigAnalog) + "/Minute.png") @@ -11733,7 +11733,7 @@ def putClock(workaround, draw, im): pil_image = pil_image.resize((x1, y1)) else: pil_image = pil_image.resize((x1, y1), Image.LANCZOS if PY3 else Image.ANTIALIAS) - pil_image = pil_image.rotate(360 - int(6 * int(strftime("%M")))).convert("RGBA") # 360/60 + pil_image = pil_image.rotate(360 - int(6 * int(strftime("%M"))), expand=True).convert("RGBA") # 360/60 self.im[im].paste(pil_image, (POSX + int((x - x1) / 2), ConfigPos + int((y - y1) / 2)), pil_image) # Seconds: Due to the bad refresh rates, the second hand was deliberately not programmed! # Date underneath clockface @@ -15431,21 +15431,21 @@ def Lput4(LCD, SCR, FUNC, PARA): self.draw[1].rectangle((0, 0, MAX_W, MAX_H), fill="black") QuickList = [[], [], []] if str(LCD4linux.LCDRotate1.value) != "0": - self.im[1] = self.im[1].rotate(int(LCD4linux.LCDRotate1.value)) + self.im[1] = self.im[1].rotate(int(LCD4linux.LCDRotate1.value), expand=True) Brief1.put([writeLCD1, self, 1, LCD4linux.BilderJPEG.value]) if LCD4linux.LCDType2.value != "00" and self.Refresh >= LCD4linux.LCDRefresh2.value and not (getSA(2) in LCD4linux.TV.value and "2" in LCD4linux.TVLCD.value and not Standby.inStandby): if Dunkel and "2" in Dunkel: MAX_W, MAX_H = self.im[2].size self.draw[2].rectangle((0, 0, MAX_W, MAX_H), fill="black") if str(LCD4linux.LCDRotate2.value) != "0": - self.im[2] = self.im[2].rotate(int(LCD4linux.LCDRotate2.value)) + self.im[2] = self.im[2].rotate(int(LCD4linux.LCDRotate2.value), expand=True) Brief2.put([writeLCD2, self, 2, LCD4linux.BilderJPEG.value]) if LCD4linux.LCDType3.value != "00" and self.Refresh >= LCD4linux.LCDRefresh3.value and not (getSA(3) in LCD4linux.TV.value and "3" in LCD4linux.TVLCD.value and not Standby.inStandby): if Dunkel and "3" in Dunkel: MAX_W, MAX_H = self.im[3].size self.draw[3].rectangle((0, 0, MAX_W, MAX_H), fill="black") if str(LCD4linux.LCDRotate3.value) != "0": - self.im[3] = self.im[3].rotate(int(LCD4linux.LCDRotate3.value)) + self.im[3] = self.im[3].rotate(int(LCD4linux.LCDRotate3.value), expand=True) Brief3.put([writeLCD3, self, 3, LCD4linux.BilderJPEG.value]) Brief1.join() Brief2.join() From e13d88f9ae234583b48dc5d9c6afe35a0e72d8cc Mon Sep 17 00:00:00 2001 From: "Mr.Servo" Date: Sun, 7 Sep 2025 23:08:40 +0200 Subject: [PATCH 4/9] [LCD4linux] V5.0-r31 tiny bugfixes THX to User **KenTucky @ OpenA.TV** details see: https://www.opena.tv/viewtopic.php?p=589973#p589973 HINT: **LCD4linux** is still working under Python2 and Python3 --- lcd4linux/src/plugin.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lcd4linux/src/plugin.py b/lcd4linux/src/plugin.py index 6d28aec..0ffd94c 100644 --- a/lcd4linux/src/plugin.py +++ b/lcd4linux/src/plugin.py @@ -3269,7 +3269,7 @@ def writeLCD1(s, im, quality, SAVE=True): s.im[im].save("/tmp/usbtft-bmp", "BMP") if "1" in LCD4linux.SavePicture.value and SAVE == True: if str(LCD4linux.LCDRotate1.value) != "0": - s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate1.value)) + s.im[im] = s.im[im].rotate(-int(LCD4linux.LCDRotate1.value), expand=True) s.im[im].save(bild, "PNG" if LCD4linux.BilderTyp.value == "png" else "JPEG") if isfile(bild): rename(bild, "%s.png" % PIC) @@ -11722,7 +11722,7 @@ def putClock(workaround, draw, im): else: pil_image = pil_image.resize((x1, y1), Image.LANCZOS if PY3 else Image.ANTIALIAS) S = int(strftime("%H")) % 12 - pil_image = pil_image.rotate(360 - int(30 * S + int(int(strftime("%M")) / 2)), expand=True).convert("RGBA") # 360/12 + pil_image = pil_image.rotate(360 - int(30 * S + int(int(strftime("%M")) / 2)), expand=False).convert("RGBA") # 360/12 self.im[im].paste(pil_image, (POSX + int((x - x1) / 2), ConfigPos + int((y - y1) / 2)), pil_image) # Minute pil_image = Image.open(Clock + str(ConfigAnalog) + "/Minute.png") @@ -11733,7 +11733,7 @@ def putClock(workaround, draw, im): pil_image = pil_image.resize((x1, y1)) else: pil_image = pil_image.resize((x1, y1), Image.LANCZOS if PY3 else Image.ANTIALIAS) - pil_image = pil_image.rotate(360 - int(6 * int(strftime("%M"))), expand=True).convert("RGBA") # 360/60 + pil_image = pil_image.rotate(360 - int(6 * int(strftime("%M"))), expand=False).convert("RGBA") # 360/60 self.im[im].paste(pil_image, (POSX + int((x - x1) / 2), ConfigPos + int((y - y1) / 2)), pil_image) # Seconds: Due to the bad refresh rates, the second hand was deliberately not programmed! # Date underneath clockface From df0c9f97811a757c131c46829bfcaebc7e23bd56 Mon Sep 17 00:00:00 2001 From: "Mr.Servo" Date: Wed, 10 Sep 2025 19:08:57 +0200 Subject: [PATCH 5/9] [LCD4linux] V5.0-r31 tiny bugfix and improvement - bugfixed syntax error - config list can now be folded in and out even after changes via the OK button (via ConfigListScreen.keyOK) --- lcd4linux/src/plugin.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lcd4linux/src/plugin.py b/lcd4linux/src/plugin.py index 0ffd94c..1903253 100644 --- a/lcd4linux/src/plugin.py +++ b/lcd4linux/src/plugin.py @@ -7930,7 +7930,7 @@ def keyOK(self): elif sel in [LCD4linux.MPBildFile, LCD4linux.MPBild2File, LCD4linux.StandbyBildFile, LCD4linux.StandbyBild2File, LCD4linux.StandbyBild3File, LCD4linux.StandbyBild4File, LCD4linux.StandbyBild5File, LCD4linux.StandbyBild6File, LCD4linux.StandbyTextFile, LCD4linux.StandbyText2File, LCD4linux.StandbyText3File]: L4log("select File 4") self.session.openWithCallback(self.fileSelected, LCDdisplayFile, text=_("Choose file"), FileName=self["config"].getCurrent()[1].value, showFiles=True) - elif sel in [LCD4linux.Background1Bild, LCD4linux.LCD4linux.MPBackground1Bild, LCD4linux.StandbyBackground1Bild]: + elif sel in [LCD4linux.Background1Bild, LCD4linux.MPBackground1Bild, LCD4linux.StandbyBackground1Bild]: L4log("select File 5") self.session.openWithCallback(self.fileSelected, LCDdisplayFile, text=_("Choose file"), FileName=self["config"].getCurrent()[1].value, showFiles=True) except Exception as err: @@ -8177,6 +8177,7 @@ def selectionChanged(self): L4log("removed old Skindata") xmlWrite() xmlClear() + self.SetList() def getCurrentValue(self): return str(self["config"].getCurrent()[1].getText()) From 386dbfeedc2d2908fa73412c598b1935fdd05089 Mon Sep 17 00:00:00 2001 From: "Mr.Servo" Date: Wed, 10 Sep 2025 22:38:11 +0200 Subject: [PATCH 6/9] [LCD4linux] V5.0-r31 removal of functions that have become pointless --- lcd4linux/src/plugin.py | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/lcd4linux/src/plugin.py b/lcd4linux/src/plugin.py index 1903253..0d0a897 100644 --- a/lcd4linux/src/plugin.py +++ b/lcd4linux/src/plugin.py @@ -8273,25 +8273,6 @@ def cancel(self): isMediaPlayer = self.SaveisMediaPlayer TFTCheck(False) - def keyLeft(self): - L4logE("key L") - self.LastSelect = str(self["config"].getCurrentIndex()) + self.getCurrentValue()[:3] - ConfigListScreen.keyLeft(self) - self.SetList() - - def keyRight(self): - L4logE("key R") - self.LastSelect = str(self["config"].getCurrentIndex()) + self.getCurrentValue()[:3] - ConfigListScreen.keyRight(self) - self.SetList() - - def restartGUI(self, answer): - if answer: - L4log("GUI Restart") - self.session.open(Standby.TryQuitMainloop, 3) - else: - self.close(True, self.session) - class UpdateStatus(Screen): From 642f0e57273d5055fa100777fbfa0d33423a01fa Mon Sep 17 00:00:00 2001 From: "Mr.Servo" Date: Wed, 10 Sep 2025 23:20:54 +0200 Subject: [PATCH 7/9] [LCD4linux] V5.0-r31 sorry, a touch too much... revert: too much deleted --- lcd4linux/src/plugin.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lcd4linux/src/plugin.py b/lcd4linux/src/plugin.py index 0d0a897..49654c9 100644 --- a/lcd4linux/src/plugin.py +++ b/lcd4linux/src/plugin.py @@ -8273,6 +8273,13 @@ def cancel(self): isMediaPlayer = self.SaveisMediaPlayer TFTCheck(False) + def restartGUI(self, answer): + if answer: + L4log("GUI Restart") + self.session.open(Standby.TryQuitMainloop, 3) + else: + self.close(True, self.session) + class UpdateStatus(Screen): From effee48ee193ac4a03fd1233ee6988b8bacb983f Mon Sep 17 00:00:00 2001 From: "Mr.Servo" Date: Mon, 15 Sep 2025 17:04:29 +0200 Subject: [PATCH 8/9] [LCD4linux] V5.0-r32 bugfix: duplicate call removed (#920) * [LCD4linux] V5.0-r32 bugfix: duplicate call removed and improvement - bugfix: duplicate call 'onSelectionChanged.append()' removed (braked the box down) - bugfix: duplicate call 'onSelectionChanged.append()' removed (braked the box down) - improvement: Otherwise you cannot get away from the top directory level (list of data carriers) in the file browser. THX to User **KenTucky @ OpenA.TV** details see: https://www.opena.tv/viewtopic.php?p=590262&sid=f13c41d9b4a82dd82d27537ca5f77da1#p590262 HINT: **LCD4linux** is still working under Python2 and Python3 --- lcd4linux/src/myFileList.py | 6 ++++++ lcd4linux/src/plugin.py | 4 +--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lcd4linux/src/myFileList.py b/lcd4linux/src/myFileList.py index c92c93e..8e3f9a8 100644 --- a/lcd4linux/src/myFileList.py +++ b/lcd4linux/src/myFileList.py @@ -208,7 +208,13 @@ def canDescent(self): def descent(self): if self.getSelection() != "": +<<<<<<< HEAD:lcd4linux/src/myFileList.py se = (self.current_directory if self.current_directory.endswith("/") else os_path.basename(self.current_directory)) if self.current_directory is not None else "" +======= + se = "" + if self.current_directory is not None: + se = self.current_directory if self.current_directory.endswith("/") else os_path.basename(self.current_directory) +>>>>>>> e8afd925 ([LCD4linux] V5.0-r32 bugfix: duplicate call removed (#920)):LCD4linux/src/myFileList.py self.changeDir(self.getSelection()[0], select=se) def getFilename(self): diff --git a/lcd4linux/src/plugin.py b/lcd4linux/src/plugin.py index 49654c9..8e06277 100644 --- a/lcd4linux/src/plugin.py +++ b/lcd4linux/src/plugin.py @@ -172,7 +172,7 @@ if find_library("usb-0.1") is not None or find_library("usb-1.0") is not None: print("[LCD4linux] libusb found :-)", getEnigmaVersionString()) USBok = True -Version = "V5.0-r31" +Version = "V5.0-r32" L4LElist = L4Lelement() L4LdoThread = True LCD4enigma2config = resolveFilename(SCOPE_CONFIG) # /etc/enigma2/ @@ -5555,8 +5555,6 @@ def __init__(self, session, args=0): self.mode = _("Global") self.LastSelect = "4" self.SetList() - if self.selectionChanged not in self["config"].onSelectionChanged: - self["config"].onSelectionChanged.append(self.selectionChanged) if LCD4linux.LCDType3.value == "00": self["LCD3"].hide() if getDesktop(0).size().width() < 1000: From fd1f962776fbaeb568b5b15f05a807ef07069214 Mon Sep 17 00:00:00 2001 From: Hains van den Bosch Date: Mon, 15 Sep 2025 21:53:05 +0200 Subject: [PATCH 9/9] lcd4linux: Fix merge confict --- lcd4linux/src/myFileList.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lcd4linux/src/myFileList.py b/lcd4linux/src/myFileList.py index 8e3f9a8..6937561 100644 --- a/lcd4linux/src/myFileList.py +++ b/lcd4linux/src/myFileList.py @@ -208,13 +208,9 @@ def canDescent(self): def descent(self): if self.getSelection() != "": -<<<<<<< HEAD:lcd4linux/src/myFileList.py - se = (self.current_directory if self.current_directory.endswith("/") else os_path.basename(self.current_directory)) if self.current_directory is not None else "" -======= se = "" if self.current_directory is not None: se = self.current_directory if self.current_directory.endswith("/") else os_path.basename(self.current_directory) ->>>>>>> e8afd925 ([LCD4linux] V5.0-r32 bugfix: duplicate call removed (#920)):LCD4linux/src/myFileList.py self.changeDir(self.getSelection()[0], select=se) def getFilename(self):