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>2018-11-10 02:57:35 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-11-10 02:57:35 +0300
commit0121258770584b495964f5ba241bdead2018eb22 (patch)
treef8d70746768ccbabd1328d40e462de068e162398 /source/blender
parent2f44ea68d3dcbf60887617255136e659d7edff37 (diff)
parent7efac2b0b09d9e76d9fc573ec7936a1c6440c067 (diff)
Merge branch 'master' into blender2.8
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/editors/space_script/script_edit.c2
-rw-r--r--source/blender/freestyle/intern/system/PythonInterpreter.h2
-rw-r--r--source/blender/python/BPY_extern.h4
-rw-r--r--source/blender/python/intern/bpy_interface.c19
-rw-r--r--source/blender/windowmanager/intern/wm_files.c8
5 files changed, 24 insertions, 11 deletions
diff --git a/source/blender/editors/space_script/script_edit.c b/source/blender/editors/space_script/script_edit.c
index beff7c8211d..ee8dcf0ca9a 100644
--- a/source/blender/editors/space_script/script_edit.c
+++ b/source/blender/editors/space_script/script_edit.c
@@ -125,7 +125,7 @@ static int script_reload_exec(bContext *C, wmOperator *op)
/* TODO, this crashes on netrender and keying sets, need to look into why
* disable for now unless running in debug mode */
WM_cursor_wait(1);
- BPY_execute_string(C, "__import__('bpy').utils.load_scripts(reload_scripts=True)");
+ BPY_execute_string(C, (const char *[]){"bpy", NULL}, "bpy.utils.load_scripts(reload_scripts=True)");
WM_cursor_wait(0);
WM_event_add_notifier(C, NC_WINDOW, NULL);
return OPERATOR_FINISHED;
diff --git a/source/blender/freestyle/intern/system/PythonInterpreter.h b/source/blender/freestyle/intern/system/PythonInterpreter.h
index 4f5e94ef7a0..cb49e7718a0 100644
--- a/source/blender/freestyle/intern/system/PythonInterpreter.h
+++ b/source/blender/freestyle/intern/system/PythonInterpreter.h
@@ -112,7 +112,7 @@ public:
BKE_reports_clear(reports);
- if (!BPY_execute_string(_context, str.c_str())) {
+ if (!BPY_execute_string(_context, NULL, str.c_str())) {
BPy_errors_to_report(reports);
cerr << "\nError executing Python script from PythonInterpreter::interpretString" << endl;
cerr << "Name: " << name << endl;
diff --git a/source/blender/python/BPY_extern.h b/source/blender/python/BPY_extern.h
index ff14ba62ed0..5a2f15405c1 100644
--- a/source/blender/python/BPY_extern.h
+++ b/source/blender/python/BPY_extern.h
@@ -80,8 +80,8 @@ bool BPY_execute_string_as_number(struct bContext *C, const char *imports[], con
bool BPY_execute_string_as_intptr(struct bContext *C, const char *imports[], const char *expr, const bool verbose, intptr_t *r_value);
bool BPY_execute_string_as_string(struct bContext *C, const char *imports[], const char *expr, const bool verbose, char **r_value);
-bool BPY_execute_string_ex(struct bContext *C, const char *expr, bool use_eval);
-bool BPY_execute_string(struct bContext *C, const char *expr);
+bool BPY_execute_string_ex(struct bContext *C, const char *imports[], const char *expr, bool use_eval);
+bool BPY_execute_string(struct bContext *C, const char *imports[], const char *expr);
void BPY_text_free_code(struct Text *text);
void BPY_modules_update(struct bContext *C); // XXX - annoying, need this for pointers that get out of date
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)
diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c
index 60d64e6ea5b..318147e8c25 100644
--- a/source/blender/windowmanager/intern/wm_files.c
+++ b/source/blender/windowmanager/intern/wm_files.c
@@ -500,10 +500,14 @@ static void wm_file_read_post(bContext *C, const bool is_startup_file, const boo
if (reset_app_template) {
/* Only run when we have a template path found. */
if (BKE_appdir_app_template_any()) {
- BPY_execute_string(C, "__import__('bl_app_template_utils').reset()");
+ BPY_execute_string(
+ C, (const char *[]){"bl_app_template_utils", NULL},
+ "bl_app_template_utils.reset()");
}
/* sync addons, these may have changed from the defaults */
- BPY_execute_string(C, "__import__('addon_utils').reset_all()");
+ BPY_execute_string(
+ C, (const char *[]){"addon_utils", NULL},
+ "addon_utils.reset_all()");
}
BPY_python_reset(C);
addons_loaded = true;