diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-11-10 02:57:35 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-11-10 02:57:35 +0300 |
commit | 0121258770584b495964f5ba241bdead2018eb22 (patch) | |
tree | f8d70746768ccbabd1328d40e462de068e162398 /source/blender/python/intern | |
parent | 2f44ea68d3dcbf60887617255136e659d7edff37 (diff) | |
parent | 7efac2b0b09d9e76d9fc573ec7936a1c6440c067 (diff) |
Merge branch 'master' into blender2.8
Diffstat (limited to 'source/blender/python/intern')
-rw-r--r-- | source/blender/python/intern/bpy_interface.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index d915c13fe54..8ac1d807e38 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -693,7 +693,9 @@ bool BPY_execute_string_as_intptr( return ok; } -bool BPY_execute_string_ex(bContext *C, const char *expr, bool use_eval) +bool BPY_execute_string_ex( + bContext *C, const char *imports[], + const char *expr, bool use_eval) { BLI_assert(expr); PyGILState_STATE gilstate; @@ -715,13 +717,18 @@ bool BPY_execute_string_ex(bContext *C, const char *expr, bool use_eval) bmain_back = bpy_import_main_get(); bpy_import_main_set(CTX_data_main(C)); - retval = PyRun_String(expr, use_eval ? Py_eval_input : Py_file_input, py_dict, py_dict); + if (imports && (!PyC_NameSpace_ImportArray(py_dict, imports))) { + Py_DECREF(py_dict); + retval = NULL; + } + else { + retval = PyRun_String(expr, use_eval ? Py_eval_input : Py_file_input, py_dict, py_dict); + } bpy_import_main_set(bmain_back); if (retval == NULL) { ok = false; - BPy_errors_to_report(CTX_wm_reports(C)); } else { @@ -735,9 +742,11 @@ bool BPY_execute_string_ex(bContext *C, const char *expr, bool use_eval) return ok; } -bool BPY_execute_string(bContext *C, const char *expr) +bool BPY_execute_string( + bContext *C, const char *imports[], + const char *expr) { - return BPY_execute_string_ex(C, expr, true); + return BPY_execute_string_ex(C, imports, expr, true); } void BPY_modules_load_user(bContext *C) |