space_view3d_pie_menus: Fix unreported Workspace: Addons Filter: failure to respect filters
This commit is contained in:
parent
d605104b9c
commit
c29c630a27
Notes:
blender-bot
2023-02-14 18:07:13 +01:00
Referenced by commit 97929851: Revert "space_view3d_pie_menus: Fix unreported Workspace: Addons Filter: failure to respect filters"
Referenced by commit 97929851
, Revert "space_view3d_pie_menus: Fix unreported Workspace: Addons Filter: failure to respect filters"
|
@ -33,7 +33,7 @@ from bpy.types import (
|
|||
bl_info = {
|
||||
"name": "3D Viewport Pie Menus",
|
||||
"author": "meta-androcto, pitiwazou, chromoly, italic",
|
||||
"version": (1, 1, 9),
|
||||
"version": (1, 2, 0),
|
||||
"blender": (2, 80, 0),
|
||||
"description": "Individual Pie Menu Activation List",
|
||||
"location": "Addons Preferences",
|
||||
|
@ -64,8 +64,7 @@ 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']))
|
||||
|
||||
|
||||
|
@ -91,20 +90,22 @@ def get_addon_preferences(name=''):
|
|||
cls = _get_pref_class(mod)
|
||||
if cls:
|
||||
prop = PointerProperty(type=cls)
|
||||
setattr(PieToolsPreferences, name, prop)
|
||||
bpy.utils.unregister_class(PieToolsPreferences)
|
||||
bpy.utils.register_class(PieToolsPreferences)
|
||||
create_property(UIToolsPreferences, name, prop)
|
||||
bpy.utils.unregister_class(UIToolsPreferences)
|
||||
bpy.utils.register_class(UIToolsPreferences)
|
||||
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):
|
||||
if not hasattr(mod, '__addon_enabled__'):
|
||||
mod.__addon_enabled__ = False
|
||||
if not mod.__addon_enabled__:
|
||||
mod.register()
|
||||
mod.__addon_enabled__ = True
|
||||
mod.register()
|
||||
mod.__addon_enabled__ = True
|
||||
|
||||
|
||||
def unregister_submodule(mod):
|
||||
|
@ -114,91 +115,20 @@ 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]
|
||||
|
||||
|
||||
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):
|
||||
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]
|
||||
|
@ -237,7 +167,7 @@ class PieToolsPreferences(AddonPreferences):
|
|||
if info.get('author'):
|
||||
split = col.row().split(factor=0.15)
|
||||
split.label(text='Author:')
|
||||
split.label(info['author'])
|
||||
split.label(text=info['author'])
|
||||
"""
|
||||
if info.get('version'):
|
||||
split = col.row().split(factor=0.15)
|
||||
|
@ -276,12 +206,41 @@ class PieToolsPreferences(AddonPreferences):
|
|||
del prefs.layout
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="End of 3D Viewport Pie Menus Activations",
|
||||
icon="FILE_PARENT")
|
||||
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())
|
||||
|
||||
|
||||
classes = (
|
||||
PieToolsPreferences,
|
||||
PIEToolsPreferences,
|
||||
)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue