67 const rcti *rect_region)
105 if ((sel->
first < 0) && (sel->
last >= 0)) {
109 if ((sel->
first >= numfiles) && ((sel->
last < 0) || (sel->
last >= numfiles))) {
115 if ((sel->
first > 0) && (sel->
last < 0)) {
116 sel->
last = numfiles - 1;
120 if (sel->
first >= numfiles) {
121 sel->
first = numfiles - 1;
123 if (sel->
last >= numfiles) {
124 sel->
last = numfiles - 1;
136 if (!((sel.
first == -1) && (sel.
last == -1))) {
141 if (fill && (sel.
last >= 0) && (sel.
last < numfiles)) {
144 for (f = sel.
last; f >= 0; f--) {
154 for (f = sel.
first; f < numfiles; f++) {
177 if ((selected_idx >= 0) && (selected_idx < numfiles) &&
180 params->highlight_file = selected_idx;
181 params->active_file = selected_idx;
186 if (do_diropen ==
false) {
198 if (
params->recursion_level > 1) {
200 params->recursion_level = 0;
236 for (
i = 0;
i < numfiles;
i++) {
254 for (file_index = 0; file_index < numfiles; file_index++) {
257 selection.
first = file_index;
262 for (; file_index < numfiles; file_index++) {
264 selection.
last = file_index;
363 else if (sel.
last >= 0) {
391 if (!cfgdir.has_value()) {
392 BKE_report(reports,
RPT_ERROR,
"Unable to create configuration directory to write bookmarks");
417 const int mouse_xy[2])
420 rcti bounds_first, bounds_last;
421 int dist_first, dist_last;
422 float mouseco_view[2];
434 const int my_loc = int(mouseco_view[1]);
440 const int mx_loc = int(mouseco_view[0]);
445 return (dist_first < dist_last) ? sel->
first : sel->
last;
474 for (idx = sel.
last; idx >= 0; idx--) {
484 if (sel.
last == idx) {
485 params->highlight_file = idx;
494 params->highlight_file = -1;
539 ot->name =
"Box Select";
540 ot->description =
"Activate/select the file(s) contained in the border";
541 ot->idname =
"FILE_OT_select_box";
580 const bool only_activate_if_selected =
RNA_boolean_get(op->
ptr,
"only_activate_if_selected");
598 if (extend || fill) {
599 wait_to_deselect_others =
false;
606 int idx =
params->highlight_file;
609 if ((idx >= 0) && (idx < numfiles)) {
612 if (only_activate_if_selected && is_selected) {
615 else if (wait_to_deselect_others && is_selected) {
660 ot->idname =
"FILE_OT_select";
661 ot->description =
"Handle mouse clicks to select and activate items";
676 "Extend selection instead of deselecting everything first");
679 ot->srna,
"fill",
false,
"Fill",
"Select everything beginning with the last selection");
682 prop =
RNA_def_boolean(
ot->srna,
"open",
true,
"Open",
"Open a directory when selecting it");
687 "Deselect On Nothing",
688 "Deselect all when nothing under the cursor");
691 "only_activate_if_selected",
693 "Only Activate if Selected",
694 "Do not change selection if the item under the cursor is already "
695 "selected, only activate it");
701 "Even on successful execution, pass the event on so other operators can "
702 "execute on it as well");
721 const int active_old,
722 const int active_new,
723 const int other_site,
724 const bool has_selection,
730 const int last_sel =
params->active_file;
732 bool deselect =
false;
747 deselect = (fill || other_site == -1 ||
752 params->active_file = active_new;
755 if (deselect && fill) {
795 params->highlight_file = -1;
847 const int active_old =
params->active_file;
865 active_new = active_old - 1;
866 other_site = active_old + 1;
871 active_new = active_old + 1;
872 other_site = active_old - 1;
877 active_new = active_old - idx_shift;
878 other_site = active_old + idx_shift;
884 active_new = active_old + idx_shift;
885 other_site = active_old - idx_shift;
891 if (!
IN_RANGE(active_new, -1, numfiles)) {
898 if (active_new != 0) {
900 active_new = active_old;
903 if (!
IN_RANGE(other_site, 0, numfiles)) {
945 ot->name =
"Walk Select/Deselect File";
946 ot->description =
"Select/Deselect files by walking through them";
947 ot->idname =
"FILE_OT_select_walk";
960 "Extend selection instead of deselecting everything first");
963 ot->srna,
"fill",
false,
"Fill",
"Select everything beginning with the last selection");
988 sel.
last = numfiles - 1;
1014 params->active_file = -1;
1016 for (
int i = 0;
i < numfiles;
i++) {
1034 ot->name =
"(De)select All Files";
1035 ot->description =
"Select or deselect all files";
1036 ot->idname =
"FILE_OT_select_all";
1067 if (
params->active_file != -1) {
1090 ot->name =
"Frame Selected";
1091 ot->description =
"Scroll the selected files into view";
1092 ot->idname =
"FILE_OT_view_selected";
1133 ot->name =
"Select Directory";
1134 ot->description =
"Select a bookmarked directory";
1135 ot->idname =
"FILE_OT_select_bookmark";
1160 if (
params->dir[0] !=
'\0') {
1172 ot->name =
"Add Bookmark";
1173 ot->description =
"Add a bookmark for the selected/active directory";
1174 ot->idname =
"FILE_OT_bookmark_add";
1198 if ((index > -1) && (index < nentries)) {
1211 ot->name =
"Delete Bookmark";
1212 ot->description =
"Delete selected bookmark";
1213 ot->idname =
"FILE_OT_bookmark_delete";
1221 prop =
RNA_def_int(
ot->srna,
"index", -1, -1, 20000,
"Index",
"", -1, 20000);
1237 bool changed =
false;
1239 for (index = 0; fsme; fsme = fsme_next) {
1240 fsme_next = fsme->
next;
1261 ot->name =
"Cleanup Bookmarks";
1262 ot->description =
"Delete all invalid bookmarks";
1263 ot->idname =
"FILE_OT_bookmark_cleanup";
1303 switch (direction) {
1308 new_index = totitems - 1;
1313 new_index = (totitems + act_index + direction) % totitems;
1317 if (new_index == act_index) {
1322 if (fsmentry != fsmentry_org) {
1353 {0,
nullptr, 0,
nullptr,
nullptr}};
1356 ot->name =
"Move Bookmark";
1357 ot->idname =
"FILE_OT_bookmark_move";
1358 ot->description =
"Move the active bookmark up/down in the list";
1372 "Direction to move the active bookmark towards");
1398 ot->name =
"Reset Recent";
1399 ot->description =
"Reset recent files";
1400 ot->idname =
"FILE_OT_reset_recent";
1418 int numfiles, origfile;
1422 if (sfile ==
nullptr || sfile->
files ==
nullptr || sfile->
layout ==
nullptr) {
1434 origfile =
params->highlight_file;
1448 if ((highlight_file >= 0) && (highlight_file < numfiles)) {
1449 params->highlight_file = highlight_file;
1452 params->highlight_file = -1;
1456 params->highlight_file = -1;
1459 return (
params->highlight_file != origfile);
1481 ot->name =
"Highlight File";
1482 ot->description =
"Highlight selected file(s)";
1483 ot->idname =
"FILE_OT_highlight";
1534 ot->name =
"Sort from Column";
1535 ot->description =
"Change sorting to use column under cursor";
1536 ot->idname =
"FILE_OT_sort_column_ui_context";
1557 if (!sfile || !sfile->
op) {
1570 sfile->
op =
nullptr;
1580 ot->name =
"Cancel File Operation";
1581 ot->description =
"Cancel file operation";
1582 ot->idname =
"FILE_OT_cancel";
1653 for (
i = 0;
i < numfiles;
i++) {
1666 if (0 == num_files) {
1676 for (
i = 0;
i < numfiles;
i++) {
1687 if (0 == num_dirs) {
1822 "Show OS Properties for this item"},
1827 "Search for items in this folder"},
1831 "Command Prompt Here",
1832 "Open a command prompt here"},
1833 {0,
nullptr, 0,
nullptr,
nullptr}};
1853 int num_selected = 0;
1854 for (
int i = 0;
i < numfiles;
i++) {
1860 if (!fileentry || num_selected > 1) {
1903 op->
reports,
RPT_ERROR,
"Failure to perform external file operation on \"%s\"", filepath);
1912 const char *description =
"";
1914 return TIP_(description);
1920 ot->name =
"External File Operation";
1921 ot->idname =
"FILE_OT_external_operation";
1922 ot->description =
"Perform external operation on a file or folder";
1937 "Operation to perform on the selected file or path");
1956 const char *title =
"";
1986 int num_selected = 0;
1988 for (
int i = 0;
i < numfiles;
i++) {
1995 if (!fileentry || num_selected > 1) {
2049 int num_selected = 0;
2050 for (
int i = 0;
i < numfiles;
i++) {
2056 if (num_selected > 1) {
2059 else if (num_selected < 1) {
2129 else if (sfile->
op) {
2135 sfile->
op =
nullptr;
2183 ot->name =
"Execute File Window";
2184 ot->description =
"Execute selected file";
2185 ot->idname =
"FILE_OT_execute";
2241 ot->name =
"Execute File";
2243 "Perform the current execute action for the file under the cursor (e.g. open the file)";
2244 ot->idname =
"FILE_OT_mouse_execute";
2278 ot->name =
"Refresh File List";
2279 ot->description =
"Refresh the file list";
2280 ot->idname =
"FILE_OT_refresh";
2304 if (
params->recursion_level > 1) {
2306 params->recursion_level = 0;
2319 ot->name =
"Parent Directory";
2320 ot->description =
"Move to parent directory";
2321 ot->idname =
"FILE_OT_parent";
2355 ot->name =
"Previous Folder";
2356 ot->description =
"Move to previous folder";
2357 ot->idname =
"FILE_OT_previous";
2392 ot->name =
"Next Folder";
2393 ot->description =
"Move to next folder";
2394 ot->idname =
"FILE_OT_next";
2430 if ((
params->rename_flag &
2438 for (
i = 0;
i < numfiles;
i++) {
2451 if (edit_idx == -1) {
2454 if (
params->rename_flag == 0) {
2474 sfile->
scroll_offset = (edit_idx / items_block_size) * items_block_size;
2480 const int last_visible_item = first_visible_item + numfiles_layout + 1;
2485 const int middle_offset =
max_ii(
2486 0, (first_visible_item + last_visible_item) / 2 - (is_horizontal ? 0 : items_block_size));
2488 const int min_middle_offset = numfiles_layout / 2;
2489 const int max_middle_offset = ((numfiles / items_block_size) * items_block_size +
2490 ((numfiles % items_block_size) != 0 ? items_block_size : 0)) -
2491 (numfiles_layout / 2);
2506 const bool is_centered = (
abs(middle_offset / items_block_size -
2509 const bool is_full_start = ((sfile->
scroll_offset < min_middle_offset) &&
2510 (min_curr_scroll - min_tot_scroll < 1.0f) &&
2511 (middle_offset - min_middle_offset < items_block_size));
2515 const bool is_full_end = ((sfile->
scroll_offset > max_middle_offset) &&
2516 (max_tot_scroll - max_curr_scroll < 1.0f) &&
2517 (max_middle_offset - middle_offset < items_block_size));
2519 if (is_ready && (is_centered || is_full_start || is_full_end)) {
2545 const int diff_offset = sfile->
scroll_offset / items_block_size -
2546 middle_offset / items_block_size;
2548 const int diff_offset_delta =
abs(diff_offset) *
2552 const int scroll_delta =
max_ii(2, diff_offset_delta / 15);
2554 if (diff_offset < 0) {
2555 if (is_horizontal) {
2556 deltax = -scroll_delta;
2559 deltay = scroll_delta;
2563 if (is_horizontal) {
2564 deltax = scroll_delta;
2567 deltay = -scroll_delta;
2589 ot->name =
"Smooth Scroll";
2590 ot->idname =
"FILE_OT_smoothscroll";
2591 ot->description =
"Smooth scroll to make editable file visible";
2635 ot->name =
"File Selector Drop";
2636 ot->idname =
"FILE_OT_filepath_drop";
2682 bool generate_name =
true;
2699 if (dirpath[0] !=
'\0') {
2700 generate_name =
false;
2704 if (generate_name) {
2718 "'%s' given path is OS-invalid, creating '%s' path instead",
2733 "Could not create new folder: %s",
2734 errno ? strerror(errno) :
"unknown error");
2741 if (do_diropen ==
false) {
2743 "File rename handling should immediately clear rename_id when done, "
2744 "because otherwise it will keep taking precedence over renamefile.");
2750 params->rename_flag = rename_flag;
2784 ot->name =
"Create New Directory";
2785 ot->description =
"Create a new directory";
2786 ot->idname =
"FILE_OT_directory_new";
2795 ot->srna,
"directory",
nullptr,
FILE_MAX,
"Directory",
"Name of new directory");
2815 bool do_reset =
false;
2817 if (
params->dir[0] ==
'\0') {
2822 if (blendfile_path[0] !=
'\0') {
2832 else if (
params->dir[0] ==
'~') {
2837 char tmpstr[
sizeof(
params->dir) - 1];
2852 BLI_path_normalize_unc(
params->dir,
sizeof(
params->dir));
2930 char old_dir[
sizeof(
params->dir)];
2942 char dirpath[
sizeof(
params->dir)];
3037 char filepath[
sizeof(
params->dir)];
3082 ot->name =
"Toggle Hide Dot Files";
3083 ot->description =
"Toggle hide hidden dot files";
3084 ot->idname =
"FILE_OT_hidedot";
3127 for (
i = digits;
i > 1;
i--) {
3136 pic = std::max(pic, 0);
3147 if (
params && (inc != 0)) {
3160 ot->name =
"Increment Number in Filename";
3161 ot->description =
"Increment number in filename";
3162 ot->idname =
"FILE_OT_filenum";
3169 RNA_def_int(
ot->srna,
"increment", 1, -100, 100,
"Increment",
"", -100, 100);
3182 if ((file_idx >= 0) && (file_idx < numfiles)) {
3185 if ((require_selected ==
false) ||
3217 ot->name =
"Rename File or Directory";
3218 ot->description =
"Rename file or file directory";
3219 ot->idname =
"FILE_OT_rename";
3251 for (
int i = 0;
i < numfiles;
i++) {
3263 const char **r_error_message)
3280 const char *error_message =
nullptr;
3281 bool report_error =
false;
3283 for (
int i = 0;
i < numfiles;
i++) {
3287 report_error =
true;
3293 const char *error_prefix =
"Could not delete file or directory: ";
3294 const char *errno_message = errno ? strerror(errno) :
"unknown error";
3295 if (error_message !=
nullptr) {
3318 ot->name =
"Delete Selected Files";
3319 ot->description =
"Move selected files to the trash or recycle bin";
3320 ot->idname =
"FILE_OT_delete";
3354 ot->name =
"Filter";
3355 ot->description =
"Start entering filter text";
3356 ot->idname =
"FILE_OT_start_filter";
3390 ot->name =
"Edit Directory Path";
3391 ot->description =
"Start editing directory field";
3392 ot->idname =
"FILE_OT_edit_directory_path";
#define BLENDER_BOOKMARK_FILE
const char * BKE_appdir_folder_root() ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL
std::optional< std::string > BKE_appdir_folder_id_create(int folder_id, const char *subfolder) ATTR_WARN_UNUSED_RESULT
bool BKE_blendfile_library_path_explode(const char *path, char *r_dir, char **r_group, char **r_name)
SpaceFile * CTX_wm_space_file(const bContext *C)
void CTX_wm_operator_poll_msg_set(bContext *C, const char *msg)
ScrArea * CTX_wm_area(const bContext *C)
wmWindow * CTX_wm_window(const bContext *C)
SpaceLink * CTX_wm_space_data(const bContext *C)
Main * CTX_data_main(const bContext *C)
void CTX_wm_region_set(bContext *C, ARegion *region)
ARegion * CTX_wm_region(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
const char * BKE_main_blendfile_path(const Main *bmain) ATTR_NONNULL()
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
ARegion * BKE_area_find_region_type(const ScrArea *area, int region_type)
#define BLI_assert_msg(a, msg)
File and directory operations.
int BLI_exists(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
int BLI_delete_soft(const char *filepath, const char **r_error_message) ATTR_NONNULL()
bool BLI_file_external_operation_supported(const char *filepath, FileExternalOperation operation)
bool BLI_dir_create_recursive(const char *dirname) ATTR_NONNULL()
bool BLI_is_file(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
@ FILE_EXTERNAL_OPERATION_FOLDER_OPEN
@ FILE_EXTERNAL_OPERATION_FOLDER_CMD
@ FILE_EXTERNAL_OPERATION_OPEN
@ FILE_EXTERNAL_OPERATION_PRINT
@ FILE_EXTERNAL_OPERATION_INSTALL
@ FILE_EXTERNAL_OPERATION_PLAY
@ FILE_EXTERNAL_OPERATION_BROWSE
@ FILE_EXTERNAL_OPERATION_PREVIEW
@ FILE_EXTERNAL_OPERATION_RUNAS
@ FILE_EXTERNAL_OPERATION_FOLDER_FIND
@ FILE_EXTERNAL_OPERATION_NEW
@ FILE_EXTERNAL_OPERATION_EDIT
@ FILE_EXTERNAL_OPERATION_PROPERTIES
@ FILE_EXTERNAL_OPERATION_FIND
@ FILE_EXTERNAL_OPERATION_SHOW
bool BLI_is_dir(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
bool BLI_file_external_operation_execute(const char *filepath, FileExternalOperation operation)
const char * BLI_dir_home(void)
void BLI_linklist_move_item(LinkNode **listp, int curr_index, int new_index) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
MINLINE int max_ii(int a, int b)
bool BLI_path_parent_dir(char *path) ATTR_NONNULL(1)
bool BLI_path_abs(char path[FILE_MAX], const char *basepath) ATTR_NONNULL(1
bool BLI_path_parent_dir_until_exists(char *path) ATTR_NONNULL(1)
bool BLI_path_make_safe(char *path) ATTR_NONNULL(1)
size_t BLI_path_append(char *__restrict dst, size_t dst_maxncpy, const char *__restrict file) ATTR_NONNULL(1
int BLI_path_normalize_dir(char *dir, size_t dir_maxncpy) ATTR_NONNULL(1)
#define BLI_path_join(...)
bool BLI_path_is_abs_from_cwd(const char *path) ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT
#define FILENAME_IS_CURRPAR(_n)
void BLI_path_split_dir_file(const char *filepath, char *dir, size_t dir_maxncpy, char *file, size_t file_maxncpy) ATTR_NONNULL(1
bool BLI_path_is_rel(const char *path) ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT
int BLI_path_sequence_decode(const char *path, char *head, size_t head_maxncpy, char *tail, size_t tail_maxncpy, unsigned short *r_digits_len)
void void BLI_path_split_dir_part(const char *filepath, char *dir, size_t dir_maxncpy) ATTR_NONNULL(1
bool void BLI_path_rel(char path[FILE_MAX], const char *basepath) ATTR_NONNULL(1)
bool BLI_path_is_win32_drive_only(const char *path)
bool BLI_path_make_safe_filename_ex(char *filename, bool allow_tokens) ATTR_NONNULL(1)
size_t size_t BLI_path_append_dir(char *__restrict dst, size_t dst_maxncpy, const char *__restrict dir) ATTR_NONNULL(1
int BLI_path_slash_ensure(char *path, size_t path_maxncpy) ATTR_NONNULL(1)
int BLI_path_normalize_native(char *path) ATTR_NONNULL(1)
bool BLI_path_is_unc(const char *path) ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT
#define FILENAME_IS_PARENT(_n)
void BLI_path_sequence_encode(char *path, size_t path_maxncpy, const char *head, const char *tail, unsigned short numlen, int pic)
int BLI_rcti_length_x(const rcti *rect, int x)
int BLI_rcti_length_y(const rcti *rect, int y)
void BLI_rcti_init(struct rcti *rect, int xmin, int xmax, int ymin, int ymax)
void BLI_rctf_rcti_copy(struct rctf *dst, const struct rcti *src)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
char * STRNCPY(char(&dst)[N], const char *src)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
size_t size_t size_t BLI_snprintf_utf8(char *__restrict dst, size_t dst_maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
#define STRNCPY_UTF8(dst, src)
#define IN_RANGE(a, b, c)
Compatibility-like things for windows.
const char * dirname(char *path)
#define BLT_I18NCONTEXT_DEFAULT_BPYRNA
#define BLT_I18NCONTEXT_EDITOR_FILEBROWSER
eFileSel_Params_RenameFlag
@ FILE_PARAMS_RENAME_POSTSCROLL_PENDING
@ FILE_PARAMS_RENAME_ACTIVE
@ FILE_PARAMS_RENAME_POSTSCROLL_ACTIVE
@ FILE_PARAMS_RENAME_PENDING
#define FILE_MAX_LIBEXTRA
FSMenuEntry * ED_fsmenu_get_entry(FSMenu *fsmenu, FSMenuCategory category, int idx)
int ED_fsmenu_get_nentries(FSMenu *fsmenu, FSMenuCategory category)
int ED_fileselect_layout_numfiles(FileLayout *layout, ARegion *region)
FileSelectParams * ED_fileselect_get_active_params(const SpaceFile *sfile)
void ED_fsmenu_set_category(FSMenu *fsmenu, FSMenuCategory category, FSMenuEntry *fsm_head)
int ED_fileselect_layout_offset(FileLayout *layout, int x, int y)
FileLayout * ED_fileselect_get_layout(SpaceFile *sfile, ARegion *region)
FSMenuEntry * ED_fsmenu_get_category(FSMenu *fsmenu, FSMenuCategory category)
FileSelection ED_fileselect_layout_offset_rect(FileLayout *layout, const rcti *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_clear(wmWindowManager *wm, SpaceFile *sfile)
void ED_file_change_dir(bContext *C)
void ED_area_tag_redraw(ScrArea *area)
bool ED_operator_file_browsing_active(bContext *C)
void ED_area_tag_refresh(ScrArea *area)
bool ED_operator_file_active(bContext *C)
void ED_region_tag_redraw(ARegion *region)
#define SEL_OP_USE_PRE_DESELECT(sel_op)
Read Guarded memory(de)allocation.
bool UI_textbutton_activate_rna(const bContext *C, ARegion *region, const void *rna_poin_data, const char *rna_prop_id)
bool UI_textbutton_activate_but(const bContext *C, uiBut *actbut)
void UI_view2d_curRect_validate(View2D *v2d)
void UI_view2d_region_to_view(const View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL()
void UI_view2d_region_to_view_rctf(const View2D *v2d, const rctf *rect_src, rctf *rect_dst) ATTR_NONNULL()
#define ND_SPACE_FILE_PARAMS
#define ND_SPACE_FILE_LIST
const char * folderlist_peeklastdir(ListBase *folderlist)
void file_params_smoothscroll_timer_clear(wmWindowManager *wm, wmWindow *win, SpaceFile *sfile)
void file_params_invoke_rename_postscroll(wmWindowManager *wm, wmWindow *win, SpaceFile *sfile)
bool file_attribute_column_header_is_inside(const View2D *v2d, const FileLayout *layout, int x, int y)
void file_params_renamefile_clear(FileSelectParams *params)
int file_select_match(SpaceFile *sfile, const char *pattern, char *matched_file)
void fileselect_file_set(bContext *C, SpaceFile *sfile, int index)
void folderlist_pushdir(ListBase *folderlist, const char *dir)
void file_tile_boundbox(const ARegion *region, FileLayout *layout, int file, rcti *r_bounds)
FileAttributeColumnType file_attribute_column_type_find_isect(const View2D *v2d, const FileSelectParams *params, FileLayout *layout, int x)
void file_select_deselect_all(SpaceFile *sfile, eDirEntry_SelectFlag flag)
void folderlist_popdir(ListBase *folderlist, char *dir)
void file_params_renamefile_activate(SpaceFile *sfile, FileSelectParams *params)
void FILE_OT_parent(wmOperatorType *ot)
void FILE_OT_select_box(wmOperatorType *ot)
void FILE_OT_directory_new(wmOperatorType *ot)
static wmOperatorStatus file_previous_exec(bContext *C, wmOperator *)
void file_draw_check(bContext *C)
void FILE_OT_edit_directory_path(wmOperatorType *ot)
static wmOperatorStatus file_external_operation_exec(bContext *C, wmOperator *op)
void FILE_OT_bookmark_add(wmOperatorType *ot)
static std::string file_external_operation_get_description(bContext *, wmOperatorType *, PointerRNA *ptr)
static wmOperatorStatus file_box_select_modal(bContext *C, wmOperator *op, const wmEvent *event)
void FILE_OT_select_bookmark(wmOperatorType *ot)
static bool file_walk_select_do(bContext *C, SpaceFile *sfile, FileSelectParams *params, const int direction, const bool extend, const bool fill)
static wmOperatorStatus file_start_filter_exec(bContext *C, wmOperator *)
static wmOperatorStatus bookmark_select_exec(bContext *C, wmOperator *op)
void file_directory_enter_handle(bContext *C, void *, void *)
static wmOperatorStatus bookmark_add_exec(bContext *C, wmOperator *op)
static FileSelection find_file_mouse_rect(SpaceFile *sfile, ARegion *region, const rcti *rect_region)
static bool file_walk_select_selection_set(bContext *C, wmWindow *win, ARegion *region, SpaceFile *sfile, const int direction, const int numfiles, const int active_old, const int active_new, const int other_site, const bool has_selection, const bool extend, const bool fill)
static wmOperatorStatus bookmark_cleanup_exec(bContext *C, wmOperator *op)
void ED_operatormacros_file()
void FILE_OT_refresh(wmOperatorType *ot)
void FILE_OT_mouse_execute(wmOperatorType *ot)
static bool file_bookmark_move_poll(bContext *C)
static void filenum_newname(char *filename, size_t filename_maxncpy, int add)
static wmOperatorStatus file_highlight_invoke(bContext *C, wmOperator *, const wmEvent *event)
static wmOperatorStatus file_delete_exec(bContext *C, wmOperator *op)
static bool file_ensure_hovered_is_active(bContext *C, const wmEvent *event)
static wmOperatorStatus bookmark_move_exec(bContext *C, wmOperator *op)
void file_filename_enter_handle(bContext *C, void *, void *arg_but)
static bool file_delete_single(const FileList *files, FileDirEntry *file, const char **r_error_message)
void FILE_OT_sort_column_ui_context(wmOperatorType *ot)
static int file_box_select_find_last_selected(SpaceFile *sfile, ARegion *region, const FileSelection *sel, const int mouse_xy[2])
static rcti file_select_mval_to_select_rect(const int mval[2])
static FileSelect file_select_do(bContext *C, int selected_idx, bool do_diropen)
void file_operator_to_sfile(Main *bmain, SpaceFile *sfile, wmOperator *op)
static wmOperatorStatus file_filenum_exec(bContext *C, wmOperator *op)
void FILE_OT_filepath_drop(wmOperatorType *ot)
void FILE_OT_previous(wmOperatorType *ot)
static wmOperatorStatus file_directory_new_exec(bContext *C, wmOperator *op)
static void file_rename_state_activate(SpaceFile *sfile, int file_idx, bool require_selected)
static void file_os_operations_menu_draw(const bContext *C_const, Menu *menu)
void FILE_OT_bookmark_delete(wmOperatorType *ot)
static wmOperatorStatus file_hidedot_exec(bContext *C, wmOperator *)
void FILE_OT_external_operation(wmOperatorType *ot)
void FILE_OT_select_walk(wmOperatorType *ot)
void FILE_OT_filenum(wmOperatorType *ot)
static bool file_os_operations_menu_poll(const bContext *C_const, MenuType *)
static wmOperatorStatus file_next_exec(bContext *C, wmOperator *)
@ FILE_BOOKMARK_MOVE_DOWN
@ FILE_BOOKMARK_MOVE_BOTTOM
static FileSelection file_selection_get(bContext *C, const rcti *rect, bool fill)
void FILE_OT_delete(wmOperatorType *ot)
static void clamp_to_filelist(int numfiles, FileSelection *sel)
static wmOperatorStatus file_edit_directory_path_exec(bContext *C, wmOperator *)
void file_sfile_to_operator_ex(bContext *C, Main *bmain, wmOperator *op, SpaceFile *sfile, char *filepath)
void FILE_OT_bookmark_cleanup(wmOperatorType *ot)
void file_draw_check_ex(bContext *C, ScrArea *area)
static wmOperatorStatus file_box_select_exec(bContext *C, wmOperator *op)
void file_sfile_to_operator(bContext *C, Main *bmain, wmOperator *op, SpaceFile *sfile)
void FILE_OT_smoothscroll(wmOperatorType *ot)
static wmOperatorStatus file_walk_select_invoke(bContext *C, wmOperator *op, const wmEvent *)
static wmOperatorStatus file_exec(bContext *C, wmOperator *)
void FILE_OT_bookmark_move(wmOperatorType *ot)
static wmOperatorStatus file_delete_invoke(bContext *C, wmOperator *op, const wmEvent *)
void FILE_OT_select_all(wmOperatorType *ot)
static bool file_is_any_selected(FileList *files)
static FileSelect file_select(bContext *C, const rcti *rect, FileSelType select, bool fill, bool do_diropen)
static wmOperatorStatus file_execute_mouse_invoke(bContext *C, wmOperator *, const wmEvent *event)
static wmOperatorStatus reset_recent_exec(bContext *C, wmOperator *op)
static void file_ensure_inside_viewbounds(ARegion *region, SpaceFile *sfile, const int file)
static bool file_operator_poll(bContext *C)
void FILE_OT_reset_recent(wmOperatorType *ot)
static void file_os_operations_menu_item(uiLayout *layout, wmOperatorType *ot, const char *path, FileExternalOperation operation)
static bool file_filenum_poll(bContext *C)
int file_highlight_set(SpaceFile *sfile, ARegion *region, int mx, int my)
static wmOperatorStatus file_directory_new_invoke(bContext *C, wmOperator *op, const wmEvent *)
static std::string file_execute_get_description(bContext *C, wmOperatorType *, PointerRNA *)
void FILE_OT_select(wmOperatorType *ot)
void file_sfile_filepath_set(SpaceFile *sfile, const char *filepath)
static void file_ensure_selection_inside_viewbounds(ARegion *region, SpaceFile *sfile, FileSelection *sel)
void FILE_OT_start_filter(wmOperatorType *ot)
static wmOperatorStatus bookmark_delete_exec(bContext *C, wmOperator *op)
static wmOperatorStatus filepath_drop_exec(bContext *C, wmOperator *op)
static wmOperatorStatus file_select_exec(bContext *C, wmOperator *op)
void FILE_OT_execute(wmOperatorType *ot)
static FileSelection file_current_selection_range_get(FileList *files)
void file_draw_check_cb(bContext *C, void *, void *)
static wmOperatorStatus file_rename_exec(bContext *C, wmOperator *)
static void file_expand_directory(const Main *bmain, FileSelectParams *params)
void file_external_operations_menu_register()
void FILE_OT_rename(wmOperatorType *ot)
static wmOperatorStatus file_view_selected_exec(bContext *C, wmOperator *)
static wmOperatorStatus file_select_all_exec(bContext *C, wmOperator *op)
void FILE_OT_cancel(wmOperatorType *ot)
bool file_draw_check_exists(SpaceFile *sfile)
void FILE_OT_next(wmOperatorType *ot)
static bool can_create_dir_from_user_input(const char dir[FILE_MAX_LIBEXTRA])
static wmOperatorStatus file_column_sort_ui_context_invoke(bContext *C, wmOperator *, const wmEvent *event)
static bool new_folder_path(const char *parent, char r_dirpath_full[FILE_MAX], char r_dirname[FILE_MAXFILE])
static wmOperatorStatus file_parent_exec(bContext *C, wmOperator *)
static bool file_execute(bContext *C, SpaceFile *sfile)
void FILE_OT_view_selected(wmOperatorType *ot)
void FILE_OT_highlight(wmOperatorType *ot)
static const EnumPropertyItem file_external_operation[]
void FILE_OT_hidedot(wmOperatorType *ot)
static wmOperatorStatus file_refresh_exec(bContext *C, wmOperator *)
static wmOperatorStatus file_cancel_exec(bContext *C, wmOperator *)
static bool file_delete_poll(bContext *C)
static bool fsmenu_write_file_and_refresh_or_report_error(FSMenu *fsmenu, ScrArea *area, ReportList *reports)
static wmOperatorStatus file_smoothscroll_invoke(bContext *C, wmOperator *, const wmEvent *event)
void filelist_file_get_full_path(const FileList *filelist, const FileDirEntry *file, char r_filepath[1282])
bool filelist_islibrary(FileList *filelist, char *dir, char **r_group)
const char * filelist_dir(const FileList *filelist)
void filelist_setrecursion(FileList *filelist, int recursion_level)
void filelist_entry_select_index_set(FileList *filelist, int index, FileSelType select, eDirEntry_SelectFlag flag, FileCheckType check)
void filelist_entry_parent_select_set(FileList *filelist, FileSelType select, eDirEntry_SelectFlag flag, FileCheckType check)
void filelist_entries_select_index_range_set(FileList *filelist, FileSelection *sel, FileSelType select, eDirEntry_SelectFlag flag, FileCheckType check)
bool filelist_is_dir(const FileList *filelist, const char *path)
int filelist_files_ensure(FileList *filelist)
bool filelist_entry_is_selected(FileList *filelist, int index)
FileDirEntry * filelist_file(FileList *filelist, int index)
bool filelist_is_ready(const FileList *filelist)
eDirEntry_SelectFlag filelist_entry_select_index_get(FileList *filelist, int index, FileCheckType check)
eDirEntry_SelectFlag filelist_entry_select_get(FileList *filelist, FileDirEntry *entry, FileCheckType check)
unsigned int filelist_entry_select_set(const FileList *filelist, const FileDirEntry *entry, FileSelType select, const eDirEntry_SelectFlag flag, FileCheckType check)
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
static void add(blender::Map< std::string, std::string > &messages, Message &msg)
bool RNA_property_update_check(PropertyRNA *prop)
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
void RNA_property_update(bContext *C, PointerRNA *ptr, PropertyRNA *prop)
bool RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop)
int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop)
int RNA_int_get(PointerRNA *ptr, const char *name)
std::string RNA_string_get(PointerRNA *ptr, const char *name)
void RNA_property_collection_add(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *r_ptr)
bool RNA_enum_description(const EnumPropertyItem *item, const int value, const char **r_description)
bool RNA_enum_name(const EnumPropertyItem *item, const int value, const char **r_name)
std::string RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
void RNA_property_collection_clear(PointerRNA *ptr, PropertyRNA *prop)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
int RNA_enum_get(PointerRNA *ptr, const char *name)
void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *value)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_string_file_path(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_string_dir_path(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
FileAttributeColumn attribute_columns[ATTRIBUTE_COLUMN_MAX]
struct wmTimer * smoothscroll_timer
struct FileLayout * layout
void operator_context_set(blender::wm::OpCallContext opcontext)
PointerRNA op(wmOperatorType *ot, std::optional< blender::StringRef > name, int icon, blender::wm::OpCallContext context, eUI_Item_Flag flag)
bool(* check)(bContext *C, wmOperator *op)
struct ReportList * reports
struct wmOperatorType * type
void WM_cursor_set(wmWindow *win, int curs)
wmOperatorStatus WM_operator_name_call_ptr(bContext *C, wmOperatorType *ot, blender::wm::OpCallContext context, PointerRNA *properties, const wmEvent *event)
void WM_event_fileselect_event(wmWindowManager *wm, void *ophandle, const int eventval)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
wmOperatorStatus WM_operator_name_call(bContext *C, const char *opstring, blender::wm::OpCallContext context, PointerRNA *properties, const wmEvent *event)
void WM_event_add_mousemove(wmWindow *win)
void WM_gesture_box_cancel(bContext *C, wmOperator *op)
wmOperatorStatus WM_gesture_box_modal(bContext *C, wmOperator *op, const wmEvent *event)
wmOperatorStatus WM_gesture_box_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void WM_operator_properties_border_to_rcti(wmOperator *op, rcti *r_rect)
void WM_operator_properties_gesture_box(wmOperatorType *ot)
void WM_operator_properties_confirm_or_exec(wmOperatorType *ot)
void WM_operator_properties_select_operation_simple(wmOperatorType *ot)
void WM_operator_properties_generic_select(wmOperatorType *ot)
void WM_operator_properties_select_walk_direction(wmOperatorType *ot)
void WM_operator_properties_select_all(wmOperatorType *ot)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
wmOperatorStatus WM_generic_select_modal(bContext *C, wmOperator *op, const wmEvent *event)
wmOperatorStatus WM_generic_select_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot)
wmOperatorStatus WM_operator_confirm_ex(bContext *C, wmOperator *op, const char *title, const char *message, const char *confirm_text, int icon, bool cancel_default)
void WM_operator_properties_create(PointerRNA *ptr, const char *opstring)
void WM_operator_properties_free(PointerRNA *ptr)