This adds the ability to switch between different application-configurations without interfering with Blender's normal operation. This commit doesn't include any templates, so its mostly to allow collaboration for the Blender 101 project and other custom configurations. Application templates can be installed & selected from the file menu. Other details: - The `bl_app_template_utils` module handles template activation (similar to `addon_utils`). - The `bl_app_override` module is a general module to assist scripts overriding parts of Blender in reversible way. See docs: https://docs.blender.org/manual/en/dev/advanced/app_templates.html See patch: D2565
90 lines
3.1 KiB
C++
90 lines
3.1 KiB
C++
/*
|
|
* ***** BEGIN GPL LICENSE BLOCK *****
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
* ***** END GPL LICENSE BLOCK *****
|
|
*/
|
|
#ifndef __BKE_APPDIR_H__
|
|
#define __BKE_APPDIR_H__
|
|
|
|
/** \file BKE_appdir.h
|
|
* \ingroup bli
|
|
*/
|
|
|
|
/* note on naming: typical _get() suffix is omitted here,
|
|
* since its the main purpose of the API. */
|
|
const char *BKE_appdir_folder_default(void);
|
|
const char *BKE_appdir_folder_id_ex(const int folder_id, const char *subfolder, char *path, size_t path_len);
|
|
const char *BKE_appdir_folder_id(const int folder_id, const char *subfolder);
|
|
const char *BKE_appdir_folder_id_create(const int folder_id, const char *subfolder);
|
|
const char *BKE_appdir_folder_id_user_notest(const int folder_id, const char *subfolder);
|
|
const char *BKE_appdir_folder_id_version(const int folder_id, const int ver, const bool do_check);
|
|
|
|
bool BKE_appdir_app_template_any(void);
|
|
bool BKE_appdir_app_template_id_search(const char *app_template, char *path, size_t path_len);
|
|
|
|
/* Initialize path to program executable */
|
|
void BKE_appdir_program_path_init(const char *argv0);
|
|
|
|
const char *BKE_appdir_program_path(void);
|
|
const char *BKE_appdir_program_dir(void);
|
|
|
|
/* find python executable */
|
|
bool BKE_appdir_program_python_search(
|
|
char *fullpath, const size_t fullpath_len,
|
|
const int version_major, const int version_minor);
|
|
|
|
/* Initialize path to temporary directory. */
|
|
void BKE_tempdir_init(char *userdir);
|
|
void BKE_tempdir_system_init(char *dir);
|
|
|
|
const char *BKE_tempdir_base(void);
|
|
const char *BKE_tempdir_session(void);
|
|
void BKE_tempdir_session_purge(void);
|
|
|
|
|
|
/* folder_id */
|
|
enum {
|
|
/* general, will find based on user/local/system priority */
|
|
BLENDER_DATAFILES = 2,
|
|
|
|
/* user-specific */
|
|
BLENDER_USER_CONFIG = 31,
|
|
BLENDER_USER_DATAFILES = 32,
|
|
BLENDER_USER_SCRIPTS = 33,
|
|
BLENDER_USER_AUTOSAVE = 34,
|
|
|
|
/* system */
|
|
BLENDER_SYSTEM_DATAFILES = 52,
|
|
BLENDER_SYSTEM_SCRIPTS = 53,
|
|
BLENDER_SYSTEM_PYTHON = 54,
|
|
};
|
|
|
|
/* for BKE_appdir_folder_id_version only */
|
|
enum {
|
|
BLENDER_RESOURCE_PATH_USER = 0,
|
|
BLENDER_RESOURCE_PATH_LOCAL = 1,
|
|
BLENDER_RESOURCE_PATH_SYSTEM = 2,
|
|
};
|
|
|
|
#define BLENDER_STARTUP_FILE "startup.blend"
|
|
#define BLENDER_USERPREF_FILE "userpref.blend"
|
|
#define BLENDER_QUIT_FILE "quit.blend"
|
|
#define BLENDER_BOOKMARK_FILE "bookmarks.txt"
|
|
#define BLENDER_HISTORY_FILE "recent-files.txt"
|
|
|
|
#endif /* __BKE_APPDIR_H__ */
|