Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-10-11 08:09:11 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-10-11 08:09:11 +0400
commitfa5275cdfa136dd81a15cd2d37f8dadf77f7bcee (patch)
tree6cd4a69631fdcc6df942c1825f2cb191f883c2f6
parente8bcccae33cc9df93b7ab25a51326962fc9e8bf4 (diff)
- bpy.path.abspath(), added optional library argument since any paths from linked datablocks are relative to this, not the blend files path, this saves kludgy path code wherever libraries may be used.
- Image "Edit Externally" operator can now edit relative library images. also minor edits to navmesh.
-rw-r--r--release/scripts/modules/bpy/path.py7
-rw-r--r--release/scripts/startup/bl_operators/image.py15
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c3
-rw-r--r--source/blender/editors/mesh/mesh_navmesh.c6
4 files changed, 18 insertions, 13 deletions
diff --git a/release/scripts/modules/bpy/path.py b/release/scripts/modules/bpy/path.py
index 284fef97795..c8a78d521d5 100644
--- a/release/scripts/modules/bpy/path.py
+++ b/release/scripts/modules/bpy/path.py
@@ -40,7 +40,7 @@ import bpy as _bpy
import os as _os
-def abspath(path, start=None):
+def abspath(path, start=None, library=None):
"""
Returns the absolute path relative to the current blend file
using the "//" prefix.
@@ -48,8 +48,13 @@ def abspath(path, start=None):
:arg start: Relative to this path,
when not set the current filename is used.
:type start: string
+ :arg library: The library this path is from. This is only included for
+ convenience, when the library is not None its path replaces *start*.
+ :type library: :class:`bpy.types.Library`
"""
if path.startswith("//"):
+ if library:
+ start = abspath(_os.path.dirname(library.filepath))
return _os.path.join(_os.path.dirname(_bpy.data.filepath)
if start is None else start,
path[2:],
diff --git a/release/scripts/startup/bl_operators/image.py b/release/scripts/startup/bl_operators/image.py
index 2b190e1aee1..d0778ddafb2 100644
--- a/release/scripts/startup/bl_operators/image.py
+++ b/release/scripts/startup/bl_operators/image.py
@@ -69,8 +69,6 @@ class EditExternally(Operator):
self.report({'ERROR'}, "Image path not set")
return {'CANCELLED'}
- filepath = os.path.normpath(bpy.path.abspath(filepath))
-
if not os.path.exists(filepath):
self.report({'ERROR'},
"Image path %r not found, image may be packed or "
@@ -93,15 +91,16 @@ class EditExternally(Operator):
return {'FINISHED'}
def invoke(self, context, event):
+ import os
try:
- filepath = context.space_data.image.filepath
- except:
- import traceback
- traceback.print_exc()
- self.report({'ERROR'}, "Image not found on disk")
+ image = context.space_data.image
+ except AttributeError:
+ self.report({'ERROR'}, "Context incorrect, image not found")
return {'CANCELLED'}
- self.filepath = filepath
+ filepath = bpy.path.abspath(image.filepath, library=image.library)
+
+ self.filepath = os.path.normpath(filepath)
self.execute(context)
return {'FINISHED'}
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index bc6492f92ae..c379111ccfd 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -64,6 +64,7 @@
#ifdef WITH_GAMEENGINE
#include "BKE_navmesh_conversion.h"
+static DerivedMesh *navmesh_dm_createNavMeshForVisualization(DerivedMesh *dm);
#endif
#include "BLO_sys_types.h" // for intptr_t support
@@ -77,8 +78,6 @@
extern GLubyte stipple_quarttone[128]; /* glutil.c, bad level data */
-static DerivedMesh *navmesh_dm_createNavMeshForVisualization(DerivedMesh *dm);
-
///////////////////////////////////
///////////////////////////////////
diff --git a/source/blender/editors/mesh/mesh_navmesh.c b/source/blender/editors/mesh/mesh_navmesh.c
index bd5f4b5fe68..b8ace26991e 100644
--- a/source/blender/editors/mesh/mesh_navmesh.c
+++ b/source/blender/editors/mesh/mesh_navmesh.c
@@ -459,12 +459,14 @@ static int create_navmesh_exec(bContext *C, wmOperator *op)
MEM_freeN(verts);
MEM_freeN(tris);
+
+ return OPERATOR_FINISHED;
}
else {
BKE_report(op->reports, RPT_ERROR, "No mesh objects found");
- }
- return OPERATOR_FINISHED;
+ return OPERATOR_CANCELLED;
+ }
}
void MESH_OT_navmesh_make(wmOperatorType *ot)