[Bf-blender-cvs] [61c8ed40f5d] blender2.8: WorkSpace: show/hode opt-out support for addons

Campbell Barton noreply at git.blender.org
Thu Mar 1 01:21:33 CET 2018


Commit: 61c8ed40f5df897da212b55dadeee252c8d3997b
Author: Campbell Barton
Date:   Thu Mar 1 11:20:12 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB61c8ed40f5df897da212b55dadeee252c8d3997b

WorkSpace: show/hode opt-out support for addons

In some cases it doesn't make sense for add-ons to be listed for hiding.
Especially for import/export which use minimal UI space.

This adds `bl_info["use_owner"]` to add-ons,
currently defaulting to True for all non Import-Export add-ons.

===================================================================

M	release/scripts/modules/addon_utils.py
M	release/scripts/startup/bl_ui/properties_data_workspace.py

===================================================================

diff --git a/release/scripts/modules/addon_utils.py b/release/scripts/modules/addon_utils.py
index 23874abd8c9..c74286c8fb6 100644
--- a/release/scripts/modules/addon_utils.py
+++ b/release/scripts/modules/addon_utils.py
@@ -352,10 +352,11 @@ def enable(module_name, *, default_set=False, persistent=False, handle_error=Non
         # 2) try register collected modules
         # removed, addons need to handle own registration now.
 
-
-        from _bpy import _bl_owner_id_get, _bl_owner_id_set
-        owner_id_prev = _bl_owner_id_get()
-        _bl_owner_id_set(module_name)
+        use_owner = mod.bl_info.get("use_owner", True)
+        if use_owner:
+            from _bpy import _bl_owner_id_get, _bl_owner_id_set
+            owner_id_prev = _bl_owner_id_get()
+            _bl_owner_id_set(module_name)
 
         # 3) try run the modules register function
         try:
@@ -369,7 +370,8 @@ def enable(module_name, *, default_set=False, persistent=False, handle_error=Non
                 _addon_remove(module_name)
             return None
         finally:
-            _bl_owner_id_set(owner_id_prev)
+            if use_owner:
+                _bl_owner_id_set(owner_id_prev)
 
     # * OK loaded successfully! *
     mod.__addon_enabled__ = True
@@ -480,6 +482,7 @@ def module_bl_info(mod, info_basis=None):
             "category": "",
             "warning": "",
             "show_expanded": False,
+            "use_owner": True,
         }
 
     addon_info = getattr(mod, "bl_info", {})
@@ -497,5 +500,9 @@ def module_bl_info(mod, info_basis=None):
     if not addon_info["name"]:
         addon_info["name"] = mod.__name__
 
+    # Temporary auto-magic, don't use_owner for import export menus.
+    if mod.bl_info["category"] == "Import-Export":
+        mod.bl_info["use_owner"] = False
+
     addon_info["_init"] = None
     return addon_info
diff --git a/release/scripts/startup/bl_ui/properties_data_workspace.py b/release/scripts/startup/bl_ui/properties_data_workspace.py
index 1ece70f5e14..73da32f6eb9 100644
--- a/release/scripts/startup/bl_ui/properties_data_workspace.py
+++ b/release/scripts/startup/bl_ui/properties_data_workspace.py
@@ -80,15 +80,14 @@ class WORKSPACE_PT_owner_ids(WorkSpaceButtonsPanel, Panel):
         col.active = workspace.use_filter_by_owner
 
         import addon_utils
-        addon_map = {
-            mod.__name__: ("%s: %s" % (mod.bl_info["category"], mod.bl_info["name"]))
-            for mod in addon_utils.modules()
-        }
+        addon_map = {mod.__name__: mod for mod in addon_utils.modules()}
         owner_ids = {owner_id.name  for owner_id in workspace.owner_ids}
 
         for addon in userpref.addons:
             module_name = addon.module
-            text = addon_map[module_name]
+            info = addon_utils.module_bl_info(addon_map[module_name])
+            if not info["use_owner"]:
+                continue
             is_enabled = module_name in owner_ids
             row = col.row()
             row.operator(
@@ -97,7 +96,7 @@ class WORKSPACE_PT_owner_ids(WorkSpaceButtonsPanel, Panel):
                 text="",
                 emboss=False,
             ).owner_id = module_name
-            row.label(text)
+            row.label("%s: %s" % (info["category"], info["name"]))
             if is_enabled:
                 owner_ids.remove(module_name)



More information about the Bf-blender-cvs mailing list