From 979298511916b25ec97bb22feb1c06cc9fbc86dd Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 18 Jul 2019 16:20:02 +0200 Subject: Revert "space_view3d_pie_menus: Fix unreported Workspace: Addons Filter: failure to respect filters" This reverts commit c29c630a273b03b761890d85b1f0c174a57feefd. It is breaking the add-on tests, reverted for now since this is not a critical fix. --- space_view3d_pie_menus/__init__.py | 141 ++++++++++++++++++++++++------------- 1 file changed, 91 insertions(+), 50 deletions(-) (limited to 'space_view3d_pie_menus') diff --git a/space_view3d_pie_menus/__init__.py b/space_view3d_pie_menus/__init__.py index 605c3613..620e0bd1 100644 --- a/space_view3d_pie_menus/__init__.py +++ b/space_view3d_pie_menus/__init__.py @@ -33,7 +33,7 @@ from bpy.types import ( bl_info = { "name": "3D Viewport Pie Menus", "author": "meta-androcto, pitiwazou, chromoly, italic", - "version": (1, 2, 0), + "version": (1, 1, 9), "blender": (2, 80, 0), "description": "Individual Pie Menu Activation List", "location": "Addons Preferences", @@ -64,7 +64,8 @@ sub_modules_names = ( ) -sub_modules = [__import__(__package__ + "." + submod, {}, {}, submod) for submod in sub_modules_names] +sub_modules = [__import__(__package__ + "." + submod, {}, {}, submod) for + submod in sub_modules_names] sub_modules.sort(key=lambda mod: (mod.bl_info['category'], mod.bl_info['name'])) @@ -90,22 +91,20 @@ def get_addon_preferences(name=''): cls = _get_pref_class(mod) if cls: prop = PointerProperty(type=cls) - create_property(PIEToolsPreferences, name, prop) - bpy.utils.unregister_class(PIEToolsPreferences) - bpy.utils.register_class(PIEToolsPreferences) + setattr(PieToolsPreferences, name, prop) + bpy.utils.unregister_class(PieToolsPreferences) + bpy.utils.register_class(PieToolsPreferences) return getattr(addon_prefs, name, None) else: return addon_prefs -def create_property(cls, name, prop): - if not hasattr(cls, '__annotations__'): - cls.__annotations__ = dict() - cls.__annotations__[name] = prop - def register_submodule(mod): - mod.register() - mod.__addon_enabled__ = True + if not hasattr(mod, '__addon_enabled__'): + mod.__addon_enabled__ = False + if not mod.__addon_enabled__: + mod.register() + mod.__addon_enabled__ = True def unregister_submodule(mod): @@ -115,20 +114,91 @@ def unregister_submodule(mod): prefs = get_addon_preferences() name = mod.__name__.split('.')[-1] - if hasattr(PIEToolsPreferences, name): - delattr(PIEToolsPreferences, name) + if hasattr(PieToolsPreferences, name): + delattr(PieToolsPreferences, name) if prefs: - bpy.utils.unregister_class(PIEToolsPreferences) - bpy.utils.register_class(PIEToolsPreferences) + bpy.utils.unregister_class(PieToolsPreferences) + bpy.utils.register_class(PieToolsPreferences) if name in prefs: del prefs[name] -class PIEToolsPreferences(AddonPreferences): +def enable_all_modules(self, context): + for mod in sub_modules: + mod_name = mod.__name__.split('.')[-1] + setattr(self, 'use_' + mod_name, False) + if not mod.__addon_enabled__: + setattr(self, 'use_' + mod_name, True) + mod.__addon_enabled__ = True + + return None + + +def disable_all_modules(self, context): + for mod in sub_modules: + mod_name = mod.__name__.split('.')[-1] + + if mod.__addon_enabled__: + setattr(self, 'use_' + mod_name, False) + mod.__addon_enabled__ = False + + return None + + +class PieToolsPreferences(AddonPreferences): bl_idname = __name__ + enable_all: BoolProperty( + name="Enable all", + description="Enable all Pie Modules", + default=False, + update=enable_all_modules + ) + disable_all: BoolProperty( + name="Disable all", + description="Disable all Pie Modules", + default=False, + update=disable_all_modules + ) + + for mod in sub_modules: + mod_name = mod.__name__.split('.')[-1] + + def gen_update(mod, use_prop_name): + def update(self, context): + if getattr(self, use_prop_name): + if not mod.__addon_enabled__: + register_submodule(mod) + else: + if mod.__addon_enabled__: + unregister_submodule(mod) + return update + + use_prop_name = 'use_' + mod_name + __annotations__[use_prop_name] = BoolProperty( + name=mod.bl_info['name'], + description=mod.bl_info.get('description', ''), + update=gen_update(mod, use_prop_name), + ) + + __annotations__['show_expanded_' + mod_name] = BoolProperty() + def draw(self, context): layout = self.layout + split = layout.split(factor=0.5, align=True) + row = split.row() + row.alignment = "LEFT" + sub_box = row.box() + sub_box.prop(self, "enable_all", emboss=False, + icon="HIDE_OFF", icon_only=True) + row.label(text="Enable All") + + row = split.row() + row.alignment = "RIGHT" + row.label(text="Disable All") + sub_box = row.box() + sub_box.prop(self, "disable_all", emboss=False, + icon="HIDE_ON", icon_only=True) for mod in sub_modules: mod_name = mod.__name__.split('.')[-1] @@ -167,7 +237,7 @@ class PIEToolsPreferences(AddonPreferences): if info.get('author'): split = col.row().split(factor=0.15) split.label(text='Author:') - split.label(text=info['author']) + split.label(info['author']) """ if info.get('version'): split = col.row().split(factor=0.15) @@ -206,41 +276,12 @@ class PIEToolsPreferences(AddonPreferences): del prefs.layout row = layout.row() - row.label(text="End of Pie Menu Activations", icon="FILE_PARENT") - - -for mod in sub_modules: - info = mod.bl_info - mod_name = mod.__name__.split('.')[-1] - - def gen_update(mod): - def update(self, context): - enabled = getattr(self, 'use_' + mod.__name__.split('.')[-1]) - if enabled: - register_submodule(mod) - else: - unregister_submodule(mod) - mod.__addon_enabled__ = enabled - return update - - create_property( - PIEToolsPreferences, - 'use_' + mod_name, - BoolProperty( - name=info['name'], - description=info.get('description', ''), - update=gen_update(mod), - default=True, - )) - - create_property( - PIEToolsPreferences, - 'show_expanded_' + mod_name, - BoolProperty()) + row.label(text="End of 3D Viewport Pie Menus Activations", + icon="FILE_PARENT") classes = ( - PIEToolsPreferences, + PieToolsPreferences, ) -- cgit v1.2.3