29 #include <sys/types.h>
38 # include <sys/times.h>
80 #define VERTLIST_MAJORCOLUMN_WIDTH (25 * UI_UNIT_X)
90 if (blendfile_path[0] !=
'\0') {
119 "FileAssetSelectParams");
126 base_params->
file[0] =
'\0';
222 if (is_directory ==
true && is_filename ==
false && is_filepath ==
false &&
286 if (tmp !=
params->filter_glob) {
297 params->filter_glob[0] =
'\0';
300 if (
params->filter != 0) {
338 if (is_relative_path) {
354 params->filter_glob[0] =
'\0';
380 BLI_assert(!
"Invalid browse mode set in file space.");
401 BLI_assert(!
"Invalid browse mode set in file space.");
426 library->custom_library_index);
434 base_params->
dir[0] =
'\0';
474 ID *asset_id = (
ID *)custom_data;
499 for (
int file_index = 0; file_index < num_files_filtered; ++file_index) {
507 params->active_file = file_index;
519 #define PARAMS_FLAGS_REMEMBERED (FILE_HIDE_DOT)
535 return (sfile->
op ==
NULL) ||
543 return (sfile->
op ==
NULL) ||
586 const int temp_win_size[2],
587 const bool is_maximized)
611 if (temp_win_size && !is_maximized) {
617 if (memcmp(sfile_udata_new, &sfile_udata_old,
sizeof(sfile_udata_old)) != 0) {
618 U.runtime.is_dirty =
true;
651 const int x_over = x_item - (x_view % x_item);
652 numfiles = (int)((
float)(x_view + x_over) / (
float)(x_item));
653 return numfiles * layout->
rows;
658 const int y_over = y_item - (y_view % y_item);
659 numfiles = (int)((
float)(y_view + y_over) / (
float)(y_item));
665 return ((
x >= 0) && (
x < cols) && (
y >= 0) && (
y < rows));
670 int colmin, colmax, rowmin, rowmax;
674 if (layout ==
NULL) {
696 sel.
first = layout->
rows * colmin + rowmin;
707 sel.
last = layout->
rows * colmax + rowmax;
719 int offsetx, offsety;
722 if (layout ==
NULL) {
732 if (offsety > layout->
rows - 1) {
737 active_file = layout->
rows * offsetx + offsety;
831 if (offset_tile > -1) {
904 "23 Dec 6789, 23:59") +
912 int remwidth = layout->
tile_w;
919 remwidth -= columns[column_type].
width;
979 layout->
rows = numfiles;
992 layout->
tile_h = textheight * 3 / 2;
1002 layout->
rows =
MAX2(rowcount, numfiles);
1013 layout->
tile_h = textheight * 3 / 2;
1023 if (layout->
rows > 0) {
1034 layout->
dirty =
false;
1066 params->filter_search[0] =
'\0';
1067 params->active_file = -1;
1101 for (
int i = 0; i < n; i++) {
1105 if (fnmatch(pattern,
file->relpath, 0) == 0) {
1146 if (
BLI_stat(path, &status) == 0) {
1147 if (
S_ISDIR(status.st_mode)) {
1175 for (
int i = 0; i < nentries; i++) {
1195 params->highlight_file = -1;
1259 params->renamefile[0] =
'\0';
1266 params->renamefile[0] =
'\0';
1279 if (sfile->
op == file_operator) {
typedef float(TangentPoint)[2]
const char * BKE_appdir_folder_default(void)
struct ScrArea * CTX_wm_area(const bContext *C)
struct wmWindowManager * CTX_wm_manager(const bContext *C)
struct bScreen * CTX_wm_screen(const bContext *C)
struct SpaceFile * CTX_wm_space_file(const bContext *C)
const char * BKE_main_blendfile_path_from_global(void)
struct bUserAssetLibrary * BKE_preferences_asset_library_find_from_index(const struct UserDef *userdef, int index) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
#define BLF_KERNING_DEFAULT
float BLF_width(int fontid, const char *str, size_t len) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
#define BLF_DRAW_STR_DUMMY_MAX
void BLF_disable(int fontid, int option)
float BLF_height(int fontid, const char *str, size_t len) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLF_enable(int fontid, int option)
int BLI_stat(const char *path, BLI_stat_t *buffer) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLI_path_normalize_dir(const char *relabase, char *dir) ATTR_NONNULL(2)
void BLI_split_dir_part(const char *string, char *dir, const size_t dirlen)
bool BLI_path_extension_glob_validate(char *ext_fnmatch) ATTR_NONNULL()
void BLI_join_dirfile(char *__restrict dst, const size_t maxlen, const char *__restrict dir, const char *__restrict file) ATTR_NONNULL()
#define FILENAME_IS_CURRPAR(_n)
int BLI_path_slash_ensure(char *string) ATTR_NONNULL()
void BLI_split_dirfile(const char *string, char *dir, char *file, const size_t dirlen, const size_t filelen)
bool BLI_path_abs(char *path, const char *basepath) ATTR_NONNULL()
bool BLI_rcti_isect_pt(const struct rcti *rect, const int x, const int y)
bool BLI_rcti_isect(const struct rcti *src1, const struct rcti *src2, struct rcti *dest)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
BLI_INLINE float BLI_rctf_size_y(const struct rctf *rct)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
char * BLI_strncpy_utf8(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
#define IN_RANGE(a, b, c)
Compatibility-like things for windows.
const char * dirname(char *path)
struct dirent * readdir(DIR *dp)
DIR * opendir(const char *path)
external readfile function prototypes.
const struct UserDef U_default
@ FILE_TYPE_BLENDER_BACKUP
@ FILE_PARAMS_RENAME_POSTSCROLL_PENDING
@ FILE_PARAMS_RENAME_ACTIVE
@ FILE_PARAMS_RENAME_POSTSCROLL_ACTIVE
@ FILE_PARAMS_RENAME_PENDING
@ FILE_BROWSE_MODE_ASSETS
@ FILE_ASSET_LIBRARY_LOCAL
@ FILE_ASSET_LIBRARY_CUSTOM
#define ED_screen_areas_iter(win, screen, area_name)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
Read Guarded memory(de)allocation.
Group RGB to Bright Vector Camera CLAMP
#define AUTOCOMPLETE_FULL_MATCH
void UI_fontstyle_set(const struct uiFontStyle *fs)
const struct uiStyle * UI_style_get(void)
#define AUTOCOMPLETE_NO_MATCH
AutoComplete * UI_autocomplete_begin(const char *startname, size_t maxlen)
int UI_autocomplete_end(AutoComplete *autocpl, char *autoname)
void UI_autocomplete_update_name(AutoComplete *autocpl, const char *name)
#define V2D_SCROLL_HEIGHT
void UI_view2d_region_to_view(const struct View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL()
#define ND_SPACE_FILE_LIST
void file_on_reload_callback_register(struct SpaceFile *sfile, onReloadFn callback, onReloadFnData custom_data)
#define SMALL_SIZE_CHECK(_size)
#define ATTRIBUTE_COLUMN_PADDING
void file_draw_check_ex(bContext *C, struct ScrArea *area)
void filelist_free(struct FileList *filelist)
bool filelist_is_ready(struct FileList *filelist)
void filelist_readjob_stop(wmWindowManager *wm, Scene *owner_scene)
void folder_history_list_ensure_for_active_browse_mode(SpaceFile *sfile)
int filelist_file_findpath(struct FileList *filelist, const char *filename)
void filelist_freelib(struct FileList *filelist)
void folder_history_list_free(SpaceFile *sfile)
void filelist_setdir(struct FileList *filelist, char *r_dir)
int folderlist_clear_next(struct SpaceFile *sfile)
void folderlist_pushdir(ListBase *folderlist, const char *dir)
ID * filelist_file_get_id(const FileDirEntry *file)
void folderlist_free(ListBase *folderlist)
void filelist_clear(struct FileList *filelist)
uint filelist_entry_select_set(const FileList *filelist, const FileDirEntry *entry, FileSelType select, uint flag, FileCheckType check)
FileDirEntry * filelist_file(struct FileList *filelist, int index)
bool filelist_pending(struct FileList *filelist)
int filelist_files_ensure(FileList *filelist)
FileDirEntry * filelist_file_ex(struct FileList *filelist, const int index, const bool use_request)
bool filelist_needs_force_reset(FileList *filelist)
bool filelist_is_dir(struct FileList *filelist, const char *path)
const char * filelist_dir(struct FileList *filelist)
void ED_fileselect_params_to_userdef(SpaceFile *sfile, const int temp_win_size[2], const bool is_maximized)
struct ID * ED_fileselect_active_asset_get(const SpaceFile *sfile)
int autocomplete_file(struct bContext *C, char *str, void *UNUSED(arg_v))
int file_select_match(struct SpaceFile *sfile, const char *pattern, char *matched_file)
int ED_fileselect_layout_numfiles(FileLayout *layout, ARegion *region)
int autocomplete_directory(struct bContext *C, char *str, void *UNUSED(arg_v))
FileSelectParams * ED_fileselect_get_active_params(const SpaceFile *sfile)
int ED_fileselect_layout_offset(FileLayout *layout, int x, int y)
FileSelectParams * ED_fileselect_get_file_params(const SpaceFile *sfile)
float file_string_width(const char *str)
static void fileselect_ensure_updated_asset_params(SpaceFile *sfile)
bool file_attribute_column_header_is_inside(const View2D *v2d, const FileLayout *layout, int x, int y)
void ED_fileselect_clear(wmWindowManager *wm, Scene *owner_scene, SpaceFile *sfile)
#define VERTLIST_MAJORCOLUMN_WIDTH
static bool is_inside(int x, int y, int cols, int rows)
void ED_fileselect_exit(wmWindowManager *wm, Scene *owner_scene, SpaceFile *sfile)
static void fileselect_initialize_params_common(SpaceFile *sfile, FileSelectParams *params)
void fileselect_refresh_params(SpaceFile *sfile)
FileAttributeColumnType file_attribute_column_type_find_isect(const View2D *v2d, const FileSelectParams *params, FileLayout *layout, int x)
FileLayout * ED_fileselect_get_layout(struct SpaceFile *sfile, ARegion *region)
FileSelectParams * ED_fileselect_ensure_active_params(SpaceFile *sfile)
void ED_file_change_dir_ex(bContext *C, bScreen *screen, ScrArea *area)
void ED_fileselect_layout_tilepos(FileLayout *layout, int tile, int *x, int *y)
bool ED_fileselect_is_asset_browser(const SpaceFile *sfile)
FileSelection ED_fileselect_layout_offset_rect(FileLayout *layout, const rcti *rect)
void ED_fileselect_activate_by_id(SpaceFile *sfile, ID *asset_id, const bool deferred)
bool file_attribute_column_type_enabled(const FileSelectParams *params, FileAttributeColumnType column)
void ED_fileselect_set_params_from_userdef(SpaceFile *sfile)
static void file_attribute_columns_init(const FileSelectParams *params, FileLayout *layout)
float file_font_pointsize(void)
void fileselect_file_set(SpaceFile *sfile, const int index)
bool ED_fileselect_layout_is_inside_pt(const FileLayout *layout, const View2D *v2d, int x, int y)
#define PARAMS_FLAGS_REMEMBERED
static void fileselect_refresh_asset_params(FileAssetSelectParams *asset_params)
void file_params_renamefile_activate(SpaceFile *sfile, FileSelectParams *params)
FileAssetSelectParams * ED_fileselect_get_asset_params(const SpaceFile *sfile)
void ED_fileselect_init_layout(struct SpaceFile *sfile, ARegion *region)
static bool file_select_use_default_display_type(const SpaceFile *sfile)
static void on_reload_activate_by_id(SpaceFile *sfile, onReloadFnData custom_data)
static void file_attribute_columns_widths(const FileSelectParams *params, FileLayout *layout)
static FileSelectParams * fileselect_ensure_updated_file_params(SpaceFile *sfile)
bool ED_fileselect_layout_isect_rect(const FileLayout *layout, const View2D *v2d, const rcti *rect, rcti *r_dst)
void ED_fileselect_window_params_get(const wmWindow *win, int win_size[2], bool *is_maximized)
void ED_fileselect_layout_maskrect(const FileLayout *layout, const View2D *v2d, rcti *r_rect)
void ED_file_change_dir(bContext *C)
static bool file_select_use_default_sort_type(const SpaceFile *sfile)
ScrArea * ED_fileselect_handler_area_find(const wmWindow *win, const wmOperator *file_operator)
static FT_Library library
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
MINLINE uint divide_ceil_u(uint a, uint b)
static void area(int d1, int d2, int e1, int e2, float weights[2])
bool RNA_property_is_set_ex(PointerRNA *ptr, PropertyRNA *prop, bool use_ghost)
bool RNA_struct_property_is_set_ex(PointerRNA *ptr, const char *identifier, bool use_ghost)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
bool RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop)
char * RNA_property_string_get_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen, int *r_len)
int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, bool value)
int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
FileSelectAssetLibraryUID asset_library
FileSelectParams base_params
FileAttributeColumn attribute_columns[ATTRIBUTE_COLUMN_MAX]
int attribute_column_header_h
unsigned short thumbnail_size
struct FileLayout * layout
FileSelectParams * params
FileAssetSelectParams * asset_params
UserDef_FileSpaceData file_space_data
struct wmOperatorType * type
struct wmWindow * winactive
void WM_main_add_notifier(unsigned int type, void *reference)
void WM_event_fileselect_event(wmWindowManager *wm, void *ophandle, int eventval)
@ EVT_FILESELECT_EXTERNAL_CANCEL
const char * WM_operatortype_name(struct wmOperatorType *ot, struct PointerRNA *properties)
Scene * WM_windows_scene_get_from_screen(const wmWindowManager *wm, const bScreen *screen)
int WM_window_pixels_y(const wmWindow *win)
void WM_window_set_dpi(const wmWindow *win)
bScreen * WM_window_get_active_screen(const wmWindow *win)
bool WM_window_is_temp_screen(const wmWindow *win)
bool WM_window_is_maximized(const wmWindow *win)
int WM_window_pixels_x(const wmWindow *win)