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();
114 : filelist_(filesel_type), library_ref_(asset_library_ref)
143 if (!asset_lib_path.empty()) {
144 STRNCPY(dirpath, asset_lib_path.c_str());
203 for (
int i = 0;
i < numfiles;
i++) {
221 for (
int i = 0;
i < numfiles;
i++) {
357 list.tag_main_data_dirty();
364 list.remap_id(id_old, id_new);
391 return {*
list,
false};
393 storage.
add(library_reference,
AssetList(filesel_type, library_reference));
394 return {storage.
lookup(library_reference),
true};
421 clear(¤t_file_library,
wm);
436 if (is_new ||
list.needs_refetch()) {
451 if (is_new ||
list.needs_refetch()) {
453 list.ensure_blocking(
C);
463 if (
list->needs_refetch()) {
466 return list->is_loaded();
547 bool has_asset_browser =
false;
550 has_asset_browser =
true;
553 return has_asset_browser;
579 return list->asset_library();
586 return list->asset_get_by_index(asset_index);
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_EXPERIMENTAL_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
AssetHandle asset_get_by_index(int index) const
void remap_id(ID *id_old, ID *id_new) const
asset_system::AssetLibrary * asset_library() const
void iterate(AssetListIndexIterFn fn) const
void fetch(const bContext &C)
void tag_main_data_dirty() const
void clear(wmWindowManager *wm)
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)
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_clear_from_reset_tag(FileList *filelist)
bool filelist_pending(const FileList *filelist)
void filelist_setfilter_options(FileList *filelist, const bool do_filter, const bool hide_dot, const bool hide_parent, const uint64_t filter, const uint64_t filter_id, const bool filter_assets_only, const char *filter_glob, const char *filter_search)
void filelist_free(FileList *filelist)
void filelist_setlibrary(FileList *filelist, const AssetLibraryReference *asset_library_ref)
asset_system::AssetRepresentation * filelist_entry_get_asset_representation(const FileList *filelist, const int index)
void filelist_clear(FileList *filelist)
void filelist_setdir(FileList *filelist, char dirpath[FILE_MAX_LIBEXTRA])
void filelist_tag_reload_asset_library(FileList *filelist)
void filelist_setrecursion(FileList *filelist, const int recursion_level)
void filelist_setsorting(FileList *filelist, const short sort, bool invert_sort)
FileList * filelist_new(short type)
void filelist_readjob_stop(FileList *filelist, wmWindowManager *wm)
int filelist_needs_reading(const FileList *filelist)
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)
FileDirEntry * filelist_file(FileList *filelist, int index)
bool filelist_is_ready(const FileList *filelist)
void filelist_readjob_start(FileList *filelist, const int space_notifier, const bContext *C)
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 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
asset_system::AssetRepresentation * asset_get_by_index(const AssetLibraryReference &library_reference, int asset_index)
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
FunctionRef< bool(asset_system::AssetRepresentation &, int asset_index)> AssetListIndexIterFn
AssetHandle asset_handle_get_by_index(const AssetLibraryReference *library_reference, int asset_index)
void iterate(const AssetLibraryReference &library_reference, AssetListIndexIterFn fn)
static AssetListMap & libraries_map()
void asset_reading_region_listen_fn(const wmRegionListenerParams *params)
const struct FileDirEntry * file_data
AssetLibraryReference asset_library_ref
AssetRepresentationHandle * asset
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)