Extensions: development functionality to mark all & clear marks
- Disable enabling on install when installing marked. This simplifies installing many packages from a repository which can be useful for testing. - Fix an error installing marked when a local-only package was marked.
This commit is contained in:
parent
1ba06956e7
commit
fc3e0507cc
@ -675,8 +675,9 @@ def _pkg_marked_by_repo(pkg_manifest_all):
|
||||
# While this should be prevented, any marked packages out of the range will cause problems, skip them.
|
||||
if repo_index >= len(pkg_manifest_all):
|
||||
continue
|
||||
if (pkg_manifest := pkg_manifest_all[repo_index]) is None:
|
||||
continue
|
||||
|
||||
pkg_manifest = pkg_manifest_all[repo_index]
|
||||
item = pkg_manifest.get(pkg_id)
|
||||
if item is None:
|
||||
continue
|
||||
@ -2713,7 +2714,7 @@ class EXTENSIONS_OT_package_mark_set(Operator):
|
||||
|
||||
class EXTENSIONS_OT_package_mark_clear(Operator):
|
||||
bl_idname = "extensions.package_mark_clear"
|
||||
bl_label = "Mark Package"
|
||||
bl_label = "Clear Marked Package"
|
||||
|
||||
pkg_id: rna_prop_pkg_id
|
||||
repo_index: rna_prop_repo_index
|
||||
@ -2725,6 +2726,37 @@ class EXTENSIONS_OT_package_mark_clear(Operator):
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
class EXTENSIONS_OT_package_mark_set_all(Operator):
|
||||
bl_idname = "extensions.package_mark_set_all"
|
||||
bl_label = "Mark All Packages"
|
||||
|
||||
def execute(self, _context):
|
||||
repo_cache_store = repo_cache_store_ensure()
|
||||
for repo_index, (
|
||||
pkg_manifest_remote,
|
||||
pkg_manifest_local,
|
||||
) in enumerate(zip(
|
||||
repo_cache_store.pkg_manifest_from_remote_ensure(error_fn=print),
|
||||
repo_cache_store.pkg_manifest_from_local_ensure(error_fn=print),
|
||||
)):
|
||||
if pkg_manifest_remote is not None:
|
||||
for pkg_id in pkg_manifest_remote.keys():
|
||||
blender_extension_mark.add((pkg_id, repo_index))
|
||||
if pkg_manifest_local is not None:
|
||||
for pkg_id in pkg_manifest_local.keys():
|
||||
blender_extension_mark.add((pkg_id, repo_index))
|
||||
_preferences_ui_redraw()
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
class EXTENSIONS_OT_package_mark_clear_all(Operator):
|
||||
bl_idname = "extensions.package_mark_clear_all"
|
||||
bl_label = "Clear All Marked Packages"
|
||||
|
||||
def execute(self, _context):
|
||||
blender_extension_mark.clear()
|
||||
|
||||
|
||||
class EXTENSIONS_OT_package_show_set(Operator):
|
||||
bl_idname = "extensions.package_show_set"
|
||||
bl_label = "Show Package Set"
|
||||
@ -3048,6 +3080,8 @@ classes = (
|
||||
EXTENSIONS_OT_package_show_clear,
|
||||
EXTENSIONS_OT_package_mark_set,
|
||||
EXTENSIONS_OT_package_mark_clear,
|
||||
EXTENSIONS_OT_package_mark_set_all,
|
||||
EXTENSIONS_OT_package_mark_clear_all,
|
||||
EXTENSIONS_OT_package_show_settings,
|
||||
|
||||
EXTENSIONS_OT_package_obselete_marked,
|
||||
|
@ -1202,8 +1202,22 @@ class USERPREF_MT_extensions_settings(Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("extensions.package_install_marked", text="Install Marked", icon='IMPORT')
|
||||
layout.operator("extensions.package_uninstall_marked", text="Uninstall Marked", icon='X')
|
||||
layout.operator("extensions.package_mark_set_all", text="Mark All")
|
||||
layout.operator("extensions.package_mark_clear_all", text="Unmark All")
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator(
|
||||
"extensions.package_install_marked",
|
||||
text="Install Marked",
|
||||
icon='IMPORT',
|
||||
).enable_on_install = False
|
||||
layout.operator(
|
||||
"extensions.package_uninstall_marked",
|
||||
text="Uninstall Marked",
|
||||
icon='X',
|
||||
)
|
||||
|
||||
layout.operator("extensions.package_obsolete_marked")
|
||||
|
||||
layout.separator()
|
||||
|
@ -2271,7 +2271,7 @@ def arg_handle_str_as_package_names(value: str) -> Sequence[str]:
|
||||
# -----------------------------------------------------------------------------
|
||||
# Argument Handlers ("build" command)
|
||||
|
||||
def generic_arg_built_split_platforms(subparse: argparse.ArgumentParser) -> None:
|
||||
def generic_arg_build_split_platforms(subparse: argparse.ArgumentParser) -> None:
|
||||
subparse.add_argument(
|
||||
"--split-platforms",
|
||||
dest="split_platforms",
|
||||
@ -3864,7 +3864,7 @@ def argparse_create_author_build(
|
||||
generic_arg_package_source_dir(subparse)
|
||||
generic_arg_package_output_dir(subparse)
|
||||
generic_arg_package_output_filepath(subparse)
|
||||
generic_arg_built_split_platforms(subparse)
|
||||
generic_arg_build_split_platforms(subparse)
|
||||
generic_arg_verbose(subparse)
|
||||
|
||||
if args_internal:
|
||||
|
Loading…
Reference in New Issue
Block a user