change behavior of restoring old settings
- only attempt to restore old 'user' settings (not local), since bundled blender's always use their own settings. - only automatically run 'bpy.ops.wm.read_homefile()' after copying files if the user hasnt alreadt started making changes in the blend file.
This commit is contained in:
@@ -918,23 +918,24 @@ class WM_OT_copy_prev_settings(bpy.types.Operator):
|
|||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
ver = bpy.app.version
|
ver = bpy.app.version
|
||||||
ver_prev = ((ver[0] * 100) + ver[1]) - 1
|
ver_old = ((ver[0] * 100) + ver[1]) - 1
|
||||||
ver_prev = ver_prev // 100, ver_prev % 100
|
path_src = bpy.utils.resource_path('USER', ver_old // 100, ver_old % 100)
|
||||||
for res in ('USER', 'LOCAL'):
|
path_dst = bpy.utils.resource_path('USER')
|
||||||
path_src = bpy.utils.resource_path(res, ver_prev[0], ver_prev[1])
|
|
||||||
path_dst = bpy.utils.resource_path(res)
|
|
||||||
|
|
||||||
if os.path.isdir(path_dst):
|
if os.path.isdir(path_dst):
|
||||||
self.report({'ERROR'}, "Path %r exists" % path_dst)
|
self.report({'ERROR'}, "Target path %r exists" % path_dst)
|
||||||
return {'CANCELLED'}
|
elif not os.path.isdir(path_src):
|
||||||
else:
|
self.report({'ERROR'}, "Source path %r exists" % path_src)
|
||||||
break
|
else:
|
||||||
|
|
||||||
if os.path.isdir(path_src):
|
|
||||||
shutil.copytree(path_src, path_dst)
|
shutil.copytree(path_src, path_dst)
|
||||||
bpy.ops.wm.read_homefile()
|
# dont loose users work if they open the splash later.
|
||||||
|
if bpy.data.is_saved is bpy.data.is_dirty is False:
|
||||||
|
bpy.ops.wm.read_homefile()
|
||||||
|
else:
|
||||||
|
self.report({'INFO'}, "Reload Start-Up file to restore settings.")
|
||||||
|
return {'FINISHED'}
|
||||||
|
|
||||||
return {'FINISHED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
|
|
||||||
def _webbrowser_bug_fix():
|
def _webbrowser_bug_fix():
|
||||||
|
@@ -1115,23 +1115,17 @@ static int wm_resource_check_prev(void)
|
|||||||
// if(res) printf("USER: %s\n", res);
|
// if(res) printf("USER: %s\n", res);
|
||||||
|
|
||||||
if(res == NULL) {
|
if(res == NULL) {
|
||||||
|
/* with a local dir, copying old files isnt useful since local dir get priority for config */
|
||||||
res= BLI_get_folder_version(BLENDER_RESOURCE_PATH_LOCAL, BLENDER_VERSION, TRUE);
|
res= BLI_get_folder_version(BLENDER_RESOURCE_PATH_LOCAL, BLENDER_VERSION, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if(res) printf("LOCAL: %s\n", res);
|
// if(res) printf("LOCAL: %s\n", res);
|
||||||
|
if(res) {
|
||||||
if(res == NULL) {
|
return FALSE;
|
||||||
int res_dir[]= {BLENDER_RESOURCE_PATH_USER, BLENDER_RESOURCE_PATH_LOCAL, -1};
|
}
|
||||||
int i= 0;
|
else {
|
||||||
|
return (BLI_get_folder_version(BLENDER_RESOURCE_PATH_USER, BLENDER_VERSION - 1, TRUE) != NULL);
|
||||||
for(i= 0; res_dir[i] != -1; i++) {
|
|
||||||
if(BLI_get_folder_version(res_dir[i], BLENDER_VERSION - 1, TRUE)) {
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *UNUSED(arg))
|
static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *UNUSED(arg))
|
||||||
@@ -1206,16 +1200,17 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *UNUSED(ar
|
|||||||
uiItemL(col, "", ICON_NONE);
|
uiItemL(col, "", ICON_NONE);
|
||||||
|
|
||||||
col = uiLayoutColumn(split, 0);
|
col = uiLayoutColumn(split, 0);
|
||||||
|
|
||||||
|
if(wm_resource_check_prev()) {
|
||||||
|
uiItemO(col, NULL, ICON_NEW, "WM_OT_copy_prev_settings");
|
||||||
|
uiItemS(col);
|
||||||
|
}
|
||||||
|
|
||||||
uiItemL(col, "Recent", ICON_NONE);
|
uiItemL(col, "Recent", ICON_NONE);
|
||||||
for(recent = G.recent_files.first, i=0; (i<5) && (recent); recent = recent->next, i++) {
|
for(recent = G.recent_files.first, i=0; (i<5) && (recent); recent = recent->next, i++) {
|
||||||
uiItemStringO(col, BLI_path_basename(recent->filepath), ICON_FILE_BLEND, "WM_OT_open_mainfile", "filepath", recent->filepath);
|
uiItemStringO(col, BLI_path_basename(recent->filepath), ICON_FILE_BLEND, "WM_OT_open_mainfile", "filepath", recent->filepath);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(wm_resource_check_prev()) {
|
|
||||||
uiItemS(col);
|
|
||||||
uiItemO(col, NULL, ICON_NEW, "WM_OT_copy_prev_settings");
|
|
||||||
}
|
|
||||||
|
|
||||||
uiItemS(col);
|
uiItemS(col);
|
||||||
uiItemO(col, NULL, ICON_RECOVER_LAST, "WM_OT_recover_last_session");
|
uiItemO(col, NULL, ICON_RECOVER_LAST, "WM_OT_recover_last_session");
|
||||||
uiItemL(col, "", ICON_NONE);
|
uiItemL(col, "", ICON_NONE);
|
||||||
|
Reference in New Issue
Block a user