Merge branch 'master' into blender2.8
[blender.git] / source / blender / blenkernel / BKE_appdir.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * ***** END GPL LICENSE BLOCK *****
19  */
20 #ifndef __BKE_APPDIR_H__
21 #define __BKE_APPDIR_H__
22
23 /** \file BKE_appdir.h
24  *  \ingroup bli
25  */
26 struct ListBase;
27
28 /* note on naming: typical _get() suffix is omitted here,
29  * since its the main purpose of the API. */
30 const char *BKE_appdir_folder_default(void);
31 const char *BKE_appdir_folder_id_ex(const int folder_id, const char *subfolder, char *path, size_t path_len);
32 const char *BKE_appdir_folder_id(const int folder_id, const char *subfolder);
33 const char *BKE_appdir_folder_id_create(const int folder_id, const char *subfolder);
34 const char *BKE_appdir_folder_id_user_notest(const int folder_id, const char *subfolder);
35 const char *BKE_appdir_folder_id_version(const int folder_id, const int ver, const bool do_check);
36
37 bool BKE_appdir_app_is_portable_install(void);
38 bool BKE_appdir_app_template_any(void);
39 bool BKE_appdir_app_template_id_search(const char *app_template, char *path, size_t path_len);
40 void BKE_appdir_app_templates(struct ListBase *templates);
41
42 /* Initialize path to program executable */
43 void        BKE_appdir_program_path_init(const char *argv0);
44
45 const char *BKE_appdir_program_path(void);
46 const char *BKE_appdir_program_dir(void);
47
48 /* find python executable */
49 bool BKE_appdir_program_python_search(
50         char *fullpath, const size_t fullpath_len,
51         const int version_major, const int version_minor);
52
53 /* Initialize path to temporary directory. */
54 void        BKE_tempdir_init(char *userdir);
55 void        BKE_tempdir_system_init(char *dir);
56
57 const char *BKE_tempdir_base(void);
58 const char *BKE_tempdir_session(void);
59 void        BKE_tempdir_session_purge(void);
60
61
62 /* folder_id */
63 enum {
64         /* general, will find based on user/local/system priority */
65         BLENDER_DATAFILES           = 2,
66
67         /* user-specific */
68         BLENDER_USER_CONFIG         = 31,
69         BLENDER_USER_DATAFILES      = 32,
70         BLENDER_USER_SCRIPTS        = 33,
71         BLENDER_USER_AUTOSAVE       = 34,
72
73         /* system */
74         BLENDER_SYSTEM_DATAFILES    = 52,
75         BLENDER_SYSTEM_SCRIPTS      = 53,
76         BLENDER_SYSTEM_PYTHON       = 54,
77 };
78
79 /* for BKE_appdir_folder_id_version only */
80 enum {
81         BLENDER_RESOURCE_PATH_USER      = 0,
82         BLENDER_RESOURCE_PATH_LOCAL     = 1,
83         BLENDER_RESOURCE_PATH_SYSTEM    = 2,
84 };
85
86 #define BLENDER_STARTUP_FILE    "startup.blend"
87 #define BLENDER_USERPREF_FILE   "userpref.blend"
88 #define BLENDER_QUIT_FILE       "quit.blend"
89 #define BLENDER_BOOKMARK_FILE   "bookmarks.txt"
90 #define BLENDER_HISTORY_FILE    "recent-files.txt"
91
92 #endif  /* __BKE_APPDIR_H__ */