Blender  V2.93
ED_fileselect.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2008 Blender Foundation.
17  * All rights reserved.
18  */
19 
24 #pragma once
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 struct ARegion;
32 struct FileDirEntry;
33 struct FileSelectParams;
34 struct Scene;
35 struct ScrArea;
36 struct SpaceFile;
37 struct bContext;
38 struct bScreen;
39 struct uiBlock;
40 struct wmOperator;
41 struct wmWindow;
42 struct wmWindowManager;
43 
44 #define FILE_LAYOUT_HOR 1
45 #define FILE_LAYOUT_VER 2
46 
52 
55 
56 typedef struct FileAttributeColumn {
58  const char *name;
59 
60  float width;
61  /* The sort type to use when sorting by this column. */
62  int sort_type; /* eFileSortType */
63 
64  /* Alignment of column texts, header text is always left aligned */
65  int text_align; /* eFontStyle_Align */
67 
68 typedef struct FileLayout {
69  /* view settings - XXX - move into own struct */
71  /* Height of the header for the different FileAttributeColumn's. */
73  int prv_w;
74  int prv_h;
75  int tile_w;
76  int tile_h;
81  int rows;
82  /* Those are the major layout columns the files are distributed across, not to be confused with
83  * 'attribute_columns' array below. */
85  int width;
86  int height;
87  int flag;
88  int dirty;
90  /* The columns for each item (name, modification date/time, size). Not to be confused with the
91  * 'flow_columns' above. */
93 
94  /* When we change display size, we may have to update static strings like size of files... */
95  short curr_size;
97 
98 typedef struct FileSelection {
99  int first;
100  int last;
102 
103 struct View2D;
104 struct rcti;
105 
110 
113  const int temp_win_size[],
114  const 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 
125  const struct View2D *v2d,
126  struct rcti *r_rect);
128  const struct View2D *v2d,
129  int x,
130  int y);
132  const struct View2D *v2d,
133  const struct rcti *rect,
134  struct rcti *r_dst);
135 void ED_fileselect_layout_tilepos(FileLayout *layout, int tile, int *x, int *y);
136 
137 void ED_operatormacros_file(void);
138 
139 void ED_fileselect_clear(struct wmWindowManager *wm,
140  struct Scene *owner_scene,
141  struct SpaceFile *sfile);
142 
143 void ED_fileselect_exit(struct wmWindowManager *wm,
144  struct Scene *owner_scene,
145  struct SpaceFile *sfile);
146 
147 bool ED_fileselect_is_asset_browser(const struct SpaceFile *sfile);
148 struct ID *ED_fileselect_active_asset_get(const struct SpaceFile *sfile);
149 
150 /* Activate the file that corresponds to the given ID.
151  * Pass deferred=true to wait for the next refresh before activating. */
152 void ED_fileselect_activate_by_id(struct SpaceFile *sfile,
153  struct ID *asset_id,
154  const bool deferred);
155 
157  int win_size[2],
158  bool *is_maximized);
159 
161  const struct wmOperator *file_operator);
162 
163 int ED_path_extension_type(const char *path);
164 int ED_file_extension_icon(const char *path);
165 int ED_file_icon(const struct FileDirEntry *file);
166 
167 void ED_file_read_bookmarks(void);
168 
169 void ED_file_change_dir_ex(struct bContext *C, struct bScreen *screen, struct ScrArea *area);
170 void ED_file_change_dir(struct bContext *C);
171 
172 void ED_file_path_button(struct bScreen *screen,
173  const struct SpaceFile *sfile,
174  struct FileSelectParams *params,
175  struct uiBlock *block);
176 
177 /* File menu stuff */
178 
179 /* FSMenuEntry's without paths indicate separators */
180 typedef struct FSMenuEntry {
181  struct FSMenuEntry *next;
182 
183  char *path;
184  char name[256]; /* FILE_MAXFILE */
185  short save;
186  short valid;
187  int icon;
189 
190 typedef enum FSMenuCategory {
195  /* For internal use, a list of known paths that are used to match paths to icons and names. */
198 
199 typedef enum FSMenuInsert {
200  FS_INSERT_SORTED = (1 << 0),
201  FS_INSERT_SAVE = (1 << 1),
203  FS_INSERT_FIRST = (1 << 2),
205  FS_INSERT_LAST = (1 << 3),
207 
208 struct FSMenu;
209 struct FSMenuEntry;
210 
211 struct FSMenu *ED_fsmenu_get(void);
212 struct FSMenuEntry *ED_fsmenu_get_category(struct FSMenu *fsmenu, FSMenuCategory category);
213 void ED_fsmenu_set_category(struct FSMenu *fsmenu,
214  FSMenuCategory category,
215  struct FSMenuEntry *fsm_head);
216 
217 int ED_fsmenu_get_nentries(struct FSMenu *fsmenu, FSMenuCategory category);
218 
219 struct FSMenuEntry *ED_fsmenu_get_entry(struct FSMenu *fsmenu, FSMenuCategory category, int idx);
220 
221 char *ED_fsmenu_entry_get_path(struct FSMenuEntry *fsentry);
222 void ED_fsmenu_entry_set_path(struct FSMenuEntry *fsentry, const char *path);
223 
224 char *ED_fsmenu_entry_get_name(struct FSMenuEntry *fsentry);
225 void ED_fsmenu_entry_set_name(struct FSMenuEntry *fsentry, const char *name);
226 
227 int ED_fsmenu_entry_get_icon(struct FSMenuEntry *fsentry);
228 void ED_fsmenu_entry_set_icon(struct FSMenuEntry *fsentry, const int icon);
229 
230 #ifdef __cplusplus
231 }
232 #endif
struct FileLayout FileLayout
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:2910
struct FileAssetSelectParams * ED_fileselect_get_asset_params(const struct SpaceFile *sfile)
void ED_file_change_dir(struct bContext *C)
Definition: filesel.c:1085
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:1020
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:78
int ED_file_icon(const struct FileDirEntry *file)
void ED_fileselect_set_params_from_userdef(struct SpaceFile *sfile)
Definition: filesel.c:548
void ED_file_path_button(struct bScreen *screen, const struct SpaceFile *sfile, struct FileSelectParams *params, struct uiBlock *block)
FileSelection ED_fileselect_layout_offset_rect(FileLayout *layout, const struct rcti *rect)
void ED_fileselect_params_to_userdef(struct SpaceFile *sfile, const int temp_win_size[], const bool is_maximized)
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:717
void ED_fileselect_activate_by_id(struct SpaceFile *sfile, struct ID *asset_id, const bool deferred)
Definition: filesel.c:478
char * ED_fsmenu_entry_get_path(struct FSMenuEntry *fsentry)
Definition: fsmenu.c:258
bool ED_fileselect_layout_is_inside_pt(const FileLayout *layout, const struct View2D *v2d, int x, int y)
void ED_fsmenu_entry_set_icon(struct FSMenuEntry *fsentry, const int icon)
Definition: fsmenu.c:285
void ED_file_change_dir_ex(struct bContext *C, struct bScreen *screen, struct ScrArea *area)
Definition: filesel.c:1049
struct FSMenuEntry * ED_fsmenu_get_category(struct FSMenu *fsmenu, FSMenuCategory category)
Definition: fsmenu.c:86
int ED_file_extension_icon(const char *path)
Definition: filelist.c:2567
void ED_fsmenu_entry_set_path(struct FSMenuEntry *fsentry, const char *path)
Definition: fsmenu.c:263
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_SORTED
@ FS_INSERT_LAST
void ED_fileselect_layout_tilepos(FileLayout *layout, int tile, int *x, int *y)
Definition: filesel.c:772
int ED_fsmenu_get_nentries(struct FSMenu *fsmenu, FSMenuCategory category)
Definition: fsmenu.c:234
struct FileSelectParams * ED_fileselect_ensure_active_params(struct SpaceFile *sfile)
Definition: filesel.c:365
int ED_fileselect_layout_numfiles(FileLayout *layout, struct ARegion *region)
Definition: filesel.c:634
char * ED_fsmenu_entry_get_name(struct FSMenuEntry *fsentry)
Definition: fsmenu.c:307
struct FileSelectParams * ED_fileselect_get_active_params(const struct SpaceFile *sfile)
FileAttributeColumnType
Definition: ED_fileselect.h:47
@ COLUMN_DATETIME
Definition: ED_fileselect.h:50
@ ATTRIBUTE_COLUMN_MAX
Definition: ED_fileselect.h:53
@ COLUMN_NAME
Definition: ED_fileselect.h:49
@ COLUMN_NONE
Definition: ED_fileselect.h:48
@ COLUMN_SIZE
Definition: ED_fileselect.h:51
void ED_fsmenu_set_category(struct FSMenu *fsmenu, FSMenuCategory category, struct FSMenuEntry *fsm_head)
Definition: fsmenu.c:213
struct FileSelectParams * ED_fileselect_get_file_params(const struct SpaceFile *sfile)
int ED_path_extension_type(const char *path)
Definition: filelist.c:2498
struct FileAttributeColumn FileAttributeColumn
void ED_fileselect_clear(struct wmWindowManager *wm, struct Scene *owner_scene, struct SpaceFile *sfile)
Definition: filesel.c:1185
void ED_fileselect_exit(struct wmWindowManager *wm, struct Scene *owner_scene, struct SpaceFile *sfile)
Definition: filesel.c:1199
struct FSMenuEntry * ED_fsmenu_get_entry(struct FSMenu *fsmenu, FSMenuCategory category, int idx)
Definition: fsmenu.c:246
void ED_fileselect_init_layout(struct SpaceFile *sfile, struct ARegion *region)
Definition: filesel.c:940
struct FileSelection FileSelection
int ED_fsmenu_entry_get_icon(struct FSMenuEntry *fsentry)
Definition: fsmenu.c:280
void ED_fsmenu_entry_set_name(struct FSMenuEntry *fsentry, const char *name)
Definition: fsmenu.c:321
FileLayout * ED_fileselect_get_layout(struct SpaceFile *sfile, struct ARegion *region)
Definition: filesel.c:1037
_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:39
FILE * file
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
static void area(int d1, int d2, int e1, int e2, float weights[2])
struct FSMenuEntry * next
char name[256]
Definition: fsmenu.c:68
const char * name
Definition: ED_fileselect.h:58
int prv_border_x
Definition: ED_fileselect.h:79
int prv_border_y
Definition: ED_fileselect.h:80
FileAttributeColumn attribute_columns[ATTRIBUTE_COLUMN_MAX]
Definition: ED_fileselect.h:92
int attribute_column_header_h
Definition: ED_fileselect.h:72
short curr_size
Definition: ED_fileselect.h:95
int tile_border_y
Definition: ED_fileselect.h:78
int flow_columns
Definition: ED_fileselect.h:84
int tile_border_x
Definition: ED_fileselect.h:77
Definition: DNA_ID.h:273