From c05785ec93d3b7c38d2b7b5070bb7ad124dd68dc Mon Sep 17 00:00:00 2001 From: julianeisel Date: Sun, 23 Nov 2014 19:38:27 +0100 Subject: Fix T42649: Use Relative Paths for Node Editor & 3D View Images Images are now added with relative paths to the Node Editor and the 3D View. --- source/blender/editors/space_node/node_add.c | 11 ++++++++++- source/blender/editors/space_view3d/view3d_edit.c | 12 +++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) (limited to 'source') diff --git a/source/blender/editors/space_node/node_add.c b/source/blender/editors/space_node/node_add.c index 7140eb79440..33eb24ae92a 100644 --- a/source/blender/editors/space_node/node_add.c +++ b/source/blender/editors/space_node/node_add.c @@ -37,6 +37,7 @@ #include "BLI_listbase.h" #include "BLI_math.h" +#include "BLI_path_util.h" #include "BLF_translation.h" @@ -307,6 +308,8 @@ static int node_add_file_exec(bContext *C, wmOperator *op) Image *ima = NULL; int type = 0; + const bool is_relative_path = RNA_boolean_get(op->ptr, "relative_path"); + /* check input variables */ if (RNA_struct_property_is_set(op->ptr, "filepath")) { char path[FILE_MAX]; @@ -321,6 +324,12 @@ static int node_add_file_exec(bContext *C, wmOperator *op) path, errno ? strerror(errno) : TIP_("unsupported format")); return OPERATOR_CANCELLED; } + + if (is_relative_path) { + Main *bmain = CTX_data_main(C); + const char *relbase = ID_BLEND_PATH(bmain, &ima->id); + BLI_path_rel(ima->name, relbase); + } } else if (RNA_struct_property_is_set(op->ptr, "name")) { char name[MAX_ID_NAME - 2]; @@ -398,7 +407,7 @@ void NODE_OT_add_file(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; WM_operator_properties_filesel(ot, FOLDERFILE | IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, - WM_FILESEL_FILEPATH, FILE_DEFAULTDISPLAY); //XXX TODO, relative_path + WM_FILESEL_FILEPATH | WM_FILESEL_RELPATH, FILE_DEFAULTDISPLAY); RNA_def_string(ot->srna, "name", "Image", MAX_ID_NAME - 2, "Name", "Datablock name to assign"); } diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index d3bd59cacc8..1eed56a750b 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -51,6 +51,7 @@ #include "BKE_font.h" #include "BKE_image.h" #include "BKE_library.h" +#include "BKE_main.h" #include "BKE_object.h" #include "BKE_paint.h" #include "BKE_report.h" @@ -4282,6 +4283,8 @@ static int background_image_add_invoke(bContext *C, wmOperator *op, const wmEven Image *ima = NULL; BGpic *bgpic; char name[MAX_ID_NAME - 2]; + + const bool is_relative_path = RNA_boolean_get(op->ptr, "relative_path"); /* check input variables */ if (RNA_struct_property_is_set(op->ptr, "filepath")) { @@ -4298,6 +4301,12 @@ static int background_image_add_invoke(bContext *C, wmOperator *op, const wmEven bgpic = background_image_add(C); if (ima) { + if (is_relative_path) { + Main *bmain = CTX_data_main(C); + const char *relbase = ID_BLEND_PATH(bmain, &ima->id); + BLI_path_rel(ima->name, relbase); + } + bgpic->ima = ima; id_us_plus(&ima->id); @@ -4330,7 +4339,8 @@ void VIEW3D_OT_background_image_add(wmOperatorType *ot) /* properties */ RNA_def_string(ot->srna, "name", "Image", MAX_ID_NAME - 2, "Name", "Image name to assign"); - RNA_def_string(ot->srna, "filepath", "Path", FILE_MAX, "Filepath", "Path to image file"); + WM_operator_properties_filesel(ot, FOLDERFILE | IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, + WM_FILESEL_FILEPATH | WM_FILESEL_RELPATH, FILE_DEFAULTDISPLAY); } -- cgit v1.2.3