14#include <fmt/format.h>
50#include "RNA_prototypes.hh"
80 "File select parameters not set. The caller is expected to check this.");
139 BLI_assert_msg(!file->asset,
"Asset tooltip should never be overridden here.");
145 bool free_imbuf = (thumb ==
nullptr);
155 if (
params->recursion_level > 0) {
161 if (file->redirection_path) {
163 fmt::format(
"{}: {}",
N_(
"Link target"), file->redirection_path),
182 char version_str[128] = {0};
190 thumb->
metadata,
"Thumb::Blender::Version", version_str,
sizeof(version_str));
197 SNPRINTF(version_str,
"%d.%01d", version / 100, version % 100);
201 if (version_str[0]) {
203 fmt::format(
"Blender {}", version_str),
219 thumb->
metadata,
"Thumb::Image::Width", value1,
sizeof(value1)) &&
221 thumb->
metadata,
"Thumb::Image::Height", value2,
sizeof(value2)))
224 fmt::format(
"{} \u00D7 {}", value1, value2),
242 thumb->
metadata,
"Thumb::Video::Width", value1,
sizeof(value1)) &&
244 thumb->
metadata,
"Thumb::Video::Height", value2,
sizeof(value2)))
247 fmt::format(
"{} \u00D7 {}", value1, value2),
253 thumb->
metadata,
"Thumb::Video::Frames", value1,
sizeof(value1)) &&
256 thumb->
metadata,
"Thumb::Video::Duration", value3,
sizeof(value3)))
260 fmt::format(
"{} {} @ {} {}", value1,
N_(
"Frames"), value2,
N_(
"FPS")),
265 fmt::format(
"{} {}", value3,
N_(
"seconds")),
275 bool is_today, is_yesterday;
276 std::string day_string = (
"");
278 nullptr, file->time,
false, time_str, date_str, &is_today, &is_yesterday);
279 if (is_today || is_yesterday) {
280 day_string = (is_today ?
N_(
"Today") :
N_(
"Yesterday")) + std::string(
" ");
283 fmt::format(
"{}: {}{}{}",
286 (is_today || is_yesterday) ?
"" : date_str,
287 (is_today || is_yesterday) ? time_str :
""),
295 if (file->size < 10000) {
300 fmt::format(
"{}: {} ({} {})",
N_(
"Size"), size, size_full,
N_(
"bytes")),
307 fmt::format(
"{}: {}",
N_(
"Size"), size),
320 float scale = (96.0f *
UI_SCALE_FAC) /
float(std::max(thumb->
x, thumb->
y));
321 image_data.
ibuf = thumb;
322 image_data.width = short(
float(thumb->
x) * scale);
323 image_data.height = short(
float(thumb->
y) * scale);
324 image_data.border =
true;
326 image_data.premultiplied =
true;
330 if (thumb && free_imbuf) {
356 const ImBuf *preview_image,
376 else if (preview_image) {
389 const rcti *tile_draw_rect,
397 const int x = tile_draw_rect->
xmin;
401 block,
UI_BTYPE_LABEL, 0, icon, x, y, width, height,
nullptr, 0.0f, 0.0f,
nullptr);
426 if (
string[0] ==
'\0' || width < 1) {
440 rect.
ymin = sy - height;
444 font_style_params.
align = align;
459 const uchar text_col[4],
465 if (
string[0] ==
'\0' || wrap_width < 1) {
471 int len = strlen(
string);
482 rect.
xmax = sx + wrap_width;
490 font_style_params.word_wrap =
true;
494 &style->
widget, &rect,
string,
len, text_col, &font_style_params,
nullptr,
nullptr, &result);
496 *r_sx = result.width;
499 *r_sy = rect.
ymin + line_height;
506 View2D *v2d = ®ion->v2d;
517 const rcti *tile_draw_rect,
518 const ImBuf *preview_image,
523 rcti drag_rect = *tile_draw_rect;
553 const rcti *tile_draw_rect,
554 const float icon_aspect,
566 float ui_imbx, ui_imby;
567 float scaledx, scaledy;
580 if (((ui_imbx > layout->
prv_w) || (ui_imby > layout->
prv_h)) ||
581 (!is_icon && ((ui_imbx < layout->prv_w) || (ui_imby < layout->prv_h))))
583 if (imb->
x > imb->
y) {
586 scale = scaledx / imb->
x;
591 scale = scaledy / imb->
y;
606 xco = tile_draw_rect->
xmin +
int(dx);
613 float document_img_col[4] = {1.0f, 1.0f, 1.0f, 1.0f};
627 document_img_col[3] *= 0.3f;
644 const int icon_large = (file->typeflag &
FILE_TYPE_DIR) ? ICON_FILE_FOLDER_LARGE :
678 if (icon && is_icon) {
680 float icon_x, icon_y;
681 float icon_opacity = 0.4f;
682 uchar icon_color[4] = {0, 0, 0, 255};
694 icon_x = xco + (file->typeflag &
FILE_TYPE_DIR ? ex * 0.31f : ex * 0.178f);
695 icon_y = yco + (file->typeflag &
FILE_TYPE_DIR ? ex * 0.19f : ex * 0.15f);
698 is_loading ? ICON_TEMP : icon,
707 if (icon_aspect < 2.0f) {
710 const uchar light[4] = {255, 255, 255, 255};
735 else if (icon && ((!is_icon && !(file->typeflag &
FILE_TYPE_FTFONT)) || is_loading)) {
750 if (is_current_main_data) {
753 float icon_x, icon_y;
754 const uchar light[4] = {255, 255, 255, 255};
775 float border_color[4] = {1.0f, 1.0f, 1.0f, 0.15f};
779 border_color[0] = 0.0f;
780 border_color[1] = 0.0f;
781 border_color[2] = 0.0f;
811 if (!
STREQ(orgname, newname)) {
846 float col_alternating[4];
851 for (i = 2; (i <= layout->
rows + 1); i += 2) {
875 while (sx < v2d->cur.xmax) {
880 if (vertex_len > 0) {
882 uchar col_hi[3], col_lo[3];
899 while (sx < v2d->cur.xmax) {
908 v1[0] =
v2[0] = sx + 1;
939 const uchar text_col[4])
1011 const bool update_stat_strings)
1016 if (file->draw_data.datetime_str[0] ==
'\0' || update_stat_strings) {
1018 bool is_today, is_yesterday;
1021 nullptr, file->time, compact, time, date, &is_today, &is_yesterday);
1023 if (!compact && (is_today || is_yesterday)) {
1026 SNPRINTF(file->draw_data.datetime_str, compact ?
"%s" :
"%s %s", date,
time);
1029 return file->draw_data.datetime_str;
1036 if (file->draw_data.size_str[0] ==
'\0' || update_stat_strings) {
1038 nullptr, file->size, compact, file->draw_data.size_str);
1041 return file->draw_data.size_str;
1054 const rcti *tile_draw_rect,
1055 const uchar text_col[4])
1058 const bool update_stat_strings = layout->
width != layout->
curr_size;
1066 sx += column->
width;
1087 sx += column->
width;
1097 int tile_pos_x, tile_pos_y;
1100 tile_pos_y =
int(v2d->
tot.
ymax - tile_pos_y);
1103 rect.
xmin = tile_pos_x + padx;
1105 layout->
tile_w - (2 * padx) :
1107 rect.
ymax = tile_pos_y;
1120 View2D *v2d = ®ion->v2d;
1125 int numfiles_layout;
1127 int column_width, textheight;
1134 const float thumb_icon_aspect = std::min(64.0f /
float(
params->thumbnail_size), 4.0f);
1144 layout,
int(region->v2d.cur.xmin),
int(-region->v2d.cur.ymax));
1153 numfiles_layout += layout->
rows;
1170 files,
min_ii(offset + (numfiles_layout / 2), numfiles - 1));
1200 for (i = offset; (i < numfiles) && (i < offset + numfiles_layout); i++) {
1223 rcti tile_bg_rect = tile_draw_rect;
1260 sfile, block, layout, file, path, &tile_draw_rect, imb, icon, scale);
1272 const int drag_width = std::min(str_width + icon_ofs,
1274 if (drag_width > 0) {
1279 tile_draw_rect.
xmin,
1280 tile_draw_rect.
ymin - 1,
1323 tile_draw_rect.
xmin + icon_ofs,
1329 float(
sizeof(
params->renamefile)),
1354 tile_draw_rect.
xmin + 1 + icon_ofs;
1361 file_draw_string(txpos, typos, file->name,
float(twidth), textheight, align, text_col);
1374 const bool is_filtered =
params->filter_search[0] !=
'\0';
1376 uchar text_col_mod[4];
1379 text_col_mod[3] /= 2;
1382 const char *message = [&]() {
1384 return IFACE_(
"Loading...");
1387 return IFACE_(
"No results match the search filter");
1389 return IFACE_(
"No items");
1405 if (draw_columnheader) {
1410 if (numfiles != -1) {
1427 const View2D *v2d = ®ion->v2d;
1436 const char *message =
RPT_(
"Path to asset library does not exist:");
1444 sy -= line_height * 2.2f;
1449 const char *suggestion =
RPT_(
1450 "Asset Libraries are local directories that can contain .blend files with assets inside.\n"
1451 "Manage Asset Libraries from the File Paths section in Preferences");
1453 sx +
UI_UNIT_X, sy, suggestion, width -
UI_UNIT_X, line_height, text_col,
nullptr, &sy);
1479 const char *blendfile_path,
1485 const View2D *v2d = ®ion->v2d;
1494 const char *message =
RPT_(
"Unreadable Blender library file:");
1502 sy -= line_height * 2.2f;
1505 const short report_type = report->type;
1510 int icon = ICON_INFO;
1518 RPT_(report->message),
1532 const bool is_library_browser = !is_asset_browser &&
1535 if (is_asset_browser) {
1548 if (is_library_browser) {
Main runtime representation of an asset.
void immDrawPixelsTexTiled_scaling(IMMDrawPixelsTexState *state, float x, float y, int img_w, int img_h, eGPUTextureFormat gpu_format, bool use_filter, const void *rect, float scaleX, float scaleY, float xzoom, float yzoom, const float color[4])
IMMDrawPixelsTexState immDrawPixelsTexSetup(int builtin)
bool BKE_blendfile_is_readable(const char *path, ReportList *reports)
SpaceFile * CTX_wm_space_file(const bContext *C)
wmWindow * CTX_wm_window(const bContext *C)
SpaceLink * CTX_wm_space_data(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
void BKE_reports_clear(ReportList *reports)
void BLF_batch_draw_begin()
void BLF_boundbox(int fontid, const char *str, size_t str_len, rcti *r_box, ResultBLF *r_info=nullptr) ATTR_NONNULL(2)
void BLF_disable(int fontid, int option)
void BLF_batch_draw_end()
void BLF_enable(int fontid, int option)
void BLF_wordwrap(int fontid, int wrap_width)
#define BLI_assert_msg(a, msg)
int BLI_exists(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
#define FILE_ATTR_ANY_LINK
void BLI_filelist_entry_size_to_string(const struct stat *st, uint64_t st_size_fallback, bool compact, char r_size[FILELIST_DIRENTRY_SIZE_LEN])
int BLI_rename(const char *from, const char *to) ATTR_NONNULL()
void BLI_filelist_entry_datetime_to_string(const struct stat *st, int64_t ts, bool compact, char r_time[FILELIST_DIRENTRY_TIME_LEN], char r_date[FILELIST_DIRENTRY_DATE_LEN], bool *r_is_today, bool *r_is_yesterday)
Some types for dealing with directories.
#define FILELIST_DIRENTRY_DATE_LEN
#define FILELIST_DIRENTRY_TIME_LEN
#define LISTBASE_FOREACH(type, var, list)
MINLINE int round_fl_to_int(float a)
MINLINE int min_ii(int a, int b)
MINLINE float rgb_to_grayscale(const float rgb[3])
void rgba_uchar_to_float(float r_col[4], const unsigned char col_ub[4])
void rgba_float_to_uchar(unsigned char r_col[4], const float col_f[4])
MINLINE void copy_v4_v4_uchar(unsigned char r[4], const unsigned char a[4])
#define BLI_path_join(...)
#define FILENAME_IS_CURRPAR(_n)
void void BLI_path_split_dir_part(const char *filepath, char *dir, size_t dir_maxncpy) ATTR_NONNULL(1
bool BLI_path_make_safe_filename(char *filename) ATTR_NONNULL(1)
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
void BLI_rcti_pad(struct rcti *rect, int pad_x, int pad_y)
void BLI_rcti_translate(struct rcti *rect, int x, int y)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
void BLI_rctf_rcti_copy(struct rctf *dst, const struct rcti *src)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
#define STRNCPY(dst, src)
#define SNPRINTF(dst, format,...)
#define BLI_STR_FORMAT_UINT64_GROUPED_SIZE
size_t BLI_str_format_uint64_grouped(char dst[BLI_STR_FORMAT_UINT64_GROUPED_SIZE], uint64_t num) ATTR_NONNULL(1)
#define UNUSED_VARS_NDEBUG(...)
Compatibility-like things for windows.
external readfile function prototypes.
short BLO_version_from_file(const char *filepath)
@ FILE_TYPE_BLENDER_BACKUP
@ FILE_BROWSE_MODE_ASSETS
#define FILE_MAX_LIBEXTRA
@ USER_SECTION_FILE_PATHS
int ED_fileselect_layout_numfiles(FileLayout *layout, ARegion *region)
FileSelectParams * ED_fileselect_get_active_params(const SpaceFile *sfile)
int ED_fileselect_layout_offset(FileLayout *layout, int x, int y)
FileLayout * ED_fileselect_get_layout(SpaceFile *sfile, ARegion *region)
bool ED_fileselect_is_asset_browser(const SpaceFile *sfile)
FileAssetSelectParams * ED_fileselect_get_asset_params(const SpaceFile *sfile)
void ED_fileselect_init_layout(SpaceFile *sfile, ARegion *region)
void ED_fileselect_clear(wmWindowManager *wm, SpaceFile *sfile)
void ED_fileselect_layout_tilepos(const FileLayout *layout, int tile, int *x, int *y)
int ED_fileselect_asset_import_method_get(const SpaceFile *sfile, const FileDirEntry *file)
void ED_region_tag_redraw(ARegion *region)
@ GPU_SHADER_3D_UNIFORM_COLOR
@ GPU_SHADER_3D_FLAT_COLOR
@ GPU_SHADER_3D_IMAGE_COLOR
@ GPU_BLEND_ALPHA_PREMULT
void GPU_blend(eGPUBlend blend)
Contains defines and structs used throughout the imbuf module.
ImBuf * IMB_thumb_read(const char *file_or_lib_path, ThumbSize size)
ImBuf * IMB_thumb_manage(const char *file_or_lib_path, ThumbSize size, ThumbSource source)
Read Guarded memory(de)allocation.
void UI_but_flag_disable(uiBut *but, int flag)
void UI_but_drag_attach_image(uiBut *but, const ImBuf *imb, float scale)
void UI_fontstyle_draw_simple(const uiFontStyle *fs, float x, float y, const char *str, const uchar col[4])
void UI_but_func_tooltip_custom_set(uiBut *but, uiButToolTipCustomFunc func, void *arg, uiFreeArgFunc free_arg)
void UI_draw_icon_tri(float x, float y, char dir, const float[4])
void UI_tooltip_image_field_add(uiTooltipData &data, const uiTooltipImage &image_data)
void UI_but_func_tooltip_set(uiBut *but, uiButToolTipFunc func, void *arg, uiFreeArgFunc free_arg)
uiBut * uiDefBut(uiBlock *block, int type, int retval, blender::StringRef str, int x, int y, short width, short height, void *poin, float min, float max, const char *tip)
void UI_tooltip_text_field_add(uiTooltipData &data, std::string text, std::string suffix, const uiTooltipStyle style, const uiTooltipColorID color_id, const bool is_pad=false)
bool UI_but_is_utf8(const uiBut *but)
uiBut * uiDefIconTextButO_ptr(uiBlock *block, int type, wmOperatorType *ot, wmOperatorCallContext opcontext, int icon, blender::StringRef str, int x, int y, short width, short height, const char *tip)
uiBut * uiDefIconBut(uiBlock *block, int type, int retval, int icon, int x, int y, short width, short height, void *poin, float min, float max, const char *tip)
void UI_but_drag_set_image(uiBut *but, const char *path, int icon, const ImBuf *imb, float scale)
uiBlock * UI_block_begin(const bContext *C, ARegion *region, std::string name, eUIEmbossType emboss)
void UI_draw_roundbox_corner_set(int type)
void UI_fontstyle_draw_ex(const uiFontStyle *fs, const rcti *rect, const char *str, size_t str_len, const uchar col[4], const uiFontStyleDraw_Params *fs_params, int *r_xofs, int *r_yofs, ResultBLF *r_info)
const uiStyle * UI_style_get()
void UI_but_dragflag_enable(uiBut *but, int flag)
void UI_but_drag_set_path(uiBut *but, const char *path)
PointerRNA * UI_but_operator_ptr_ensure(uiBut *but)
void UI_block_func_set(uiBlock *block, uiButHandleFunc func, void *arg1, void *arg2)
void UI_but_func_rename_set(uiBut *but, uiButHandleRenameFunc func, void *arg1)
void UI_block_draw(const bContext *C, uiBlock *block)
int UI_fontstyle_string_width(const uiFontStyle *fs, const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
float UI_text_clip_middle_ex(const uiFontStyle *fstyle, char *str, float okwidth, float minwidth, size_t max_len, char rpart_sep)
bool UI_but_active_only(const bContext *C, ARegion *region, uiBlock *block, uiBut *but)
void UI_fontstyle_draw(const uiFontStyle *fs, const rcti *rect, const char *str, size_t str_len, const uchar col[4], const uiFontStyleDraw_Params *fs_params)
void UI_but_label_alpha_factor_set(uiBut *but, float alpha_factor)
void UI_but_func_complete_set(uiBut *but, uiButCompleteFunc func, void *arg)
void UI_but_drag_set_id(uiBut *but, ID *id)
void UI_draw_roundbox_aa(const rctf *rect, bool filled, float rad, const float color[4])
void UI_but_drag_set_asset(uiBut *but, const blender::asset_system::AssetRepresentation *asset, int import_method, int icon, const ImBuf *imb, float scale)
uiBut * uiDefButR(uiBlock *block, int type, int retval, const char *str, int x, int y, short width, short height, PointerRNA *ptr, const char *propname, int index, float min, float max, const char *tip)
void UI_but_funcN_set(uiBut *but, uiButHandleNFunc funcN, void *argN, void *arg2, uiButArgNFree func_argN_free_fn=MEM_freeN, uiButArgNCopy func_argN_copy_fn=MEM_dupallocN)
void UI_block_end(const bContext *C, uiBlock *block)
void UI_but_flag_enable(uiBut *but, int flag)
bool UI_but_flag_is_set(uiBut *but, int flag)
void UI_icon_draw(float x, float y, int icon_id)
#define ICON_DEFAULT_WIDTH_SCALE
#define UI_NO_ICON_OVERLAY_TEXT
#define ICON_DEFAULT_HEIGHT_SCALE
void UI_icon_draw_ex(float x, float y, int icon_id, float aspect, float alpha, float desaturate, const uchar mono_color[4], bool mono_border, const IconTextOverlay *text_overlay, const bool inverted=false)
void UI_GetThemeColor4fv(int colorid, float col[4])
void UI_GetThemeColorShade4fv(int colorid, int offset, float col[4])
void UI_GetThemeColorShade3ubv(int colorid, int offset, unsigned char col[3])
void UI_GetThemeColor4ubv(int colorid, unsigned char col[4])
void UI_view2d_totRect_set(View2D *v2d, int width, int height)
#define ND_SPACE_FILE_PREVIEW
#define ND_SPACE_FILE_PARAMS
int pad[32 - sizeof(int)]
ATTR_WARN_UNUSED_RESULT const BMVert * v2
draw_view in_light_buf[] float
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
RAYTRACE_GROUP_SIZE additional_info("eevee_shared", "eevee_gbuffer_data", "eevee_global_ubo", "eevee_sampling_data", "eevee_utility_texture", "eevee_hiz_data", "draw_view") .specialization_constant(Type RAYTRACE_GROUP_SIZE in_sh_0_tx in_sh_2_tx screen_normal_tx GPU_RGBA8
static void file_add_preview_drag_but(const SpaceFile *sfile, uiBlock *block, FileLayout *layout, const FileDirEntry *file, const char *path, const rcti *tile_draw_rect, const ImBuf *preview_image, const int icon, const float scale)
static void draw_dividers(FileLayout *layout, View2D *v2d)
static void draw_details_columns(const FileSelectParams *params, const FileLayout *layout, FileDirEntry *file, const rcti *tile_draw_rect, const uchar text_col[4])
void file_calc_previews(const bContext *C, ARegion *region)
static void file_draw_invalid_asset_library_hint(const bContext *C, const SpaceFile *sfile, ARegion *region, FileAssetSelectParams *asset_params)
static void draw_tile_background(const rcti *draw_rect, int colorid, int shade)
static std::string file_draw_asset_tooltip_func(bContext *, void *argN, const char *)
static void draw_columnheader_columns(const FileSelectParams *params, FileLayout *layout, const View2D *v2d, const uchar text_col[4])
static FileTooltipData * file_tooltip_data_create(const SpaceFile *sfile, const FileDirEntry *file)
static void file_draw_string_multiline(int sx, int sy, const char *string, int wrap_width, int line_height, const uchar text_col[4], int *r_sx, int *r_sy)
bool file_draw_hint_if_invalid(const bContext *C, const SpaceFile *sfile, ARegion *region)
static void file_draw_preview(const FileList *files, const FileDirEntry *file, const rcti *tile_draw_rect, const float icon_aspect, const ImBuf *imb, const int icon, FileLayout *layout, const bool is_icon, const bool dimmed, const bool is_link, float *r_scale)
static void file_draw_tooltip_custom_func(bContext &, uiTooltipData &tip, void *argN)
static void draw_columnheader_background(const FileLayout *layout, const View2D *v2d)
static void renamebutton_cb(bContext *C, void *, char *oldname)
void ED_file_path_button(bScreen *screen, const SpaceFile *sfile, FileSelectParams *params, uiBlock *block)
static const char * filelist_get_details_column_string(FileAttributeColumnType column, FileDirEntry *file, const bool compact, const bool update_stat_strings)
static void file_draw_string(int sx, int sy, const char *string, float width, int height, eFontStyle_Align align, const uchar col[4])
static uiBut * file_add_icon_but(const SpaceFile *sfile, uiBlock *block, const char *, const FileDirEntry *file, const rcti *tile_draw_rect, int icon, int width, int height, bool dimmed)
void file_draw_list(const bContext *C, ARegion *region)
static void file_draw_invalid_library_hint(const bContext *, const SpaceFile *sfile, ARegion *region, const char *blendfile_path, ReportList *reports)
static void file_but_enable_drag(uiBut *but, const SpaceFile *sfile, const FileDirEntry *file, const char *path, const ImBuf *preview_image, int icon, float scale)
static rcti tile_draw_rect_get(const View2D *v2d, const FileLayout *layout, const eFileDisplayType display, const int file_idx, const int padx)
void file_path_to_ui_path(const char *path, char *r_path, int r_path_maxncpy)
bool file_attribute_column_type_enabled(const FileSelectParams *params, FileAttributeColumnType column, const FileLayout *layout)
void file_params_rename_end(wmWindowManager *wm, wmWindow *win, SpaceFile *sfile, const FileDirEntry *rename_file)
void file_params_invoke_rename_postscroll(wmWindowManager *wm, wmWindow *win, SpaceFile *sfile)
int autocomplete_directory(bContext *C, char *str, void *arg_v)
#define FILE_LAYOUT_COMPACT(_layout)
void file_directory_enter_handle(bContext *C, void *arg_unused, void *arg_but)
#define ATTRIBUTE_COLUMN_PADDING
void file_draw_check_cb(bContext *C, void *arg1, void *arg2)
int filelist_files_num_entries(FileList *filelist)
ImBuf * filelist_getimage(FileList *filelist, const int index)
bool filelist_islibrary(FileList *filelist, char *dir, char **r_group)
BlendHandle * filelist_lib(FileList *filelist)
bool filelist_file_is_preview_pending(const FileList *filelist, const FileDirEntry *file)
bool filelist_cache_previews_running(FileList *filelist)
bool filelist_file_cache_block(FileList *filelist, const int index)
bool filelist_cache_previews_done(FileList *filelist)
void filelist_file_get_full_path(const FileList *filelist, const FileDirEntry *file, char r_filepath[])
int filelist_geticon(FileList *filelist, const int index, const bool is_main)
ID * filelist_file_get_id(const FileDirEntry *file)
bool filelist_cache_previews_update(FileList *filelist)
ImBuf * filelist_file_getimage(const FileDirEntry *file)
void filelist_file_cache_slidingwindow_set(FileList *filelist, size_t window_size)
bool filelist_is_dir(const FileList *filelist, const char *path)
int filelist_files_ensure(FileList *filelist)
FileDirEntry * filelist_file(FileList *filelist, int index)
bool filelist_is_ready(const FileList *filelist)
ImBuf * filelist_geticon_image(FileList *filelist, const int index)
eDirEntry_SelectFlag filelist_entry_select_get(FileList *filelist, FileDirEntry *entry, FileCheckType check)
void IMB_freeImBuf(ImBuf *)
void *(* MEM_mallocN)(size_t len, const char *str)
void MEM_freeN(void *vmemh)
std::string asset_tooltip(const asset_system::AssetRepresentation &asset, const bool include_name)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
PointerRNA RNA_pointer_create(ID *id, StructRNA *type, void *data)
static void draw_background()
AssetLibraryReference asset_library_ref
FileSelectParams base_params
FileAttributeColumn attribute_columns[ATTRIBUTE_COLUMN_MAX]
int attribute_column_header_h
ImBufByteBuffer byte_buffer
ReportList is_blendfile_readable_reports
bool is_blendfile_readable
bool is_blendfile_status_set
struct FileLayout * layout
struct wmTimer * previews_timer
SpaceFile_Runtime * runtime
void WM_event_add_notifier_ex(wmWindowManager *wm, const wmWindow *win, uint type, void *reference)
void WM_reportf(eReportType type, const char *format,...)
void WM_report_banner_show(wmWindowManager *wm, wmWindow *win)
std::string WM_operatortype_name(wmOperatorType *ot, PointerRNA *properties)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
wmTimer * WM_event_timer_add_notifier(wmWindowManager *wm, wmWindow *win, const uint type, const double time_step)
void WM_event_timer_remove_notifier(wmWindowManager *wm, wmWindow *win, wmTimer *timer)