Blender  V3.3
ED_fileselect.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2008 Blender Foundation. All rights reserved. */
3 
8 #pragma once
9 
10 #include "DNA_uuid_types.h"
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 struct ARegion;
18 struct FileDirEntry;
19 struct FileSelectParams;
20 struct Scene;
21 struct ScrArea;
22 struct SpaceFile;
23 struct bContext;
24 struct bScreen;
25 struct uiBlock;
26 struct wmOperator;
27 struct wmWindow;
28 struct wmWindowManager;
29 
30 #define FILE_LAYOUT_HOR 1
31 #define FILE_LAYOUT_VER 2
32 
38 
41 
42 typedef struct FileAttributeColumn {
44  const char *name;
45 
46  float width;
47  /* The sort type to use when sorting by this column. */
48  int sort_type; /* eFileSortType */
49 
50  /* Alignment of column texts, header text is always left aligned */
51  int text_align; /* eFontStyle_Align */
53 
54 typedef struct FileLayout {
55  /* view settings - XXX: move into own struct. */
57  /* Height of the header for the different FileAttributeColumn's. */
59  int prv_w;
60  int prv_h;
61  int tile_w;
62  int tile_h;
67  int rows;
68  /* Those are the major layout columns the files are distributed across, not to be confused with
69  * 'attribute_columns' array below. */
71  int width;
72  int height;
73  int flag;
74  int dirty;
76  /* The columns for each item (name, modification date/time, size). Not to be confused with the
77  * 'flow_columns' above. */
79 
80  /* When we change display size, we may have to update static strings like size of files... */
81  short curr_size;
83 
84 typedef struct FileSelection {
85  int first;
86  int last;
88 
89 struct View2D;
90 struct rcti;
91 
103 
112 void ED_fileselect_params_to_userdef(struct SpaceFile *sfile,
113  const int temp_win_size[2],
114  bool is_maximized);
115 
116 void ED_fileselect_init_layout(struct SpaceFile *sfile, struct ARegion *region);
117 
118 FileLayout *ED_fileselect_get_layout(struct SpaceFile *sfile, struct ARegion *region);
119 
120 int ED_fileselect_layout_numfiles(FileLayout *layout, struct ARegion *region);
121 int ED_fileselect_layout_offset(FileLayout *layout, int x, int y);
123 
129  const struct View2D *v2d,
130  struct rcti *r_rect);
132  const struct View2D *v2d,
133  int x,
134  int y);
136  const struct View2D *v2d,
137  const struct rcti *rect,
138  struct rcti *r_dst);
139 void ED_fileselect_layout_tilepos(const FileLayout *layout, int tile, int *x, int *y);
140 
141 void ED_operatormacros_file(void);
142 
143 void ED_fileselect_clear(struct wmWindowManager *wm, struct SpaceFile *sfile);
144 
145 void ED_fileselect_exit(struct wmWindowManager *wm, struct SpaceFile *sfile);
146 
147 bool ED_fileselect_is_file_browser(const struct SpaceFile *sfile);
148 bool ED_fileselect_is_asset_browser(const struct SpaceFile *sfile);
150 struct ID *ED_fileselect_active_asset_get(const struct SpaceFile *sfile);
151 
152 void ED_fileselect_activate_asset_catalog(const struct SpaceFile *sfile, bUUID catalog_id);
153 
158 void ED_fileselect_activate_by_id(struct SpaceFile *sfile, struct ID *asset_id, bool deferred);
159 
160 void ED_fileselect_deselect_all(struct SpaceFile *sfile);
161 void ED_fileselect_activate_by_relpath(struct SpaceFile *sfile, const char *relative_path);
162 
164  int win_size[2],
165  bool *is_maximized);
166 
171  const struct wmOperator *file_operator);
177 
178 /* TODO: Maybe we should move this to BLI?
179  * On the other hand, it's using defines from space-file area, so not sure... */
180 int ED_path_extension_type(const char *path);
181 int ED_file_extension_icon(const char *path);
182 int ED_file_icon(const struct FileDirEntry *file);
183 
184 void ED_file_read_bookmarks(void);
185 
190 void ED_file_change_dir_ex(struct bContext *C, struct ScrArea *area);
191 void ED_file_change_dir(struct bContext *C);
192 
193 void ED_file_path_button(struct bScreen *screen,
194  const struct SpaceFile *sfile,
195  struct FileSelectParams *params,
196  struct uiBlock *block);
197 
198 /* File menu stuff */
199 
200 /* FSMenuEntry's without paths indicate separators */
201 typedef struct FSMenuEntry {
202  struct FSMenuEntry *next;
203 
204  char *path;
205  char name[256]; /* FILE_MAXFILE */
206  short save;
207  short valid;
208  int icon;
210 
211 typedef enum FSMenuCategory {
216  /* For internal use, a list of known paths that are used to match paths to icons and names. */
219 
220 typedef enum FSMenuInsert {
221  FS_INSERT_SORTED = (1 << 0),
222  FS_INSERT_SAVE = (1 << 1),
224  FS_INSERT_FIRST = (1 << 2),
226  FS_INSERT_LAST = (1 << 3),
230 
231 struct FSMenu;
232 struct FSMenuEntry;
233 
234 struct FSMenu *ED_fsmenu_get(void);
235 struct FSMenuEntry *ED_fsmenu_get_category(struct FSMenu *fsmenu, FSMenuCategory category);
236 void ED_fsmenu_set_category(struct FSMenu *fsmenu,
237  FSMenuCategory category,
238  struct FSMenuEntry *fsm_head);
239 
240 int ED_fsmenu_get_nentries(struct FSMenu *fsmenu, FSMenuCategory category);
241 
242 struct FSMenuEntry *ED_fsmenu_get_entry(struct FSMenu *fsmenu, FSMenuCategory category, int idx);
243 
244 char *ED_fsmenu_entry_get_path(struct FSMenuEntry *fsentry);
245 void ED_fsmenu_entry_set_path(struct FSMenuEntry *fsentry, const char *path);
246 
247 char *ED_fsmenu_entry_get_name(struct FSMenuEntry *fsentry);
248 void ED_fsmenu_entry_set_name(struct FSMenuEntry *fsentry, const char *name);
249 
250 int ED_fsmenu_entry_get_icon(struct FSMenuEntry *fsentry);
251 void ED_fsmenu_entry_set_icon(struct FSMenuEntry *fsentry, int icon);
252 
253 #ifdef __cplusplus
254 }
255 #endif
struct AssetLibrary AssetLibrary
struct FileLayout FileLayout
void ED_fileselect_deselect_all(struct SpaceFile *sfile)
Definition: filesel.c:564
void ED_fileselect_layout_maskrect(const FileLayout *layout, const struct View2D *v2d, struct rcti *r_rect)
void ED_operatormacros_file(void)
Definition: file_ops.c:3007
struct FileAssetSelectParams * ED_fileselect_get_asset_params(const struct SpaceFile *sfile)
void ED_file_change_dir(struct bContext *C)
Definition: filesel.c:1105
struct FSMenuEntry FSMenuEntry
struct ScrArea * ED_fileselect_handler_area_find(const struct wmWindow *win, const struct wmOperator *file_operator)
void ED_file_read_bookmarks(void)
Definition: space_file.c:1108
FSMenuCategory
@ FS_CATEGORY_RECENT
@ FS_CATEGORY_BOOKMARKS
@ FS_CATEGORY_SYSTEM_BOOKMARKS
@ FS_CATEGORY_OTHER
@ FS_CATEGORY_SYSTEM
struct FSMenu * ED_fsmenu_get(void)
Definition: fsmenu.c:63
int ED_file_icon(const struct FileDirEntry *file)
void ED_fileselect_set_params_from_userdef(struct SpaceFile *sfile)
Definition: filesel.c:601
void ED_file_path_button(struct bScreen *screen, const struct SpaceFile *sfile, struct FileSelectParams *params, struct uiBlock *block)
void ED_fileselect_activate_by_id(struct SpaceFile *sfile, struct ID *asset_id, bool deferred)
Definition: filesel.c:498
FileSelection ED_fileselect_layout_offset_rect(FileLayout *layout, const struct rcti *rect)
struct ID * ED_fileselect_active_asset_get(const struct SpaceFile *sfile)
int ED_fileselect_layout_offset(FileLayout *layout, int x, int y)
Definition: filesel.c:760
char * ED_fsmenu_entry_get_path(struct FSMenuEntry *fsentry)
Definition: fsmenu.c:243
bool ED_fileselect_layout_is_inside_pt(const FileLayout *layout, const struct View2D *v2d, int x, int y)
void ED_fileselect_clear(struct wmWindowManager *wm, struct SpaceFile *sfile)
Definition: filesel.c:1213
void ED_fileselect_activate_asset_catalog(const struct SpaceFile *sfile, bUUID catalog_id)
struct FSMenuEntry * ED_fsmenu_get_category(struct FSMenu *fsmenu, FSMenuCategory category)
Definition: fsmenu.c:71
void ED_file_change_dir_ex(struct bContext *C, struct ScrArea *area)
Definition: filesel.c:1072
void ED_fileselect_params_to_userdef(struct SpaceFile *sfile, const int temp_win_size[2], bool is_maximized)
Definition: filesel.c:631
int ED_file_extension_icon(const char *path)
Definition: filelist.c:2837
void ED_fsmenu_entry_set_path(struct FSMenuEntry *fsentry, const char *path)
Definition: fsmenu.c:248
bool ED_fileselect_layout_isect_rect(const FileLayout *layout, const struct View2D *v2d, const struct rcti *rect, struct rcti *r_dst)
void ED_fileselect_window_params_get(const struct wmWindow *win, int win_size[2], bool *is_maximized)
bool ED_fileselect_is_asset_browser(const struct SpaceFile *sfile)
FSMenuInsert
@ FS_INSERT_SAVE
@ FS_INSERT_FIRST
@ FS_INSERT_NO_VALIDATE
@ FS_INSERT_SORTED
@ FS_INSERT_LAST
bool ED_fileselect_is_file_browser(const struct SpaceFile *sfile)
struct AssetLibrary * ED_fileselect_active_asset_library_get(const struct SpaceFile *sfile)
bool ED_fileselect_is_local_asset_library(const struct SpaceFile *sfile)
int ED_fsmenu_get_nentries(struct FSMenu *fsmenu, FSMenuCategory category)
Definition: fsmenu.c:219
struct FileSelectParams * ED_fileselect_ensure_active_params(struct SpaceFile *sfile)
Definition: filesel.c:352
int ED_fileselect_layout_numfiles(FileLayout *layout, struct ARegion *region)
Definition: filesel.c:677
char * ED_fsmenu_entry_get_name(struct FSMenuEntry *fsentry)
Definition: fsmenu.c:292
struct FileSelectParams * ED_fileselect_get_active_params(const struct SpaceFile *sfile)
FileAttributeColumnType
Definition: ED_fileselect.h:33
@ COLUMN_DATETIME
Definition: ED_fileselect.h:36
@ ATTRIBUTE_COLUMN_MAX
Definition: ED_fileselect.h:39
@ COLUMN_NAME
Definition: ED_fileselect.h:35
@ COLUMN_NONE
Definition: ED_fileselect.h:34
@ COLUMN_SIZE
Definition: ED_fileselect.h:37
void ED_fsmenu_set_category(struct FSMenu *fsmenu, FSMenuCategory category, struct FSMenuEntry *fsm_head)
Definition: fsmenu.c:198
struct FileSelectParams * ED_fileselect_get_file_params(const struct SpaceFile *sfile)
int ED_path_extension_type(const char *path)
Definition: filelist.c:2759
struct ScrArea * ED_fileselect_handler_area_find_any_with_op(const struct wmWindow *win)
struct FileAttributeColumn FileAttributeColumn
void ED_fileselect_activate_by_relpath(struct SpaceFile *sfile, const char *relative_path)
Definition: filesel.c:537
struct FSMenuEntry * ED_fsmenu_get_entry(struct FSMenu *fsmenu, FSMenuCategory category, int idx)
Definition: fsmenu.c:231
void ED_fileselect_init_layout(struct SpaceFile *sfile, struct ARegion *region)
Definition: filesel.c:961
struct FileSelection FileSelection
int ED_fsmenu_entry_get_icon(struct FSMenuEntry *fsentry)
Definition: fsmenu.c:265
void ED_fsmenu_entry_set_name(struct FSMenuEntry *fsentry, const char *name)
Definition: fsmenu.c:306
FileLayout * ED_fileselect_get_layout(struct SpaceFile *sfile, struct ARegion *region)
Definition: filesel.c:1064
void ED_fileselect_exit(struct wmWindowManager *wm, struct SpaceFile *sfile)
Definition: filesel.c:1227
void ED_fileselect_layout_tilepos(const FileLayout *layout, int tile, int *x, int *y)
Definition: filesel.c:811
void ED_fsmenu_entry_set_icon(struct FSMenuEntry *fsentry, int icon)
Definition: fsmenu.c:270
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
#define C
Definition: RandGen.cpp:25
FILE * file
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
ccl_global const KernelWorkTile * tile
static void area(int d1, int d2, int e1, int e2, float weights[2])
struct FSMenuEntry * next
char name[256]
Definition: fsmenu.c:53
const char * name
Definition: ED_fileselect.h:44
int prv_border_x
Definition: ED_fileselect.h:65
int prv_border_y
Definition: ED_fileselect.h:66
FileAttributeColumn attribute_columns[ATTRIBUTE_COLUMN_MAX]
Definition: ED_fileselect.h:78
int attribute_column_header_h
Definition: ED_fileselect.h:58
short curr_size
Definition: ED_fileselect.h:81
int tile_border_y
Definition: ED_fileselect.h:64
int flow_columns
Definition: ED_fileselect.h:70
int tile_border_x
Definition: ED_fileselect.h:63
Definition: DNA_ID.h:368
Universally Unique Identifier according to RFC4122.