Blender  V2.93
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)
 
static void fileselect_refresh_asset_params (FileAssetSelectParams *asset_params)
 
void fileselect_refresh_params (SpaceFile *sfile)
 
bool ED_fileselect_is_asset_browser (const SpaceFile *sfile)
 
struct IDED_fileselect_active_asset_get (const SpaceFile *sfile)
 
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)
 
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 (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, bScreen *screen, ScrArea *area)
 
void ED_file_change_dir (bContext *C)
 
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, Scene *owner_scene, SpaceFile *sfile)
 
void ED_fileselect_exit (wmWindowManager *wm, Scene *owner_scene, SpaceFile *sfile)
 
void file_params_renamefile_activate (SpaceFile *sfile, FileSelectParams *params)
 
ScrAreaED_fileselect_handler_area_find (const wmWindow *win, const wmOperator *file_operator)
 

Macro Definition Documentation

◆ PARAMS_FLAGS_REMEMBERED

#define PARAMS_FLAGS_REMEMBERED   (FILE_HIDE_DOT)

Definition at line 519 of file filesel.c.

◆ VERTLIST_MAJORCOLUMN_WIDTH

#define VERTLIST_MAJORCOLUMN_WIDTH   (25 * UI_UNIT_X)

Definition at line 80 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 ( bContext C,
bScreen screen,
ScrArea area 
)

◆ ED_fileselect_activate_by_id()

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

◆ ED_fileselect_active_asset_get()

struct ID* ED_fileselect_active_asset_get ( const SpaceFile sfile)

◆ ED_fileselect_clear()

void ED_fileselect_clear ( wmWindowManager wm,
Scene owner_scene,
SpaceFile sfile 
)

◆ ED_fileselect_ensure_active_params()

FileSelectParams* ED_fileselect_ensure_active_params ( SpaceFile sfile)

◆ ED_fileselect_exit()

void ED_fileselect_exit ( wmWindowManager wm,
Scene owner_scene,
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 405 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_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_layout_is_inside_pt()

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

Definition at line 755 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 762 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 
)

Get the currently visible bounds of the layout in screen space. Matches View2D.mask minus the top column-header row.

Definition at line 749 of file filesel.c.

References View2D::mask, FileLayout::offset_top, and rcti::ymax.

Referenced by ED_fileselect_layout_is_inside_pt(), and ED_fileselect_layout_isect_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 ( FileLayout layout,
int  tile,
int *  x,
int *  y 
)

◆ ED_fileselect_params_to_userdef()

void ED_fileselect_params_to_userdef ( SpaceFile sfile,
const int  temp_win_size[2],
const 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 585 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().

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

Check if the region coordinate defined by x and y are inside the column header.

Definition at line 791 of file filesel.c.

References FileLayout::attribute_column_header_h, BLI_rcti_isect_pt(), View2D::mask, x, y, rcti::ymax, and rcti::ymin.

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

void file_params_renamefile_activate ( SpaceFile sfile,
FileSelectParams params 
)

◆ 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 148 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_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_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,
const int  index 
)

Sets FileSelectParams->file (name of selected file)

Definition at line 625 of file filesel.c.

References BLI_strncpy(), ED_fileselect_get_active_params(), file, FILE_MAXFILE, FILE_TYPE_DIR, filelist_file(), SpaceFile::files, and params.

Referenced by file_box_select_modal(), file_select_do(), and file_walk_select_selection_set().

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

◆ on_reload_activate_by_id()

static void on_reload_activate_by_id ( SpaceFile sfile,
onReloadFnData  custom_data 
)
static

Definition at line 472 of file filesel.c.

References ED_fileselect_activate_by_id().

Referenced by ED_fileselect_activate_by_id().