Extensions: enable the package management add-on when enabled

Package management has been moved into addons_contrib so the addon
can be enabled when enabling extension repositories.

This means users can test extension repositories without having to
install a separate add-on.

Additional work is still needed with the server before this is ready
for general testing though.

Part of #117286.
This commit is contained in:
Campbell Barton
2024-01-24 13:25:27 +11:00
parent 99f9084bee
commit 53a8570aec
2 changed files with 16 additions and 4 deletions

View File

@@ -32,6 +32,8 @@ def _initialize_once():
for addon in _preferences.addons:
enable(addon.module)
_initialize_ensure_extensions_addon()
def paths():
return [
@@ -606,6 +608,13 @@ def module_bl_info(mod, *, info_basis=None):
# -----------------------------------------------------------------------------
# Extensions
def _initialize_ensure_extensions_addon():
if _preferences.experimental.use_extension_repos:
module_name = "bl_pkg"
if module_name not in _preferences.addons:
enable(module_name, default_set=True, persistent=True)
# Module-like class, store singletons.
class _ext_global:
__slots__ = ()
@@ -805,6 +814,10 @@ def _initialize_extension_repos_pre(*_):
@_bpy.app.handlers.persistent
def _initialize_extension_repos_post(*_, is_first=False):
# When enabling extensions for the first time, ensure the add-on is enabled.
_initialize_ensure_extensions_addon()
do_addons = not is_first
# Map `module_id` -> `dirpath`.

View File

@@ -2021,10 +2021,9 @@ class USERPREF_PT_extensions(ExtensionsPanel, Panel):
layout = self.layout
row = layout.row()
row.label(text="The add-on to use extensions is disabled! See:")
row.operator(
"wm.url_open", text="Extension Add-on Repository", icon='URL',
).url = "https://projects.blender.org/ideasman42/bl_ext"
row.label(text="The add-on to use extensions is disabled!")
row = layout.row()
row.label(text="Enable \"Blender Extensions\" add-on in Testing to use extensions.")
class USERPREF_PT_extensions_repos(ExtensionsPanel, Panel):