Cleanup: remove redundant doxygen \file argument
[blender.git] / source / blender / editors / include / ED_fileselect.h
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
20 /** \file \ingroup editors
21  */
22
23 #ifndef __ED_FILESELECT_H__
24 #define __ED_FILESELECT_H__
25
26 struct ARegion;
27 struct FileSelectParams;
28 struct ScrArea;
29 struct SpaceFile;
30 struct bContext;
31 struct wmWindowManager;
32
33 #define FILE_LAYOUT_HOR 1
34 #define FILE_LAYOUT_VER 2
35
36 #define MAX_FILE_COLUMN 4
37
38 typedef enum FileListColumns {
39         COLUMN_NAME = 0,
40         COLUMN_DATE,
41         COLUMN_TIME,
42         COLUMN_SIZE,
43 } FileListColumns;
44
45 typedef struct FileLayout {
46         /* view settings - XXX - move into own struct */
47         int prv_w;
48         int prv_h;
49         int tile_w;
50         int tile_h;
51         int tile_border_x;
52         int tile_border_y;
53         int prv_border_x;
54         int prv_border_y;
55         int rows;
56         int columns;
57         int width;
58         int height;
59         int flag;
60         int dirty;
61         int textheight;
62         float column_widths[MAX_FILE_COLUMN];
63
64         /* When we change display size, we may have to update static strings like size of files... */
65         short curr_size;
66 } FileLayout;
67
68 typedef struct FileSelection {
69         int first;
70         int last;
71 } FileSelection;
72
73 struct rcti;
74
75 struct FileSelectParams *ED_fileselect_get_params(struct SpaceFile *sfile);
76
77 short ED_fileselect_set_params(struct SpaceFile *sfile);
78
79 void ED_fileselect_reset_params(struct SpaceFile *sfile);
80
81
82 void ED_fileselect_init_layout(struct SpaceFile *sfile, struct ARegion *ar);
83
84
85 FileLayout *ED_fileselect_get_layout(struct SpaceFile *sfile, struct ARegion *ar);
86
87 int ED_fileselect_layout_numfiles(FileLayout *layout, struct ARegion *ar);
88 int ED_fileselect_layout_offset(FileLayout *layout, int x, int y);
89 FileSelection ED_fileselect_layout_offset_rect(FileLayout *layout, const struct rcti *rect);
90
91 void ED_fileselect_layout_tilepos(FileLayout *layout, int tile, int *x, int *y);
92
93 void ED_operatormacros_file(void);
94
95 void ED_fileselect_clear(struct wmWindowManager *wm, struct ScrArea *sa, struct SpaceFile *sfile);
96
97 void ED_fileselect_exit(struct wmWindowManager *wm, struct ScrArea *sa, struct SpaceFile *sfile);
98
99 int ED_path_extension_type(const char *path);
100 int ED_file_extension_icon(const char *path);
101
102 void ED_file_read_bookmarks(void);
103
104 void ED_file_change_dir(struct bContext *C);
105
106 /* File menu stuff */
107
108 /* FSMenuEntry's without paths indicate separators */
109 typedef struct FSMenuEntry {
110         struct FSMenuEntry *next;
111
112         char *path;
113         char name[256];  /* FILE_MAXFILE */
114         short save;
115         short valid;
116         short pad[2];
117 } FSMenuEntry;
118
119 typedef enum FSMenuCategory {
120         FS_CATEGORY_SYSTEM,
121         FS_CATEGORY_SYSTEM_BOOKMARKS,
122         FS_CATEGORY_BOOKMARKS,
123         FS_CATEGORY_RECENT
124 } FSMenuCategory;
125
126 typedef enum FSMenuInsert {
127         FS_INSERT_SORTED = (1 << 0),
128         FS_INSERT_SAVE   = (1 << 1),
129         /** moves the item to the front of the list when its not already there */
130         FS_INSERT_FIRST  = (1 << 2),
131         /** just append to preseve delivered order */
132         FS_INSERT_LAST   = (1 << 3),
133 } FSMenuInsert;
134
135 struct FSMenu;
136 struct FSMenuEntry;
137
138 struct FSMenu *ED_fsmenu_get(void);
139 struct FSMenuEntry *ED_fsmenu_get_category(struct FSMenu *fsmenu, FSMenuCategory category);
140 void ED_fsmenu_set_category(struct FSMenu *fsmenu, FSMenuCategory category, struct FSMenuEntry *fsm_head);
141
142 int ED_fsmenu_get_nentries(struct FSMenu *fsmenu, FSMenuCategory category);
143
144 struct FSMenuEntry *ED_fsmenu_get_entry(struct FSMenu *fsmenu, FSMenuCategory category, int index);
145
146 char *ED_fsmenu_entry_get_path(struct FSMenuEntry *fsentry);
147 void ED_fsmenu_entry_set_path(struct FSMenuEntry *fsentry, const char *path);
148
149 char *ED_fsmenu_entry_get_name(struct FSMenuEntry *fsentry);
150 void ED_fsmenu_entry_set_name(struct FSMenuEntry *fsentry, const char *name);
151
152 #endif /* __ED_FILESELECT_H__ */