aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Components
diff options
context:
space:
mode:
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>2005-12-21 04:41:36 +0000
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>2005-12-21 04:41:36 +0000
commitccb8d260ed5e51f6f65205be04744a9e8322aa6f (patch)
treec8243a30d7b7627229186ca13a463952b92c1322 /lib/python/Components
parent8589eb49ec20d3503a476f398ec84d7ad0307d26 (diff)
downloadenigma2-ccb8d260ed5e51f6f65205be04744a9e8322aa6f.tar.gz
enigma2-ccb8d260ed5e51f6f65205be04744a9e8322aa6f.zip
add plugins
to test it: uncomment the example.py in lib/python/Plugins/Makefile.am plugins can be added at runtime
Diffstat (limited to 'lib/python/Components')
-rw-r--r--lib/python/Components/Makefile.am3
-rw-r--r--lib/python/Components/PluginComponent.py33
-rw-r--r--lib/python/Components/PluginList.py42
3 files changed, 77 insertions, 1 deletions
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