Merge remote branch 'origin/acid-burn/bug_670_plugin_restartoption'
authoracid-burn <acid-burn@opendreambox.org>
Tue, 22 Feb 2011 19:54:54 +0000 (20:54 +0100)
committeracid-burn <acid-burn@opendreambox.org>
Tue, 22 Feb 2011 19:54:54 +0000 (20:54 +0100)
lib/python/Components/PluginComponent.py
lib/python/Plugins/Plugin.py

index e5194b2..93b0890 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"""
@@ -124,8 +134,6 @@ class PluginComponent:
        def clearPluginList(self):
                self.pluginList = []
                self.plugins = {}
-               self.firstRun = True
-               self.restartRequired = False
 
        def shutdown(self):
                for p in self.pluginList[:]:
index 9ecdbc2..e26174a 100755 (executable)
@@ -65,6 +65,7 @@ class PluginDescriptor:
                self.name = name
                self.internal = internal
                self.needsRestart = needsRestart
+               self.path = None
                if isinstance(where, list):
                        self.where = where
                else: