diff options
author | Sybren A. Stüvel <sybren@blender.org> | 2019-08-15 11:21:04 +0300 |
---|---|---|
committer | Sybren A. Stüvel <sybren@blender.org> | 2019-08-16 16:02:09 +0300 |
commit | 078d02f55743cd34c51c4dd7ca710b22441a12da (patch) | |
tree | d615010391448947904fb44d47e7defb666709ef | |
parent | ecc3b033a7d2bc71f3c75cd8152a647d18457ba1 (diff) |
User Preferences: Added "Enabled add-ons only" preference
This checkbox replaces the "Disabled" and "Enabled" entries in the
filter drop-down. As a result, it now takes a single click to limit the
shown entries to enabled add-ons only. This is also an actual flag in
the preferences, and thus its state is saved between runs on Blender (in
contrast to the filter, which is always reset to "All").
Reviewed by: brecht, billreynish
-rw-r--r-- | release/scripts/startup/bl_operators/userpref.py | 2 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/__init__.py | 2 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_userpref.py | 18 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_userdef_types.h | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_userdef.c | 6 |
5 files changed, 20 insertions, 9 deletions
diff --git a/release/scripts/startup/bl_operators/userpref.py b/release/scripts/startup/bl_operators/userpref.py index 034aa9fff6c..6ec6855296c 100644 --- a/release/scripts/startup/bl_operators/userpref.py +++ b/release/scripts/startup/bl_operators/userpref.py @@ -667,6 +667,7 @@ class PREFERENCES_OT_addon_install(Operator): info = addon_utils.module_bl_info(mod) # show the newly installed addon. + context.preferences.view.show_addons_enabled_only = False context.window_manager.addon_filter = 'All' context.window_manager.addon_search = info["name"] break @@ -796,6 +797,7 @@ class PREFERENCES_OT_addon_show(Operator): info["show_expanded"] = True context.preferences.active_section = 'ADDONS' + context.preferences.view.show_addons_enabled_only = False context.window_manager.addon_filter = 'All' context.window_manager.addon_search = info["name"] bpy.ops.screen.userpref_show('INVOKE_DEFAULT') diff --git a/release/scripts/startup/bl_ui/__init__.py b/release/scripts/startup/bl_ui/__init__.py index 690a922b0d5..5daacbb2e44 100644 --- a/release/scripts/startup/bl_ui/__init__.py +++ b/release/scripts/startup/bl_ui/__init__.py @@ -126,8 +126,6 @@ def register(): items = [ ('All', "All", "All Add-ons"), ('User', "User", "All Add-ons Installed by User"), - ('Enabled', "Enabled", "All Enabled Add-ons"), - ('Disabled', "Disabled", "All Disabled Add-ons"), ] items_unique = set() diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index 87baea9cdd8..ce4a6fb835e 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -1744,6 +1744,7 @@ class USERPREF_PT_addons(Panel): row.operator("preferences.addon_refresh", icon='FILE_REFRESH', text="Refresh") row = layout.row() + row.prop(context.preferences.view, "show_addons_enabled_only") row.prop(context.window_manager, "addon_filter", text="") row.prop(context.window_manager, "addon_search", text="", icon='VIEWZOOM') @@ -1770,6 +1771,7 @@ class USERPREF_PT_addons(Panel): "(see console for details)", ) + show_enabled_only = context.preferences.view.show_addons_enabled_only filter = context.window_manager.addon_filter search = context.window_manager.addon_search.lower() support = context.window_manager.addon_support @@ -1786,13 +1788,15 @@ class USERPREF_PT_addons(Panel): continue # check if addon should be visible with current filters - if ( - (filter == "All") or - (filter == info["category"]) or - (filter == "Enabled" and is_enabled) or - (filter == "Disabled" and not is_enabled) or - (filter == "User" and (mod.__file__.startswith(addon_user_dirs))) - ): + is_visible = ( + (filter == "All") or + (filter == info["category"]) or + (filter == "User" and (mod.__file__.startswith(addon_user_dirs))) + ) + if show_enabled_only: + is_visible = is_visible and is_enabled + + if is_visible: if search and search not in info["name"].lower(): if info["author"]: if search not in info["author"].lower(): diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index b8914c7a74f..3cb96ce8bf8 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -868,6 +868,7 @@ typedef enum eUserPref_Flag { USER_NONEGFRAMES = (1 << 24), USER_TXT_TABSTOSPACES_DISABLE = (1 << 25), USER_TOOLTIPS_PYTHON = (1 << 26), + USER_ADDONS_ENABLED_ONLY = (1 << 27), } eUserPref_Flag; typedef enum eUserPref_PrefFlag { diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index a449ed850e9..77ca48fc05d 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -4090,6 +4090,12 @@ static void rna_def_userdef_view(BlenderRNA *brna) "Show the frames per second screen refresh rate, while animation is played back"); RNA_def_property_update(prop, 0, "rna_userdef_update"); + prop = RNA_def_property(srna, "show_addons_enabled_only", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_ADDONS_ENABLED_ONLY); + RNA_def_property_ui_text(prop, + "Enabled Add-ons Only", + "Only show enabled add-ons. Un-check to see all installed add-ons"); + static const EnumPropertyItem factor_display_items[] = { {USER_FACTOR_AS_FACTOR, "FACTOR", 0, "Factor", "Display factors as values between 0 and 1"}, {USER_FACTOR_AS_PERCENTAGE, "PERCENTAGE", 0, "Percentage", "Display factors as percentages"}, |