Blender V4.3
filelist.cc File Reference
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <memory>
#include <optional>
#include <sys/stat.h>
#include <unistd.h>
#include "AS_asset_library.hh"
#include "AS_asset_representation.hh"
#include "MEM_guardedalloc.h"
#include "BLF_api.hh"
#include "BLI_blenlib.h"
#include "BLI_fileops.h"
#include "BLI_fileops_types.h"
#include "BLI_fnmatch.h"
#include "BLI_ghash.h"
#include "BLI_linklist.h"
#include "BLI_math_vector.h"
#include "BLI_stack.h"
#include "BLI_string_utils.hh"
#include "BLI_task.h"
#include "BLI_threads.h"
#include "BLI_utildefines.h"
#include "BLI_uuid.h"
#include "BKE_asset.hh"
#include "BKE_blendfile.hh"
#include "BKE_context.hh"
#include "BKE_global.hh"
#include "BKE_icons.h"
#include "BKE_idtype.hh"
#include "BKE_main.hh"
#include "BKE_preferences.h"
#include "BKE_preview_image.hh"
#include "DNA_asset_types.h"
#include "DNA_space_types.h"
#include "ED_datafiles.h"
#include "ED_fileselect.hh"
#include "IMB_imbuf.hh"
#include "IMB_imbuf_types.hh"
#include "IMB_thumbs.hh"
#include "WM_api.hh"
#include "WM_types.hh"
#include "UI_interface_icons.hh"
#include "UI_resources.hh"
#include "atomic_ops.h"
#include "file_indexer.hh"
#include "file_intern.hh"
#include "filelist.hh"

Go to the source code of this file.

Classes

struct  FileListInternEntry
 
struct  FileListIntern
 
struct  FileListEntryCache
 
struct  FileListEntryPreview
 
struct  FileListEntryPreviewTaskData
 
struct  FileListFilter
 
struct  FileList
 
struct  FileSortData
 
struct  TodoDir
 
struct  FileListReadJob
 
struct  FileIndexer
 

Macros

#define FILEDIR_NBR_ENTRIES_UNSET   -1
 
#define FILELIST_ENTRYCACHESIZE_DEFAULT   1024 /* Keep it a power of two! */
 
#define FILE_UID_UNSET   0
 

Enumerations

enum  { FLC_IS_INIT = 1 << 0 , FLC_PREVIEWS_ACTIVE = 1 << 1 }
 
enum  {
  FLF_DO_FILTER = 1 << 0 , FLF_HIDE_DOT = 1 << 1 , FLF_HIDE_PARENT = 1 << 2 , FLF_HIDE_LIB_DIR = 1 << 3 ,
  FLF_ASSETS_ONLY = 1 << 4
}
 
enum  {
  FL_FORCE_RESET = 1 << 0 , FL_FORCE_RESET_MAIN_FILES = 1 << 1 , FL_IS_READY = 1 << 2 , FL_IS_PENDING = 1 << 3 ,
  FL_NEED_SORTING = 1 << 4 , FL_NEED_FILTERING = 1 << 5 , FL_SORT_INVERT = 1 << 6 , FL_PREVIEWS_NO_AUTO_CACHE = 1 << 7
}
 
enum  FileListTags { FILELIST_TAGS_USES_MAIN_DATA = (1 << 0) , FILELIST_TAGS_NO_THREADS = (1 << 2) }
 
enum class  SpecialFileImages { Document , Folder , Parent , _Max }
 
enum  ListLibOptions { LIST_LIB_OPTION_NONE = 0 , LIST_LIB_RECURSIVE = (1 << 0) , LIST_LIB_ASSETS_ONLY = (1 << 1) , LIST_LIB_ADD_PARENT = (1 << 2) }
 

Functions

static void filelist_readjob_main (FileListReadJob *job_params, bool *stop, bool *do_update, float *progress)
 
static void filelist_readjob_lib (FileListReadJob *job_params, bool *stop, bool *do_update, float *progress)
 
static void filelist_readjob_dir (FileListReadJob *job_params, bool *stop, bool *do_update, float *progress)
 
static void filelist_readjob_asset_library (FileListReadJob *job_params, bool *stop, bool *do_update, float *progress)
 
static void filelist_readjob_main_assets (FileListReadJob *job_params, bool *stop, bool *do_update, float *progress)
 
static void filelist_readjob_all_asset_library (FileListReadJob *job_params, bool *stop, bool *do_update, float *progress)
 
static int groupname_to_code (const char *group)
 
static void filelist_cache_clear (FileListEntryCache *cache, size_t new_size)
 
static bool filelist_intern_entry_is_main_file (const FileListInternEntry *intern_entry)
 
static bool filelist_cache_previews_push (FileList *filelist, FileDirEntry *entry, const int index)
 
static bool filelist_file_preview_load_poll (const FileDirEntry *entry)
 
static int compare_apply_inverted (int val, const FileSortData *sort_data)
 
static int compare_tiebreaker (const FileListInternEntry *entry1, const FileListInternEntry *entry2)
 
static int compare_direntry_generic (const FileListInternEntry *entry1, const FileListInternEntry *entry2)
 
static int compare_name (void *user_data, const void *a1, const void *a2)
 
static int compare_date (void *user_data, const void *a1, const void *a2)
 
static int compare_size (void *user_data, const void *a1, const void *a2)
 
static int compare_extension (void *user_data, const void *a1, const void *a2)
 
static int compare_asset_catalog (void *user_data, const void *a1, const void *a2)
 
void filelist_sort (FileList *filelist)
 
void filelist_setsorting (FileList *filelist, const short sort, bool invert_sort)
 
static bool is_filtered_hidden (const char *filename, const FileListFilter *filter, const FileListInternEntry *file)
 
static bool is_filtered_file_relpath (const FileListInternEntry *file, const FileListFilter *filter)
 
static bool is_filtered_file_name (const FileListInternEntry *file, const FileListFilter *filter)
 
static bool is_filtered_file_type (const FileListInternEntry *file, const FileListFilter *filter)
 
static bool is_filtered_file (FileListInternEntry *file, const char *, FileListFilter *filter)
 
static bool is_filtered_id_file_type (const FileListInternEntry *file, const short id_code, const char *name, const FileListFilter *filter)
 
static AssetMetaDatafilelist_file_internal_get_asset_data (const FileListInternEntry *file)
 
static void prepare_filter_asset_library (const FileList *filelist, FileListFilter *filter)
 
static bool asset_tag_matches_filter (const char *filter_search, const AssetMetaData *asset_data)
 
static bool is_filtered_asset (FileListInternEntry *file, FileListFilter *filter)
 
static bool is_filtered_lib_type (FileListInternEntry *file, const char *, FileListFilter *filter)
 
static bool is_filtered_lib (FileListInternEntry *file, const char *root, FileListFilter *filter)
 
static bool is_filtered_main (FileListInternEntry *file, const char *, FileListFilter *filter)
 
static bool is_filtered_main_assets (FileListInternEntry *file, const char *, FileListFilter *filter)
 
static bool is_filtered_asset_library (FileListInternEntry *file, const char *root, FileListFilter *filter)
 
void filelist_tag_needs_filtering (FileList *filelist)
 
void filelist_filter (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_setindexer (FileList *filelist, const FileIndexerType *indexer)
 
void filelist_set_asset_catalog_filter_options (FileList *filelist, eFileSel_Params_AssetCatalogVisibility catalog_visibility, const ::bUUID *catalog_id)
 
static bool filelist_compare_asset_libraries (const AssetLibraryReference *library_a, const AssetLibraryReference *library_b)
 
void filelist_setlibrary (FileList *filelist, const AssetLibraryReference *asset_library_ref)
 
void filelist_free_icons ()
 
void filelist_file_get_full_path (const FileList *filelist, const FileDirEntry *file, char r_filepath[])
 
bool filelist_file_is_preview_pending (const FileList *filelist, const FileDirEntry *file)
 
bool filelist_file_ensure_preview_requested (FileList *filelist, FileDirEntry *file)
 
static FileDirEntryfilelist_geticon_get_file (FileList *filelist, const int index)
 
ImBuffilelist_getimage (FileList *filelist, const int index)
 
ImBuffilelist_file_getimage (const FileDirEntry *file)
 
static ImBuffilelist_ensure_special_file_image (SpecialFileImages image, int icon)
 
ImBuffilelist_geticon_image_ex (const FileDirEntry *file)
 
ImBuffilelist_geticon_image (FileList *filelist, const int index)
 
static int filelist_geticon_ex (const FileList *filelist, const FileDirEntry *file, const bool is_main, const bool ignore_libdir)
 
int filelist_geticon (FileList *filelist, const int index, const bool is_main)
 
int ED_file_icon (const FileDirEntry *file)
 
static void parent_dir_until_exists_or_default_root (char *dir)
 
static bool filelist_checkdir_dir (const FileList *, char dirpath[FILE_MAX_LIBEXTRA], const bool do_change)
 
static bool filelist_checkdir_lib (const FileList *, char dirpath[FILE_MAX_LIBEXTRA], const bool do_change)
 
static bool filelist_checkdir_main (const FileList *filelist, char dirpath[FILE_MAX_LIBEXTRA], const bool do_change)
 
static bool filelist_checkdir_return_always_valid (const FileList *, char[FILE_MAX_LIBEXTRA], const bool)
 
static void filelist_entry_clear (FileDirEntry *entry)
 
static void filelist_entry_free (FileDirEntry *entry)
 
static void filelist_direntryarr_free (FileDirEntryArr *array)
 
static void filelist_intern_entry_free (FileList *filelist, FileListInternEntry *entry)
 
static void filelist_intern_free (FileList *filelist)
 
static int filelist_intern_free_main_files (FileList *filelist)
 
static void filelist_cache_preview_runf (TaskPool *__restrict pool, void *taskdata)
 
static void filelist_cache_preview_freef (TaskPool *__restrict, void *taskdata)
 
static void filelist_cache_preview_ensure_running (FileListEntryCache *cache)
 
static void filelist_cache_previews_clear (FileListEntryCache *cache)
 
static void filelist_cache_previews_free (FileListEntryCache *cache)
 
static void filelist_cache_init (FileListEntryCache *cache, size_t cache_size)
 
static void filelist_cache_free (FileListEntryCache *cache)
 
FileListfilelist_new (short type)
 
void filelist_settype (FileList *filelist, short type)
 
static void filelist_clear_asset_library (FileList *filelist)
 
void filelist_clear_ex (FileList *filelist, const bool do_asset_library, const bool do_cache, const bool do_selection)
 
static void filelist_clear_main_files (FileList *filelist, const bool do_asset_library, const bool do_cache, const bool do_selection)
 
void filelist_clear (FileList *filelist)
 
void filelist_clear_from_reset_tag (FileList *filelist)
 
void filelist_free (FileList *filelist)
 
blender::asset_system::AssetLibraryfilelist_asset_library (FileList *filelist)
 
void filelist_freelib (FileList *filelist)
 
BlendHandle * filelist_lib (FileList *filelist)
 
int filelist_files_num_entries (FileList *filelist)
 
static const char * fileentry_uiname (const char *root, FileListInternEntry *entry, char *buff)
 
const char * filelist_dir (const FileList *filelist)
 
bool filelist_is_dir (const FileList *filelist, const char *path)
 
void filelist_setdir (FileList *filelist, char dirpath[FILE_MAX_LIBEXTRA])
 
void filelist_setrecursion (FileList *filelist, const int recursion_level)
 
void filelist_set_no_preview_auto_cache (FileList *filelist)
 
bool filelist_needs_force_reset (const FileList *filelist)
 
void filelist_tag_force_reset (FileList *filelist)
 
void filelist_tag_force_reset_mainfiles (FileList *filelist)
 
bool filelist_is_ready (const FileList *filelist)
 
bool filelist_pending (const FileList *filelist)
 
bool filelist_needs_reset_on_main_changes (const FileList *filelist)
 
int filelist_files_ensure (FileList *filelist)
 
static FileDirEntryfilelist_file_create_entry (FileList *filelist, const int index)
 
static void filelist_file_release_entry (FileList *filelist, FileDirEntry *entry)
 
static FileDirEntryfilelist_cache_file_lookup (FileListEntryCache *cache, const int index)
 
FileDirEntryfilelist_file_ex (FileList *filelist, const int index, const bool use_request)
 
FileDirEntryfilelist_file (FileList *filelist, int index)
 
int filelist_file_find_path (FileList *filelist, const char *filename)
 
int filelist_file_find_id (const FileList *filelist, const ID *id)
 
static FileListInternEntryfilelist_entry_intern_get (const FileList *filelist, const int index)
 
IDfilelist_entry_get_id (const FileList *filelist, const int index)
 
asset_system::AssetRepresentationfilelist_entry_get_asset_representation (const FileList *filelist, const int index)
 
IDfilelist_file_get_id (const FileDirEntry *file)
 
const char * filelist_entry_get_relpath (const FileList *filelist, int index)
 
static FileUID filelist_uid_generate (FileList *filelist)
 
bool filelist_uid_is_set (const FileUID uid)
 
void filelist_uid_unset (FileUID *r_uid)
 
void filelist_file_cache_slidingwindow_set (FileList *filelist, size_t window_size)
 
static bool filelist_file_cache_block_create (FileList *filelist, const int start_index, const int size, int cursor)
 
static void filelist_file_cache_block_release (FileList *filelist, const int size, int cursor)
 
bool filelist_file_cache_block (FileList *filelist, const int index)
 
bool filelist_cache_previews_enabled (const FileList *filelist)
 
void filelist_cache_previews_set (FileList *filelist, const bool use_previews)
 
void filelist_cache_previews_ensure_running (FileList *filelist)
 
bool filelist_cache_previews_update (FileList *filelist)
 
bool filelist_cache_previews_running (FileList *filelist)
 
bool filelist_cache_previews_done (FileList *filelist)
 
static bool file_is_blend_backup (const char *str)
 
int ED_path_extension_type (const char *path)
 
int ED_file_extension_icon (const char *path)
 
int filelist_needs_reading (const FileList *filelist)
 
uint filelist_entry_select_set (const FileList *filelist, const FileDirEntry *entry, FileSelType select, const eDirEntry_SelectFlag flag, FileCheckType check)
 
void filelist_entry_select_index_set (FileList *filelist, const int index, FileSelType select, const eDirEntry_SelectFlag flag, FileCheckType check)
 
void filelist_entries_select_index_range_set (FileList *filelist, FileSelection *sel, FileSelType select, const eDirEntry_SelectFlag flag, FileCheckType check)
 
eDirEntry_SelectFlag filelist_entry_select_get (FileList *filelist, FileDirEntry *entry, FileCheckType check)
 
eDirEntry_SelectFlag filelist_entry_select_index_get (FileList *filelist, const int index, FileCheckType check)
 
bool filelist_entry_is_selected (FileList *filelist, const int index)
 
void filelist_entry_parent_select_set (FileList *filelist, FileSelType select, const eDirEntry_SelectFlag flag, FileCheckType check)
 
bool filelist_islibrary (FileList *filelist, char *dir, char **r_group)
 
static char * current_relpath_append (const FileListReadJob *job_params, const char *filename)
 
static int filelist_readjob_list_dir (FileListReadJob *job_params, const char *root, ListBase *entries, const char *filter_glob, const bool do_lib, const char *main_filepath, const bool skip_currpar)
 
 ENUM_OPERATORS (ListLibOptions, LIST_LIB_ADD_PARENT)
 
static FileListInternEntryfilelist_readjob_list_lib_group_create (const FileListReadJob *job_params, const int idcode, const char *group_name)
 
static void filelist_readjob_list_lib_add_datablock (FileListReadJob *job_params, ListBase *entries, BLODataBlockInfo *datablock_info, const bool prefix_relpath_with_group_name, const int idcode, const char *group_name)
 
static void filelist_readjob_list_lib_add_datablocks (FileListReadJob *job_params, ListBase *entries, LinkNode *datablock_infos, const bool prefix_relpath_with_group_name, const int idcode, const char *group_name)
 
static void filelist_readjob_list_lib_add_from_indexer_entries (FileListReadJob *job_params, ListBase *entries, const FileIndexerEntries *indexer_entries, const bool prefix_relpath_with_group_name)
 
static FileListInternEntryfilelist_readjob_list_lib_navigate_to_parent_entry_create (const FileListReadJob *job_params)
 
static int filelist_readjob_list_lib_populate_from_index (FileListReadJob *job_params, ListBase *entries, const ListLibOptions options, const int read_from_index, const FileIndexerEntries *indexer_entries)
 
static std::optional< intfilelist_readjob_list_lib (FileListReadJob *job_params, const char *root, ListBase *entries, const ListLibOptions options, FileIndexer *indexer_runtime)
 
static bool filelist_readjob_append_entries (FileListReadJob *job_params, ListBase *from_entries, int from_entries_num)
 
static bool filelist_readjob_should_recurse_into_entry (const int max_recursion, const bool is_lib, const int current_recursion_level, FileListInternEntry *entry)
 
static void filelist_readjob_recursive_dir_add_items (const bool do_lib, FileListReadJob *job_params, const bool *stop, bool *do_update, float *progress)
 
static void filelist_readjob_do (const bool do_lib, FileListReadJob *job_params, const bool *stop, bool *do_update, float *progress)
 
static void filelist_readjob_load_asset_library_data (FileListReadJob *job_params, bool *do_update)
 
static void filelist_readjob_main_assets_add_items (FileListReadJob *job_params, bool *, bool *do_update, float *)
 
static bool filelist_contains_main (const FileList *filelist, const Main *bmain)
 
static bool filelist_readjob_is_partial_read (const FileListReadJob *read_job)
 
static void filelist_readjob_startjob (void *flrjv, wmJobWorkerStatus *worker_status)
 
static void filelist_readjob_update (void *flrjv)
 
static void filelist_readjob_endjob (void *flrjv)
 
static void filelist_readjob_free (void *flrjv)
 
static eWM_JobType filelist_jobtype_get (const FileList *filelist)
 
static void assetlibrary_readjob_startjob (void *flrjv, wmJobWorkerStatus *worker_status)
 
void filelist_readjob_start (FileList *filelist, const int space_notifier, const bContext *C)
 
void filelist_readjob_stop (FileList *filelist, wmWindowManager *wm)
 
int filelist_readjob_running (FileList *filelist, wmWindowManager *wm)
 

Variables

static ImBufgSpecialFileImages [int(SpecialFileImages::_Max)]
 

Macro Definition Documentation

◆ FILE_UID_UNSET

#define FILE_UID_UNSET   0

Definition at line 2336 of file filelist.cc.

Referenced by filelist_uid_unset().

◆ FILEDIR_NBR_ENTRIES_UNSET

◆ FILELIST_ENTRYCACHESIZE_DEFAULT

#define FILELIST_ENTRYCACHESIZE_DEFAULT   1024 /* Keep it a power of two! */

Definition at line 161 of file filelist.cc.

Referenced by filelist_new().

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

#FileListCache.flags

Enumerator
FLC_IS_INIT 
FLC_PREVIEWS_ACTIVE 

Definition at line 194 of file filelist.cc.

◆ anonymous enum

anonymous enum

FileListFilter.flags

Enumerator
FLF_DO_FILTER 
FLF_HIDE_DOT 
FLF_HIDE_PARENT 
FLF_HIDE_LIB_DIR 
FLF_ASSETS_ONLY 

Definition at line 224 of file filelist.cc.

◆ anonymous enum

anonymous enum

FileList.flags

Enumerator
FL_FORCE_RESET 
FL_FORCE_RESET_MAIN_FILES 
FL_IS_READY 
FL_IS_PENDING 
FL_NEED_SORTING 
FL_NEED_FILTERING 
FL_SORT_INVERT 
FL_PREVIEWS_NO_AUTO_CACHE 

By default, filelist_file_cache_block() will attempt to load previews around the visible "window" of visible files. When this flag is set it won't do so, and each preview has to be queried through a filelist_cache_previews_push() call.

Definition at line 296 of file filelist.cc.

◆ FileListTags

FileList.tags

Enumerator
FILELIST_TAGS_USES_MAIN_DATA 

The file list has references to main data (IDs) and needs special care.

FILELIST_TAGS_NO_THREADS 

The file list type is not thread-safe.

Definition at line 315 of file filelist.cc.

◆ ListLibOptions

Enumerator
LIST_LIB_OPTION_NONE 
LIST_LIB_RECURSIVE 
LIST_LIB_ASSETS_ONLY 
LIST_LIB_ADD_PARENT 

Definition at line 3230 of file filelist.cc.

◆ SpecialFileImages

enum class SpecialFileImages
strong
Enumerator
Document 
Folder 
Parent 
_Max 

Definition at line 322 of file filelist.cc.

Function Documentation

◆ asset_tag_matches_filter()

static bool asset_tag_matches_filter ( const char * filter_search,
const AssetMetaData * asset_data )
static

Return whether at least one tag matches the search filter. Tags are searched as "entire words", so instead of searching for "tag" in the filter string, this function searches for " tag ". Assumes the search filter starts and ends with a space.

Here the tags on the asset are written in set notation:

asset_tag_matches_filter(" some tags ", {"some", "blue"}) -> true asset_tag_matches_filter(" some tags ", {"som", "tag"}) -> false asset_tag_matches_filter(" some tags ", {}) -> false

Definition at line 867 of file filelist.cc.

References BLI_strcasestr(), LISTBASE_FOREACH, and AssetMetaData::tags.

Referenced by is_filtered_asset().

◆ assetlibrary_readjob_startjob()

static void assetlibrary_readjob_startjob ( void * flrjv,
wmJobWorkerStatus * worker_status )
static

Definition at line 4260 of file filelist.cc.

References filelist_readjob_startjob().

Referenced by filelist_readjob_start().

◆ compare_apply_inverted()

static int compare_apply_inverted ( int val,
const FileSortData * sort_data )
static

◆ compare_asset_catalog()

◆ compare_date()

static int compare_date ( void * user_data,
const void * a1,
const void * a2 )
static

◆ compare_direntry_generic()

static int compare_direntry_generic ( const FileListInternEntry * entry1,
const FileListInternEntry * entry2 )
static

Handles inverted sorting itself (currently there's nothing to invert), so if this returns non-0, it should be used as-is and not inverted.

Definition at line 427 of file filelist.cc.

References FILE_TYPE_BLENDER, FILE_TYPE_BLENDER_BACKUP, FILE_TYPE_BLENDERLIB, FILE_TYPE_DIR, FILENAME_IS_CURRENT, FILENAME_IS_PARENT, FileListInternEntry::relpath, and FileListInternEntry::typeflag.

Referenced by compare_asset_catalog(), compare_date(), compare_extension(), compare_name(), and compare_size().

◆ compare_extension()

static int compare_extension ( void * user_data,
const void * a1,
const void * a2 )
static

◆ compare_name()

static int compare_name ( void * user_data,
const void * a1,
const void * a2 )
static

Definition at line 478 of file filelist.cc.

References compare_apply_inverted(), compare_direntry_generic(), compare_tiebreaker(), and ret.

Referenced by filelist_sort().

◆ compare_size()

static int compare_size ( void * user_data,
const void * a1,
const void * a2 )
static

◆ compare_tiebreaker()

static int compare_tiebreaker ( const FileListInternEntry * entry1,
const FileListInternEntry * entry2 )
static

If all relevant characteristics match (e.g. the file type when sorting by file types), this should be used as tiebreaker. It makes sure there's a well defined sorting even in such cases.

Multiple files with the same name can appear with recursive file loading and/or when displaying IDs of different types, so these cases need to be handled.

1) Sort files by name using natural sorting. 2) If not possible (file names match) and both represent local IDs, sort by ID-type. 3) If not possible and only one is a local ID, place files representing local IDs first.

TODO: (not actually implemented, but should be): 4) If no file represents a local ID, sort by file path, so that files higher up the file system hierarchy are placed first.

Definition at line 391 of file filelist.cc.

References FileListInternEntry::blentype, BLI_strcasecmp_natural(), FileListInternEntry::id, FileListInternEntry::local_data, and FileListInternEntry::name.

Referenced by compare_asset_catalog(), compare_date(), compare_extension(), compare_name(), and compare_size().

◆ current_relpath_append()

static char * current_relpath_append ( const FileListReadJob * job_params,
const char * filename )
static

Append filename (or even a path inside of a .blend, like Material/Material.001), to the current relative path being read within the filelist root. The returned string needs freeing with MEM_freeN().

Definition at line 3110 of file filelist.cc.

References ALTSEP, BLI_assert, BLI_path_is_rel(), BLI_strdup(), BLI_string_join, FileListReadJob::cur_relbase, ELEM, FILE_MAX_LIBEXTRA, and SEP.

Referenced by filelist_readjob_list_dir(), filelist_readjob_list_lib_add_datablock(), filelist_readjob_list_lib_group_create(), filelist_readjob_list_lib_navigate_to_parent_entry_create(), and filelist_readjob_main_assets_add_items().

◆ ED_file_extension_icon()

◆ ED_file_icon()

int ED_file_icon ( const FileDirEntry * file)

◆ ED_path_extension_type()

◆ ENUM_OPERATORS()

ENUM_OPERATORS ( ListLibOptions ,
LIST_LIB_ADD_PARENT  )

◆ file_is_blend_backup()

static bool file_is_blend_backup ( const char * str)
static

Definition at line 2749 of file filelist.cc.

References b, BLI_strcasestr(), and str.

Referenced by ED_path_extension_type().

◆ fileentry_uiname()

◆ filelist_asset_library()

◆ filelist_cache_clear()

◆ filelist_cache_file_lookup()

◆ filelist_cache_free()

◆ filelist_cache_init()

◆ filelist_cache_preview_ensure_running()

◆ filelist_cache_preview_freef()

static void filelist_cache_preview_freef ( TaskPool * __restrict,
void * taskdata )
static

Definition at line 1586 of file filelist.cc.

References MEM_freeN(), and FileListEntryPreviewTaskData::preview.

Referenced by filelist_cache_previews_push().

◆ filelist_cache_preview_runf()

◆ filelist_cache_previews_clear()

◆ filelist_cache_previews_done()

◆ filelist_cache_previews_enabled()

◆ filelist_cache_previews_ensure_running()

void filelist_cache_previews_ensure_running ( FileList * filelist)

◆ filelist_cache_previews_free()

◆ filelist_cache_previews_push()

◆ filelist_cache_previews_running()

bool filelist_cache_previews_running ( FileList * filelist)

◆ filelist_cache_previews_set()

◆ filelist_cache_previews_update()

◆ filelist_checkdir_dir()

static bool filelist_checkdir_dir ( const FileList * ,
char dirpath[FILE_MAX_LIBEXTRA],
const bool do_change )
static

Definition at line 1398 of file filelist.cc.

References BLI_is_dir(), and parent_dir_until_exists_or_default_root().

Referenced by filelist_settype().

◆ filelist_checkdir_lib()

static bool filelist_checkdir_lib ( const FileList * ,
char dirpath[FILE_MAX_LIBEXTRA],
const bool do_change )
static

◆ filelist_checkdir_main()

static bool filelist_checkdir_main ( const FileList * filelist,
char dirpath[FILE_MAX_LIBEXTRA],
const bool do_change )
static

Definition at line 1428 of file filelist.cc.

References filelist_checkdir_lib().

Referenced by filelist_settype().

◆ filelist_checkdir_return_always_valid()

static bool filelist_checkdir_return_always_valid ( const FileList * ,
char [FILE_MAX_LIBEXTRA],
const bool  )
static

Definition at line 1436 of file filelist.cc.

Referenced by filelist_settype().

◆ filelist_clear()

void filelist_clear ( FileList * filelist)

◆ filelist_clear_asset_library()

static void filelist_clear_asset_library ( FileList * filelist)
static

◆ filelist_clear_ex()

◆ filelist_clear_from_reset_tag()

void filelist_clear_from_reset_tag ( FileList * filelist)

A "smarter" version of filelist_clear() that calls partial clearing based on the filelist force-reset flags.

Definition at line 1970 of file filelist.cc.

References filelist_clear(), filelist_clear_main_files(), FL_FORCE_RESET, FL_FORCE_RESET_MAIN_FILES, and FileList::flags.

Referenced by blender::ed::asset::list::AssetList::fetch(), and file_refresh().

◆ filelist_clear_main_files()

◆ filelist_compare_asset_libraries()

static bool filelist_compare_asset_libraries ( const AssetLibraryReference * library_a,
const AssetLibraryReference * library_b )
static

Checks two libraries for equality.

Returns
True if the libraries match.

Definition at line 1094 of file filelist.cc.

References ASSET_LIBRARY_CUSTOM, BKE_preferences_asset_library_find_index(), AssetLibraryReference::custom_library_index, and AssetLibraryReference::type.

Referenced by filelist_setlibrary().

◆ filelist_contains_main()

static bool filelist_contains_main ( const FileList * filelist,
const Main * bmain )
static

Check if bmain is stored within the root path of filelist. This means either directly or in some nested directory. In other words, it checks if the filelist root path is contained in the path to bmain. This is irrespective of the recursion level displayed, it basically assumes unlimited recursion levels.

Definition at line 3993 of file filelist.cc.

References ASSET_LIBRARY_ALL, FileList::asset_library_ref, BKE_main_blendfile_path(), BLI_path_contains(), FileList::filelist, FileDirEntryArr::root, and AssetLibraryReference::type.

Referenced by filelist_readjob_asset_library().

◆ filelist_dir()

const char * filelist_dir ( const FileList * filelist)

Get the root path of the file list. To get the full path for a file, use filelist_file_get_full_path().

Definition at line 2075 of file filelist.cc.

References FileList::filelist, and FileDirEntryArr::root.

Referenced by ED_file_change_dir_ex(), file_os_operations_menu_draw(), and filelist_file_get_full_path().

◆ filelist_direntryarr_free()

static void filelist_direntryarr_free ( FileDirEntryArr * array)
static

◆ filelist_ensure_special_file_image()

static ImBuf * filelist_ensure_special_file_image ( SpecialFileImages image,
int icon )
static

Definition at line 1216 of file filelist.cc.

References gSpecialFileImages, int, and UI_svg_icon_bitmap().

Referenced by filelist_geticon_image_ex().

◆ filelist_entries_select_index_range_set()

◆ filelist_entry_clear()

◆ filelist_entry_free()

static void filelist_entry_free ( FileDirEntry * entry)
static

◆ filelist_entry_get_asset_representation()

asset_system::AssetRepresentation * filelist_entry_get_asset_representation ( const FileList * filelist,
const int index )

◆ filelist_entry_get_id()

ID * filelist_entry_get_id ( const FileList * filelist,
int index )

Same as filelist_file_get_id(), but gets the file by index (doesn't require the file to be cached, uses FileListInternEntry only).

Definition at line 2312 of file filelist.cc.

References filelist_entry_intern_get(), FileListInternEntry::id, and FileListInternEntry::local_data.

Referenced by file_context().

◆ filelist_entry_get_relpath()

const char * filelist_entry_get_relpath ( const FileList * filelist,
int index )

Get the FileDirEntry.relpath value without requiring the FileDirEntry to be available (doesn't require the file to be cached, uses FileListInternEntry only).

Definition at line 2330 of file filelist.cc.

References filelist_entry_intern_get(), and FileListInternEntry::relpath.

Referenced by autocomplete_file(), and file_select_match().

◆ filelist_entry_intern_get()

static FileListInternEntry * filelist_entry_intern_get ( const FileList * filelist,
const int index )
static

◆ filelist_entry_is_selected()

◆ filelist_entry_parent_select_set()

void filelist_entry_parent_select_set ( FileList * filelist,
FileSelType select,
eDirEntry_SelectFlag flag,
FileCheckType check )

Set selection of the '..' parent entry, but only if it's actually visible.

Definition at line 3027 of file filelist.cc.

References filelist_entry_select_index_set(), FileList::filter_data, flag, FileListFilter::flags, FLF_HIDE_PARENT, and select().

Referenced by file_box_select_exec(), file_select_exec(), and file_walk_select_selection_set().

◆ filelist_entry_select_get()

◆ filelist_entry_select_index_get()

◆ filelist_entry_select_index_set()

◆ filelist_entry_select_set()

◆ filelist_file()

FileDirEntry * filelist_file ( FileList * filelist,
int index )

Request a file from the file browser cache, adding it to the cache if necessary.

As a rule of thumb, this can be used for operations on individual files (e.g. selection, active, renaming, etc.). But avoid calling this on many files (like when iterating the entire list), to not create a bunch of cache entries for a single operation. While a bit against the point of "intern" entries, in this case it's probably better to have queries like filelist_entry_get_id(), that take a file index and return data directly from the FileListInternEntry.

Definition at line 2265 of file filelist.cc.

References filelist_file_ex().

Referenced by blender::ed::asset::list::AssetList::asset_get_by_index(), ED_fileselect_activate_by_relpath(), ED_fileselect_active_asset_get(), file_box_select_modal(), file_context(), file_delete_exec(), file_draw_list(), file_execute(), file_os_operations_menu_draw(), file_params_renamefile_activate(), file_rename_state_activate(), file_select_do(), file_sfile_to_operator_ex(), filelist_entry_select_index_get(), filelist_entry_select_index_set(), filelist_geticon_get_file(), fileselect_file_set(), and blender::ed::asset::list::AssetList::iterate().

◆ filelist_file_cache_block()

◆ filelist_file_cache_block_create()

static bool filelist_file_cache_block_create ( FileList * filelist,
const int start_index,
const int size,
int cursor )
static

◆ filelist_file_cache_block_release()

static void filelist_file_cache_block_release ( FileList * filelist,
const int size,
int cursor )
static

◆ filelist_file_cache_slidingwindow_set()

void filelist_file_cache_slidingwindow_set ( FileList * filelist,
size_t window_size )

Definition at line 2358 of file filelist.cc.

References FileList::filelist_cache, filelist_cache_clear(), and FileListEntryCache::size.

Referenced by file_draw_list().

◆ filelist_file_create_entry()

◆ filelist_file_ensure_preview_requested()

bool filelist_file_ensure_preview_requested ( FileList * filelist,
FileDirEntry * file )
Returns
True if a new preview request was pushed, false otherwise (e.g. because the preview is already loaded, invalid or not supported).

Definition at line 1168 of file filelist.cc.

References filelist_cache_previews_enabled(), filelist_cache_previews_push(), filelist_file_preview_load_poll(), filelist_files_ensure(), FileList::filelist_intern, FileListIntern::filtered, and FileListInternEntry::uid.

Referenced by blender::ed::asset::list::AssetList::ensure_asset_preview_requested().

◆ filelist_file_ex()

◆ filelist_file_find_id()

int filelist_file_find_id ( const FileList * filelist,
const ID * id )

◆ filelist_file_find_path()

int filelist_file_find_path ( FileList * filelist,
const char * filename )

Find a file from a file name, or more precisely, its file-list relative path, inside the filtered items.

Returns
The index of the found file or -1.

Definition at line 2270 of file filelist.cc.

References FileDirEntryArr::entries_filtered_num, FILEDIR_NBR_ENTRIES_UNSET, FileList::filelist, FileList::filelist_intern, FileListIntern::filtered, FileListInternEntry::relpath, and STREQ.

Referenced by file_params_find_renamed().

◆ filelist_file_get_full_path()

void filelist_file_get_full_path ( const FileList * filelist,
const FileDirEntry * file,
char r_filepath[] )

◆ filelist_file_get_id()

ID * filelist_file_get_id ( const FileDirEntry * file)

Get the ID a file represents (if any). For FILE_MAIN, FILE_MAIN_ASSET.

Definition at line 2325 of file filelist.cc.

Referenced by ED_fileselect_active_asset_get(), file_but_enable_drag(), file_context(), and file_draw_preview().

◆ filelist_file_getimage()

ImBuf * filelist_file_getimage ( const FileDirEntry * file)

◆ filelist_file_internal_get_asset_data()

static AssetMetaData * filelist_file_internal_get_asset_data ( const FileListInternEntry * file)
static

Get the asset metadata of a file, if it represents an asset. This may either be of a local ID (ID in the current Main) or read from an external asset library.

Definition at line 834 of file filelist.cc.

Referenced by is_filtered_asset().

◆ filelist_file_is_preview_pending()

bool filelist_file_is_preview_pending ( const FileList * filelist,
const FileDirEntry * file )

◆ filelist_file_preview_load_poll()

static bool filelist_file_preview_load_poll ( const FileDirEntry * entry)
static

Check if a preview for entry may be requested. Further conditions may apply, this just helps to skip plenty of entries where it's easy to tell that no valid preview will be available or is being loaded already.

Definition at line 1658 of file filelist.cc.

References FILE_ENTRY_BLENDERLIB_NO_PREVIEW, FILE_ENTRY_INVALID_PREVIEW, FILE_ENTRY_PREVIEW_LOADING, FILE_TYPE_BLENDER, FILE_TYPE_BLENDER_BACKUP, FILE_TYPE_BLENDERLIB, FILE_TYPE_DIR, FILE_TYPE_FTFONT, FILE_TYPE_IMAGE, FILE_TYPE_MOVIE, FILE_TYPE_OBJECT_IO, FileDirEntry::flags, and FileDirEntry::typeflag.

Referenced by filelist_cache_previews_push(), and filelist_file_ensure_preview_requested().

◆ filelist_file_release_entry()

static void filelist_file_release_entry ( FileList * filelist,
FileDirEntry * entry )
static

◆ filelist_files_ensure()

◆ filelist_files_num_entries()

int filelist_files_num_entries ( FileList * filelist)

Return the total raw number of entries listed in the given filelist, whether they are filtered out or not.

Definition at line 2025 of file filelist.cc.

References FileDirEntryArr::entries_num, and FileList::filelist.

Referenced by file_draw_hint_if_invalid().

◆ filelist_filter()

◆ filelist_free()

◆ filelist_free_icons()

void filelist_free_icons ( )

Definition at line 1136 of file filelist.cc.

References _Max, BLI_assert, G, gSpecialFileImages, IMB_freeImBuf(), and int.

Referenced by ED_file_exit().

◆ filelist_freelib()

void filelist_freelib ( FileList * filelist)

◆ filelist_geticon()

int filelist_geticon ( FileList * filelist,
const int index,
const bool is_main )

Definition at line 1367 of file filelist.cc.

References filelist_geticon_ex(), and filelist_geticon_get_file().

Referenced by file_draw_list().

◆ filelist_geticon_ex()

◆ filelist_geticon_get_file()

static FileDirEntry * filelist_geticon_get_file ( FileList * filelist,
const int index )
static

Definition at line 1197 of file filelist.cc.

References BLI_assert, filelist_file(), and G.

Referenced by filelist_geticon(), filelist_geticon_image(), and filelist_getimage().

◆ filelist_geticon_image()

ImBuf * filelist_geticon_image ( FileList * filelist,
const int index )

Definition at line 1244 of file filelist.cc.

References filelist_geticon_get_file(), and filelist_geticon_image_ex().

Referenced by file_draw_list().

◆ filelist_geticon_image_ex()

ImBuf * filelist_geticon_image_ex ( const FileDirEntry * file)

◆ filelist_getimage()

ImBuf * filelist_getimage ( FileList * filelist,
const int index )

Definition at line 1204 of file filelist.cc.

References BKE_icon_imbuf_get_buffer(), and filelist_geticon_get_file().

Referenced by file_draw_list().

◆ filelist_intern_entry_free()

◆ filelist_intern_entry_is_main_file()

static bool filelist_intern_entry_is_main_file ( const FileListInternEntry * intern_entry)
static

◆ filelist_intern_free()

◆ filelist_intern_free_main_files()

static int filelist_intern_free_main_files ( FileList * filelist)
static

◆ filelist_is_dir()

bool filelist_is_dir ( const FileList * filelist,
const char * path )

◆ filelist_is_ready()

◆ filelist_islibrary()

bool filelist_islibrary ( FileList * filelist,
char * dir,
char ** r_group )

◆ filelist_jobtype_get()

static eWM_JobType filelist_jobtype_get ( const FileList * filelist)
static

◆ filelist_lib()

BlendHandle * filelist_lib ( FileList * filelist)

Definition at line 2020 of file filelist.cc.

References FileList::libfiledata.

Referenced by ED_file_path_button().

◆ filelist_needs_force_reset()

◆ filelist_needs_reading()

◆ filelist_needs_reset_on_main_changes()

◆ filelist_new()

◆ filelist_pending()

bool filelist_pending ( const FileList * filelist)

◆ filelist_readjob_all_asset_library()

◆ filelist_readjob_append_entries()

static bool filelist_readjob_append_entries ( FileListReadJob * job_params,
ListBase * from_entries,
int from_entries_num )
static

◆ filelist_readjob_asset_library()

◆ filelist_readjob_dir()

static void filelist_readjob_dir ( FileListReadJob * job_params,
bool * stop,
bool * do_update,
float * progress )
static

Definition at line 3890 of file filelist.cc.

References filelist_readjob_do().

Referenced by filelist_readjob_main(), and filelist_settype().

◆ filelist_readjob_do()

static void filelist_readjob_do ( const bool do_lib,
FileListReadJob * job_params,
const bool * stop,
bool * do_update,
float * progress )
static

◆ filelist_readjob_endjob()

static void filelist_readjob_endjob ( void * flrjv)
static

◆ filelist_readjob_free()

◆ filelist_readjob_is_partial_read()

static bool filelist_readjob_is_partial_read ( const FileListReadJob * read_job)
static

Check if the read-job is requesting a partial reread of the file list only.

Definition at line 4123 of file filelist.cc.

References FileListReadJob::only_main_data.

Referenced by filelist_readjob_startjob().

◆ filelist_readjob_lib()

static void filelist_readjob_lib ( FileListReadJob * job_params,
bool * stop,
bool * do_update,
float * progress )
static

Definition at line 3898 of file filelist.cc.

References filelist_readjob_do().

Referenced by filelist_settype().

◆ filelist_readjob_list_dir()

◆ filelist_readjob_list_lib()

◆ filelist_readjob_list_lib_add_datablock()

static void filelist_readjob_list_lib_add_datablock ( FileListReadJob * job_params,
ListBase * entries,
BLODataBlockInfo * datablock_info,
const bool prefix_relpath_with_group_name,
const int idcode,
const char * group_name )
static

◆ filelist_readjob_list_lib_add_datablocks()

static void filelist_readjob_list_lib_add_datablocks ( FileListReadJob * job_params,
ListBase * entries,
LinkNode * datablock_infos,
const bool prefix_relpath_with_group_name,
const int idcode,
const char * group_name )
static

Definition at line 3301 of file filelist.cc.

References filelist_readjob_list_lib_add_datablock(), and LinkNode::next.

Referenced by filelist_readjob_list_lib().

◆ filelist_readjob_list_lib_add_from_indexer_entries()

static void filelist_readjob_list_lib_add_from_indexer_entries ( FileListReadJob * job_params,
ListBase * entries,
const FileIndexerEntries * indexer_entries,
const bool prefix_relpath_with_group_name )
static

◆ filelist_readjob_list_lib_group_create()

static FileListInternEntry * filelist_readjob_list_lib_group_create ( const FileListReadJob * job_params,
const int idcode,
const char * group_name )
static

◆ filelist_readjob_list_lib_navigate_to_parent_entry_create()

static FileListInternEntry * filelist_readjob_list_lib_navigate_to_parent_entry_create ( const FileListReadJob * job_params)
static

◆ filelist_readjob_list_lib_populate_from_index()

static int filelist_readjob_list_lib_populate_from_index ( FileListReadJob * job_params,
ListBase * entries,
const ListLibOptions options,
const int read_from_index,
const FileIndexerEntries * indexer_entries )
static

◆ filelist_readjob_load_asset_library_data()

static void filelist_readjob_load_asset_library_data ( FileListReadJob * job_params,
bool * do_update )
static

◆ filelist_readjob_main()

static void filelist_readjob_main ( FileListReadJob * job_params,
bool * stop,
bool * do_update,
float * progress )
static

Definition at line 4029 of file filelist.cc.

References filelist_readjob_dir().

Referenced by filelist_settype().

◆ filelist_readjob_main_assets()

◆ filelist_readjob_main_assets_add_items()

◆ filelist_readjob_recursive_dir_add_items()

◆ filelist_readjob_running()

int filelist_readjob_running ( FileList * filelist,
wmWindowManager * wm )

Definition at line 4332 of file filelist.cc.

References filelist_jobtype_get(), and WM_jobs_test().

◆ filelist_readjob_should_recurse_into_entry()

static bool filelist_readjob_should_recurse_into_entry ( const int max_recursion,
const bool is_lib,
const int current_recursion_level,
FileListInternEntry * entry )
static

◆ filelist_readjob_start()

◆ filelist_readjob_startjob()

◆ filelist_readjob_stop()

◆ filelist_readjob_update()

static void filelist_readjob_update ( void * flrjv)
static

◆ filelist_set_asset_catalog_filter_options()

void filelist_set_asset_catalog_filter_options ( FileList * filelist,
eFileSel_Params_AssetCatalogVisibility catalog_visibility,
const ::bUUID * catalog_id )

◆ filelist_set_no_preview_auto_cache()

void filelist_set_no_preview_auto_cache ( FileList * filelist)

Definition at line 2110 of file filelist.cc.

References FL_PREVIEWS_NO_AUTO_CACHE, and FileList::flags.

Referenced by blender::ed::asset::list::AssetList::setup().

◆ filelist_setdir()

◆ filelist_setfilter_options()

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 )

◆ filelist_setindexer()

void filelist_setindexer ( FileList * filelist,
const FileIndexerType * indexer )

Set the indexer to be used by the filelist.

The given indexer allocation should be handled by the caller or defined statically.

Definition at line 1063 of file filelist.cc.

References BLI_assert, and FileList::indexer.

Referenced by file_refresh(), and blender::ed::asset::list::AssetList::setup().

◆ filelist_setlibrary()

void filelist_setlibrary ( FileList * filelist,
const AssetLibraryReference * asset_library_ref )
Parameters
asset_library_refMay be NULL to unset the library.

Definition at line 1111 of file filelist.cc.

References FileList::asset_library_ref, filelist_compare_asset_libraries(), FL_FORCE_RESET, FileList::flags, and MEM_SAFE_FREE.

Referenced by file_refresh(), and blender::ed::asset::list::AssetList::setup().

◆ filelist_setrecursion()

void filelist_setrecursion ( FileList * filelist,
const int recursion_level )

◆ filelist_setsorting()

void filelist_setsorting ( FileList * filelist,
const short sort,
bool invert_sort )

◆ filelist_settype()

◆ filelist_sort()

◆ filelist_tag_force_reset()

void filelist_tag_force_reset ( FileList * filelist)

Definition at line 2120 of file filelist.cc.

References FL_FORCE_RESET, and FileList::flags.

Referenced by blender::ed::asset::list::AssetList::clear().

◆ filelist_tag_force_reset_mainfiles()

◆ filelist_tag_needs_filtering()

◆ filelist_uid_generate()

◆ filelist_uid_is_set()

bool filelist_uid_is_set ( const FileUID uid)

Definition at line 2346 of file filelist.cc.

References filelist_uid_unset().

◆ filelist_uid_unset()

void filelist_uid_unset ( FileUID * r_uid)

Definition at line 2353 of file filelist.cc.

References FILE_UID_UNSET.

Referenced by filelist_readjob_startjob(), and filelist_uid_is_set().

◆ groupname_to_code()

static int groupname_to_code ( const char * group)
static

◆ is_filtered_asset()

static bool is_filtered_asset ( FileListInternEntry * file,
FileListFilter * filter )
static

◆ is_filtered_asset_library()

static bool is_filtered_asset_library ( FileListInternEntry * file,
const char * root,
FileListFilter * filter )
static

◆ is_filtered_file()

static bool is_filtered_file ( FileListInternEntry * file,
const char * ,
FileListFilter * filter )
static
Returns
true when the file should be in the result set, false if it should be filtered out.

Definition at line 796 of file filelist.cc.

References is_filtered_file_name(), is_filtered_file_relpath(), and is_filtered_file_type().

Referenced by filelist_settype().

◆ is_filtered_file_name()

static bool is_filtered_file_name ( const FileListInternEntry * file,
const FileListFilter * filter )
static

Apply the filter string as matching pattern on file name.

Returns
true when the file should be in the result set, false if it should be filtered out.

Definition at line 751 of file filelist.cc.

Referenced by is_filtered_file().

◆ is_filtered_file_relpath()

static bool is_filtered_file_relpath ( const FileListInternEntry * file,
const FileListFilter * filter )
static

Apply the filter string as file path matching pattern.

Returns
true when the file should be in the result set, false if it should be filtered out.

Definition at line 737 of file filelist.cc.

Referenced by is_filtered_file(), and is_filtered_lib().

◆ is_filtered_file_type()

static bool is_filtered_file_type ( const FileListInternEntry * file,
const FileListFilter * filter )
static
Returns
true when the file should be in the result set, false if it should be filtered out.

Definition at line 762 of file filelist.cc.

References FILE_TYPE_BLENDER, FILE_TYPE_BLENDER_BACKUP, FILE_TYPE_BLENDERLIB, FILE_TYPE_DIR, FILE_TYPE_FOLDER, FILENAME_IS_CURRPAR, FLF_DO_FILTER, and is_filtered_hidden().

Referenced by is_filtered_file(), is_filtered_id_file_type(), and is_filtered_lib_type().

◆ is_filtered_hidden()

static bool is_filtered_hidden ( const char * filename,
const FileListFilter * filter,
const FileListInternEntry * file )
static

◆ is_filtered_id_file_type()

static bool is_filtered_id_file_type ( const FileListInternEntry * file,
const short id_code,
const char * name,
const FileListFilter * filter )
static

◆ is_filtered_lib()

static bool is_filtered_lib ( FileListInternEntry * file,
const char * root,
FileListFilter * filter )
static

Definition at line 915 of file filelist.cc.

References is_filtered_file_relpath(), and is_filtered_lib_type().

Referenced by filelist_settype().

◆ is_filtered_lib_type()

static bool is_filtered_lib_type ( FileListInternEntry * file,
const char * ,
FileListFilter * filter )
static

◆ is_filtered_main()

static bool is_filtered_main ( FileListInternEntry * file,
const char * ,
FileListFilter * filter )
static

Definition at line 920 of file filelist.cc.

References is_filtered_hidden().

Referenced by filelist_settype().

◆ is_filtered_main_assets()

static bool is_filtered_main_assets ( FileListInternEntry * file,
const char * ,
FileListFilter * filter )
static

Definition at line 927 of file filelist.cc.

References is_filtered_asset(), and is_filtered_id_file_type().

Referenced by filelist_settype(), and is_filtered_asset_library().

◆ parent_dir_until_exists_or_default_root()

static void parent_dir_until_exists_or_default_root ( char * dir)
static

◆ prepare_filter_asset_library()

static void prepare_filter_asset_library ( const FileList * filelist,
FileListFilter * filter )
static

Definition at line 842 of file filelist.cc.

References FileList::asset_library, and BLI_assert_msg.

Referenced by filelist_settype().

Variable Documentation

◆ gSpecialFileImages

ImBuf* gSpecialFileImages[int(SpecialFileImages::_Max)]
static

Definition at line 330 of file filelist.cc.

Referenced by filelist_ensure_special_file_image(), and filelist_free_icons().