From 958251e457e49c86366beff69662d36f052d4cc7 Mon Sep 17 00:00:00 2001 From: Stefan Pluecken Date: Tue, 21 Feb 2006 19:31:56 +0000 Subject: [PATCH] add ability to use regular expressions to filter files to display in the FileList transform the test plugin into an image viewer for png files --- lib/python/Components/FileList.py | 10 +++++++++- lib/python/Plugins/test/plugin.py | 9 +++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/python/Components/FileList.py b/lib/python/Components/FileList.py index a6b5bf2f..66270e60 100644 --- a/lib/python/Components/FileList.py +++ b/lib/python/Components/FileList.py @@ -1,5 +1,6 @@ from HTMLComponent import * from GUIComponent import * +import re from MenuList import MenuList @@ -30,12 +31,14 @@ def FileEntryComponent(name, absolute, isDir = False): return res class FileList(HTMLComponent, GUIComponent, MenuList): - def __init__(self, directory, showDirectories = True, showFiles = True): + def __init__(self, directory, showDirectories = True, showFiles = True, matchingPattern = None): GUIComponent.__init__(self) self.l = eListboxPythonMultiContent() self.showDirectories = showDirectories self.showFiles = showFiles + # example: matching .nfi and .ts files: "^.*\.(nfi|ts)" + self.matchingPattern = matchingPattern self.changeDir(directory) self.l.setFont(0, gFont("Regular", 18)) @@ -55,7 +58,12 @@ class FileList(HTMLComponent, GUIComponent, MenuList): if self.showDirectories: self.list.append(FileEntryComponent(name = x, absolute = directory + x + "/" , isDir = True)) elif self.showFiles: + if self.matchingPattern is not None: + if re.compile(self.matchingPattern).search(x): + self.list.append(FileEntryComponent(name = x, absolute = directory + x , isDir = False)) + else: self.list.append(FileEntryComponent(name = x, absolute = directory + x , isDir = False)) + self.l.setList(self.list) def GUIcreate(self, parent): diff --git a/lib/python/Plugins/test/plugin.py b/lib/python/Plugins/test/plugin.py index 0a375335..668515f4 100644 --- a/lib/python/Plugins/test/plugin.py +++ b/lib/python/Plugins/test/plugin.py @@ -5,6 +5,7 @@ from Components.ActionMap import NumberActionMap from Components.Label import Label from Components.Input import Input from Components.GUIComponent import * +from Components.Pixmap import Pixmap from Components.FileList import FileEntryComponent, FileList from Plugins.Plugin import PluginDescriptor @@ -15,13 +16,15 @@ class Test(Screen): + """ def __init__(self, session, args = None): self.skin = Test.skin Screen.__init__(self, session) - self["list"] = FileList("/") - + self["list"] = FileList("/", matchingPattern = "^.*\.png") + self["pixmap"] = Pixmap() + #self["text"] = Input("1234", maxSize=True, type=Input.NUMBER) self["actions"] = NumberActionMap(["WizardActions", "InputActions"], @@ -52,6 +55,8 @@ class Test(Screen): selection = self["list"].getSelection() if selection[1] == True: # isDir self["list"].changeDir(selection[0]) + else: + self["pixmap"].instance.setPixmapFromFile(selection[0]) def keyNumberGlobal(self, number): print "pressed", number -- 2.30.2