From 971e0502c081cf2eb43476611bf111015ea4192a Mon Sep 17 00:00:00 2001
From: Yann Leboulanger <asterix@lagaule.org>
Date: Mon, 30 Apr 2012 21:04:37 +0200
Subject: [PATCH] don't load unactivatable plugins

---
 src/plugins/gui.py           | 9 ++++++---
 src/plugins/plugin.py        | 1 +
 src/plugins/pluginmanager.py | 5 +++--
 3 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/plugins/gui.py b/src/plugins/gui.py
index 9ff3259b5b..ab0c0cc1d5 100644
--- a/src/plugins/gui.py
+++ b/src/plugins/gui.py
@@ -114,10 +114,13 @@ class PluginsWindow(object):
 
         desc_textbuffer = self.plugin_description_textview.get_buffer()
         from plugins.plugins_i18n import _
-        desc_textbuffer.set_text(_(plugin.description))
+        txt = plugin.description
+        if plugin.available_text:
+            txt += '\n\n' + _('Warning: %s') % plugin.available_text
+        desc_textbuffer.set_text(txt)
         self.plugin_description_textview.set_property('sensitive', True)
         self.uninstall_plugin_button.set_property('sensitive',
-                                    gajim.PLUGINS_DIRS[1] in plugin.__path__)
+            gajim.PLUGINS_DIRS[1] in plugin.__path__)
         if plugin.config_dialog is None:
             self.configure_plugin_button.set_property('sensitive', False)
         else:
@@ -145,7 +148,7 @@ class PluginsWindow(object):
 
         for plugin in pm.plugins:
             self.installed_plugins_model.append([plugin, plugin.name,
-                plugin.active, plugin.activatable])
+                plugin.active and plugin.activatable, plugin.activatable])
 
     @log_calls('PluginsWindow')
     def installed_plugins_toggled_cb(self, cell, path):
diff --git a/src/plugins/plugin.py b/src/plugins/plugin.py
index 728280bd45..781be53d00 100644
--- a/src/plugins/plugin.py
+++ b/src/plugins/plugin.py
@@ -155,6 +155,7 @@ class GajimPlugin(object):
         :type: `plugins.plugin.GajimPluginConfig`
         '''
         self.activatable = True
+        self.available_text = ''
         self.load_config()
         self.config_dialog = GajimPluginConfigDialog(self)
         self.init()
diff --git a/src/plugins/pluginmanager.py b/src/plugins/pluginmanager.py
index 71bf6c469c..ed8e47fe9f 100644
--- a/src/plugins/pluginmanager.py
+++ b/src/plugins/pluginmanager.py
@@ -292,7 +292,7 @@ class PluginManager(object):
         :param plugin: plugin to be activated
         :type plugin: class object of `GajimPlugin` subclass
         '''
-        if not plugin.active:
+        if not plugin.active and plugin.activatable:
 
             self._add_gui_extension_points_handlers_from_plugin(plugin)
             self._handle_all_gui_extension_points_with_plugin(plugin)
@@ -374,7 +374,8 @@ class PluginManager(object):
 
     def _activate_all_plugins_from_global_config(self):
         for plugin in self.plugins:
-            if self._plugin_is_active_in_global_config(plugin):
+            if self._plugin_is_active_in_global_config(plugin) and \
+            plugin.activatable:
                 try:
                     self.activate_plugin(plugin)
                 except GajimPluginActivateException:
-- 
GitLab