Blender  V3.3
Classes | Macros | Typedefs | Enumerations | Functions | Variables
filelist.c File Reference
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <time.h>
#include <unistd.h>
#include "MEM_guardedalloc.h"
#include "BLF_api.h"
#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.h"
#include "BLI_stack.h"
#include "BLI_task.h"
#include "BLI_threads.h"
#include "BLI_utildefines.h"
#include "BLI_uuid.h"
#include "BKE_asset.h"
#include "BKE_asset_library.h"
#include "BKE_context.h"
#include "BKE_global.h"
#include "BKE_icons.h"
#include "BKE_idtype.h"
#include "BKE_lib_id.h"
#include "BKE_main.h"
#include "BKE_main_idmap.h"
#include "BKE_preferences.h"
#include "BLO_readfile.h"
#include "DNA_asset_types.h"
#include "DNA_space_types.h"
#include "ED_datafiles.h"
#include "ED_fileselect.h"
#include "ED_screen.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
#include "IMB_thumbs.h"
#include "PIL_time.h"
#include "WM_api.h"
#include "WM_types.h"
#include "UI_interface_icons.h"
#include "UI_resources.h"
#include "atomic_ops.h"
#include "file_indexer.h"
#include "file_intern.h"
#include "filelist.h"

Go to the source code of this file.

Classes

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

Macros

#define FILEDIR_NBR_ENTRIES_UNSET   -1
 
#define FILELIST_ENTRYCACHESIZE_DEFAULT   1024 /* Keep it a power of two! */
 
#define SPECIAL_IMG_SIZE   256
 
#define SPECIAL_IMG_ROWS   1
 
#define SPECIAL_IMG_COLS   7
 
#define FILE_UID_UNSET   0
 

Typedefs

typedef struct FolderList FolderList
 
typedef struct FileListInternEntry FileListInternEntry
 
typedef struct FileListIntern FileListIntern
 
typedef struct FileListEntryCache FileListEntryCache
 
typedef struct FileListEntryPreview FileListEntryPreview
 
typedef struct FileListEntryPreviewTaskData FileListEntryPreviewTaskData
 
typedef struct FileListFilter FileListFilter
 
typedef struct FileList FileList
 
typedef struct TodoDir TodoDir
 
typedef enum ListLibOptions ListLibOptions
 
typedef struct FileIndexer FileIndexer
 
typedef struct FileListReadJob FileListReadJob
 

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
}
 
enum  FileListTags { FILELIST_TAGS_USES_MAIN_DATA = (1 << 0) , FILELIST_TAGS_NO_THREADS = (1 << 2) }
 
enum  {
  SPECIAL_IMG_DOCUMENT = 0 , SPECIAL_IMG_DRIVE_DISC = 1 , SPECIAL_IMG_FOLDER = 2 , SPECIAL_IMG_PARENT = 3 ,
  SPECIAL_IMG_DRIVE_FIXED = 4 , SPECIAL_IMG_DRIVE_ATTACHED = 5 , SPECIAL_IMG_DRIVE_REMOTE = 6 , SPECIAL_IMG_MAX
}
 
enum  ListLibOptions { LIST_LIB_RECURSIVE = (1 << 0) , LIST_LIB_ASSETS_ONLY = (1 << 1) , LIST_LIB_ADD_PARENT = (1 << 2) }
 

Functions

void folderlist_popdir (struct ListBase *folderlist, char *dir)
 
void folderlist_pushdir (ListBase *folderlist, const char *dir)
 
const char * folderlist_peeklastdir (ListBase *folderlist)
 
int folderlist_clear_next (struct SpaceFile *sfile)
 
void folderlist_free (ListBase *folderlist)
 
static ListBase folderlist_duplicate (ListBase *folderlist)
 
static FileFolderHistoryfolder_history_find (const SpaceFile *sfile, eFileBrowse_Mode browse_mode)
 
void folder_history_list_ensure_for_active_browse_mode (SpaceFile *sfile)
 
static void folder_history_entry_free (SpaceFile *sfile, FileFolderHistory *history)
 
void folder_history_list_free (SpaceFile *sfile)
 
ListBase folder_history_list_duplicate (ListBase *listbase)
 
static void filelist_readjob_main (struct FileListReadJob *job_params, short *stop, short *do_update, float *progress)
 
static void filelist_readjob_lib (struct FileListReadJob *job_params, short *stop, short *do_update, float *progress)
 
static void filelist_readjob_dir (struct FileListReadJob *job_params, short *stop, short *do_update, float *progress)
 
static void filelist_readjob_asset_library (struct FileListReadJob *job_params, short *stop, short *do_update, float *progress)
 
static void filelist_readjob_main_assets (struct FileListReadJob *job_params, short *stop, short *do_update, float *progress)
 
static int groupname_to_code (const char *group)
 
static uint64_t groupname_to_filter_id (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 int compare_apply_inverted (int val, const struct 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)
 
void filelist_sort (struct FileList *filelist)
 
void filelist_setsorting (struct FileList *filelist, const short sort, bool invert_sort)
 
static bool is_hidden_dot_filename (const char *filename, const FileListInternEntry *file)
 
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 *UNUSED(root), FileListFilter *filter)
 
static bool is_filtered_id_file_type (const FileListInternEntry *file, const char *id_group, 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 *root, FileListFilter *filter)
 
static bool is_filtered_lib (FileListInternEntry *file, const char *root, FileListFilter *filter)
 
static bool is_filtered_main (FileListInternEntry *file, const char *UNUSED(dir), FileListFilter *filter)
 
static bool is_filtered_main_assets (FileListInternEntry *file, const char *UNUSED(dir), 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_init_icons (void)
 
void filelist_free_icons (void)
 
static FileDirEntryfilelist_geticon_get_file (struct FileList *filelist, const int index)
 
ImBuffilelist_getimage (struct FileList *filelist, const int index)
 
ImBuffilelist_file_getimage (const FileDirEntry *file)
 
ImBuffilelist_geticon_image_ex (const FileDirEntry *file)
 
ImBuffilelist_geticon_image (struct FileList *filelist, const int index)
 
static int filelist_geticon_ex (const FileDirEntry *file, const char *root, const bool is_main, const bool ignore_libdir)
 
int filelist_geticon (struct 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 (struct FileList *UNUSED(filelist), char *r_dir, const bool do_change)
 
static bool filelist_checkdir_lib (struct FileList *UNUSED(filelist), char *r_dir, const bool do_change)
 
static bool filelist_checkdir_main (struct FileList *filelist, char *r_dir, const bool do_change)
 
static bool filelist_checkdir_main_assets (struct FileList *UNUSED(filelist), char *UNUSED(r_dir), const bool UNUSED(do_change))
 
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 (FileListInternEntry *entry)
 
static void filelist_intern_free (FileListIntern *filelist_intern)
 
static int filelist_intern_free_main_files (FileListIntern *filelist_intern)
 
static void filelist_cache_preview_runf (TaskPool *__restrict pool, void *taskdata)
 
static void filelist_cache_preview_freef (TaskPool *__restrict UNUSED(pool), 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_previews_push (FileList *filelist, FileDirEntry *entry, const int index)
 
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 (struct 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 (struct FileList *filelist)
 
AssetLibraryfilelist_asset_library (FileList *filelist)
 
void filelist_freelib (struct FileList *filelist)
 
BlendHandlefilelist_lib (struct FileList *filelist)
 
int filelist_files_num_entries (FileList *filelist)
 
static char * fileentry_uiname (const char *root, const char *relpath, const eFileSel_File_Types typeflag, char *buff)
 
const char * filelist_dir (struct FileList *filelist)
 
bool filelist_is_dir (struct FileList *filelist, const char *path)
 
void filelist_setdir (struct FileList *filelist, char *r_dir)
 
void filelist_setrecursion (struct FileList *filelist, const int recursion_level)
 
bool filelist_needs_force_reset (FileList *filelist)
 
void filelist_tag_force_reset (FileList *filelist)
 
void filelist_tag_force_reset_mainfiles (FileList *filelist)
 
bool filelist_is_ready (struct FileList *filelist)
 
bool filelist_pending (struct 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)
 
FileDirEntryfilelist_file_ex (struct FileList *filelist, const int index, const bool use_request)
 
FileDirEntryfilelist_file (struct FileList *filelist, int index)
 
int filelist_file_find_path (struct FileList *filelist, const char *filename)
 
int filelist_file_find_id (const FileList *filelist, const ID *id)
 
IDfilelist_file_get_id (const FileDirEntry *file)
 
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 (struct FileList *filelist, const int size, int cursor)
 
bool filelist_file_cache_block (struct FileList *filelist, const int index)
 
void filelist_cache_previews_set (FileList *filelist, const bool use_previews)
 
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 (FileList *filelist)
 
uint filelist_entry_select_set (const FileList *filelist, const FileDirEntry *entry, FileSelType select, uint flag, FileCheckType check)
 
void filelist_entry_select_index_set (FileList *filelist, const int index, FileSelType select, uint flag, FileCheckType check)
 
void filelist_entries_select_index_range_set (FileList *filelist, FileSelection *sel, FileSelType select, uint flag, FileCheckType check)
 
uint filelist_entry_select_get (FileList *filelist, FileDirEntry *entry, FileCheckType check)
 
uint 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, uint flag, FileCheckType check)
 
bool filelist_islibrary (struct FileList *filelist, char *dir, char **r_group)
 
static int filelist_readjob_list_dir (const char *root, ListBase *entries, const char *filter_glob, const bool do_lib, const char *main_name, const bool skip_currpar)
 
static FileListInternEntryfilelist_readjob_list_lib_group_create (const int idcode, const char *group_name)
 
static void filelist_readjob_list_lib_add_datablock (ListBase *entries, const 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 (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 (ListBase *entries, const FileIndexerEntries *indexer_entries, const bool prefix_relpath_with_group_name)
 
static FileListInternEntryfilelist_readjob_list_lib_navigate_to_parent_entry_create (void)
 
static int filelist_readjob_list_lib_populate_from_index (ListBase *entries, const ListLibOptions options, const int read_from_index, const FileIndexerEntries *indexer_entries)
 
static int filelist_readjob_list_lib (const char *root, ListBase *entries, const ListLibOptions options, FileIndexer *indexer_runtime)
 
static void filelist_readjob_append_entries (FileListReadJob *job_params, ListBase *from_entries, int from_entries_num, short *do_update)
 
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 short *stop, short *do_update, float *progress)
 
static void filelist_readjob_do (const bool do_lib, FileListReadJob *job_params, const short *stop, short *do_update, float *progress)
 
static void filelist_asset_library_path (const FileListReadJob *job_params, char r_library_root_path[FILE_MAX])
 
static void filelist_readjob_load_asset_library_data (FileListReadJob *job_params, short *do_update)
 
static void filelist_readjob_main_assets_add_items (FileListReadJob *job_params, short *UNUSED(stop), short *do_update, float *UNUSED(progress))
 
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, short *stop, short *do_update, float *progress)
 
static void filelist_readjob_update (void *flrjv)
 
static void filelist_readjob_endjob (void *flrjv)
 
static void filelist_readjob_free (void *flrjv)
 
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 [SPECIAL_IMG_MAX]
 

Macro Definition Documentation

◆ FILE_UID_UNSET

#define FILE_UID_UNSET   0

Definition at line 2326 of file filelist.c.

◆ FILEDIR_NBR_ENTRIES_UNSET

#define FILEDIR_NBR_ENTRIES_UNSET   -1

Definition at line 80 of file filelist.c.

◆ FILELIST_ENTRYCACHESIZE_DEFAULT

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

Definition at line 300 of file filelist.c.

◆ SPECIAL_IMG_COLS

#define SPECIAL_IMG_COLS   7

Definition at line 447 of file filelist.c.

◆ SPECIAL_IMG_ROWS

#define SPECIAL_IMG_ROWS   1

Definition at line 446 of file filelist.c.

◆ SPECIAL_IMG_SIZE

#define SPECIAL_IMG_SIZE   256

Definition at line 445 of file filelist.c.

Typedef Documentation

◆ FileIndexer

typedef struct FileIndexer FileIndexer

Structure to keep the file indexer and its user data together.

◆ FileList

typedef struct FileList FileList

◆ FileListEntryCache

◆ FileListEntryPreview

◆ FileListEntryPreviewTaskData

◆ FileListFilter

◆ FileListIntern

◆ FileListInternEntry

◆ FileListReadJob

◆ FolderList

typedef struct FolderList FolderList

◆ ListLibOptions

◆ TodoDir

typedef struct TodoDir TodoDir

From here, we are in 'Job Context', i.e. have to be careful about sharing stuff between background working thread. and main one (used by UI among other things).

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

#FileListCache.flags

Enumerator
FLC_IS_INIT 
FLC_PREVIEWS_ACTIVE 

Definition at line 333 of file filelist.c.

◆ 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 363 of file filelist.c.

◆ 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 

Definition at line 425 of file filelist.c.

◆ anonymous enum

anonymous enum
Enumerator
SPECIAL_IMG_DOCUMENT 
SPECIAL_IMG_DRIVE_DISC 
SPECIAL_IMG_FOLDER 
SPECIAL_IMG_PARENT 
SPECIAL_IMG_DRIVE_FIXED 
SPECIAL_IMG_DRIVE_ATTACHED 
SPECIAL_IMG_DRIVE_REMOTE 
SPECIAL_IMG_MAX 

Definition at line 449 of file filelist.c.

◆ 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 438 of file filelist.c.

◆ ListLibOptions

Enumerator
LIST_LIB_RECURSIVE 
LIST_LIB_ASSETS_ONLY 
LIST_LIB_ADD_PARENT 

Definition at line 3131 of file filelist.c.

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 973 of file filelist.c.

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

Referenced by is_filtered_asset().

◆ compare_apply_inverted()

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

Definition at line 496 of file filelist.c.

References FileSortData::inverted.

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

◆ 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 552 of file filelist.c.

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_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

◆ 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 516 of file filelist.c.

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

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

◆ ED_file_extension_icon()

int ED_file_extension_icon ( const char *  path)

◆ ED_file_icon()

int ED_file_icon ( const FileDirEntry file)

Definition at line 1456 of file filelist.c.

References file, filelist_geticon_ex(), and NULL.

◆ ED_path_extension_type()

int ED_path_extension_type ( const char *  path)

◆ file_is_blend_backup()

static bool file_is_blend_backup ( const char *  str)
static

Definition at line 2732 of file filelist.c.

References Freestyle::a, usdtokens::b(), BLI_strcasestr(), and str.

Referenced by ED_path_extension_type().

◆ fileentry_uiname()

static char* fileentry_uiname ( const char *  root,
const char *  relpath,
const eFileSel_File_Types  typeflag,
char *  buff 
)
static

◆ filelist_asset_library()

AssetLibrary* filelist_asset_library ( FileList filelist)

◆ filelist_asset_library_path()

static void filelist_asset_library_path ( const FileListReadJob job_params,
char  r_library_root_path[FILE_MAX] 
)
static

◆ filelist_cache_clear()

static void filelist_cache_clear ( FileListEntryCache cache,
size_t  new_size 
)
static

◆ filelist_cache_free()

static void filelist_cache_free ( FileListEntryCache cache)
static

◆ filelist_cache_init()

static void filelist_cache_init ( FileListEntryCache cache,
size_t  cache_size 
)
static

◆ filelist_cache_preview_ensure_running()

static void filelist_cache_preview_ensure_running ( FileListEntryCache cache)
static

◆ filelist_cache_preview_freef()

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

Definition at line 1663 of file filelist.c.

References MEM_freeN, and FileListEntryPreviewTaskData::preview.

Referenced by filelist_cache_previews_push().

◆ filelist_cache_preview_runf()

static void filelist_cache_preview_runf ( TaskPool *__restrict  pool,
void taskdata 
)
static

◆ filelist_cache_previews_clear()

static void filelist_cache_previews_clear ( FileListEntryCache cache)
static

◆ filelist_cache_previews_done()

bool filelist_cache_previews_done ( FileList filelist)

◆ filelist_cache_previews_free()

static void filelist_cache_previews_free ( FileListEntryCache cache)
static

◆ filelist_cache_previews_push()

static void filelist_cache_previews_push ( FileList filelist,
FileDirEntry entry,
const int  index 
)
static

◆ filelist_cache_previews_running()

bool filelist_cache_previews_running ( FileList filelist)

◆ filelist_cache_previews_set()

void filelist_cache_previews_set ( FileList filelist,
const bool  use_previews 
)

◆ filelist_cache_previews_update()

bool filelist_cache_previews_update ( FileList filelist)

◆ filelist_checkdir_dir()

static bool filelist_checkdir_dir ( struct FileList UNUSEDfilelist,
char *  r_dir,
const bool  do_change 
)
static

Definition at line 1480 of file filelist.c.

References BLI_is_dir(), and parent_dir_until_exists_or_default_root().

Referenced by filelist_settype().

◆ filelist_checkdir_lib()

static bool filelist_checkdir_lib ( struct FileList UNUSEDfilelist,
char *  r_dir,
const bool  do_change 
)
static

◆ filelist_checkdir_main()

static bool filelist_checkdir_main ( struct FileList filelist,
char *  r_dir,
const bool  do_change 
)
static

Definition at line 1510 of file filelist.c.

References filelist_checkdir_lib().

Referenced by filelist_settype().

◆ filelist_checkdir_main_assets()

static bool filelist_checkdir_main_assets ( struct FileList UNUSEDfilelist,
char *  UNUSEDr_dir,
const bool   UNUSEDdo_change 
)
static

Definition at line 1516 of file filelist.c.

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()

void filelist_clear_ex ( struct FileList filelist,
const bool  do_asset_library,
const bool  do_cache,
const bool  do_selection 
)

◆ filelist_clear_from_reset_tag()

void filelist_clear_from_reset_tag ( struct FileList filelist)

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

Definition at line 2005 of file filelist.c.

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

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

◆ filelist_clear_main_files()

static void filelist_clear_main_files ( FileList filelist,
const bool  do_asset_library,
const bool  do_cache,
const bool  do_selection 
)
static

◆ 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 1202 of file filelist.c.

References ASSET_LIBRARY_CUSTOM, BKE_preferences_asset_library_find_from_index(), AssetLibraryReference::custom_library_index, NULL, 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 3872 of file filelist.c.

References BKE_main_blendfile_path(), BLI_path_contains(), FileList::filelist, and FileDirEntryArr::root.

Referenced by filelist_readjob_asset_library().

◆ filelist_dir()

const char* filelist_dir ( struct FileList filelist)

◆ filelist_direntryarr_free()

static void filelist_direntryarr_free ( FileDirEntryArr array)
static

◆ filelist_entries_select_index_range_set()

void filelist_entries_select_index_range_set ( FileList filelist,
FileSelection sel,
FileSelType  select,
uint  flag,
FileCheckType  check 
)

◆ filelist_entry_clear()

static void filelist_entry_clear ( FileDirEntry entry)
static

◆ filelist_entry_free()

static void filelist_entry_free ( FileDirEntry entry)
static

◆ filelist_entry_is_selected()

bool filelist_entry_is_selected ( FileList filelist,
const int  index 
)

◆ filelist_entry_parent_select_set()

void filelist_entry_parent_select_set ( struct FileList filelist,
FileSelType  select,
unsigned int  flag,
FileCheckType  check 
)

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

Definition at line 2988 of file filelist.c.

References filelist_entry_select_index_set(), FileList::filter_data, 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()

uint filelist_entry_select_get ( FileList filelist,
FileDirEntry entry,
FileCheckType  check 
)

◆ filelist_entry_select_index_get()

uint filelist_entry_select_index_get ( FileList filelist,
const int  index,
FileCheckType  check 
)

◆ filelist_entry_select_index_set()

void filelist_entry_select_index_set ( FileList filelist,
const int  index,
FileSelType  select,
uint  flag,
FileCheckType  check 
)

◆ filelist_entry_select_set()

uint filelist_entry_select_set ( const FileList filelist,
const FileDirEntry entry,
FileSelType  select,
uint  flag,
FileCheckType  check 
)

◆ filelist_file()

FileDirEntry* filelist_file ( struct FileList filelist,
int  index 
)

◆ filelist_file_cache_block()

bool filelist_file_cache_block ( struct FileList filelist,
int  index 
)

◆ 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 ( struct 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 
)

◆ filelist_file_create_entry()

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

◆ filelist_file_ex()

FileDirEntry* filelist_file_ex ( struct FileList filelist,
const int  index,
const bool  use_request 
)

◆ filelist_file_find_id()

int filelist_file_find_id ( const FileList filelist,
const ID id 
)

◆ filelist_file_find_path()

int filelist_file_find_path ( struct FileList filelist,
const char *  file 
)

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 2285 of file filelist.c.

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_id()

ID* filelist_file_get_id ( const FileDirEntry file)

Definition at line 2321 of file filelist.c.

References file.

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

◆ filelist_file_getimage()

ImBuf* filelist_file_getimage ( const FileDirEntry file)

Definition at line 1303 of file filelist.c.

References BKE_icon_imbuf_get_buffer(), file, and NULL.

Referenced by ED_assetlist_asset_image_get(), and file_draw_icon().

◆ 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 942 of file filelist.c.

References ID::asset_data, and file.

Referenced by is_filtered_asset().

◆ filelist_file_release_entry()

static void filelist_file_release_entry ( FileList filelist,
FileDirEntry entry 
)
static

◆ filelist_files_ensure()

int filelist_files_ensure ( struct FileList filelist)

◆ filelist_files_num_entries()

int filelist_files_num_entries ( struct FileList filelist)

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

Definition at line 2060 of file filelist.c.

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

Referenced by file_draw_hint_if_invalid().

◆ filelist_filter()

void filelist_filter ( FileList filelist)

◆ filelist_free()

void filelist_free ( struct FileList filelist)

◆ filelist_free_icons()

void filelist_free_icons ( void  )

Definition at line 1279 of file filelist.c.

References BLI_assert, G, gSpecialFileImages, IMB_freeImBuf(), NULL, and SPECIAL_IMG_MAX.

Referenced by ED_file_exit().

◆ filelist_freelib()

void filelist_freelib ( struct FileList filelist)

◆ filelist_geticon()

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

◆ filelist_geticon_ex()

static int filelist_geticon_ex ( const FileDirEntry file,
const char *  root,
const bool  is_main,
const bool  ignore_libdir 
)
static

◆ filelist_geticon_get_file()

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

Definition at line 1289 of file filelist.c.

References BLI_assert, filelist_file(), and G.

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

◆ filelist_geticon_image()

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

Definition at line 1327 of file filelist.c.

References file, 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 ( struct FileList filelist,
const int  index 
)

Definition at line 1296 of file filelist.c.

References BKE_icon_imbuf_get_buffer(), file, filelist_geticon_get_file(), and NULL.

Referenced by file_draw_list().

◆ filelist_init_icons()

void filelist_init_icons ( void  )

◆ filelist_intern_entry_free()

static void filelist_intern_entry_free ( FileListInternEntry entry)
static

◆ filelist_intern_entry_is_main_file()

static bool filelist_intern_entry_is_main_file ( const FileListInternEntry intern_entry)
static

◆ filelist_intern_free()

static void filelist_intern_free ( FileListIntern filelist_intern)
static

◆ filelist_intern_free_main_files()

static int filelist_intern_free_main_files ( FileListIntern filelist_intern)
static

◆ filelist_is_dir()

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

◆ filelist_is_ready()

bool filelist_is_ready ( struct FileList filelist)

◆ filelist_islibrary()

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

◆ filelist_lib()

BlendHandle* filelist_lib ( struct FileList filelist)

Definition at line 2055 of file filelist.c.

References FileList::libfiledata.

Referenced by ED_file_path_button().

◆ filelist_needs_force_reset()

bool filelist_needs_force_reset ( FileList filelist)

◆ filelist_needs_reading()

int filelist_needs_reading ( FileList filelist)

◆ filelist_needs_reset_on_main_changes()

bool filelist_needs_reset_on_main_changes ( const FileList filelist)

◆ filelist_new()

FileList* filelist_new ( short  type)

◆ filelist_pending()

bool filelist_pending ( struct FileList filelist)

◆ filelist_readjob_append_entries()

static void filelist_readjob_append_entries ( FileListReadJob job_params,
ListBase from_entries,
int  from_entries_num,
short *  do_update 
)
static

◆ filelist_readjob_asset_library()

static void filelist_readjob_asset_library ( struct FileListReadJob job_params,
short *  stop,
short *  do_update,
float progress 
)
static

◆ filelist_readjob_dir()

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

Definition at line 3760 of file filelist.c.

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 short *  stop,
short *  do_update,
float progress 
)
static

◆ filelist_readjob_endjob()

static void filelist_readjob_endjob ( void flrjv)
static

◆ filelist_readjob_free()

static void filelist_readjob_free ( void flrjv)
static

◆ 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 3931 of file filelist.c.

References FileListReadJob::only_main_data.

Referenced by filelist_readjob_startjob().

◆ filelist_readjob_lib()

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

Definition at line 3768 of file filelist.c.

References filelist_readjob_do().

Referenced by filelist_settype().

◆ filelist_readjob_list_dir()

static int filelist_readjob_list_dir ( const char *  root,
ListBase entries,
const char *  filter_glob,
const bool  do_lib,
const char *  main_name,
const bool  skip_currpar 
)
static

◆ filelist_readjob_list_lib()

static int filelist_readjob_list_lib ( const char *  root,
ListBase entries,
const ListLibOptions  options,
FileIndexer indexer_runtime 
)
static

◆ filelist_readjob_list_lib_add_datablock()

static void filelist_readjob_list_lib_add_datablock ( ListBase entries,
const 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 ( ListBase entries,
LinkNode datablock_infos,
const bool  prefix_relpath_with_group_name,
const int  idcode,
const char *  group_name 
)
static

Definition at line 3176 of file filelist.c.

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 ( 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 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 ( void  )
static

◆ filelist_readjob_list_lib_populate_from_index()

static int filelist_readjob_list_lib_populate_from_index ( 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,
short *  do_update 
)
static

Load asset library data, which currently means loading the asset catalogs for the library.

Definition at line 3793 of file filelist.c.

References FileList::asset_library, FileList::asset_library_ref, BKE_asset_library_load(), FILE_MAX, FileListReadJob::filelist, filelist_asset_library_path(), NULL, and FileListReadJob::tmp_filelist.

Referenced by filelist_readjob_asset_library(), and filelist_readjob_main_assets().

◆ filelist_readjob_main()

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

Definition at line 3902 of file filelist.c.

References filelist_readjob_dir().

Referenced by filelist_settype().

◆ filelist_readjob_main_assets()

static void filelist_readjob_main_assets ( struct FileListReadJob job_params,
short *  stop,
short *  do_update,
float progress 
)
static

◆ filelist_readjob_main_assets_add_items()

static void filelist_readjob_main_assets_add_items ( FileListReadJob job_params,
short *  UNUSEDstop,
short *  do_update,
float UNUSEDprogress 
)
static

◆ filelist_readjob_recursive_dir_add_items()

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

◆ filelist_readjob_running()

int filelist_readjob_running ( FileList filelist,
wmWindowManager wm 
)

Definition at line 4123 of file filelist.c.

References FileList::filelist, WM_JOB_TYPE_FILESEL_READDIR, 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()

void filelist_readjob_start ( FileList filelist,
const int  space_notifier,
const bContext C 
)

◆ filelist_readjob_startjob()

static void filelist_readjob_startjob ( void flrjv,
short *  stop,
short *  do_update,
float progress 
)
static

◆ filelist_readjob_stop()

void filelist_readjob_stop ( FileList filelist,
wmWindowManager wm 
)

◆ 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_setdir()

void filelist_setdir ( struct FileList filelist,
char *  r_dir 
)

◆ 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 
)

Definition at line 1172 of file filelist.c.

References BLI_assert, and FileList::indexer.

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

◆ filelist_setlibrary()

void filelist_setlibrary ( FileList filelist,
const AssetLibraryReference asset_library_ref 
)

◆ filelist_setrecursion()

void filelist_setrecursion ( struct FileList filelist,
const int  recursion_level 
)

◆ filelist_setsorting()

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

◆ filelist_settype()

void filelist_settype ( FileList filelist,
short  type 
)

◆ filelist_sort()

void filelist_sort ( struct FileList filelist)

◆ filelist_tag_force_reset()

void filelist_tag_force_reset ( FileList filelist)

Definition at line 2145 of file filelist.c.

References FL_FORCE_RESET, and FileList::flags.

◆ filelist_tag_force_reset_mainfiles()

void filelist_tag_force_reset_mainfiles ( FileList filelist)

◆ filelist_tag_needs_filtering()

void filelist_tag_needs_filtering ( FileList filelist)

◆ filelist_uid_generate()

static FileUID filelist_uid_generate ( FileList filelist)
static

◆ filelist_uid_is_set()

bool filelist_uid_is_set ( const FileUID  uid)

Definition at line 2336 of file filelist.c.

References filelist_uid_unset().

◆ filelist_uid_unset()

void filelist_uid_unset ( FileUID r_uid)

Definition at line 2343 of file filelist.c.

References FILE_UID_UNSET.

Referenced by filelist_readjob_startjob(), and filelist_uid_is_set().

◆ folder_history_entry_free()

static void folder_history_entry_free ( SpaceFile sfile,
FileFolderHistory history 
)
static

◆ folder_history_find()

static FileFolderHistory* folder_history_find ( const SpaceFile sfile,
eFileBrowse_Mode  browse_mode 
)
static

◆ folder_history_list_duplicate()

ListBase folder_history_list_duplicate ( ListBase listbase)

◆ folder_history_list_ensure_for_active_browse_mode()

void folder_history_list_ensure_for_active_browse_mode ( SpaceFile sfile)

◆ folder_history_list_free()

void folder_history_list_free ( SpaceFile sfile)

◆ folderlist_clear_next()

int folderlist_clear_next ( struct SpaceFile sfile)

◆ folderlist_duplicate()

static ListBase folderlist_duplicate ( ListBase folderlist)
static

Definition at line 177 of file filelist.c.

References BLI_duplicatelist(), ListBase::first, MEM_dupallocN, and NULL.

Referenced by folder_history_list_duplicate().

◆ folderlist_free()

void folderlist_free ( ListBase folderlist)

◆ folderlist_peeklastdir()

const char* folderlist_peeklastdir ( ListBase folderlist)

Definition at line 133 of file filelist.c.

References FolderList::foldername, ListBase::last, and NULL.

Referenced by file_directory_enter_handle().

◆ folderlist_popdir()

void folderlist_popdir ( struct ListBase folderlist,
char *  dir 
)

◆ folderlist_pushdir()

void folderlist_pushdir ( ListBase folderlist,
const char *  dir 
)

◆ groupname_to_code()

static int groupname_to_code ( const char *  group)
static

◆ groupname_to_filter_id()

static uint64_t groupname_to_filter_id ( const char *  group)
static

Definition at line 3019 of file filelist.c.

References BKE_idtype_idcode_to_idfilter(), and groupname_to_code().

Referenced by is_filtered_id_file_type().

◆ 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 *  UNUSEDroot,
FileListFilter filter 
)
static
Returns
true when the file should be in the result set, false if it should be filtered out.

Definition at line 904 of file filelist.c.

References file, filter(), 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 859 of file filelist.c.

References file, and filter().

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 845 of file filelist.c.

References file, and filter().

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 870 of file filelist.c.

References file, FILE_TYPE_BLENDER, FILE_TYPE_BLENDER_BACKUP, FILE_TYPE_BLENDERLIB, FILE_TYPE_DIR, FILE_TYPE_FOLDER, FILENAME_IS_CURRPAR, filter(), 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 char *  id_group,
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 1024 of file filelist.c.

References file, filter(), 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 *  root,
FileListFilter filter 
)
static

◆ is_filtered_main()

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

Definition at line 1029 of file filelist.c.

References file, filter(), and is_filtered_hidden().

Referenced by filelist_settype().

◆ is_filtered_main_assets()

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

◆ is_hidden_dot_filename()

static bool is_hidden_dot_filename ( const char *  filename,
const FileListInternEntry file 
)
static

◆ 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

Variable Documentation

◆ gSpecialFileImages

ImBuf* gSpecialFileImages[SPECIAL_IMG_MAX]
static

Definition at line 460 of file filelist.c.

Referenced by filelist_free_icons(), filelist_geticon_image_ex(), and filelist_init_icons().