From ccb8d260ed5e51f6f65205be04744a9e8322aa6f Mon Sep 17 00:00:00 2001 From: Stefan Pluecken Date: Wed, 21 Dec 2005 04:41:36 +0000 Subject: add plugins to test it: uncomment the example.py in lib/python/Plugins/Makefile.am plugins can be added at runtime --- lib/python/Components/Makefile.am | 3 ++- lib/python/Components/PluginComponent.py | 33 +++++++++++++++++++++++++ lib/python/Components/PluginList.py | 42 ++++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 lib/python/Components/PluginComponent.py create mode 100644 lib/python/Components/PluginList.py (limited to 'lib/python/Components') diff --git a/lib/python/Components/Makefile.am b/lib/python/Components/Makefile.am index f83403b4..340730a6 100644 --- a/lib/python/Components/Makefile.am +++ b/lib/python/Components/Makefile.am @@ -10,4 +10,5 @@ install_PYTHON = \ InputDevice.py ServicePosition.py SetupDevices.py Harddisk.py \ AVSwitch.py Network.py RFmod.py DiskInfo.py NimManager.py Lcd.py \ EpgList.py ScrollLabel.py Timezones.py Language.py HelpMenuList.py \ - BlinkingPixmap.py Pixmap.py ConditionalWidget.py Slider.py LanguageList.py + BlinkingPixmap.py Pixmap.py ConditionalWidget.py Slider.py LanguageList.py \ + PluginList.py PluginComponent.py diff --git a/lib/python/Components/PluginComponent.py b/lib/python/Components/PluginComponent.py new file mode 100644 index 00000000..26382063 --- /dev/null +++ b/lib/python/Components/PluginComponent.py @@ -0,0 +1,33 @@ +import os + +from Tools.Directories import * +#import Plugins + +class PluginComponent: + def __init__(self): + self.plugins = [] + self.setPluginPrefix("Plugins.") + + def setPluginPrefix(self, prefix): + self.prefix = prefix + + def getPluginList(self): + list = [] + dir = os.listdir("/usr/lib/enigma2/python/Plugins/") + for x in dir: + if x[-3:] == ".py" and x[:-3] != "__init__": + #try: + print "trying to import " + self.prefix + x[:-3] + exec "import " + self.prefix + x[:-3] + picturepath = eval(self.prefix + x[:-3]).getPicturePath() + pluginname = eval(self.prefix + x[:-3]).getPluginName() + list.append((picturepath, pluginname , x[:-3])) + #except: + #print "Failed to open module - wrong plugin!" + return list + + def runPlugin(self, plugin, session): + exec "import " + self.prefix + plugin[2] + eval(self.prefix + plugin[2]).main(session) + +plugins = PluginComponent() diff --git a/lib/python/Components/PluginList.py b/lib/python/Components/PluginList.py new file mode 100644 index 00000000..d2ae64a7 --- /dev/null +++ b/lib/python/Components/PluginList.py @@ -0,0 +1,42 @@ +from HTMLComponent import * +from GUIComponent import * + +from MenuList import MenuList + +from Tools.Directories import * + +from enigma import * + +RT_HALIGN_LEFT = 0 +RT_HALIGN_RIGHT = 1 +RT_HALIGN_CENTER = 2 +RT_HALIGN_BLOCK = 4 + +RT_VALIGN_TOP = 0 +RT_VALIGN_CENTER = 8 +RT_VALIGN_BOTTOM = 16 + +def PluginEntryComponent(picture, name): + res = [ None ] + res.append((80, 10, 200, 50, 0, RT_HALIGN_LEFT , name)) + png = loadPNG(picture) + if png == None: + png = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "/countries/missing.png")) + res.append((10, 5, 60, 40, png)) + + return res + + +class PluginList(HTMLComponent, GUIComponent, MenuList): + def __init__(self, list): + GUIComponent.__init__(self) + self.l = eListboxPythonMultiContent() + self.list = list + self.l.setList(list) + self.l.setFont(0, gFont("Arial", 20)) + self.l.setFont(1, gFont("Arial", 10)) + + def GUIcreate(self, parent): + self.instance = eListbox(parent) + self.instance.setContent(self.l) + self.instance.setItemHeight(50) \ No newline at end of file -- cgit v1.2.3