diff --git a/safeeyes/glade/item_plugin.glade b/safeeyes/glade/item_plugin.glade
index 377eb28..6cea3f3 100644
--- a/safeeyes/glade/item_plugin.glade
+++ b/safeeyes/glade/item_plugin.glade
@@ -26,6 +26,11 @@
False
gtk-properties
+
-
- False
- True
- 0
-
+
+
+
-
- False
- False
- 1
-
diff --git a/safeeyes/plugin_manager.py b/safeeyes/plugin_manager.py
index ec6b30a..1bc3f8f 100644
--- a/safeeyes/plugin_manager.py
+++ b/safeeyes/plugin_manager.py
@@ -303,7 +303,7 @@ class PluginManager:
# Check for dependencies
message = utility.check_plugin_dependencies(plugin['id'], plugin_config, plugin.get('settings', {}), plugin_path)
if message:
- if plugin_config['required_plugin']:
+ if plugin_config.get('required_plugin', False):
raise RequiredPluginException(
plugin['id'],
plugin_config['meta']['name'],
diff --git a/safeeyes/ui/settings_dialog.py b/safeeyes/ui/settings_dialog.py
index e17c965..62f54f4 100644
--- a/safeeyes/ui/settings_dialog.py
+++ b/safeeyes/ui/settings_dialog.py
@@ -232,18 +232,24 @@ class SettingsDialog:
lbl_plugin_name.set_sensitive(False)
lbl_plugin_description.set_sensitive(False)
switch_enable.set_sensitive(False)
+ btn_properties.set_sensitive(False)
+ if plugin_config['enabled']:
+ btn_disable_errored = builder.get_object('btn_disable_errored')
+ btn_disable_errored.set_visible(True)
+ btn_disable_errored.connect('clicked', lambda button: self.__disable_errored_plugin(button, plugin_config))
+
else:
lbl_plugin_description.set_label(_(plugin_config['meta']['description']))
+ if plugin_config['settings']:
+ btn_properties.set_sensitive(True)
+ btn_properties.connect('clicked', lambda button: self.__show_plugins_properties_dialog(plugin_config))
+ else:
+ btn_properties.set_sensitive(False)
self.plugin_switches[plugin_config['id']] = switch_enable
if plugin_config.get('break_override_allowed', False):
self.plugin_map[plugin_config['id']] = plugin_config['meta']['name']
if plugin_config['icon']:
builder.get_object('img_plugin_icon').set_from_file(plugin_config['icon'])
- if plugin_config['settings']:
- btn_properties.set_sensitive(True)
- btn_properties.connect('clicked', lambda button: self.__show_plugins_properties_dialog(plugin_config))
- else:
- btn_properties.set_sensitive(False)
box = builder.get_object('box')
box.set_visible(True)
return box
@@ -255,6 +261,13 @@ class SettingsDialog:
dialog = PluginSettingsDialog(plugin_config)
dialog.show()
+ def __disable_errored_plugin(self, button, plugin_config):
+ """
+ Permanently disable errored plugin
+ """
+ button.set_sensitive(False)
+ self.plugin_switches[plugin_config['id']].set_active(False)
+
def __show_break_properties_dialog(self, break_config, is_short, parent, on_close, on_add, on_remove):
"""
Show the BreakProperties dialog
diff --git a/safeeyes/utility.py b/safeeyes/utility.py
index f441109..022d63c 100644
--- a/safeeyes/utility.py
+++ b/safeeyes/utility.py
@@ -241,7 +241,6 @@ def load_plugins_config(safeeyes_config):
continue
dependency_description = check_plugin_dependencies(plugin['id'], config, plugin.get('settings', {}), plugin_path)
if dependency_description:
- plugin['enabled'] = False
config['error'] = True
config['meta']['dependency_description'] = dependency_description
icon = get_resource_path('ic_warning.png')