add plugin weight to PluginDescriptor... so the plugin start order can be changed now
[vuplus_dvbapp] / lib / python / Components / PluginComponent.py
index 0e178ff..a713c3b 100755 (executable)
@@ -14,6 +14,7 @@ class PluginComponent:
        def __init__(self):
                self.plugins = {}
                self.pluginList = [ ]
+               self.installedPluginList = [ ]
                self.setPluginPrefix("Plugins.")
                self.resetWarnings()
 
@@ -73,6 +74,7 @@ class PluginComponent:
                                                        plugins = [ plugins ]
 
                                                for p in plugins:
+                                                       p.path = path
                                                        p.updateIcon(path)
                                                        new_plugins.append(p)
 
@@ -91,17 +93,25 @@ class PluginComponent:
                #ignore already installed but reloaded plugins
                for p in plugins_removed: 
                        for pa in plugins_added:
-                               if pa.name == p.name and pa.where == p.where:
+                               if pa.path == p.path and pa.where == p.where:
                                        pa.needsRestart = False
 
                for p in plugins_removed:
                        self.removePlugin(p)
 
                for p in plugins_added:
-                       self.addPlugin(p)
-               
+                       if self.firstRun or p.needsRestart is False:
+                               self.addPlugin(p)
+                       else:
+                               for installed_plugin in self.installedPluginList:
+                                       if installed_plugin.path == p.path:
+                                               if installed_plugin.where == p.where:
+                                                       p.needsRestart = False
+                               self.addPlugin(p)
+                                               
                if self.firstRun:
                        self.firstRun = False
+                       self.installedPluginList = self.pluginList
 
        def getPlugins(self, where):
                """Get list of plugins in a specific category"""
@@ -112,13 +122,14 @@ class PluginComponent:
 
                for x in where:
                        res.extend(self.plugins.get(x, [ ]))
-
-               return  res
+               res.sort(key=lambda x:x.weight)
+               return res
 
        def getPluginsForMenu(self, menuid):
                res = [ ]
                for p in self.getPlugins(PluginDescriptor.WHERE_MENU):
                        res += p(menuid)
+               res.sort(key=lambda x:x.weight)
                return res
 
        def clearPluginList(self):