PluginManager/PluginManager.py

changeset 6267
350655a6c85f
parent 6188
5a6ae3be31e6
child 6360
73033fa6a99c
diff -r c7bc0e516cd6 -r 350655a6c85f PluginManager/PluginManager.py
--- a/PluginManager/PluginManager.py	Sun Apr 22 14:01:39 2018 +0200
+++ b/PluginManager/PluginManager.py	Sun Apr 22 19:21:44 2018 +0200
@@ -65,7 +65,8 @@
     pluginAboutToBeDeactivated = pyqtSignal(str, object)
     pluginDeactivated = pyqtSignal(str, object)
     
-    def __init__(self, parent=None, doLoadPlugins=True, develPlugin=None):
+    def __init__(self, parent=None, disabledPlugins=None, doLoadPlugins=True,
+                 develPlugin=None):
         """
         Constructor
         
@@ -76,11 +77,17 @@
         is the user plugin directory located inside the .eric6 directory
         of the users home directory.
         
-        @param parent reference to the parent object (QObject)
-        @keyparam doLoadPlugins flag indicating, that plugins should
-            be loaded (boolean)
-        @keyparam develPlugin filename of a plugin to be loaded for
-            development (string)
+        @param parent reference to the parent object
+        @type QObject
+        @param disabledPlugins list of plug-ins that have been disabled via
+            the command line parameters '--disable-plugin='
+        @type list of str
+        @param doLoadPlugins flag indicating, that plug-ins should
+            be loaded
+        @type bool
+        @param develPlugin filename of a plug-in to be loaded for
+            development
+        @type str
         @exception PluginPathError raised to indicate an invalid plug-in path
         @exception PluginModulesError raised to indicate the absence of
             plug-in modules
@@ -90,6 +97,10 @@
         self.__ui = parent
         self.__develPluginFile = develPlugin
         self.__develPluginName = None
+        if disabledPlugins is not None:
+            self.__disabledPlugins = disabledPlugins[:]
+        else:
+            self.__disabledPlugins = []
         
         self.__inactivePluginsKey = "PluginManager/InactivePlugins"
         
@@ -531,13 +542,16 @@
         """
         savedInactiveList = Preferences.Prefs.settings.value(
             self.__inactivePluginsKey)
+        inactiveList = self.__disabledPlugins[:]
+        if savedInactiveList is not None:
+            inactiveList += [p for p in savedInactiveList
+                             if p not in self.__disabledPlugins]
         if self.__develPluginName is not None and \
-           savedInactiveList is not None and \
-           self.__develPluginName in savedInactiveList:
-            savedInactiveList.remove(self.__develPluginName)
+           self.__develPluginName in inactiveList:
+            inactiveList.remove(self.__develPluginName)
         names = sorted(self.__inactiveModules.keys())
         for name in names:
-            if savedInactiveList is None or name not in savedInactiveList:
+            if name not in inactiveList:
                 self.activatePlugin(name)
         self.allPlugginsActivated.emit()
     

eric ide

mercurial