[Bf-blender-cvs] [f29fa9895f6] asset-browser-grid-view: Bring back editor pulldown menus, get operators to work, T for nav-bar
Julian Eisel
noreply at git.blender.org
Fri Feb 11 18:18:30 CET 2022
Commit: f29fa9895f6081d1ed21868fdc876506d97f9b94
Author: Julian Eisel
Date: Fri Feb 11 18:13:48 2022 +0100
Branches: asset-browser-grid-view
https://developer.blender.org/rBf29fa9895f6081d1ed21868fdc876506d97f9b94
Bring back editor pulldown menus, get operators to work, T for nav-bar
- Adds the View, Edit & Select pulldown menus
- Makes asset operators work (e.g. catalog management)
- Correct notifiers (fixing missing redraws)
- Add T shortcut to toggle toolbar
===================================================================
M release/scripts/presets/keyconfig/keymap_data/blender_default.py
M release/scripts/startup/bl_ui/space_assets.py
M release/scripts/startup/bl_ui/space_filebrowser.py
M source/blender/editors/asset/intern/asset_ops.cc
M source/blender/editors/space_assets/space_assets.cc
M source/blender/makesrna/intern/rna_space.c
M source/blender/windowmanager/intern/wm_keymap_utils.c
===================================================================
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 5367d9b33f9..aaaa5c1772d 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -2135,7 +2135,6 @@ def km_info(params):
return keymap
-
# ------------------------------------------------------------------------------
# Editor (File Browser)
@@ -2291,6 +2290,25 @@ def km_file_browser_buttons(_params):
return keymap
+# ------------------------------------------------------------------------------
+# Editor (Asset Browser)
+
+def km_asset_browser(params):
+ items = []
+ keymap = (
+ "Asset Browser",
+ {"space_type": 'ASSET_BROWSER', "region_type": 'WINDOW'},
+ {"items": items},
+ )
+
+ items.extend([
+ ("wm.context_toggle", {"type": 'T', "value": 'PRESS'},
+ {"properties": [("data_path", 'space_data.show_region_nav_bar')]}),
+ ])
+
+ return keymap
+
+
# ------------------------------------------------------------------------------
# Editor (Dope Sheet)
@@ -7718,6 +7736,7 @@ def generate_keymaps(params=None):
km_node_editor(params),
km_spreadsheet_generic(params),
km_info(params),
+ km_asset_browser(params),
km_file_browser(params),
km_file_browser_main(params),
km_file_browser_buttons(params),
diff --git a/release/scripts/startup/bl_ui/space_assets.py b/release/scripts/startup/bl_ui/space_assets.py
index eb42de2addb..8319d5c18d2 100644
--- a/release/scripts/startup/bl_ui/space_assets.py
+++ b/release/scripts/startup/bl_ui/space_assets.py
@@ -17,7 +17,7 @@
# ##### END GPL LICENSE BLOCK #####
# <pep8 compliant>
-from bpy.types import Header
+from bpy.types import Header, Menu
class ASSETBROWSER_HT_header(Header):
@@ -29,9 +29,58 @@ class ASSETBROWSER_HT_header(Header):
layout.template_header()
+ ASSETBROWSER_MT_editor_menus.draw_collapsible(context, layout)
+
+
+class ASSETBROWSER_MT_editor_menus(Menu):
+ bl_idname = "ASSETBROWSER_MT_editor_menus"
+ bl_label = ""
+
+ def draw(self, _context):
+ layout = self.layout
+
+ layout.menu("ASSETBROWSER_MT_view")
+ layout.menu("ASSETBROWSER_MT_select")
+ layout.menu("ASSETBROWSER_MT_edit")
+
+
+class ASSETBROWSER_MT_view(Menu):
+ bl_label = "View"
+
+ def draw(self, context):
+ layout = self.layout
+ st = context.space_data
+
+ layout.prop(st, "show_region_nav_bar", text="Navigation")
+
+ layout.separator()
+
+ layout.menu("INFO_MT_area")
+
+
+class ASSETBROWSER_MT_select(Menu):
+ bl_label = "Select"
+
+ def draw(self, _context):
+ layout = self.layout
+
+
+class ASSETBROWSER_MT_edit(Menu):
+ bl_label = "Edit"
+
+ def draw(self, _context):
+ layout = self.layout
+
+ layout.operator("asset.catalog_undo", text="Undo")
+ layout.operator("asset.catalog_redo", text="Redo")
+
classes = (
ASSETBROWSER_HT_header,
+ ASSETBROWSER_MT_editor_menus,
+ ASSETBROWSER_MT_view,
+ ASSETBROWSER_MT_select,
+ ASSETBROWSER_MT_edit,
)
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 50005a8f7f0..87dc2f24706 100644
--- a/release/scripts/startup/bl_ui/space_filebrowser.py
+++ b/release/scripts/startup/bl_ui/space_filebrowser.py
@@ -80,7 +80,7 @@ class FILEBROWSER_HT_header(Header):
layout.template_header()
if SpaceAssetInfo.is_asset_browser(space_data):
- ASSETBROWSER_MT_editor_menus.draw_collapsible(context, layout)
+ ASSETBROWSEROLD_MT_editor_menus.draw_collapsible(context, layout)
layout.separator()
self.draw_asset_browser_buttons(context)
else:
@@ -638,19 +638,19 @@ class AssetBrowserMenu:
return SpaceAssetInfo.is_asset_browser_poll(context)
-class ASSETBROWSER_MT_editor_menus(AssetBrowserMenu, Menu):
- bl_idname = "ASSETBROWSER_MT_editor_menus"
+class ASSETBROWSEROLD_MT_editor_menus(AssetBrowserMenu, Menu):
+ bl_idname = "ASSETBROWSEROLD_MT_editor_menus"
bl_label = ""
def draw(self, _context):
layout = self.layout
- layout.menu("ASSETBROWSER_MT_view")
- layout.menu("ASSETBROWSER_MT_select")
+ layout.menu("ASSETBROWSEROLD_MT_view")
+ layout.menu("ASSETBROWSEROLD_MT_select")
layout.menu("ASSETBROWSER_MT_edit")
-class ASSETBROWSER_MT_view(AssetBrowserMenu, Menu):
+class ASSETBROWSEROLD_MT_view(AssetBrowserMenu, Menu):
bl_label = "View"
def draw(self, context):
@@ -671,7 +671,7 @@ class ASSETBROWSER_MT_view(AssetBrowserMenu, Menu):
layout.menu("INFO_MT_area")
-class ASSETBROWSER_MT_select(AssetBrowserMenu, Menu):
+class ASSETBROWSEROLD_MT_select(AssetBrowserMenu, Menu):
bl_label = "Select"
def draw(self, _context):
@@ -686,7 +686,7 @@ class ASSETBROWSER_MT_select(AssetBrowserMenu, Menu):
layout.operator("file.select_box")
-class ASSETBROWSER_MT_edit(AssetBrowserMenu, Menu):
+class ASSETBROWSEROLD_MT_edit(AssetBrowserMenu, Menu):
bl_label = "Edit"
def draw(self, _context):
@@ -845,10 +845,10 @@ classes = (
FILEBROWSER_MT_context_menu,
ASSETBROWSER_PT_display,
ASSETBROWSER_PT_filter,
- ASSETBROWSER_MT_editor_menus,
- ASSETBROWSER_MT_view,
- ASSETBROWSER_MT_select,
- ASSETBROWSER_MT_edit,
+ ASSETBROWSEROLD_MT_editor_menus,
+ ASSETBROWSEROLD_MT_view,
+ ASSETBROWSEROLD_MT_select,
+ ASSETBROWSEROLD_MT_edit,
ASSETBROWSER_MT_metadata_preview_menu,
ASSETBROWSER_PT_metadata,
ASSETBROWSER_PT_metadata_preview,
diff --git a/source/blender/editors/asset/intern/asset_ops.cc b/source/blender/editors/asset/intern/asset_ops.cc
index 0469f14487d..609aa2fce45 100644
--- a/source/blender/editors/asset/intern/asset_ops.cc
+++ b/source/blender/editors/asset/intern/asset_ops.cc
@@ -446,24 +446,38 @@ static void ASSET_OT_library_refresh(struct wmOperatorType *ot)
/* -------------------------------------------------------------------- */
+static AssetLibrary *get_asset_library(const bContext *C)
+{
+ if (const SpaceFile *sfile = CTX_wm_space_file(C)) {
+ return ED_fileselect_active_asset_library_get(sfile);
+ }
+ if (const AssetLibraryReference *library_ref = CTX_wm_asset_library_ref(C)) {
+ return ED_assetlist_library_get(library_ref);
+ }
+ return nullptr;
+}
+
static bool asset_catalog_operator_poll(bContext *C)
{
- const SpaceFile *sfile = CTX_wm_space_file(C);
- return sfile && ED_fileselect_active_asset_library_get(sfile);
+ return get_asset_library(C) != nullptr;
}
static int asset_catalog_new_exec(bContext *C, wmOperator *op)
{
- SpaceFile *sfile = CTX_wm_space_file(C);
- struct AssetLibrary *asset_library = ED_fileselect_active_asset_library_get(sfile);
+ AssetLibrary *asset_library = get_asset_library(C);
char *parent_path = RNA_string_get_alloc(op->ptr, "parent_path", nullptr, 0, nullptr);
blender::bke::AssetCatalog *new_catalog = ED_asset_catalog_add(
asset_library, "Catalog", parent_path);
- if (sfile) {
+ if (SpaceFile *sfile = CTX_wm_space_file(C)) {
ED_fileselect_activate_asset_catalog(sfile, new_catalog->catalog_id);
}
+ else if (SpaceAssets *sassets = CTX_wm_space_assets(C)) {
+ /* TODO how can we select the catalog here in a nice way, without being space dependent? Idea:
+ * use an operator macro instead? */
+ UNUSED_VARS(sassets);
+ }
MEM_freeN(parent_path);
@@ -494,8 +508,7 @@ static void ASSET_OT_catalog_new(struct wmOperatorType *ot)
static int asset_catalog_delete_exec(bContext *C, wmOperator *op)
{
- SpaceFile *sfile = CTX_wm_space_file(C);
- struct AssetLibrary *asset_library = ED_fileselect_active_asset_library_get(sfile);
+ AssetLibrary *asset_library = get_asset_library(C);
char *catalog_id_str = RNA_string_get_alloc(op->ptr, "catalog_id", nullptr, 0, nullptr);
bke::CatalogID catalog_id;
if (!BLI_uuid_parse_string(&catalog_id, catalog_id_str)) {
@@ -530,13 +543,16 @@ static void ASSET_OT_catalog_delete(struct wmOperatorType *ot)
static bke::AssetCatalogService *get_catalog_service(bContext *C)
{
- const SpaceFile *sfile = CTX_wm_space_file(C);
- if (!sfile) {
- return nullptr;
+ if (const SpaceFile *sfile = CTX_wm_space_file(C)) {
+ AssetLibrary *asset_lib = ED_fileselect_active_asset_library_get(sfile);
+ return BKE_asset_library_get_catalog_service(asset_lib);
+ }
+ if (const AssetLibraryReference *library_ref = CTX_wm_asset_library_ref(C)) {
+ AssetLibrary *asset_lib = ED_assetlist_library_get(library_ref);
+ return BKE_asset_library_get_catalog_service(asset_lib);
}
- AssetLibrary *asset_lib = ED_fileselect_active_asset_library_get(sfile);
- return BKE_asset_library_get_catalog_service(asset_lib);
+ return nullptr;
}
static int asset_catalog_undo_exec(bContext *C, wmOperator * /*op*/)
@@ -547,7 +563,7 @@ static int asset_catalog_undo_exec(bContext *C, wmOperator * /*op*/)
}
catalog_service->undo();
- WM_event_add_notifier(C, NC_SPACE | ND_SPACE_ASSET_PARAMS, nullptr);
+ WM_event_add_notifier(C, NC_ASSET | ND_ASSET_CATALOGS, nullptr);
return OPERATOR_FINISHED;
}
@@ -577,7 +593,7 @@ static int asset_catalog_redo_exec(bContext *C, wmOperator * /*op*/)
}
catalog_service->redo();
- WM_event_add_notifier(C, NC_SPACE | ND_SPACE_ASSET_PARAMS, nullptr);
+ WM_event_add_notifier(C, NC_ASSET | ND_ASSET_CATALOGS, nullptr);
return OPERATOR_FINISHED;
}
@@ -654,8 +670,7 @@ static bool asset_catalogs_save_poll(bContext *C)
static int asset_catalogs_save_exec(bContext *C, wmOperator * /*op*/)
{
- const SpaceFile *sfile = CTX_wm_space_file(C);
- ::AssetLibrary *asset_library = ED_fileselect_active_asset_library_get(sfile);
+ ::AssetLibrary *asset_library = get_asset_library(C);
ED_asset_catalogs_save_from_main_path(asset_library, CTX_data_main(C));
@@ -690,11 +705,12 @@ static bool has_external_files(Main *bmain, struct ReportLis
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list