diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-07-30 04:04:02 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-07-31 14:36:12 +0300 |
commit | 07499c04f6126b325e1d6db68e430f36b514b355 (patch) | |
tree | 5c07ee1906eb4b4f2d11187ea36eee742fbe25cd /source | |
parent | 86029b507194fb88a8eb9c86c83255d76adbafed (diff) |
Preferences: don't store preferences in the startup
Simplify preferences by removing the ability to load them from
either the startup.blend or userpref.blend.
Also simplifies updating default preferences by moving
them to a struct definition.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/BKE_blendfile.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/CMakeLists.txt | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/blendfile.c | 30 | ||||
-rw-r--r-- | source/blender/blenloader/BLO_readfile.h | 1 | ||||
-rw-r--r-- | source/blender/blenloader/intern/versioning_defaults.c | 39 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_files.c | 26 |
6 files changed, 48 insertions, 50 deletions
diff --git a/source/blender/blenkernel/BKE_blendfile.h b/source/blender/blenkernel/BKE_blendfile.h index 7fc27321fc7..2bff684948d 100644 --- a/source/blender/blenkernel/BKE_blendfile.h +++ b/source/blender/blenkernel/BKE_blendfile.h @@ -52,6 +52,7 @@ struct UserDef *BKE_blendfile_userdef_read(const char *filepath, struct ReportLi struct UserDef *BKE_blendfile_userdef_read_from_memory(const void *filebuf, int filelength, struct ReportList *reports); +struct UserDef *BKE_blendfile_userdef_from_defaults(void); bool BKE_blendfile_userdef_write(const char *filepath, struct ReportList *reports); bool BKE_blendfile_userdef_write_app_template(const char *filepath, struct ReportList *reports); diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt index e564e91749c..d9bd87d97b5 100644 --- a/source/blender/blenkernel/CMakeLists.txt +++ b/source/blender/blenkernel/CMakeLists.txt @@ -58,6 +58,7 @@ set(INC_SYS ) set(SRC + ${CMAKE_SOURCE_DIR}/release/datafiles/userdef/userdef_default.c intern/CCGSubSurf.c intern/CCGSubSurf_legacy.c intern/CCGSubSurf_opensubdiv.c diff --git a/source/blender/blenkernel/intern/blendfile.c b/source/blender/blenkernel/intern/blendfile.c index e31494ecb4e..813275e097d 100644 --- a/source/blender/blenkernel/intern/blendfile.c +++ b/source/blender/blenkernel/intern/blendfile.c @@ -37,6 +37,7 @@ #include "IMB_colormanagement.h" +#include "BKE_addon.h" #include "BKE_appdir.h" #include "BKE_blender.h" #include "BKE_blender_version.h" @@ -552,6 +553,35 @@ UserDef *BKE_blendfile_userdef_read_from_memory(const void *filebuf, return userdef; } +UserDef *BKE_blendfile_userdef_from_defaults(void) +{ + UserDef *userdef = MEM_mallocN(sizeof(*userdef), __func__); + + memcpy(userdef, &U_default, sizeof(UserDef)); + + /* Add-ons. */ + { + const char *addons[] = { + "io_anim_bvh", + "io_curve_svg", + "io_mesh_ply", + "io_mesh_stl", + "io_mesh_uv_layout", + "io_scene_fbx", + "io_scene_gltf2", + "io_scene_obj", + "io_scene_x3d", + }; + for (int i; i < ARRAY_SIZE(addons); i++) { + bAddon *addon = BKE_addon_new(); + STRNCPY(addon->module, addons[i]); + BLI_addtail(&userdef->addons, addon); + } + } + + return userdef; +} + /** * Only write the userdef in a .blend * \return success diff --git a/source/blender/blenloader/BLO_readfile.h b/source/blender/blenloader/BLO_readfile.h index 8769ed37d16..cc3ea3f2122 100644 --- a/source/blender/blenloader/BLO_readfile.h +++ b/source/blender/blenloader/BLO_readfile.h @@ -176,6 +176,7 @@ struct BlendThumbnail *BLO_thumbnail_from_file(const char *filepath); /* datafiles (generated theme) */ extern const struct bTheme U_theme_default; +extern const struct UserDef U_default; #ifdef __cplusplus } diff --git a/source/blender/blenloader/intern/versioning_defaults.c b/source/blender/blenloader/intern/versioning_defaults.c index 1cbafc7a707..2a7a7eddb79 100644 --- a/source/blender/blenloader/intern/versioning_defaults.c +++ b/source/blender/blenloader/intern/versioning_defaults.c @@ -57,7 +57,7 @@ #include "BLO_readfile.h" /** - * Override values in in-memory startup.blend, avoids re-saving for small changes. + * Update in-memory preferences with system specific values. */ void BLO_update_defaults_userpref_blend(void) { @@ -73,54 +73,17 @@ void BLO_update_defaults_userpref_blend(void) U.flag &= ~USER_SCRIPT_AUTOEXEC_DISABLE; #endif - /* Transform tweak with single click and drag. */ - U.flag |= USER_RELEASECONFIRM; - - U.flag &= ~(USER_DEVELOPER_UI | USER_TOOLTIPS_PYTHON); - - /* Clear addon preferences. */ - for (bAddon *addon = U.addons.first, *addon_next; addon != NULL; addon = addon_next) { - addon_next = addon->next; - - if (addon->prop) { - IDP_FreeProperty(addon->prop); - addon->prop = NULL; - } - } - - /* Ignore the theme saved in the blend file, - * instead use the theme from 'userdef_default_theme.c' */ - { - bTheme *theme = U.themes.first; - memcpy(theme, &U_theme_default, sizeof(bTheme)); - } - - /* Leave temp directory empty, will then get appropriate value per OS. */ - U.tempdir[0] = '\0'; - /* System-specific fonts directory. */ BKE_appdir_font_folder_default(U.fontdir); - /* Only enable tooltips translation by default, - * without actually enabling translation itself, for now. */ - U.transopts = USER_TR_TOOLTIPS; U.memcachelimit = min_ii(BLI_system_memory_max_in_megabytes_int() / 2, 4096); - /* Auto perspective. */ - U.uiflag |= USER_AUTOPERSP; - /* Init weight paint range. */ BKE_colorband_init(&U.coba_weight, true); - /* Default visible section. */ - U.userpref = USER_SECTION_INTERFACE; - /* Default to left click select. */ BKE_keyconfig_pref_set_select_mouse(&U, 0, true); - /* Increase a little for new scrubbing area. */ - U.v2d_min_gridsize = 45; - /* Default studio light. */ BKE_studiolight_default(U.light_param, U.light_ambient); } diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 3e965fc2f55..587905bab0d 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -936,7 +936,7 @@ void wm_homefile_read(bContext *C, filepath_startup, &(const struct BlendFileReadParams){ .is_startup = true, - .skip_flags = skip_flags, + .skip_flags = skip_flags | BLO_READ_SKIP_USERDEF, }, NULL); } @@ -963,6 +963,15 @@ void wm_homefile_read(bContext *C, } if (success == false) { + if (use_userdef) { + if ((skip_flags & BLO_READ_SKIP_USERDEF) == 0) { + UserDef *userdef_default = BKE_blendfile_userdef_from_defaults(); + BKE_blender_userdef_app_template_data_set_and_free(userdef_default); + skip_flags &= ~BLO_READ_SKIP_USERDEF; + read_userdef_from_memory = true; + } + } + success = BKE_blendfile_read_from_memory(C, datatoc_startup_blend, datatoc_startup_blend_size, @@ -972,13 +981,7 @@ void wm_homefile_read(bContext *C, .skip_flags = skip_flags, }, NULL); - if (success) { - if (use_userdef) { - if ((skip_flags & BLO_READ_SKIP_USERDEF) == 0) { - read_userdef_from_memory = true; - } - } - } + if (use_data && BLI_listbase_is_empty(&wmbase)) { wm_clear_default_size(C); } @@ -1015,8 +1018,7 @@ void wm_homefile_read(bContext *C, } if (userdef_template == NULL) { /* we need to have preferences load to overwrite preferences from previous template */ - userdef_template = BKE_blendfile_userdef_read_from_memory( - datatoc_startup_blend, datatoc_startup_blend_size, NULL); + userdef_template = BKE_blendfile_userdef_from_defaults(); read_userdef_from_memory = true; } if (userdef_template) { @@ -1650,7 +1652,7 @@ static int wm_homefile_write_exec(bContext *C, wmOperator *op) /* force save as regular blend file */ fileflags = G.fileflags & ~(G_FILE_COMPRESS | G_FILE_HISTORY); - if (BLO_write_file(bmain, filepath, fileflags | G_FILE_USERPREFS, op->reports, NULL) == 0) { + if (BLO_write_file(bmain, filepath, fileflags, op->reports, NULL) == 0) { printf("fail\n"); return OPERATOR_CANCELLED; } @@ -1734,7 +1736,7 @@ void WM_OT_save_userpref(wmOperatorType *ot) { ot->name = "Save Preferences"; ot->idname = "WM_OT_save_userpref"; - ot->description = "Save preferences separately, overrides startup file preferences"; + ot->description = "Make the current preferences default"; ot->invoke = WM_operator_confirm; ot->exec = wm_userpref_write_exec; |