Changeset View
Changeset View
Standalone View
Standalone View
release/scripts/modules/addon_utils.py
| Show First 20 Lines • Show All 367 Lines • ▼ Show 20 Lines | with RestrictBlend(): | ||||
| if mod.bl_info.get("blender", (0, 0, 0)) < (2, 80, 0): | if mod.bl_info.get("blender", (0, 0, 0)) < (2, 80, 0): | ||||
| if _bpy.app.debug: | if _bpy.app.debug: | ||||
| print(f"Warning: Add-on '{module_name:s}' was not upgraded for 2.80, ignoring") | print(f"Warning: Add-on '{module_name:s}' was not upgraded for 2.80, ignoring") | ||||
| return None | return None | ||||
| # 2) Try register collected modules. | # 2) Try register collected modules. | ||||
| # Removed register_module, addons need to handle their own registration now. | # Removed register_module, addons need to handle their own registration now. | ||||
| use_owner = mod.bl_info.get("use_owner", True) | |||||
| if use_owner: | |||||
| from _bpy import _bl_owner_id_get, _bl_owner_id_set | from _bpy import _bl_owner_id_get, _bl_owner_id_set | ||||
| owner_id_prev = _bl_owner_id_get() | owner_id_prev = _bl_owner_id_get() | ||||
| _bl_owner_id_set(module_name) | _bl_owner_id_set(module_name) | ||||
| # 3) Try run the modules register function. | # 3) Try run the modules register function. | ||||
| try: | try: | ||||
| mod.register() | mod.register() | ||||
| except Exception as ex: | except Exception as ex: | ||||
| print( | print( | ||||
| "Exception in module register():", | "Exception in module register():", | ||||
| getattr(mod, "__file__", module_name), | getattr(mod, "__file__", module_name), | ||||
| ) | ) | ||||
| handle_error(ex) | handle_error(ex) | ||||
| del sys.modules[module_name] | del sys.modules[module_name] | ||||
| if default_set: | if default_set: | ||||
| _addon_remove(module_name) | _addon_remove(module_name) | ||||
| return None | return None | ||||
| finally: | finally: | ||||
| if use_owner: | |||||
| _bl_owner_id_set(owner_id_prev) | _bl_owner_id_set(owner_id_prev) | ||||
| # * OK loaded successfully! * | # * OK loaded successfully! * | ||||
| mod.__addon_enabled__ = True | mod.__addon_enabled__ = True | ||||
| mod.__addon_persistent__ = persistent | mod.__addon_persistent__ = persistent | ||||
| if _bpy.app.debug_python: | if _bpy.app.debug_python: | ||||
| print("\taddon_utils.enable", mod.__name__) | print("\taddon_utils.enable", mod.__name__) | ||||
| ▲ Show 20 Lines • Show All 102 Lines • ▼ Show 20 Lines | if info_basis is None: | ||||
| "blender": (), | "blender": (), | ||||
| "location": "", | "location": "", | ||||
| "description": "", | "description": "", | ||||
| "wiki_url": "", | "wiki_url": "", | ||||
| "support": 'COMMUNITY', | "support": 'COMMUNITY', | ||||
| "category": "", | "category": "", | ||||
| "warning": "", | "warning": "", | ||||
| "show_expanded": False, | "show_expanded": False, | ||||
| "use_owner": True, | |||||
| } | } | ||||
| addon_info = getattr(mod, "bl_info", {}) | addon_info = getattr(mod, "bl_info", {}) | ||||
| # avoid re-initializing | # avoid re-initializing | ||||
| if "_init" in addon_info: | if "_init" in addon_info: | ||||
| return addon_info | return addon_info | ||||
| if not addon_info: | if not addon_info: | ||||
| mod.bl_info = addon_info | mod.bl_info = addon_info | ||||
| for key, value in info_basis.items(): | for key, value in info_basis.items(): | ||||
| addon_info.setdefault(key, value) | addon_info.setdefault(key, value) | ||||
| if not addon_info["name"]: | if not addon_info["name"]: | ||||
| addon_info["name"] = mod.__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 | addon_info["_init"] = None | ||||
| return addon_info | return addon_info | ||||