61 const rcti *rect_region)
65 View2D *v2d = ®ion->v2d;
99 if ((sel->
first < 0) && (sel->
last >= 0)) {
103 if ((sel->
first >= numfiles) && ((sel->
last < 0) || (sel->
last >= numfiles))) {
109 if ((sel->
first > 0) && (sel->
last < 0)) {
110 sel->
last = numfiles - 1;
114 if (sel->
first >= numfiles) {
115 sel->
first = numfiles - 1;
117 if (sel->
last >= numfiles) {
118 sel->
last = numfiles - 1;
130 if (!((sel.
first == -1) && (sel.
last == -1))) {
135 if (fill && (sel.
last >= 0) && (sel.
last < numfiles)) {
138 for (f = sel.
last; f >= 0; f--) {
148 for (f = sel.
first; f < numfiles; f++) {
171 if ((selected_idx >= 0) && (selected_idx < numfiles) &&
174 params->highlight_file = selected_idx;
175 params->active_file = selected_idx;
180 if (do_diropen ==
false) {
184 else if (!is_parent_dir && strlen(
params->dir) + strlen(file->relpath) >=
FILE_MAX) {
192 if (
params->recursion_level > 1) {
194 params->recursion_level = 0;
198 else if (file->redirection_path) {
230 for (i = 0; i < numfiles; i++) {
248 for (file_index = 0; file_index < numfiles; file_index++) {
251 selection.
first = file_index;
256 for (; file_index < numfiles; file_index++) {
258 selection.last = file_index;
272 rctf *cur = ®ion->v2d.cur;
281 cur->
ymax = cur->
ymin + region->winy;
286 cur->
ymin = cur->
ymax - region->winy;
289 else if (cur->
xmin > rect.
xmin || layout->
tile_w > region->winx) {
291 cur->
xmax = cur->
xmin + region->winx;
296 cur->
xmin = cur->
xmax - region->winx;
357 else if (sel.
last >= 0) {
385 if (!cfgdir.has_value()) {
386 BKE_report(reports,
RPT_ERROR,
"Unable to create configuration directory to write bookmarks");
411 const int mouse_xy[2])
414 rcti bounds_first, bounds_last;
415 int dist_first, dist_last;
416 float mouseco_view[2];
428 const int my_loc =
int(mouseco_view[1]);
434 const int mx_loc =
int(mouseco_view[0]);
439 return (dist_first < dist_last) ? sel->
first : sel->
last;
468 for (idx = sel.
last; idx >= 0; idx--) {
478 if (sel.
last == idx) {
479 params->highlight_file = idx;
488 params->highlight_file = -1;
534 ot->
description =
"Activate/select the file(s) contained in the border";
574 const bool only_activate_if_selected =
RNA_boolean_get(op->
ptr,
"only_activate_if_selected");
592 if (extend || fill) {
593 wait_to_deselect_others =
false;
600 int idx =
params->highlight_file;
603 if ((idx >= 0) && (idx < numfiles)) {
606 if (only_activate_if_selected && is_selected) {
609 else if (wait_to_deselect_others && is_selected) {
655 ot->
description =
"Handle mouse clicks to select and activate items";
670 "Extend selection instead of deselecting everything first");
673 ot->
srna,
"fill",
false,
"Fill",
"Select everything beginning with the last selection");
680 "Deselect On Nothing",
681 "Deselect all when nothing under the cursor");
684 "only_activate_if_selected",
686 "Only Activate if Selected",
687 "Do not change selection if the item under the cursor is already "
688 "selected, only activate it");
694 "Even on successful execution, pass the event on so other operators can "
695 "execute on it as well");
714 const int active_old,
715 const int active_new,
716 const int other_site,
717 const bool has_selection,
723 const int last_sel =
params->active_file;
724 int active = active_old;
725 bool deselect =
false;
740 deselect = (fill || other_site == -1 ||
745 params->active_file = active_new;
748 if (deselect && fill) {
754 params->active_file = active = active_new;
760 params->active_file = active = numfiles - 1;
764 params->active_file = active = 0;
788 params->highlight_file = -1;
794 FileSelection sel = {std::min(active, last_sel), std::max(active, last_sel)};
840 const int active_old =
params->active_file;
858 active_new = active_old - 1;
859 other_site = active_old + 1;
864 active_new = active_old + 1;
865 other_site = active_old - 1;
870 active_new = active_old - idx_shift;
871 other_site = active_old + idx_shift;
877 active_new = active_old + idx_shift;
878 other_site = active_old - idx_shift;
884 if (!
IN_RANGE(active_new, -1, numfiles)) {
891 if (active_new != 0) {
893 active_new = active_old;
896 if (!
IN_RANGE(other_site, 0, numfiles)) {
936 ot->
name =
"Walk Select/Deselect File";
937 ot->
description =
"Select/Deselect files by walking through them";
951 "Extend selection instead of deselecting everything first");
954 ot->
srna,
"fill",
false,
"Fill",
"Select everything beginning with the last selection");
978 sel.
last = numfiles - 1;
1004 params->active_file = -1;
1006 for (
int i = 0; i < numfiles; i++) {
1024 ot->
name =
"(De)select All Files";
1077 ot->
name =
"Frame Selected";
1079 ot->
idname =
"FILE_OT_view_selected";
1120 ot->
name =
"Select Directory";
1122 ot->
idname =
"FILE_OT_select_bookmark";
1147 if (
params->dir[0] !=
'\0') {
1159 ot->
name =
"Add Bookmark";
1160 ot->
description =
"Add a bookmark for the selected/active directory";
1161 ot->
idname =
"FILE_OT_bookmark_add";
1185 if ((index > -1) && (index < nentries)) {
1198 ot->
name =
"Delete Bookmark";
1200 ot->
idname =
"FILE_OT_bookmark_delete";
1224 bool changed =
false;
1226 for (index = 0; fsme; fsme = fsme_next) {
1227 fsme_next = fsme->
next;
1249 ot->
name =
"Cleanup Bookmarks";
1251 ot->
idname =
"FILE_OT_bookmark_cleanup";
1291 switch (direction) {
1296 new_index = totitems - 1;
1301 new_index = (totitems + act_index + direction) % totitems;
1305 if (new_index == act_index) {
1310 if (fsmentry != fsmentry_org) {
1341 {0,
nullptr, 0,
nullptr,
nullptr}};
1344 ot->
name =
"Move Bookmark";
1345 ot->
idname =
"FILE_OT_bookmark_move";
1346 ot->
description =
"Move the active bookmark up/down in the list";
1360 "Direction to move the active bookmark towards");
1386 ot->
name =
"Reset Recent";
1388 ot->
idname =
"FILE_OT_reset_recent";
1404 View2D *v2d = ®ion->v2d;
1406 int numfiles, origfile;
1410 if (sfile ==
nullptr || sfile->
files ==
nullptr || sfile->
layout ==
nullptr) {
1422 origfile =
params->highlight_file;
1424 mx -= region->winrct.xmin;
1425 my -= region->winrct.ymin;
1436 if ((highlight_file >= 0) && (highlight_file < numfiles)) {
1437 params->highlight_file = highlight_file;
1440 params->highlight_file = -1;
1444 params->highlight_file = -1;
1447 return (
params->highlight_file != origfile);
1467 ot->
name =
"Highlight File";
1507 params->flag &= ~FILE_SORT_INVERT;
1520 ot->
name =
"Sort from Column";
1521 ot->
description =
"Change sorting to use column under cursor";
1522 ot->
idname =
"FILE_OT_sort_column_ui_context";
1543 if (!sfile || !sfile->
op) {
1556 sfile->
op =
nullptr;
1566 ot->
name =
"Cancel File Load";
1635 for (i = 0; i < numfiles; i++) {
1639 if (!file->redirection_path) {
1648 if (0 == num_files) {
1658 for (i = 0; i < numfiles; i++) {
1669 if (0 == num_dirs) {
1804 "Show OS Properties for this item"},
1809 "Search for items in this folder"},
1813 "Command Prompt Here",
1814 "Open a command prompt here"},
1815 {0,
nullptr, 0,
nullptr,
nullptr}};
1847 op->
reports,
RPT_ERROR,
"Failure to perform external file operation on \"%s\"", filepath);
1856 const char *description =
"";
1858 return TIP_(description);
1866 ot->
name =
"External File Operation";
1867 ot->
idname =
"FILE_OT_external_operation";
1868 ot->
description =
"Perform external operation on a file or folder";
1886 "Operation to perform on the file or path");
1904 const char *title =
"";
1944 int num_selected = 0;
1946 for (
int i = 0; i < numfiles; i++) {
1953 if (!fileentry || num_selected > 1) {
2007 int num_selected = 0;
2008 for (
int i = 0; i < numfiles; i++) {
2014 if (num_selected > 1) {
2017 else if (num_selected < 1) {
2057 if (file && file->redirection_path) {
2073 if (!file->relpath) {
2088 else if (sfile->
op) {
2094 sfile->
op =
nullptr;
2129 ot->
name =
"Execute File Window";
2184 ot->
name =
"Execute File";
2186 "Perform the current execute action for the file under the cursor (e.g. open the file)";
2187 ot->
idname =
"FILE_OT_mouse_execute";
2224 ot->
name =
"Refresh File List";
2250 if (
params->recursion_level > 1) {
2252 params->recursion_level = 0;
2265 ot->
name =
"Parent Directory";
2301 ot->
name =
"Previous Folder";
2338 ot->
name =
"Next Folder";
2374 if ((
params->rename_flag &
2382 for (i = 0; i < numfiles; i++) {
2395 if (edit_idx == -1) {
2398 if (
params->rename_flag == 0) {
2418 sfile->
scroll_offset = (edit_idx / items_block_size) * items_block_size;
2423 sfile->
layout,
int(region->v2d.cur.xmin),
int(-region->v2d.cur.ymax));
2424 const int last_visible_item = first_visible_item + numfiles_layout + 1;
2429 const int middle_offset =
max_ii(
2430 0, (first_visible_item + last_visible_item) / 2 - (is_horizontal ? 0 : items_block_size));
2432 const int min_middle_offset = numfiles_layout / 2;
2433 const int max_middle_offset = ((numfiles / items_block_size) * items_block_size +
2434 ((numfiles % items_block_size) != 0 ? items_block_size : 0)) -
2435 (numfiles_layout / 2);
2440 const float min_tot_scroll = is_horizontal ? region->v2d.tot.xmin : -region->v2d.tot.ymax;
2441 const float max_tot_scroll = is_horizontal ? region->v2d.tot.xmax : -region->v2d.tot.ymin;
2442 const float min_curr_scroll = is_horizontal ? region->v2d.cur.xmin : -region->v2d.cur.ymax;
2443 const float max_curr_scroll = is_horizontal ? region->v2d.cur.xmax : -region->v2d.cur.ymin;
2450 const bool is_centered = (
abs(middle_offset / items_block_size -
2453 const bool is_full_start = ((sfile->
scroll_offset < min_middle_offset) &&
2454 (min_curr_scroll - min_tot_scroll < 1.0f) &&
2455 (middle_offset - min_middle_offset < items_block_size));
2459 const bool is_full_end = ((sfile->
scroll_offset > max_middle_offset) &&
2460 (max_tot_scroll - max_curr_scroll < 1.0f) &&
2461 (max_middle_offset - middle_offset < items_block_size));
2463 if (is_ready && (is_centered || is_full_start || is_full_end)) {
2489 const int diff_offset = sfile->
scroll_offset / items_block_size -
2490 middle_offset / items_block_size;
2492 const int diff_offset_delta =
abs(diff_offset) *
2496 const int scroll_delta =
max_ii(2, diff_offset_delta / 15);
2498 if (diff_offset < 0) {
2499 if (is_horizontal) {
2500 deltax = -scroll_delta;
2503 deltay = scroll_delta;
2507 if (is_horizontal) {
2508 deltax = scroll_delta;
2511 deltay = -scroll_delta;
2532 ot->
name =
"Smooth Scroll";
2533 ot->
idname =
"FILE_OT_smoothscroll";
2534 ot->
description =
"Smooth scroll to make editable file visible";
2578 ot->
name =
"File Selector Drop";
2579 ot->
idname =
"FILE_OT_filepath_drop";
2625 bool generate_name =
true;
2642 if (dirpath[0] !=
'\0') {
2643 generate_name =
false;
2647 if (generate_name) {
2661 "'%s' given path is OS-invalid, creating '%s' path instead",
2676 "Could not create new folder: %s",
2677 errno ? strerror(errno) :
"unknown error");
2684 if (do_diropen ==
false) {
2686 "File rename handling should immediately clear rename_id when done, "
2687 "because otherwise it will keep taking precedence over renamefile.");
2693 params->rename_flag = rename_flag;
2725 ot->
name =
"Create New Directory";
2727 ot->
idname =
"FILE_OT_directory_new";
2736 ot->
srna,
"directory",
nullptr,
FILE_MAX,
"Directory",
"Name of new directory");
2761 (blendfile_path[0] !=
'\0') ? blendfile_path :
2764 else if (
params->dir[0] ==
'~') {
2769 char tmpstr[
sizeof(
params->dir) - 1];
2779 if (
params->dir[0] ==
'\0')
2803static bool can_create_dir(
const char *dir)
2826 char old_dir[
sizeof(
params->dir)];
2838 char dirpath[
sizeof(
params->dir)];
2871 else if (!can_create_dir(
params->dir)) {
2919 char filepath[
sizeof(
params->dir)];
2921 matched_file[0] =
'\0';
2954 else if (matches > 1) {
2984 ot->
name =
"Toggle Hide Dot Files";
3029 for (i = digits; i > 1; i--) {
3032 if (pic >=
exp && (pic + add) <
exp) {
3051 if (
params && (inc != 0)) {
3064 ot->
name =
"Increment Number in Filename";
3086 if ((file_idx >= 0) && (file_idx < numfiles)) {
3089 if ((require_selected ==
false) ||
3121 ot->
name =
"Rename File or Directory";
3155 for (
int i = 0; i < numfiles; i++) {
3167 const char **r_error_message)
3184 const char *error_message =
nullptr;
3185 bool report_error =
false;
3187 for (
int i = 0; i < numfiles; i++) {
3191 report_error =
true;
3197 const char *error_prefix =
"Could not delete file or directory: ";
3198 const char *errno_message = errno ? strerror(errno) :
"unknown error";
3199 if (error_message !=
nullptr) {
3222 ot->
name =
"Delete Selected Files";
3223 ot->
description =
"Move selected files to the trash or recycle bin";
3260 ot->
idname =
"FILE_OT_start_filter";
3294 ot->
name =
"Edit Directory Path";
3296 ot->
idname =
"FILE_OT_edit_directory_path";
#define BLENDER_BOOKMARK_FILE
const char * BKE_appdir_folder_home()
const char * BKE_appdir_folder_default_or_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)
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)
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_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(...)
#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
#define STRNCPY(dst, src)
size_t BLI_snprintf(char *__restrict dst, size_t dst_maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
#define IN_RANGE(a, b, c)
Compatibility-like things for windows.
void BLI_windows_get_default_root_dir(char root_dir[4])
const char * dirname(char *path)
#define BLT_I18NCONTEXT_DEFAULT_BPYRNA
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)
void uiItemFullO_ptr(uiLayout *layout, wmOperatorType *ot, const char *name, int icon, IDProperty *properties, wmOperatorCallContext context, eUI_Item_Flag flag, PointerRNA *r_opptr)
bool UI_textbutton_activate_but(const bContext *C, uiBut *actbut)
void uiLayoutSetOperatorContext(uiLayout *layout, wmOperatorCallContext opcontext)
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
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
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)
void file_draw_check(bContext *C)
void FILE_OT_edit_directory_path(wmOperatorType *ot)
void FILE_OT_bookmark_add(wmOperatorType *ot)
static int file_refresh_exec(bContext *C, wmOperator *)
static std::string file_external_operation_get_description(bContext *, wmOperatorType *, PointerRNA *ptr)
static int file_next_exec(bContext *C, wmOperator *)
void FILE_OT_select_bookmark(wmOperatorType *ot)
static int file_highlight_invoke(bContext *C, wmOperator *, const wmEvent *event)
static bool file_walk_select_do(bContext *C, SpaceFile *sfile, FileSelectParams *params, const int direction, const bool extend, const bool fill)
static int file_previous_exec(bContext *C, wmOperator *)
void file_directory_enter_handle(bContext *C, void *, void *)
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 int file_cancel_exec(bContext *C, wmOperator *)
void ED_operatormacros_file()
void FILE_OT_refresh(wmOperatorType *ot)
static int file_rename_exec(bContext *C, wmOperator *)
void FILE_OT_mouse_execute(wmOperatorType *ot)
static int file_box_select_modal(bContext *C, wmOperator *op, const wmEvent *event)
static bool file_bookmark_move_poll(bContext *C)
static int file_walk_select_invoke(bContext *C, wmOperator *op, const wmEvent *)
static void filenum_newname(char *filename, size_t filename_maxncpy, int add)
static int file_box_select_exec(bContext *C, wmOperator *op)
static bool file_ensure_hovered_is_active(bContext *C, const wmEvent *event)
static int file_directory_new_exec(bContext *C, wmOperator *op)
static int file_parent_exec(bContext *C, wmOperator *)
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 int file_exec(bContext *C, wmOperator *)
static FileSelect file_select_do(bContext *C, int selected_idx, bool do_diropen)
void file_operator_to_sfile(Main *bmain, SpaceFile *sfile, wmOperator *op)
void FILE_OT_filepath_drop(wmOperatorType *ot)
void FILE_OT_previous(wmOperatorType *ot)
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)
static int bookmark_cleanup_exec(bContext *C, wmOperator *op)
void FILE_OT_bookmark_delete(wmOperatorType *ot)
void FILE_OT_external_operation(wmOperatorType *ot)
void FILE_OT_select_walk(wmOperatorType *ot)
static int filepath_drop_exec(bContext *C, wmOperator *op)
void FILE_OT_filenum(wmOperatorType *ot)
static bool file_os_operations_menu_poll(const bContext *C_const, MenuType *)
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)
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)
void file_sfile_to_operator(bContext *C, Main *bmain, wmOperator *op, SpaceFile *sfile)
static int file_delete_invoke(bContext *C, wmOperator *op, const wmEvent *)
void FILE_OT_smoothscroll(wmOperatorType *ot)
void FILE_OT_bookmark_move(wmOperatorType *ot)
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 int file_delete_exec(bContext *C, wmOperator *op)
static int 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 int file_start_filter_exec(bContext *C, wmOperator *)
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)
static int file_select_all_exec(bContext *C, wmOperator *op)
void FILE_OT_start_filter(wmOperatorType *ot)
void FILE_OT_execute(wmOperatorType *ot)
static FileSelection file_current_selection_range_get(FileList *files)
void file_draw_check_cb(bContext *C, void *, void *)
void file_external_operations_menu_register()
static int file_edit_directory_path_exec(bContext *C, wmOperator *)
void FILE_OT_rename(wmOperatorType *ot)
static int bookmark_add_exec(bContext *C, wmOperator *op)
static void file_expand_directory(bContext *C)
static int file_hidedot_exec(bContext *C, wmOperator *)
void FILE_OT_cancel(wmOperatorType *ot)
bool file_draw_check_exists(SpaceFile *sfile)
static int file_directory_new_invoke(bContext *C, wmOperator *op, const wmEvent *)
static int file_column_sort_ui_context_invoke(bContext *C, wmOperator *, const wmEvent *event)
void FILE_OT_next(wmOperatorType *ot)
@ FILE_BOOKMARK_MOVE_DOWN
@ FILE_BOOKMARK_MOVE_BOTTOM
static bool new_folder_path(const char *parent, char r_dirpath_full[FILE_MAX], char r_dirname[FILE_MAXFILE])
static bool file_execute(bContext *C, SpaceFile *sfile)
void FILE_OT_view_selected(wmOperatorType *ot)
static int file_execute_mouse_invoke(bContext *C, wmOperator *, const wmEvent *event)
static int bookmark_delete_exec(bContext *C, wmOperator *op)
void FILE_OT_highlight(wmOperatorType *ot)
static int file_external_operation_exec(bContext *C, wmOperator *op)
static int file_view_selected_exec(bContext *C, wmOperator *)
static int file_select_exec(bContext *C, wmOperator *op)
static const EnumPropertyItem file_external_operation[]
void FILE_OT_hidedot(wmOperatorType *ot)
static int bookmark_select_exec(bContext *C, wmOperator *op)
static int bookmark_move_exec(bContext *C, wmOperator *op)
static bool file_delete_poll(bContext *C)
static bool fsmenu_write_file_and_refresh_or_report_error(FSMenu *fsmenu, ScrArea *area, ReportList *reports)
static int file_smoothscroll_invoke(bContext *C, wmOperator *, const wmEvent *event)
static int file_filenum_exec(bContext *C, wmOperator *op)
eDirEntry_SelectFlag filelist_entry_select_index_get(FileList *filelist, const int index, FileCheckType check)
void filelist_entry_parent_select_set(FileList *filelist, FileSelType select, const eDirEntry_SelectFlag flag, FileCheckType check)
bool filelist_islibrary(FileList *filelist, char *dir, char **r_group)
void filelist_entries_select_index_range_set(FileList *filelist, FileSelection *sel, FileSelType select, const eDirEntry_SelectFlag flag, FileCheckType check)
const char * filelist_dir(const FileList *filelist)
void filelist_file_get_full_path(const FileList *filelist, const FileDirEntry *file, char r_filepath[])
void filelist_setrecursion(FileList *filelist, const int recursion_level)
void filelist_entry_select_index_set(FileList *filelist, const int index, FileSelType select, const 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, const int index)
FileDirEntry * filelist_file(FileList *filelist, int index)
bool filelist_is_ready(const FileList *filelist)
uint filelist_entry_select_set(const FileList *filelist, const FileDirEntry *entry, FileSelType select, const eDirEntry_SelectFlag flag, FileCheckType check)
eDirEntry_SelectFlag filelist_entry_select_get(FileList *filelist, FileDirEntry *entry, FileCheckType check)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
ccl_device_inline float3 exp(float3 v)
ccl_device_inline float4 select(const int4 mask, const float4 a, const float4 b)
static void add(blender::Map< std::string, std::string > &messages, Message &msg)
GPU_SHADER_INTERFACE_INFO(overlay_edit_curve_handle_iface, "vert").flat(Type pos vertex_in(1, Type::UINT, "data") .vertex_out(overlay_edit_curve_handle_iface) .geometry_layout(PrimitiveIn Frequency::GEOMETRY storage_buf(1, Qualifier::READ, "uint", "data[]", Frequency::GEOMETRY) .push_constant(Type Frequency::GEOMETRY selection[]
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)
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
int RNA_int_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_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
bool(* poll)(bContext *C) ATTR_WARN_UNUSED_RESULT
std::string(* get_description)(bContext *C, wmOperatorType *ot, PointerRNA *ptr)
int(* modal)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
bool(* check)(bContext *C, wmOperator *op)
int(* invoke)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* exec)(bContext *C, wmOperator *op) ATTR_WARN_UNUSED_RESULT
void(* cancel)(bContext *C, wmOperator *op)
struct ReportList * reports
struct wmOperatorType * type
ccl_device_inline int abs(int x)
void WM_cursor_set(wmWindow *win, int curs)
int WM_operator_name_call_ptr(bContext *C, wmOperatorType *ot, wmOperatorCallContext 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)
int WM_operator_name_call(bContext *C, const char *opstring, wmOperatorCallContext context, PointerRNA *properties, const wmEvent *event)
void WM_event_add_mousemove(wmWindow *win)
void WM_gesture_box_cancel(bContext *C, wmOperator *op)
int WM_gesture_box_invoke(bContext *C, wmOperator *op, const wmEvent *event)
int WM_gesture_box_modal(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)
int WM_operator_confirm_ex(bContext *C, wmOperator *op, const char *title, const char *message, const char *confirm_text, int icon, bool cancel_default)
int WM_generic_select_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot)
int WM_generic_select_modal(bContext *C, wmOperator *op, const wmEvent *event)
void WM_operator_properties_create(PointerRNA *ptr, const char *opstring)
void WM_operator_properties_free(PointerRNA *ptr)