F8Key reloads all python scripts and redraws for quick testing
F7 runs test.py also for testing
This commit is contained in:
@@ -2447,6 +2447,9 @@ void ED_keymap_screen(wmWindowManager *wm)
|
||||
WM_keymap_add_item(keymap, "SCREEN_OT_region_flip", F5KEY, KM_PRESS, 0, 0);
|
||||
WM_keymap_verify_item(keymap, "SCREEN_OT_redo_last", F6KEY, KM_PRESS, 0, 0);
|
||||
|
||||
RNA_string_set(WM_keymap_add_item(keymap, "SCRIPT_OT_python_file_run", F7KEY, KM_PRESS, 0, 0)->ptr, "filename", "test.py");
|
||||
WM_keymap_verify_item(keymap, "SCRIPT_OT_python_run_ui_scripts", F8KEY, KM_PRESS, 0, 0);
|
||||
|
||||
/* files */
|
||||
WM_keymap_add_item(keymap, "FILE_OT_exec", RETKEY, KM_PRESS, 0, 0);
|
||||
WM_keymap_add_item(keymap, "FILE_OT_cancel", ESCKEY, KM_PRESS, 0, 0);
|
||||
|
||||
@@ -86,3 +86,33 @@ void SCRIPT_OT_python_file_run(wmOperatorType *ot)
|
||||
RNA_def_string_file_path(ot->srna, "filename", "", 512, "Filename", "");
|
||||
}
|
||||
|
||||
static int run_ui_scripts_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
#ifndef DISABLE_PYTHON
|
||||
BPY_run_ui_scripts(C, 1); /* reload */
|
||||
#endif
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
static int run_ui_scripts_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
||||
{
|
||||
int ret= run_ui_scripts_exec(C, op);
|
||||
|
||||
if(ret==OPERATOR_FINISHED)
|
||||
WM_event_add_notifier(C, NC_WINDOW, NULL);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
void SCRIPT_OT_python_run_ui_scripts(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Reload Python Interface";
|
||||
ot->idname= "SCRIPT_OT_python_run_ui_scripts";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= run_ui_scripts_exec;
|
||||
ot->invoke= run_ui_scripts_invoke;
|
||||
ot->poll= ED_operator_areaactive;
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ void script_keymap(struct wmWindowManager *wm);
|
||||
|
||||
/* script_edit.c */
|
||||
void SCRIPT_OT_python_file_run(struct wmOperatorType *ot);
|
||||
void SCRIPT_OT_python_run_ui_scripts(struct wmOperatorType *ot);
|
||||
|
||||
#endif /* ED_SCRIPT_INTERN_H */
|
||||
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
void script_operatortypes(void)
|
||||
{
|
||||
WM_operatortype_append(SCRIPT_OT_python_file_run);
|
||||
WM_operatortype_append(SCRIPT_OT_python_run_ui_scripts);
|
||||
}
|
||||
|
||||
void script_keymap(wmWindowManager *wm)
|
||||
@@ -68,5 +69,6 @@ void script_keymap(wmWindowManager *wm)
|
||||
|
||||
/* TODO - this is just while we have no way to load a text datablock */
|
||||
RNA_string_set(WM_keymap_add_item(keymap, "SCRIPT_OT_python_file_run", PKEY, KM_PRESS, KM_CTRL|KM_SHIFT|KM_ALT, 0)->ptr, "filename", "test.py");
|
||||
WM_keymap_add_item(keymap, "SCRIPT_OT_python_run_ui_scripts", PKEY, KM_PRESS, KM_SHIFT, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -223,9 +223,6 @@ void view3d_keymap(wmWindowManager *wm)
|
||||
RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_weight_paint_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH);
|
||||
RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_texture_paint_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH);
|
||||
|
||||
/* TODO - this is just while we have no way to load a text datablock */
|
||||
RNA_string_set(WM_keymap_add_item(keymap, "SCRIPT_OT_python_file_run", PKEY, KM_PRESS, KM_CTRL|KM_SHIFT|KM_ALT, 0)->ptr, "filename", "test.py");
|
||||
|
||||
transform_keymap_for_space(wm, keymap, SPACE_VIEW3D);
|
||||
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@ extern "C" {
|
||||
/* 2.5 UI Scripts */
|
||||
int BPY_run_python_script( struct bContext *C, const char *filename, struct Text *text ); // 2.5 working
|
||||
int BPY_run_script_space_draw(struct bContext *C, struct SpaceScript * sc); // 2.5 working
|
||||
void BPY_run_ui_scripts(struct bContext *C);
|
||||
void BPY_run_ui_scripts(struct bContext *C, int reload);
|
||||
// int BPY_run_script_space_listener(struct bContext *C, struct SpaceScript * sc, struct ARegion *ar, struct wmNotifier *wmn); // 2.5 working
|
||||
void BPY_update_modules( void ); // XXX - annoying, need this for pointers that get out of date
|
||||
|
||||
|
||||
@@ -347,7 +347,7 @@ int BPY_run_python_script_space(const char *modulename, const char *func)
|
||||
#endif
|
||||
|
||||
/* XXX this is temporary, need a proper script registration system for 2.5 */
|
||||
void BPY_run_ui_scripts(bContext *C)
|
||||
void BPY_run_ui_scripts(bContext *C, int reload)
|
||||
{
|
||||
#ifdef TIME_REGISTRATION
|
||||
double time = PIL_check_seconds_timer();
|
||||
@@ -396,13 +396,19 @@ void BPY_run_ui_scripts(bContext *C)
|
||||
|
||||
mod= PyImport_ImportModuleLevel(path, NULL, NULL, NULL, 0);
|
||||
if (mod) {
|
||||
Py_DECREF(mod);
|
||||
if (reload) {
|
||||
PyObject *mod_orig= mod;
|
||||
mod= PyImport_ReloadModule(mod);
|
||||
Py_DECREF(mod_orig);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
if(mod) {
|
||||
Py_DECREF(mod); /* could be NULL from reloading */
|
||||
} else {
|
||||
PyErr_Print();
|
||||
fprintf(stderr, "unable to import \"%s\" %s/%s\n", path, dirname, de->d_name);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -529,7 +529,7 @@ int main(int argc, char **argv)
|
||||
*/
|
||||
BPY_post_start_python();
|
||||
|
||||
BPY_run_ui_scripts(C);
|
||||
BPY_run_ui_scripts(C, 0); /* dont need to reload the first time */
|
||||
#endif
|
||||
|
||||
#ifdef WITH_QUICKTIME
|
||||
|
||||
Reference in New Issue
Block a user