[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31332] trunk/blender: - PyLineSpit() - used to print the filename and line number for internal errors now works when executing class functions in a module .

Campbell Barton ideasman42 at gmail.com
Sat Aug 14 07:33:22 CEST 2010


Revision: 31332
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31332
Author:   campbellbarton
Date:     2010-08-14 07:33:20 +0200 (Sat, 14 Aug 2010)

Log Message:
-----------
- PyLineSpit() - used to print the filename and line number for internal errors now works when executing class functions in a module.
- replaced PySys_GetObject("modules") with PyImport_GetModuleDict()
- use defaults for keymap import/export rather then setting the same value every time from the UI scripts.

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/space_userpref.py
    trunk/blender/release/scripts/ui/space_userpref_keymap.py
    trunk/blender/source/blender/python/generic/bgl.c
    trunk/blender/source/blender/python/generic/blf_api.c
    trunk/blender/source/blender/python/generic/bpy_internal_import.c
    trunk/blender/source/blender/python/generic/geometry.c
    trunk/blender/source/blender/python/generic/mathutils.c
    trunk/blender/source/blender/python/generic/noise.c
    trunk/blender/source/blender/python/intern/bpy.c
    trunk/blender/source/blender/python/intern/bpy_operator.c
    trunk/blender/source/blender/python/intern/bpy_props.c
    trunk/blender/source/blender/python/intern/bpy_util.c
    trunk/blender/source/blender/python/intern/bpy_util.h

Modified: trunk/blender/release/scripts/ui/space_userpref.py
===================================================================
--- trunk/blender/release/scripts/ui/space_userpref.py	2010-08-14 01:33:26 UTC (rev 31331)
+++ trunk/blender/release/scripts/ui/space_userpref.py	2010-08-14 05:33:20 UTC (rev 31332)
@@ -91,15 +91,12 @@
         layout.operator_context = 'INVOKE_DEFAULT'
 
         if userpref.active_section == 'INPUT':
-            op = layout.operator("wm.keyconfig_export")
-            op.filepath = "keymap.py"
-            op = layout.operator("wm.keyconfig_import")
-            op.filepath = "keymap.py"
+            layout.operator("wm.keyconfig_export")
+            layout.operator("wm.keyconfig_import")
         elif userpref.active_section == 'ADDONS':
-            op = layout.operator("wm.addon_install")
-            op.filepath = "*.py"
+            layout.operator("wm.addon_install")
         elif userpref.active_section == 'THEMES':
-            op = layout.operator("ui.reset_default_theme")
+            layout.operator("ui.reset_default_theme")
 
 
 class USERPREF_PT_tabs(bpy.types.Panel):

Modified: trunk/blender/release/scripts/ui/space_userpref_keymap.py
===================================================================
--- trunk/blender/release/scripts/ui/space_userpref_keymap.py	2010-08-14 01:33:26 UTC (rev 31331)
+++ trunk/blender/release/scripts/ui/space_userpref_keymap.py	2010-08-14 05:33:20 UTC (rev 31332)
@@ -513,7 +513,7 @@
     bl_idname = "wm.keyconfig_import"
     bl_label = "Import Key Configuration..."
 
-    filepath = StringProperty(name="File Path", description="Filepath to write file to")
+    filepath = StringProperty(name="File Path", description="Filepath to write file to", default="keymap.py")
     filter_folder = BoolProperty(name="Filter folders", description="", default=True, options={'HIDDEN'})
     filter_text = BoolProperty(name="Filter text", description="", default=True, options={'HIDDEN'})
     filter_python = BoolProperty(name="Filter python", description="", default=True, options={'HIDDEN'})
@@ -522,7 +522,7 @@
 
     def execute(self, context):
         import shutil
-        if not self.properties.filepath:
+        if not self.properties.is_property_set("filepath"):
             raise Exception("Filepath not set")
 
         f = open(self.properties.filepath, "r")
@@ -582,14 +582,14 @@
     bl_idname = "wm.keyconfig_export"
     bl_label = "Export Key Configuration..."
 
-    filepath = StringProperty(name="File Path", description="Filepath to write file to")
+    filepath = StringProperty(name="File Path", description="Filepath to write file to", default="keymap.py")
     filter_folder = BoolProperty(name="Filter folders", description="", default=True, options={'HIDDEN'})
     filter_text = BoolProperty(name="Filter text", description="", default=True, options={'HIDDEN'})
     filter_python = BoolProperty(name="Filter python", description="", default=True, options={'HIDDEN'})
     kc_name = StringProperty(name="KeyConfig Name", description="Name to save the key config as")
 
     def execute(self, context):
-        if not self.properties.filepath:
+        if not self.properties.is_property_set("filepath"):
             raise Exception("Filepath not set")
 
         f = open(self.properties.filepath, "w")

Modified: trunk/blender/source/blender/python/generic/bgl.c
===================================================================
--- trunk/blender/source/blender/python/generic/bgl.c	2010-08-14 01:33:26 UTC (rev 31331)
+++ trunk/blender/source/blender/python/generic/bgl.c	2010-08-14 05:33:20 UTC (rev 31332)
@@ -1117,7 +1117,7 @@
 {
 	PyObject *mod, *dict, *item;
 	mod = PyModule_Create(&BGL_module_def);
-	PyDict_SetItemString(PySys_GetObject("modules"), BGL_module_def.m_name, mod);
+	PyDict_SetItemString(PyImport_GetModuleDict(), BGL_module_def.m_name, mod);
 	dict= PyModule_GetDict(mod);
 	
 	if( PyType_Ready( &BGL_bufferType) < 0)

Modified: trunk/blender/source/blender/python/generic/blf_api.c
===================================================================
--- trunk/blender/source/blender/python/generic/blf_api.c	2010-08-14 01:33:26 UTC (rev 31331)
+++ trunk/blender/source/blender/python/generic/blf_api.c	2010-08-14 05:33:20 UTC (rev 31332)
@@ -394,7 +394,7 @@
 	PyObject *submodule;
 
 	submodule = PyModule_Create(&BLF_module_def);
-	PyDict_SetItemString(PySys_GetObject("modules"), BLF_module_def.m_name, submodule);
+	PyDict_SetItemString(PyImport_GetModuleDict(), BLF_module_def.m_name, submodule);
 
 	PyModule_AddIntConstant(submodule, "ROTATION", BLF_ROTATION);
 	PyModule_AddIntConstant(submodule, "CLIPPING", BLF_CLIPPING);

Modified: trunk/blender/source/blender/python/generic/bpy_internal_import.c
===================================================================
--- trunk/blender/source/blender/python/generic/bpy_internal_import.c	2010-08-14 01:33:26 UTC (rev 31331)
+++ trunk/blender/source/blender/python/generic/bpy_internal_import.c	2010-08-14 05:33:20 UTC (rev 31332)
@@ -304,7 +304,7 @@
 
 void bpy_text_clear_modules(int clear_all)
 {
-	PyObject *modules= PySys_GetObject("modules");
+	PyObject *modules= PyImport_GetModuleDict();
 	
 	char *fname;
 	char *file_extension;

Modified: trunk/blender/source/blender/python/generic/geometry.c
===================================================================
--- trunk/blender/source/blender/python/generic/geometry.c	2010-08-14 01:33:26 UTC (rev 31331)
+++ trunk/blender/source/blender/python/generic/geometry.c	2010-08-14 05:33:20 UTC (rev 31332)
@@ -835,7 +835,7 @@
 	PyObject *submodule;
 
 	submodule = PyModule_Create(&M_Geometry_module_def);
-	PyDict_SetItemString(PySys_GetObject("modules"), M_Geometry_module_def.m_name, submodule);
+	PyDict_SetItemString(PyImport_GetModuleDict(), M_Geometry_module_def.m_name, submodule);
 
 	return (submodule);
 }

Modified: trunk/blender/source/blender/python/generic/mathutils.c
===================================================================
--- trunk/blender/source/blender/python/generic/mathutils.c	2010-08-14 01:33:26 UTC (rev 31331)
+++ trunk/blender/source/blender/python/generic/mathutils.c	2010-08-14 05:33:20 UTC (rev 31332)
@@ -258,7 +258,7 @@
 		return NULL;
 
 	submodule = PyModule_Create(&M_Mathutils_module_def);
-	PyDict_SetItemString(PySys_GetObject("modules"), M_Mathutils_module_def.m_name, submodule);
+	PyDict_SetItemString(PyImport_GetModuleDict(), M_Mathutils_module_def.m_name, submodule);
 	
 	/* each type has its own new() function */
 	PyModule_AddObject( submodule, "Vector",		(PyObject *)&vector_Type );

Modified: trunk/blender/source/blender/python/generic/noise.c
===================================================================
--- trunk/blender/source/blender/python/generic/noise.c	2010-08-14 01:33:26 UTC (rev 31331)
+++ trunk/blender/source/blender/python/generic/noise.c	2010-08-14 05:33:20 UTC (rev 31332)
@@ -658,7 +658,7 @@
 PyObject *Noise_Init(void)
 {
 	PyObject *submodule = PyModule_Create(&noise_module_def);
-	PyDict_SetItemString(PySys_GetObject("modules"), noise_module_def.m_name, submodule);
+	PyDict_SetItemString(PyImport_GetModuleDict(), noise_module_def.m_name, submodule);
 
 	/* use current time as seed for random number generator by default */
 	setRndSeed(0);	

Modified: trunk/blender/source/blender/python/intern/bpy.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy.c	2010-08-14 01:33:26 UTC (rev 31331)
+++ trunk/blender/source/blender/python/intern/bpy.c	2010-08-14 05:33:20 UTC (rev 31332)
@@ -158,7 +158,7 @@
 	mod = PyModule_New("_bpy");
 
 	/* add the module so we can import it */
-	PyDict_SetItemString(PySys_GetObject("modules"), "_bpy", mod);
+	PyDict_SetItemString(PyImport_GetModuleDict(), "_bpy", mod);
 	Py_DECREF(mod);
 
 	/* run first, initializes rna types */

Modified: trunk/blender/source/blender/python/intern/bpy_operator.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_operator.c	2010-08-14 01:33:26 UTC (rev 31331)
+++ trunk/blender/source/blender/python/intern/bpy_operator.c	2010-08-14 05:33:20 UTC (rev 31332)
@@ -259,7 +259,7 @@
 	static PyMethodDef pyop_macro_def_meth ={"macro_define", (PyCFunction) PYOP_wrap_macro_define, METH_VARARGS, NULL};
 
 	PyObject *submodule = PyModule_New("_bpy.ops");
-	PyDict_SetItemString(PySys_GetObject("modules"), "_bpy.ops", submodule);
+	PyDict_SetItemString(PyImport_GetModuleDict(), "_bpy.ops", submodule);
 
 	PyModule_AddObject( submodule, "call",	PyCFunction_New(&pyop_call_meth,	NULL) );
 	PyModule_AddObject( submodule, "as_string",PyCFunction_New(&pyop_as_string_meth,NULL) );

Modified: trunk/blender/source/blender/python/intern/bpy_props.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_props.c	2010-08-14 01:33:26 UTC (rev 31331)
+++ trunk/blender/source/blender/python/intern/bpy_props.c	2010-08-14 05:33:20 UTC (rev 31332)
@@ -919,7 +919,7 @@
 {
 	PyObject *submodule;
 	submodule= PyModule_Create(&props_module);
-	PyDict_SetItemString(PySys_GetObject("modules"), props_module.m_name, submodule);
+	PyDict_SetItemString(PyImport_GetModuleDict(), props_module.m_name, submodule);
 
 	/* INCREF since its its assumed that all these functions return the
 	 * module with a new ref like PyDict_New, since they are passed to

Modified: trunk/blender/source/blender/python/intern/bpy_util.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_util.c	2010-08-14 01:33:26 UTC (rev 31331)
+++ trunk/blender/source/blender/python/intern/bpy_util.c	2010-08-14 05:33:20 UTC (rev 31332)
@@ -54,7 +54,7 @@
 }
 
 void PyLineSpit(void) {
-	char *filename;
+	const char *filename;
 	int lineno;
 
 	PyErr_Clear();
@@ -63,7 +63,7 @@
 	fprintf(stderr, "%s:%d\n", filename, lineno);
 }
 
-void BPY_getFileAndNum(char **filename, int *lineno)
+void BPY_getFileAndNum(const char **filename, int *lineno)
 {
 	PyObject *getframe, *frame;
 	PyObject *f_lineno= NULL, *co_filename= NULL;
@@ -83,6 +83,7 @@
 		return;
 	}
 	
+	/* when executing a script */
 	if (filename) {
 		co_filename= PyObject_GetAttrStringArgs(frame, 1, "f_code", "co_filename");
 		if (co_filename==NULL) {
@@ -95,6 +96,25 @@
 		Py_DECREF(co_filename);
 	}
 	
+	/* when executing a module */

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list