allow "internal" plugins from outside of the e2 plugin directory (useful for file...
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Sat, 17 May 2008 21:44:15 +0000 (21:44 +0000)
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Sat, 17 May 2008 21:44:15 +0000 (21:44 +0000)
lib/python/Components/PluginComponent.py
lib/python/Plugins/Plugin.py

index 818ea58..d72e2af 100644 (file)
@@ -80,7 +80,7 @@ class PluginComponent:
                # build a diff between the old list of plugins and the new one
                # internally, the "fnc" argument will be compared with __eq__
                plugins_added = [p for p in new_plugins if p not in self.pluginList]
-               plugins_removed = [p for p in self.pluginList if p not in new_plugins]
+               plugins_removed = [p for p in self.pluginList if not p.internal and p not in new_plugins]
 
                for p in plugins_removed:
                        self.removePlugin(p)
@@ -94,6 +94,7 @@ class PluginComponent:
                if type(where) is not list:
                        where = [ where ]
                res = [ ]
+
                for x in where:
                        for p in self.plugins.get(x, [ ]):
                                res.append(p)
index 4319d32..a0db1d6 100644 (file)
@@ -45,8 +45,9 @@ class PluginDescriptor:
        # or return a function which is called with session and the interface name for extended setup of this interface
        WHERE_NETWORKSETUP = 10
        
-       def __init__(self, name = "Plugin", where = [ ], description = "", icon = None, fnc = None, wakeupfnc = None):
+       def __init__(self, name = "Plugin", where = [ ], description = "", icon = None, fnc = None, wakeupfnc = None, internal = False):
                self.name = name
+               self.internal = internal
                if type(where) is list:
                        self.where = where
                else: