[Bf-blender-cvs] [ef58467594a] asset-browser-grid-view: Store active item, asset metadata sidebar
Julian Eisel
noreply at git.blender.org
Tue Feb 15 21:44:34 CET 2022
Commit: ef58467594a10a7c17d5ff780e91f83203d20a7a
Author: Julian Eisel
Date: Tue Feb 15 21:36:21 2022 +0100
Branches: asset-browser-grid-view
https://developer.blender.org/rBef58467594a10a7c17d5ff780e91f83203d20a7a
Store active item, asset metadata sidebar
Also:
- Fix double-free bug when closing Blender
- Fix issues with identifying assets with the same name.
- Add functions to store asset handle as pointer in the asset list storage,
asset browser exposes it via context.
===================================================================
M release/scripts/presets/keyconfig/keymap_data/blender_default.py
M release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
M release/scripts/startup/bl_ui/space_assets.py
M release/scripts/startup/bl_ui/space_filebrowser.py
M source/blender/blenkernel/BKE_context.h
M source/blender/blenkernel/intern/context.c
M source/blender/editors/asset/ED_asset_handle.h
M source/blender/editors/asset/ED_asset_list.hh
M source/blender/editors/asset/intern/asset_handle.cc
M source/blender/editors/asset/intern/asset_list.cc
M source/blender/editors/include/UI_grid_view.hh
M source/blender/editors/interface/grid_view.cc
M source/blender/editors/interface/interface_template_asset_view.cc
M source/blender/editors/space_assets/asset_browser_draw.cc
M source/blender/editors/space_assets/asset_browser_panels.cc
M source/blender/editors/space_assets/asset_view.cc
M source/blender/editors/space_assets/asset_view.hh
M source/blender/editors/space_assets/space_assets.cc
M source/blender/makesdna/DNA_space_types.h
M source/blender/makesrna/RNA_access.h
M source/blender/makesrna/intern/rna_asset.c
M source/blender/makesrna/intern/rna_context.c
M source/blender/makesrna/intern/rna_space.c
===================================================================
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 38f429b0fab..48532d799e0 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -2288,6 +2288,9 @@ def km_asset_browser(params):
items.extend([
("wm.context_toggle", {"type": 'T', "value": 'PRESS'},
{"properties": [("data_path", 'space_data.show_region_nav_bar')]}),
+ *_template_space_region_type_toggle(
+ sidebar_key={"type": 'N', "value": 'PRESS'},
+ ),
])
return keymap
diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
index 8a0731db4c2..e942c04f799 100644
--- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
+++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
@@ -4102,6 +4102,7 @@ def generate_keymaps_impl(params=None):
km_clip_editor(params),
km_clip_graph_editor(params),
km_clip_dopesheet_editor(params),
+ # TODO asset browser
# Animation.
km_frames(params),
diff --git a/release/scripts/startup/bl_ui/space_assets.py b/release/scripts/startup/bl_ui/space_assets.py
index 8319d5c18d2..80b73e1b004 100644
--- a/release/scripts/startup/bl_ui/space_assets.py
+++ b/release/scripts/startup/bl_ui/space_assets.py
@@ -17,7 +17,8 @@
# ##### END GPL LICENSE BLOCK #####
# <pep8 compliant>
-from bpy.types import Header, Menu
+import bpy
+from bpy.types import Header, Menu, Panel, UIList
class ASSETBROWSER_HT_header(Header):
@@ -31,6 +32,23 @@ class ASSETBROWSER_HT_header(Header):
ASSETBROWSER_MT_editor_menus.draw_collapsible(context, layout)
+ layout.separator_spacer()
+
+ layout.operator(
+ "screen.region_toggle",
+ text="",
+ icon='PREFERENCES',
+ depress=is_option_region_visible(context, space)
+ ).region_type = 'UI'
+
+
+def is_option_region_visible(context, space):
+ for region in context.area.regions:
+ if region.type == 'UI' and region.width <= 1:
+ return False
+
+ return True
+
class ASSETBROWSER_MT_editor_menus(Menu):
bl_idname = "ASSETBROWSER_MT_editor_menus"
@@ -75,12 +93,132 @@ class ASSETBROWSER_MT_edit(Menu):
layout.operator("asset.catalog_redo", text="Redo")
+class ASSETBROWSER_PT_metadata(Panel):
+ bl_space_type = 'ASSET_BROWSER'
+ bl_region_type = 'UI'
+ bl_label = "Asset Metadata"
+ bl_options = {'HIDE_HEADER'}
+ bl_category = 'Metadata'
+
+ def draw(self, context):
+ layout = self.layout
+ wm = context.window_manager
+ asset_handle = context.asset_handle
+ asset_file = asset_handle.file_data
+
+ if asset_handle is None:
+ layout.label(text="No active asset", icon='INFO')
+ return
+
+ asset_library_ref = context.asset_library_ref
+ asset_lib_path = bpy.types.AssetHandle.get_full_library_path(asset_file, asset_library_ref)
+
+ prefs = context.preferences
+ show_asset_debug_info = prefs.view.show_developer_ui and prefs.experimental.show_asset_debug_info
+
+ layout.use_property_split = True
+ layout.use_property_decorate = False # No animation.
+
+ if asset_handle.local_id:
+ # If the active file is an ID, use its name directly so renaming is possible from right here.
+ layout.prop(asset_handle.local_id, "name")
+
+ if show_asset_debug_info:
+ col = layout.column(align=True)
+ col.label(text="Asset Catalog:")
+ col.prop(asset_handle.local_id.asset_data, "catalog_id", text="UUID")
+ col.prop(asset_handle.local_id.asset_data, "catalog_simple_name", text="Simple Name")
+ else:
+ layout.prop(asset_file, "name")
+
+ if show_asset_debug_info:
+ col = layout.column(align=True)
+ col.enabled = False
+ col.label(text="Asset Catalog:")
+ col.prop(asset_file.asset_data, "catalog_id", text="UUID")
+ col.prop(asset_file.asset_data, "catalog_simple_name", text="Simple Name")
+
+ row = layout.row(align=True)
+ row.prop(wm, "asset_path_dummy", text="Source")
+ row.operator("asset.open_containing_blend_file", text="", icon='TOOL_SETTINGS')
+
+ layout.prop(asset_file.asset_data, "description")
+ layout.prop(asset_file.asset_data, "author")
+
+
+class ASSETBROWSER_PT_metadata_preview(Panel):
+ bl_space_type = 'ASSET_BROWSER'
+ bl_region_type = 'UI'
+ bl_label = "Preview"
+ bl_category = 'Metadata'
+
+ def draw(self, context):
+ layout = self.layout
+ asset_handle = context.asset_handle
+ asset_file = asset_handle.file_data
+
+ row = layout.row()
+ box = row.box()
+ box.template_icon(icon_value=asset_file.preview_icon_id, scale=5.0)
+
+ col = row.column(align=True)
+ col.operator("ed.lib_id_load_custom_preview", icon='FILEBROWSER', text="")
+ col.separator()
+ col.operator("ed.lib_id_generate_preview", icon='FILE_REFRESH', text="")
+ col.menu("ASSETBROWSER_MT_metadata_preview_menu", icon='DOWNARROW_HLT', text="")
+
+
+class ASSETBROWSER_MT_metadata_preview_menu(Menu):
+ bl_label = "Preview"
+
+ def draw(self, context):
+ layout = self.layout
+ layout.operator("ed.lib_id_generate_preview_from_object", text="Render Active Object")
+
+
+class ASSETBROWSER_PT_metadata_tags(Panel):
+ bl_space_type = 'ASSET_BROWSER'
+ bl_region_type = 'UI'
+ bl_label = "Tags"
+ bl_category = 'Metadata'
+
+ def draw(self, context):
+ layout = self.layout
+ asset = context.asset_handle
+ asset_data = asset.file_data.asset_data
+
+ row = layout.row()
+ row.template_list("ASSETBROWSEROLD_UL_metadata_tags", "asset_tags", asset_data, "tags",
+ asset_data, "active_tag", rows=4)
+
+ col = row.column(align=True)
+ col.operator("asset.tag_add", icon='ADD', text="")
+ col.operator("asset.tag_remove", icon='REMOVE', text="")
+
+
+class ASSETBROWSER_UL_metadata_tags(UIList):
+ def draw_item(self, _context, layout, _data, item, icon, _active_data, _active_propname, _index):
+ tag = item
+
+ row = layout.row(align=True)
+ # Non-editable entries would show grayed-out, which is bad in this specific case, so switch to mere label.
+ if tag.is_property_readonly("name"):
+ row.label(text=tag.name, icon_value=icon)
+ else:
+ row.prop(tag, "name", text="", emboss=False, icon_value=icon)
+
+
classes = (
ASSETBROWSER_HT_header,
ASSETBROWSER_MT_editor_menus,
ASSETBROWSER_MT_view,
ASSETBROWSER_MT_select,
ASSETBROWSER_MT_edit,
+ ASSETBROWSER_PT_metadata,
+ ASSETBROWSER_PT_metadata_preview,
+ ASSETBROWSER_MT_metadata_preview_menu,
+ ASSETBROWSER_PT_metadata_tags,
+ ASSETBROWSER_UL_metadata_tags,
)
if __name__ == "__main__": # only for live edit.
diff --git a/release/scripts/startup/bl_ui/space_filebrowser.py b/release/scripts/startup/bl_ui/space_filebrowser.py
index d9aa58f19e6..2cf1fa5abfa 100644
--- a/release/scripts/startup/bl_ui/space_filebrowser.py
+++ b/release/scripts/startup/bl_ui/space_filebrowser.py
@@ -680,7 +680,7 @@ class ASSETBROWSEROLD_MT_edit(AssetBrowserMenu, Menu):
layout.operator("asset.catalog_redo", text="Redo")
-class ASSETBROWSER_PT_metadata(asset_utils.AssetBrowserPanel, Panel):
+class ASSETBROWSEROLD_PT_metadata(asset_utils.AssetBrowserPanel, Panel):
bl_region_type = 'TOOL_PROPS'
bl_label = "Asset Metadata"
bl_options = {'HIDE_HEADER'}
@@ -730,7 +730,7 @@ class ASSETBROWSER_PT_metadata(asset_utils.AssetBrowserPanel, Panel):
layout.prop(asset_file_handle.asset_data, "author")
-class ASSETBROWSER_PT_metadata_preview(asset_utils.AssetMetaDataPanel, Panel):
+class ASSETBROWSEROLD_PT_metadata_preview(asset_utils.AssetMetaDataPanel, Panel):
bl_label = "Preview"
def draw(self, context):
@@ -745,10 +745,10 @@ class ASSETBROWSER_PT_metadata_preview(asset_utils.AssetMetaDataPanel, Panel):
col.operator("ed.lib_id_load_custom_preview", icon='FILEBROWSER', text="")
col.separator()
col.operator("ed.lib_id_generate_preview", icon='FILE_REFRESH', text="")
- col.menu("ASSETBROWSER_MT_metadata_preview_menu", icon='DOWNARROW_HLT', text="")
+ col.menu("ASSETBROWSEROLD_MT_metadata_preview_menu", icon='DOWNARROW_HLT', text="")
-class ASSETBROWSER_MT_metadata_preview_menu(bpy.types.Menu):
+class ASSETBROWSEROLD_MT_metadata_preview_menu(bpy.types.Menu):
bl_label = "Preview"
def draw(self, context):
@@ -756,7 +756,7 @@ class ASSETBROWSER_MT_metadata_preview_menu(bpy.types.Menu):
layout.operator("ed.lib_id_generate_preview_from_object", text="Render Active Object")
-class ASSETBROWSER_PT_metadata_tags(asset_utils.AssetMetaDataPanel, Panel):
+class ASSETBROWSEROLD_PT_metadata_tags(asset_utils.AssetMetaDataPanel, Panel):
bl_label = "Tags"
def draw(self, context):
@@ -764,7 +764,7 @@ class ASSETBROWSER_PT_metadata_tags(asset_utils.AssetMetaDataPanel, Panel):
asset_data = asset_utils.SpaceAssetInfo.get_active_asset(context)
row = layout.row()
- row.template_list("ASSETBROWSER_UL_metadata_tags", "asset_tags", asset_data, "tags",
+ row.template_list("ASSETBROWSEROLD_UL_metadata_tags", "asset_tags", asset_data, "tags",
asset_data, "active_tag", rows=4)
col = row.column(align=True)
@@ -772,7 +772,7 @@ class ASSETBROWSER_PT_metadata_tags(asset_utils.AssetMetaDataPanel, Panel):
col.operator("asset.tag_remove", icon='REMOVE', text="")
-class ASSETBROWSER_UL_metadata_tags(UIList):
+class ASSETBROWSEROLD_UL_metadata_tags(UIList):
def draw_item(self, _context, layout, _data, item, icon, _active_da
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list