Blender  V3.3
Macros | Functions
filesel.c File Reference
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/times.h>
#include <unistd.h>
#include "DNA_screen_types.h"
#include "DNA_space_types.h"
#include "DNA_userdef_types.h"
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_fnmatch.h"
#include "BLI_math_base.h"
#include "BLI_utildefines.h"
#include "BLO_readfile.h"
#include "BLT_translation.h"
#include "BKE_appdir.h"
#include "BKE_context.h"
#include "BKE_idtype.h"
#include "BKE_main.h"
#include "BKE_preferences.h"
#include "BLF_api.h"
#include "ED_fileselect.h"
#include "ED_screen.h"
#include "WM_api.h"
#include "WM_types.h"
#include "RNA_access.h"
#include "UI_interface.h"
#include "UI_interface_icons.h"
#include "UI_view2d.h"
#include "file_intern.h"
#include "filelist.h"

Go to the source code of this file.

Macros

#define VERTLIST_MAJORCOLUMN_WIDTH   (25 * UI_UNIT_X)
 
#define PARAMS_FLAGS_REMEMBERED   (FILE_HIDE_DOT)
 

Functions

static void fileselect_initialize_params_common (SpaceFile *sfile, FileSelectParams *params)
 
static void fileselect_ensure_updated_asset_params (SpaceFile *sfile)
 
static FileSelectParamsfileselect_ensure_updated_file_params (SpaceFile *sfile)
 
FileSelectParamsED_fileselect_ensure_active_params (SpaceFile *sfile)
 
FileSelectParamsED_fileselect_get_active_params (const SpaceFile *sfile)
 
FileSelectParamsED_fileselect_get_file_params (const SpaceFile *sfile)
 
FileAssetSelectParamsED_fileselect_get_asset_params (const SpaceFile *sfile)
 
bool ED_fileselect_is_local_asset_library (const SpaceFile *sfile)
 
static void fileselect_refresh_asset_params (FileAssetSelectParams *asset_params)
 
void fileselect_refresh_params (SpaceFile *sfile)
 
bool ED_fileselect_is_file_browser (const SpaceFile *sfile)
 
bool ED_fileselect_is_asset_browser (const SpaceFile *sfile)
 
struct AssetLibraryED_fileselect_active_asset_library_get (const SpaceFile *sfile)
 
struct IDED_fileselect_active_asset_get (const SpaceFile *sfile)
 
void ED_fileselect_activate_asset_catalog (const SpaceFile *sfile, const bUUID catalog_id)
 
static void on_reload_activate_by_id (SpaceFile *sfile, onReloadFnData custom_data)
 
void ED_fileselect_activate_by_id (SpaceFile *sfile, ID *asset_id, const bool deferred)
 
static void on_reload_select_by_relpath (SpaceFile *sfile, onReloadFnData custom_data)
 
void ED_fileselect_activate_by_relpath (SpaceFile *sfile, const char *relative_path)
 
void ED_fileselect_deselect_all (SpaceFile *sfile)
 
void ED_fileselect_window_params_get (const wmWindow *win, int win_size[2], bool *is_maximized)
 
static bool file_select_use_default_display_type (const SpaceFile *sfile)
 
static bool file_select_use_default_sort_type (const SpaceFile *sfile)
 
void ED_fileselect_set_params_from_userdef (SpaceFile *sfile)
 
void ED_fileselect_params_to_userdef (SpaceFile *sfile, const int temp_win_size[2], const bool is_maximized)
 
void fileselect_file_set (SpaceFile *sfile, const int index)
 
int ED_fileselect_layout_numfiles (FileLayout *layout, ARegion *region)
 
static bool is_inside (int x, int y, int cols, int rows)
 
FileSelection ED_fileselect_layout_offset_rect (FileLayout *layout, const rcti *rect)
 
int ED_fileselect_layout_offset (FileLayout *layout, int x, int y)
 
void ED_fileselect_layout_maskrect (const FileLayout *layout, const View2D *v2d, rcti *r_rect)
 
bool ED_fileselect_layout_is_inside_pt (const FileLayout *layout, const View2D *v2d, int x, int y)
 
bool ED_fileselect_layout_isect_rect (const FileLayout *layout, const View2D *v2d, const rcti *rect, rcti *r_dst)
 
void ED_fileselect_layout_tilepos (const FileLayout *layout, int tile, int *x, int *y)
 
bool file_attribute_column_header_is_inside (const View2D *v2d, const FileLayout *layout, int x, int y)
 
bool file_attribute_column_type_enabled (const FileSelectParams *params, FileAttributeColumnType column)
 
FileAttributeColumnType file_attribute_column_type_find_isect (const View2D *v2d, const FileSelectParams *params, FileLayout *layout, int x)
 
float file_string_width (const char *str)
 
float file_font_pointsize (void)
 
static void file_attribute_columns_widths (const FileSelectParams *params, FileLayout *layout)
 
static void file_attribute_columns_init (const FileSelectParams *params, FileLayout *layout)
 
void ED_fileselect_init_layout (struct SpaceFile *sfile, ARegion *region)
 
FileLayoutED_fileselect_get_layout (struct SpaceFile *sfile, ARegion *region)
 
void ED_file_change_dir_ex (bContext *C, ScrArea *area)
 
void ED_file_change_dir (bContext *C)
 
void file_select_deselect_all (SpaceFile *sfile, uint flag)
 
int file_select_match (struct SpaceFile *sfile, const char *pattern, char *matched_file)
 
int autocomplete_directory (struct bContext *C, char *str, void *UNUSED(arg_v))
 
int autocomplete_file (struct bContext *C, char *str, void *UNUSED(arg_v))
 
void ED_fileselect_clear (wmWindowManager *wm, SpaceFile *sfile)
 
void ED_fileselect_exit (wmWindowManager *wm, SpaceFile *sfile)
 
void file_params_smoothscroll_timer_clear (wmWindowManager *wm, wmWindow *win, SpaceFile *sfile)
 
void file_params_invoke_rename_postscroll (wmWindowManager *wm, wmWindow *win, SpaceFile *sfile)
 
void file_params_rename_end (wmWindowManager *wm, wmWindow *win, SpaceFile *sfile, FileDirEntry *rename_file)
 
void file_params_renamefile_clear (FileSelectParams *params)
 
static int file_params_find_renamed (const FileSelectParams *params, struct FileList *filelist)
 
void file_params_renamefile_activate (SpaceFile *sfile, FileSelectParams *params)
 
ScrAreaED_fileselect_handler_area_find (const wmWindow *win, const wmOperator *file_operator)
 
ScrAreaED_fileselect_handler_area_find_any_with_op (const wmWindow *win)
 

Macro Definition Documentation

◆ PARAMS_FLAGS_REMEMBERED

#define PARAMS_FLAGS_REMEMBERED   (FILE_HIDE_DOT)

Definition at line 572 of file filesel.c.

◆ VERTLIST_MAJORCOLUMN_WIDTH

#define VERTLIST_MAJORCOLUMN_WIDTH   (25 * UI_UNIT_X)

Definition at line 64 of file filesel.c.

Function Documentation

◆ autocomplete_directory()

int autocomplete_directory ( struct bContext C,
char *  str,
void UNUSEDarg_v 
)

◆ autocomplete_file()

int autocomplete_file ( struct bContext C,
char *  str,
void UNUSEDarg_v 
)

◆ ED_file_change_dir()

void ED_file_change_dir ( bContext C)

◆ ED_file_change_dir_ex()

void ED_file_change_dir_ex ( struct bContext C,
struct ScrArea area 
)

Support updating the directory even when this isn't the active space needed so RNA properties update function isn't context sensitive, see T70255.

Definition at line 1072 of file filesel.c.

References blender::compositor::area(), BLI_strncpy(), C, CTX_wm_manager(), ED_fileselect_clear(), ED_fileselect_get_active_params(), file_draw_check_ex(), filelist_dir(), filelist_is_dir(), filelist_setdir(), SpaceFile::files, folderlist_clear_next(), folderlist_free(), folderlist_pushdir(), SpaceFile::folders_next, SpaceFile::folders_prev, params, SPACE_FILE, and UNLIKELY.

Referenced by ED_file_change_dir().

◆ ED_fileselect_activate_asset_catalog()

void ED_fileselect_activate_asset_catalog ( const SpaceFile sfile,
const bUUID  catalog_id 
)

◆ ED_fileselect_activate_by_id()

void ED_fileselect_activate_by_id ( struct SpaceFile sfile,
struct ID asset_id,
bool  deferred 
)

◆ ED_fileselect_activate_by_relpath()

void ED_fileselect_activate_by_relpath ( SpaceFile sfile,
const char *  relative_path 
)

◆ ED_fileselect_active_asset_get()

struct ID* ED_fileselect_active_asset_get ( const SpaceFile sfile)

◆ ED_fileselect_active_asset_library_get()

struct AssetLibrary* ED_fileselect_active_asset_library_get ( const SpaceFile sfile)

◆ ED_fileselect_clear()

void ED_fileselect_clear ( wmWindowManager wm,
SpaceFile sfile 
)

◆ ED_fileselect_deselect_all()

void ED_fileselect_deselect_all ( SpaceFile sfile)

◆ ED_fileselect_ensure_active_params()

FileSelectParams* ED_fileselect_ensure_active_params ( struct SpaceFile sfile)

◆ ED_fileselect_exit()

void ED_fileselect_exit ( wmWindowManager wm,
SpaceFile sfile 
)

◆ ED_fileselect_get_active_params()

FileSelectParams* ED_fileselect_get_active_params ( const SpaceFile sfile)

◆ ED_fileselect_get_asset_params()

FileAssetSelectParams* ED_fileselect_get_asset_params ( const SpaceFile sfile)

◆ ED_fileselect_get_file_params()

FileSelectParams* ED_fileselect_get_file_params ( const SpaceFile sfile)

Definition at line 389 of file filesel.c.

References SpaceFile::browse_mode, FILE_BROWSE_MODE_FILES, NULL, and SpaceFile::params.

◆ ED_fileselect_get_layout()

FileLayout* ED_fileselect_get_layout ( struct SpaceFile sfile,
ARegion region 
)

◆ ED_fileselect_handler_area_find()

ScrArea* ED_fileselect_handler_area_find ( const wmWindow win,
const wmOperator file_operator 
)

◆ ED_fileselect_handler_area_find_any_with_op()

ScrArea* ED_fileselect_handler_area_find_any_with_op ( const wmWindow win)

◆ ED_fileselect_init_layout()

void ED_fileselect_init_layout ( struct SpaceFile sfile,
ARegion region 
)

◆ ED_fileselect_is_asset_browser()

bool ED_fileselect_is_asset_browser ( const SpaceFile sfile)

◆ ED_fileselect_is_file_browser()

bool ED_fileselect_is_file_browser ( const SpaceFile sfile)

Definition at line 446 of file filesel.c.

References SpaceFile::browse_mode, and FILE_BROWSE_MODE_FILES.

◆ ED_fileselect_is_local_asset_library()

bool ED_fileselect_is_local_asset_library ( const SpaceFile sfile)

◆ ED_fileselect_layout_is_inside_pt()

bool ED_fileselect_layout_is_inside_pt ( const FileLayout layout,
const View2D v2d,
int  x,
int  y 
)

Definition at line 794 of file filesel.c.

References BLI_rcti_isect_pt(), ED_fileselect_layout_maskrect(), x, and y.

◆ ED_fileselect_layout_isect_rect()

bool ED_fileselect_layout_isect_rect ( const FileLayout layout,
const View2D v2d,
const rcti rect,
rcti r_dst 
)

Definition at line 801 of file filesel.c.

References BLI_rcti_isect(), and ED_fileselect_layout_maskrect().

◆ ED_fileselect_layout_maskrect()

void ED_fileselect_layout_maskrect ( const FileLayout layout,
const View2D v2d,
rcti r_rect 
)

◆ ED_fileselect_layout_numfiles()

int ED_fileselect_layout_numfiles ( FileLayout layout,
ARegion region 
)

◆ ED_fileselect_layout_offset()

int ED_fileselect_layout_offset ( FileLayout layout,
int  x,
int  y 
)

◆ ED_fileselect_layout_offset_rect()

FileSelection ED_fileselect_layout_offset_rect ( FileLayout layout,
const rcti rect 
)

◆ ED_fileselect_layout_tilepos()

void ED_fileselect_layout_tilepos ( const FileLayout layout,
int  tile,
int *  x,
int *  y 
)

◆ ED_fileselect_params_to_userdef()

void ED_fileselect_params_to_userdef ( struct SpaceFile sfile,
const int  temp_win_size[2],
bool  is_maximized 
)

Update the user-preference data for the file space. In fact, this also contains some non-FileSelectParams data, but we can safely ignore this.

Parameters
temp_win_sizeIf the browser was opened in a temporary window, pass its size here so we can store that in the preferences. Otherwise NULL.

Definition at line 631 of file filesel.c.

References UserDef_FileSpaceData::details_flags, UserDef_FileSpaceData::display_type, ED_fileselect_get_active_params(), file_select_use_default_display_type(), file_select_use_default_sort_type(), FILE_SORT_INVERT, UserDef_FileSpaceData::filter_id, UserDef_FileSpaceData::flag, params, PARAMS_FLAGS_REMEMBERED, UserDef_FileSpaceData::sort_type, UserDef_FileSpaceData::temp_win_sizex, UserDef_FileSpaceData::temp_win_sizey, and UserDef_FileSpaceData::thumbnail_size.

Referenced by ED_fileselect_exit(), and wm_handler_fileselect_do().

◆ ED_fileselect_set_params_from_userdef()

void ED_fileselect_set_params_from_userdef ( SpaceFile sfile)

◆ ED_fileselect_window_params_get()

void ED_fileselect_window_params_get ( const wmWindow win,
int  win_size[2],
bool is_maximized 
)

◆ file_attribute_column_header_is_inside()

bool file_attribute_column_header_is_inside ( const View2D v2d,
const FileLayout layout,
int  x,
int  y 
)

◆ file_attribute_column_type_enabled()

bool file_attribute_column_type_enabled ( const FileSelectParams params,
FileAttributeColumnType  column 
)

◆ file_attribute_column_type_find_isect()

FileAttributeColumnType file_attribute_column_type_find_isect ( const View2D v2d,
const FileSelectParams params,
FileLayout layout,
int  x 
)

◆ file_attribute_columns_init()

static void file_attribute_columns_init ( const FileSelectParams params,
FileLayout layout 
)
static

◆ file_attribute_columns_widths()

static void file_attribute_columns_widths ( const FileSelectParams params,
FileLayout layout 
)
static

◆ file_font_pointsize()

float file_font_pointsize ( void  )

◆ file_params_find_renamed()

static int file_params_find_renamed ( const FileSelectParams params,
struct FileList filelist 
)
static

Definition at line 1304 of file filesel.c.

References filelist_file_find_id(), filelist_file_find_path(), NULL, and params.

Referenced by file_params_renamefile_activate().

◆ file_params_invoke_rename_postscroll()

void file_params_invoke_rename_postscroll ( struct wmWindowManager wm,
struct wmWindow win,
SpaceFile sfile 
)

Set the renaming-state to FILE_PARAMS_RENAME_POSTSCROLL_PENDING and trigger the smooth-scroll timer. To be used right after a file was renamed. Note that the caller is responsible for setting the correct rename-file info (FileSelectParams.renamefile or FileSelectParams.rename_id).

Definition at line 1267 of file filesel.c.

References ED_fileselect_get_active_params(), FILE_PARAMS_RENAME_POSTSCROLL_PENDING, file_params_smoothscroll_timer_clear(), NULL, params, SpaceFile::scroll_offset, SpaceFile::smoothscroll_timer, TIMER1, and WM_event_add_timer().

Referenced by file_directory_new_exec(), file_listener(), file_params_rename_end(), and renamebutton_cb().

◆ file_params_rename_end()

void file_params_rename_end ( struct wmWindowManager wm,
struct wmWindow win,
SpaceFile sfile,
struct FileDirEntry rename_file 
)

◆ file_params_renamefile_activate()

void file_params_renamefile_activate ( struct SpaceFile sfile,
struct FileSelectParams params 
)

◆ file_params_renamefile_clear()

void file_params_renamefile_clear ( FileSelectParams params)

Definition at line 1297 of file filesel.c.

References NULL, and params.

Referenced by file_params_renamefile_activate(), and file_smoothscroll_invoke().

◆ file_params_smoothscroll_timer_clear()

void file_params_smoothscroll_timer_clear ( wmWindowManager wm,
wmWindow win,
SpaceFile sfile 
)

◆ file_select_deselect_all()

void file_select_deselect_all ( SpaceFile sfile,
uint  flag 
)

◆ file_select_match()

int file_select_match ( struct SpaceFile sfile,
const char *  pattern,
char *  matched_file 
)

◆ file_select_use_default_display_type()

static bool file_select_use_default_display_type ( const SpaceFile sfile)
static

◆ file_select_use_default_sort_type()

static bool file_select_use_default_sort_type ( const SpaceFile sfile)
static

◆ file_string_width()

float file_string_width ( const char *  str)

◆ fileselect_ensure_updated_asset_params()

static void fileselect_ensure_updated_asset_params ( SpaceFile sfile)
static

◆ fileselect_ensure_updated_file_params()

static FileSelectParams* fileselect_ensure_updated_file_params ( SpaceFile sfile)
static
Note
RNA_struct_property_is_set_ex is used here because we want the previously used settings to be used here rather than overriding them

Definition at line 131 of file filesel.c.

References BKE_main_blendfile_path_from_global(), BLI_assert, BLI_path_abs(), BLI_path_extension_glob_validate(), BLI_path_normalize_dir(), BLI_split_dirfile(), BLI_strncpy(), BLI_strncpy_utf8(), SpaceFile::browse_mode, FileSelectParams::details_flags, UserDef_FileSpaceData::details_flags, FileSelectParams::dir, UserDef_FileSpaceData::display_type, FileSelectParams::file, FILE_ACTIVE_COLLECTION, FILE_AUTOSELECT, FILE_BROWSE_MODE_FILES, FILE_CHECK_EXISTING, FILE_DEFAULTDISPLAY, FILE_DIRSEL_ONLY, FILE_FILTER, FILE_HIDE_DOT, FILE_HIDE_TOOL_PROPS, FILE_LINK, FILE_LOADLIB, FILE_MAX, FILE_PATH_TOKENS_ALLOW, FILE_SORT_ALPHA, FILE_SORT_DEFAULT, UserDef::file_space_data, FILE_SPECIAL, FILE_TYPE_ALEMBIC, FILE_TYPE_ARCHIVE, FILE_TYPE_BLENDER, FILE_TYPE_BLENDER_BACKUP, FILE_TYPE_BLENDERLIB, FILE_TYPE_BTX, FILE_TYPE_COLLADA, FILE_TYPE_FOLDER, FILE_TYPE_FTFONT, FILE_TYPE_IMAGE, FILE_TYPE_MOVIE, FILE_TYPE_OBJECT_IO, FILE_TYPE_OPERATOR, FILE_TYPE_PYSCRIPT, FILE_TYPE_SOUND, FILE_TYPE_TEXT, FILE_TYPE_USD, FILE_TYPE_VOLUME, FILE_UNIX, FILE_VERTICALDISPLAY, fileselect_initialize_params_common(), FileSelectParams::filter_glob, FileSelectParams::filter_id, UserDef_FileSpaceData::filter_id, UserDef_FileSpaceData::flag, MEM_callocN, MEM_freeN, NULL, SpaceFile::op, params, SpaceFile::params, wmOperator::ptr, RNA_boolean_get(), RNA_property_boolean_get(), RNA_property_boolean_set(), RNA_property_enum_get(), RNA_property_int_get(), RNA_property_is_set_ex(), RNA_property_string_get_alloc(), RNA_string_get(), RNA_struct_find_property(), RNA_struct_property_is_set_ex(), UserDef_FileSpaceData::sort_type, FileSelectParams::thumbnail_size, UserDef_FileSpaceData::thumbnail_size, wmOperator::type, U_default, USER_FILTERFILEEXTS, USER_HIDE_DOT, USER_RELPATHS, and WM_operatortype_name().

Referenced by ED_fileselect_ensure_active_params(), and ED_fileselect_set_params_from_userdef().

◆ fileselect_file_set()

void fileselect_file_set ( SpaceFile sfile,
int  index 
)

◆ fileselect_initialize_params_common()

static void fileselect_initialize_params_common ( SpaceFile sfile,
FileSelectParams params 
)
static

◆ fileselect_refresh_asset_params()

static void fileselect_refresh_asset_params ( FileAssetSelectParams asset_params)
static

◆ fileselect_refresh_params()

void fileselect_refresh_params ( SpaceFile sfile)

Definition at line 438 of file filesel.c.

References ED_fileselect_get_asset_params(), and fileselect_refresh_asset_params().

Referenced by file_init(), and file_refresh().

◆ is_inside()

static bool is_inside ( int  x,
int  y,
int  cols,
int  rows 
)
static

Definition at line 706 of file filesel.c.

References x, and y.

Referenced by armature_edit_select_op_apply(), bm_face_bisect_verts(), collection_visibility_exec(), do_lasso_select_curve__doSelect(), do_lasso_select_lattice__doSelect(), do_lasso_select_mball__doSelectElem(), do_lasso_select_mesh__doSelectEdge_pass0(), do_lasso_select_mesh__doSelectEdge_pass1(), do_lasso_select_mesh__doSelectFace(), do_lasso_select_mesh__doSelectVert(), do_lasso_select_meshobject__doSelectVert(), do_lasso_select_objects(), do_lattice_box_select__doSelect(), do_mesh_box_select__doSelectEdge_pass0(), do_mesh_box_select__doSelectEdge_pass1(), do_mesh_box_select__doSelectFace(), do_mesh_box_select__doSelectVert(), do_meta_box_select(), do_nurbs_box_select__doSelect(), do_object_box_select(), do_paintvert_box_select__doSelectVert(), do_pose_tag_select_op_exec(), ED_fileselect_layout_offset_rect(), ED_select_op_action(), ED_select_op_action_deselected(), edbm_backbuf_check_and_select_edges(), edbm_backbuf_check_and_select_faces(), edbm_backbuf_check_and_select_faces_obmode(), edbm_backbuf_check_and_select_verts(), edbm_backbuf_check_and_select_verts_obmode(), blender::bke::pbvh::pixels::extract_barycentric_pixels(), for_mouse_hit_keys(), fresnel_dielectric(), gpencil_cutter_lasso_select(), gpencil_generic_curve_select(), gpencil_generic_stroke_select(), MOD_lineart_chain_clip_at_border(), blender::ed::space_node::node_box_select_exec(), PE_lasso_select(), select_key_op(), ui_searchbox_event(), blender::compositor::BoxMaskOperation::update_memory_buffer_partial(), and blender::compositor::EllipseMaskOperation::update_memory_buffer_partial().

◆ on_reload_activate_by_id()

static void on_reload_activate_by_id ( SpaceFile sfile,
onReloadFnData  custom_data 
)
static

Definition at line 492 of file filesel.c.

References ED_fileselect_activate_by_id().

Referenced by ED_fileselect_activate_by_id().

◆ on_reload_select_by_relpath()

static void on_reload_select_by_relpath ( SpaceFile sfile,
onReloadFnData  custom_data 
)
static

Definition at line 531 of file filesel.c.

References ED_fileselect_activate_by_relpath().

Referenced by ED_fileselect_activate_by_relpath().