[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