Merge branch 'master' into blender2.8
This commit is contained in:
@@ -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
|
/* TODO, this crashes on netrender and keying sets, need to look into why
|
||||||
* disable for now unless running in debug mode */
|
* disable for now unless running in debug mode */
|
||||||
WM_cursor_wait(1);
|
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_cursor_wait(0);
|
||||||
WM_event_add_notifier(C, NC_WINDOW, NULL);
|
WM_event_add_notifier(C, NC_WINDOW, NULL);
|
||||||
return OPERATOR_FINISHED;
|
return OPERATOR_FINISHED;
|
||||||
|
@@ -112,7 +112,7 @@ public:
|
|||||||
|
|
||||||
BKE_reports_clear(reports);
|
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);
|
BPy_errors_to_report(reports);
|
||||||
cerr << "\nError executing Python script from PythonInterpreter::interpretString" << endl;
|
cerr << "\nError executing Python script from PythonInterpreter::interpretString" << endl;
|
||||||
cerr << "Name: " << name << endl;
|
cerr << "Name: " << name << endl;
|
||||||
|
@@ -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_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_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_ex(struct bContext *C, const char *imports[], const char *expr, bool use_eval);
|
||||||
bool BPY_execute_string(struct bContext *C, const char *expr);
|
bool BPY_execute_string(struct bContext *C, const char *imports[], const char *expr);
|
||||||
|
|
||||||
void BPY_text_free_code(struct Text *text);
|
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
|
void BPY_modules_update(struct bContext *C); // XXX - annoying, need this for pointers that get out of date
|
||||||
|
@@ -693,7 +693,9 @@ bool BPY_execute_string_as_intptr(
|
|||||||
return ok;
|
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);
|
BLI_assert(expr);
|
||||||
PyGILState_STATE gilstate;
|
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();
|
bmain_back = bpy_import_main_get();
|
||||||
bpy_import_main_set(CTX_data_main(C));
|
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);
|
bpy_import_main_set(bmain_back);
|
||||||
|
|
||||||
if (retval == NULL) {
|
if (retval == NULL) {
|
||||||
ok = false;
|
ok = false;
|
||||||
|
|
||||||
BPy_errors_to_report(CTX_wm_reports(C));
|
BPy_errors_to_report(CTX_wm_reports(C));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -735,9 +742,11 @@ bool BPY_execute_string_ex(bContext *C, const char *expr, bool use_eval)
|
|||||||
return ok;
|
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)
|
void BPY_modules_load_user(bContext *C)
|
||||||
|
@@ -500,10 +500,14 @@ static void wm_file_read_post(bContext *C, const bool is_startup_file, const boo
|
|||||||
if (reset_app_template) {
|
if (reset_app_template) {
|
||||||
/* Only run when we have a template path found. */
|
/* Only run when we have a template path found. */
|
||||||
if (BKE_appdir_app_template_any()) {
|
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 */
|
/* 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);
|
BPY_python_reset(C);
|
||||||
addons_loaded = true;
|
addons_loaded = true;
|
||||||
|
@@ -1684,7 +1684,7 @@ static int arg_handle_python_expr_run(int argc, const char **argv, void *data)
|
|||||||
/* workaround for scripts not getting a bpy.context.scene, causes internal errors elsewhere */
|
/* workaround for scripts not getting a bpy.context.scene, causes internal errors elsewhere */
|
||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
bool ok;
|
bool ok;
|
||||||
BPY_CTX_SETUP(ok = BPY_execute_string_ex(C, argv[1], false));
|
BPY_CTX_SETUP(ok = BPY_execute_string_ex(C, NULL, argv[1], false));
|
||||||
if (!ok && app_state.exit_code_on_error.python) {
|
if (!ok && app_state.exit_code_on_error.python) {
|
||||||
printf("\nError: script failed, expr: '%s', exiting.\n", argv[1]);
|
printf("\nError: script failed, expr: '%s', exiting.\n", argv[1]);
|
||||||
exit(app_state.exit_code_on_error.python);
|
exit(app_state.exit_code_on_error.python);
|
||||||
@@ -1710,7 +1710,7 @@ static int arg_handle_python_console_run(int UNUSED(argc), const char **argv, vo
|
|||||||
#ifdef WITH_PYTHON
|
#ifdef WITH_PYTHON
|
||||||
bContext *C = data;
|
bContext *C = data;
|
||||||
|
|
||||||
BPY_CTX_SETUP(BPY_execute_string(C, "__import__('code').interact()"));
|
BPY_CTX_SETUP(BPY_execute_string(C, (const char *[]){"code", NULL}, "code.interact()"));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
#else
|
#else
|
||||||
@@ -1766,7 +1766,7 @@ static int arg_handle_addons_set(int argc, const char **argv, void *data)
|
|||||||
BLI_snprintf(str, slen, script_str, argv[1]);
|
BLI_snprintf(str, slen, script_str, argv[1]);
|
||||||
|
|
||||||
BLI_assert(strlen(str) + 1 == slen);
|
BLI_assert(strlen(str) + 1 == slen);
|
||||||
BPY_CTX_SETUP(BPY_execute_string_ex(C, str, false));
|
BPY_CTX_SETUP(BPY_execute_string_ex(C, NULL, str, false));
|
||||||
free(str);
|
free(str);
|
||||||
#else
|
#else
|
||||||
UNUSED_VARS(argv, data);
|
UNUSED_VARS(argv, data);
|
||||||
|
Reference in New Issue
Block a user