[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19894] branches/blender2.5/blender/source : F8Key reloads all python scripts and redraws for quick testing

Campbell Barton ideasman42 at gmail.com
Thu Apr 23 08:58:02 CEST 2009


Revision: 19894
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19894
Author:   campbellbarton
Date:     2009-04-23 08:58:02 +0200 (Thu, 23 Apr 2009)

Log Message:
-----------
F8Key reloads all python scripts and redraws for quick testing
F7 runs test.py also for testing

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c
    branches/blender2.5/blender/source/blender/editors/space_script/script_edit.c
    branches/blender2.5/blender/source/blender/editors/space_script/script_intern.h
    branches/blender2.5/blender/source/blender/editors/space_script/script_ops.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_ops.c
    branches/blender2.5/blender/source/blender/python/BPY_extern.h
    branches/blender2.5/blender/source/blender/python/intern/bpy_interface.c
    branches/blender2.5/blender/source/creator/creator.c

Modified: branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c	2009-04-23 06:07:51 UTC (rev 19893)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c	2009-04-23 06:58:02 UTC (rev 19894)
@@ -2446,6 +2446,9 @@
 	WM_keymap_verify_item(keymap, "SCREEN_OT_repeat_last", F4KEY, KM_PRESS, 0, 0);
 	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);

Modified: branches/blender2.5/blender/source/blender/editors/space_script/script_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_script/script_edit.c	2009-04-23 06:07:51 UTC (rev 19893)
+++ branches/blender2.5/blender/source/blender/editors/space_script/script_edit.c	2009-04-23 06:58:02 UTC (rev 19894)
@@ -86,3 +86,33 @@
 	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;
+}

Modified: branches/blender2.5/blender/source/blender/editors/space_script/script_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_script/script_intern.h	2009-04-23 06:07:51 UTC (rev 19893)
+++ branches/blender2.5/blender/source/blender/editors/space_script/script_intern.h	2009-04-23 06:58:02 UTC (rev 19894)
@@ -40,6 +40,7 @@
 
 /* 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 */
 

Modified: branches/blender2.5/blender/source/blender/editors/space_script/script_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_script/script_ops.c	2009-04-23 06:07:51 UTC (rev 19893)
+++ branches/blender2.5/blender/source/blender/editors/space_script/script_ops.c	2009-04-23 06:58:02 UTC (rev 19894)
@@ -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 @@
 
 	/* 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);
 }
 

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_ops.c	2009-04-23 06:07:51 UTC (rev 19893)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_ops.c	2009-04-23 06:58:02 UTC (rev 19894)
@@ -223,9 +223,6 @@
 	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);
 
 }

Modified: branches/blender2.5/blender/source/blender/python/BPY_extern.h
===================================================================
--- branches/blender2.5/blender/source/blender/python/BPY_extern.h	2009-04-23 06:07:51 UTC (rev 19893)
+++ branches/blender2.5/blender/source/blender/python/BPY_extern.h	2009-04-23 06:58:02 UTC (rev 19894)
@@ -99,7 +99,7 @@
 	/* 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
 	

Modified: branches/blender2.5/blender/source/blender/python/intern/bpy_interface.c
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_interface.c	2009-04-23 06:07:51 UTC (rev 19893)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_interface.c	2009-04-23 06:58:02 UTC (rev 19894)
@@ -347,7 +347,7 @@
 #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 @@
 			
 			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);
 			}
-			
 		}
 	}
 

Modified: branches/blender2.5/blender/source/creator/creator.c
===================================================================
--- branches/blender2.5/blender/source/creator/creator.c	2009-04-23 06:07:51 UTC (rev 19893)
+++ branches/blender2.5/blender/source/creator/creator.c	2009-04-23 06:58:02 UTC (rev 19894)
@@ -529,7 +529,7 @@
 	 */
 	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





More information about the Bf-blender-cvs mailing list