settings: show difference between errored and disabled plugin

add option to disable errored plugin
This commit is contained in:
deltragon 2024-07-16 18:59:43 +02:00
parent 4d7cdfb35e
commit e6b358f495
No known key found for this signature in database
GPG Key ID: 41F552553C6D94B5
4 changed files with 37 additions and 17 deletions

View File

@ -26,6 +26,11 @@
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="stock">gtk-properties</property> <property name="stock">gtk-properties</property>
</object> </object>
<object class="GtkImage" id="img_disable">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon-name">_Cancel</property>
</object>
<object class="GtkBox" id="box"> <object class="GtkBox" id="box">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
@ -124,11 +129,19 @@
<property name="halign">end</property> <property name="halign">end</property>
<property name="valign">center</property> <property name="valign">center</property>
</object> </object>
<packing> </child>
<property name="expand">False</property> <child>
<property name="fill">True</property> <object class="GtkButton" id="btn_disable_errored">
<property name="position">0</property> <property name="visible">False</property>
</packing> <property name="halign">center</property>
<property name="valign">center</property>
<property name="image">img_disable</property>
<property name="tooltip-text" translatable="yes">Disable permanently</property>
<property name="always_show_image">True</property>
<style>
<class name="btn_circle"/>
</style>
</object>
</child> </child>
<child> <child>
<object class="GtkButton" id="btn_properties"> <object class="GtkButton" id="btn_properties">
@ -143,11 +156,6 @@
<class name="btn_circle"/> <class name="btn_circle"/>
</style> </style>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
<packing> <packing>

View File

@ -303,7 +303,7 @@ class PluginManager:
# Check for dependencies # Check for dependencies
message = utility.check_plugin_dependencies(plugin['id'], plugin_config, plugin.get('settings', {}), plugin_path) message = utility.check_plugin_dependencies(plugin['id'], plugin_config, plugin.get('settings', {}), plugin_path)
if message: if message:
if plugin_config['required_plugin']: if plugin_config.get('required_plugin', False):
raise RequiredPluginException( raise RequiredPluginException(
plugin['id'], plugin['id'],
plugin_config['meta']['name'], plugin_config['meta']['name'],

View File

@ -232,18 +232,24 @@ class SettingsDialog:
lbl_plugin_name.set_sensitive(False) lbl_plugin_name.set_sensitive(False)
lbl_plugin_description.set_sensitive(False) lbl_plugin_description.set_sensitive(False)
switch_enable.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: else:
lbl_plugin_description.set_label(_(plugin_config['meta']['description'])) 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 self.plugin_switches[plugin_config['id']] = switch_enable
if plugin_config.get('break_override_allowed', False): if plugin_config.get('break_override_allowed', False):
self.plugin_map[plugin_config['id']] = plugin_config['meta']['name'] self.plugin_map[plugin_config['id']] = plugin_config['meta']['name']
if plugin_config['icon']: if plugin_config['icon']:
builder.get_object('img_plugin_icon').set_from_file(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 = builder.get_object('box')
box.set_visible(True) box.set_visible(True)
return box return box
@ -255,6 +261,13 @@ class SettingsDialog:
dialog = PluginSettingsDialog(plugin_config) dialog = PluginSettingsDialog(plugin_config)
dialog.show() 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): def __show_break_properties_dialog(self, break_config, is_short, parent, on_close, on_add, on_remove):
""" """
Show the BreakProperties dialog Show the BreakProperties dialog

View File

@ -241,7 +241,6 @@ def load_plugins_config(safeeyes_config):
continue continue
dependency_description = check_plugin_dependencies(plugin['id'], config, plugin.get('settings', {}), plugin_path) dependency_description = check_plugin_dependencies(plugin['id'], config, plugin.get('settings', {}), plugin_path)
if dependency_description: if dependency_description:
plugin['enabled'] = False
config['error'] = True config['error'] = True
config['meta']['dependency_description'] = dependency_description config['meta']['dependency_description'] = dependency_description
icon = get_resource_path('ic_warning.png') icon = get_resource_path('ic_warning.png')