62 std::unique_ptr<
FileList,
decltype(&filelist_free_fn)> file_list_;
66 : file_list_(
filelist_new(filesel_type), filelist_free_fn)
79 return file_list_.get();
111 : filelist_(filesel_type), library_ref_(asset_library_ref)
140 if (!asset_lib_path.empty()) {
141 STRNCPY(dirpath, asset_lib_path.c_str());
200 for (
int i = 0;
i < numfiles;
i++) {
331 list.tag_main_data_dirty();
338 list.remap_id(id_old, id_new);
365 return {*
list,
false};
367 storage.
add(library_reference,
AssetList(filesel_type, library_reference));
368 return {storage.
lookup(library_reference),
true};
395 clear(¤t_file_library,
wm);
410 if (is_new ||
list.needs_refetch()) {
425 if (is_new ||
list.needs_refetch()) {
427 list.ensure_blocking(
C);
437 if (
list->needs_refetch()) {
440 return list->is_loaded();
521 bool has_asset_browser =
false;
524 has_asset_browser =
true;
527 return has_asset_browser;
545 return list->asset_library();
std::string AS_asset_library_root_path_from_library_ref(const AssetLibraryReference &library_reference)
Main runtime representation of an asset.
void BKE_callback_add(bCallbackFuncStore *funcstore, eCbEvent evt)
wmWindowManager * CTX_wm_manager(const bContext *C)
#define LISTBASE_FOREACH(type, var, list)
char * STRNCPY(char(&dst)[N], const char *src)
@ ASSET_LIBRARY_ESSENTIALS
@ FILE_SORT_ASSET_CATALOG
@ FILE_BROWSE_MODE_ASSETS
#define FILE_MAX_LIBEXTRA
#define FILE_SELECT_MAX_RECURSIONS
#define USER_DEVELOPER_TOOL_TEST(userdef, member)
void ED_fileselect_clear_main_assets(wmWindowManager *wm, SpaceFile *sfile)
void ED_fileselect_clear(wmWindowManager *wm, SpaceFile *sfile)
void ED_region_tag_refresh_ui(ARegion *region)
#define ND_ASSET_LIST_READING
#define ND_ASSET_LIST_PREVIEW
const Value * lookup_ptr(const Key &key) const
bool add(const Key &key, const Value &value)
const Value & lookup(const Key &key) const
NonCopyable(const NonCopyable &other)=delete
static bool listen(const wmNotifier ¬ifier)
AssetList(AssetList &&other)=default
void remap_id(ID *id_old, ID *id_new) const
asset_system::AssetLibrary * asset_library() const
void fetch(const bContext &C)
void tag_main_data_dirty() const
void clear(wmWindowManager *wm)
void iterate(AssetListIterFn fn) const
bool needs_refetch() const
void clear_current_file_assets(wmWindowManager *wm)
void ensure_blocking(const bContext &C)
FileListWrapper & operator=(FileListWrapper &&other)=default
FileListWrapper(eFileSelectType filesel_type)
FileListWrapper(FileListWrapper &&other)=default
const FileIndexerType file_indexer_noop
void filelist_freelib(FileList *filelist)
void filelist_tag_force_reset(FileList *filelist)
void filelist_readjob_start(FileList *filelist, int space_notifier, const bContext *C)
blender::asset_system::AssetLibrary * filelist_asset_library(FileList *filelist)
bool filelist_needs_force_reset(const FileList *filelist)
void filelist_readjob_blocking_run(FileList *filelist, int space_notifier, const bContext *C)
void filelist_setrecursion(FileList *filelist, int recursion_level)
void filelist_clear_from_reset_tag(FileList *filelist)
bool filelist_pending(const FileList *filelist)
void filelist_setdir(FileList *filelist, char dirpath[1282])
void filelist_free(FileList *filelist)
void filelist_setlibrary(FileList *filelist, const AssetLibraryReference *asset_library_ref)
void filelist_setfilter_options(FileList *filelist, bool do_filter, bool hide_dot, bool hide_parent, uint64_t filter, uint64_t filter_id, bool filter_assets_only, const char *filter_glob, const char *filter_search)
void filelist_clear(FileList *filelist)
void filelist_tag_reload_asset_library(FileList *filelist)
FileList * filelist_new(short type)
void filelist_readjob_stop(FileList *filelist, wmWindowManager *wm)
int filelist_needs_reading(const FileList *filelist)
void filelist_setsorting(FileList *filelist, short sort, bool invert_sort)
void filelist_filter(FileList *filelist)
void filelist_tag_force_reset_mainfiles(FileList *filelist)
bool filelist_needs_reset_on_main_changes(const FileList *filelist)
int filelist_files_ensure(FileList *filelist)
void filelist_sort(FileList *filelist)
void filelist_setindexer(FileList *filelist, const FileIndexerType *indexer)
bool filelist_is_ready(const FileList *filelist)
blender::asset_system::AssetRepresentation * filelist_entry_get_asset_representation(const FileList *filelist, const int index)
AssetLibraryReference all_library_reference()
AssetLibraryReference current_file_library_reference()
const FileIndexerType file_indexer_asset
void storage_fetch(const AssetLibraryReference *library_reference, const bContext *C)
void iterate(const AssetLibraryReference &library_reference, AssetListIterFn fn)
void storage_tag_main_data_dirty()
int size(const AssetLibraryReference *library_reference)
void storage_id_remap(ID *id_old, ID *id_new)
bool has_asset_browser_storage_for_library(const AssetLibraryReference *library_reference, const bContext *C)
static void on_save_post(Main *main, PointerRNA **pointers, int num_pointers, void *arg)
static std::tuple< AssetList &, is_new_t > ensure_list_storage(const AssetLibraryReference &library_reference, eFileSelectType filesel_type)
asset_system::AssetLibrary * library_get_once_available(const AssetLibraryReference &library_reference)
void storage_fetch_blocking(const AssetLibraryReference &library_reference, const bContext &C)
void clear(const AssetLibraryReference *library_reference, const bContext *C)
bool listen(const wmNotifier *notifier)
static std::optional< eFileSelectType > asset_library_reference_to_fileselect_type(const AssetLibraryReference &library_reference)
void clear_all_library(const bContext *C)
bool has_list_storage_for_library(const AssetLibraryReference *library_reference)
bool is_loaded(const AssetLibraryReference *library_reference)
static AssetList * lookup_list(const AssetLibraryReference &library_ref)
Map< AssetLibraryReference, AssetList > AssetListMap
static void foreach_visible_asset_browser_showing_library(const AssetLibraryReference &library_reference, const wmWindowManager *wm, const FunctionRef< void(SpaceFile &sfile)> fn)
FunctionRef< bool(asset_system::AssetRepresentation &)> AssetListIterFn
static AssetListMap & libraries_map()
void asset_reading_region_listen_fn(const wmRegionListenerParams *params)
AssetLibraryReference asset_library_ref
FileAssetSelectParams * asset_params
bCallbackFuncStore on_save_callback_store
void WM_main_add_notifier(uint type, void *reference)
bScreen * WM_window_get_active_screen(const wmWindow *win)