25#include "RNA_prototypes.hh"
118 const char *propname)
128 [&name_filter, list_data, &filter_settings](
136 return name_filter(itemptr, name, index);
140 [list_data](
const PointerRNA & ,
int index) -> std::string {
180 const char *assets_propname)
193 RNA_warning(
"Expected a collection property for AssetHandle items");
217 const char *asset_library_propname,
219 const char *assets_propname,
221 const char *active_propname,
223 const int display_flags,
224 const char *activate_opname,
226 const char *drag_opname,
229 if (!list_id || !list_id[0]) {
230 RNA_warning(
"Asset view needs a valid identifier");
237 asset_library_propname);
244 asset_library_dataptr,
252 uiItemO(row,
"", ICON_FILE_REFRESH,
"ASSET_OT_library_refresh");
263 "AssetViewListData");
305 if (activate_opname) {
307 list, activate_opname, r_activate_op_properties !=
nullptr);
308 if (r_activate_op_properties &&
ptr) {
309 *r_activate_op_properties = *
ptr;
314 list, drag_opname, r_drag_op_properties !=
nullptr);
315 if (r_drag_op_properties &&
ptr) {
316 *r_drag_op_properties = *
ptr;
Main runtime representation of an asset.
bScreen * CTX_wm_screen(const bContext *C)
#define STRNCPY(dst, src)
@ ASSET_IMPORT_APPEND_REUSE
@ UILST_LAYOUT_BIG_PREVIEW_GRID
void ED_region_tag_redraw(ARegion *region)
Read Guarded memory(de)allocation.
#define RNA_warning(format,...)
@ UI_LIST_ITEM_NEVER_SHOW
void UI_list_filter_and_sort_items(uiList *ui_list, const bContext *C, uiListItemFilterFn item_filter_fn, PointerRNA *dataptr, const char *propname, uiListItemGetNameFn get_name_fn=nullptr)
PointerRNA * UI_list_custom_drag_operator_set(uiList *ui_list, const char *opname, bool create_properties)
void uiLayoutSetScaleY(uiLayout *layout, float scale)
uiBlock * uiLayoutGetBlock(uiLayout *layout)
uiLayout * uiLayoutRow(uiLayout *layout, bool align)
void uiLayoutSetScaleX(uiLayout *layout, float scale)
int UI_preview_tile_size_y(const int size_px=96)
void uiItemFullR(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index, int value, eUI_Item_Flag flag, const char *name, int icon, const char *placeholder=nullptr)
uiBut * uiDefIconTextBut(uiBlock *block, int type, int retval, int icon, blender::StringRef str, int x, int y, short width, short height, void *poin, float min, float max, const char *tip)
void UI_but_dragflag_enable(uiBut *but, int flag)
uiList * uiTemplateList_ex(uiLayout *layout, const bContext *C, const char *listtype_name, const char *list_id, PointerRNA *dataptr, const char *propname, PointerRNA *active_dataptr, const char *active_propname, const char *item_dyntip_propname, int rows, int maxrows, int layout_type, int columns, enum uiTemplateListFlags flags, void *customdata)
void uiItemO(uiLayout *layout, const char *name, int icon, const char *opname)
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
int UI_preview_tile_size_x(const int size_px=96)
PointerRNA * UI_list_custom_activate_operator_set(uiList *ui_list, const char *opname, bool create_properties)
void UI_but_drag_set_id(uiBut *but, ID *id)
int UI_preview_tile_size_y_no_label(const int size_px=96)
@ UI_TEMPLATE_ASSET_DRAW_NO_NAMES
@ UI_TEMPLATE_ASSET_DRAW_NO_LIBRARY
@ UI_TEMPLATE_ASSET_DRAW_NO_FILTER
void UI_but_drag_set_asset(uiBut *but, const blender::asset_system::AssetRepresentation *asset, int import_method, int icon, const ImBuf *imb, float scale)
@ UI_TEMPLATE_LIST_NO_NAMES
@ UI_TEMPLATE_LIST_NO_FILTER_OPTIONS
@ UI_TEMPLATE_LIST_NO_GRIP
void uiLayoutSetContextPointer(uiLayout *layout, const char *name, PointerRNA *ptr)
std::optional< eAssetImportMethod > get_import_method() const
StringRefNull get_name() const
void ui_def_but_icon(uiBut *but, const int icon, const int flag)
static void asset_view_item_but_drag_set(uiBut *but, AssetHandle *asset_handle)
static void asset_view_listener(uiList *, wmRegionListenerParams *params)
uiListType * UI_UL_asset_view()
static void asset_view_draw_item(uiList *ui_list, const bContext *C, uiLayout *layout, PointerRNA *, PointerRNA *, int, PointerRNA *, const char *, int index, int)
static void asset_view_filter_items(uiList *ui_list, const bContext *C, PointerRNA *dataptr, const char *propname)
static void populate_asset_collection(const AssetLibraryReference &asset_library_ref, PointerRNA &assets_dataptr, const char *assets_propname)
void uiTemplateAssetView(uiLayout *layout, const bContext *C, const char *list_id, PointerRNA *asset_library_dataptr, const char *asset_library_propname, PointerRNA *assets_dataptr, const char *assets_propname, PointerRNA *active_dataptr, const char *active_propname, const asset::AssetFilterSettings *filter_settings, const int display_flags, const char *activate_opname, PointerRNA *r_activate_op_properties, const char *drag_opname, PointerRNA *r_drag_op_properties)
void *(* MEM_mallocN)(size_t len, const char *str)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void storage_fetch(const AssetLibraryReference *library_reference, const bContext *C)
void asset_preview_ensure_requested(const bContext &C, const AssetLibraryReference *library_reference, AssetHandle *asset_handle)
void storage_tag_main_data_dirty()
int size(const AssetLibraryReference *library_reference)
bool listen(const wmNotifier *notifier)
void iterate(const AssetLibraryReference &library_reference, AssetListHandleIterFn fn, FunctionRef< bool(asset_system::AssetRepresentation &)> prefilter_fn=nullptr)
asset_system::AssetRepresentation * asset_get_by_index(const AssetLibraryReference &library_reference, int asset_index)
AssetHandle asset_handle_get_by_index(const AssetLibraryReference *library_reference, int asset_index)
ImBuf * asset_image_get(const AssetHandle *asset_handle)
void previews_fetch(const AssetLibraryReference *library_reference, const bContext *C)
AssetLibraryReference library_reference_from_enum_value(int value)
asset_system::AssetRepresentation * handle_get_representation(const AssetHandle *asset)
bool filter_matches_asset(const AssetFilterSettings *filter, const blender::asset_system::AssetRepresentation &asset)
int handle_get_preview_icon_id(const AssetHandle *asset)
bool RNA_struct_is_a(const StructRNA *type, const StructRNA *srna)
void RNA_pointer_set(PointerRNA *ptr, const char *name, PointerRNA ptr_value)
StructRNA * RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
PropertyType RNA_property_type(PropertyRNA *prop)
void RNA_property_collection_add(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *r_ptr)
int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_collection_clear(PointerRNA *ptr, PropertyRNA *prop)
PointerRNA RNA_pointer_create(ID *id, StructRNA *type, void *data)
const struct FileDirEntry * file_data
asset::AssetFilterSettings filter_settings
AssetLibraryReference asset_library_ref
struct wmOperatorType * custom_drag_optype
char idname[BKE_ST_MAXNAME]
uiListFilterItemsFunc filter_items
uiListDrawItemFunc draw_item