[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19492] branches/blender2.5/blender/source /blender: Python Panels WIP

Campbell Barton ideasman42 at gmail.com
Wed Apr 1 14:43:07 CEST 2009


Revision: 19492
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19492
Author:   campbellbarton
Date:     2009-04-01 14:43:07 +0200 (Wed, 01 Apr 2009)

Log Message:
-----------
Python Panels WIP
- Register python panels
- Added a generic class checking function BPY_class_validate() for panels/operators.
- No button drawing yet

Brecht, Added RNA_enum_value_from_id() and RNA_enum_id_from_value() to rna_access.c to do lookups between identifiers and values of EnumPropertyItem's, Not sure if these should go here.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
    branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c
    branches/blender2.5/blender/source/blender/editors/include/ED_mesh.h
    branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
    branches/blender2.5/blender/source/blender/makesrna/RNA_enum_types.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_screen.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_space.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/blender/python/intern/bpy_operator.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_ui.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_util.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_util.h

Added Paths:
-----------
    branches/blender2.5/blender/source/blender/python/intern/bpy_operator_wrap.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_operator_wrap.h
    branches/blender2.5/blender/source/blender/python/intern/bpy_panel_wrap.h

Removed Paths:
-------------
    branches/blender2.5/blender/source/blender/python/intern/bpy_opwrapper.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_opwrapper.h

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/context.c	2009-04-01 08:59:36 UTC (rev 19491)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/context.c	2009-04-01 12:43:07 UTC (rev 19492)
@@ -41,7 +41,6 @@
 
 #include "BKE_context.h"
 #include "BKE_main.h"
-#include "BKE_report.h"
 #include "BKE_screen.h"
 
 #include <string.h>

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c	2009-04-01 08:59:36 UTC (rev 19491)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c	2009-04-01 12:43:07 UTC (rev 19492)
@@ -56,7 +56,22 @@
 	
 	for(art= st->regiontypes.first; art; art= art->next) {
 		BLI_freelistN(&art->drawcalls);
+#ifdef DISABLE_PYTHON
 		BLI_freelistN(&art->paneltypes);
+#else
+		{
+			PanelType *pnl, *pnl_next;
+			for(pnl= art->paneltypes.first; pnl; pnl= pnl_next) {
+				pnl_next= pnl->next;
+
+				if(pnl->py_data)
+					BPY_DECREF(pnl->py_data);
+				
+				MEM_freeN(pnl);
+			}
+			art->paneltypes.first= art->paneltypes.last= NULL;
+		}
+#endif
 		BLI_freelistN(&art->headertypes);
 	}
 	

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_mesh.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_mesh.h	2009-04-01 08:59:36 UTC (rev 19491)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_mesh.h	2009-04-01 12:43:07 UTC (rev 19492)
@@ -43,6 +43,7 @@
 struct MDeformWeight;
 struct MDeformVert;
 struct Scene;
+struct Mesh;
 struct MCol;
 struct UvVertMap;
 struct UvMapVert;
@@ -85,8 +86,8 @@
 
 /*accessor functions for editmesh, all access to editmesh must
   go through them!*/
-struct EditMesh *EM_GetEditMesh(struct Mesh *me);
-void EM_EndEditMesh(struct Mesh *me, struct EditMesh *em);
+struct EditMesh *EM_GetEditMesh(struct Mesh *me);
+void EM_EndEditMesh(struct Mesh *me, struct EditMesh *em);
 
 void		ED_spacetypes_init(void);
 void		ED_keymap_mesh(struct wmWindowManager *wm);

Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/RNA_access.h	2009-04-01 08:59:36 UTC (rev 19491)
+++ branches/blender2.5/blender/source/blender/makesrna/RNA_access.h	2009-04-01 12:43:07 UTC (rev 19492)
@@ -456,6 +456,10 @@
 void RNA_enum_set(PointerRNA *ptr, const char *name, int value);
 int RNA_enum_is_equal(PointerRNA *ptr, const char *name, const char *enumname);
 
+/* lower level functions that donr use a PointerRNA */
+int	RNA_enum_value_from_id(EnumPropertyItem *item, const char *identifier, int *value);
+int	RNA_enum_id_from_value(EnumPropertyItem *item, int value, const char **identifier);
+
 void RNA_string_get(PointerRNA *ptr, const char *name, char *value);
 char *RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen);
 int RNA_string_length(PointerRNA *ptr, const char *name);

Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_enum_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/RNA_enum_types.h	2009-04-01 08:59:36 UTC (rev 19491)
+++ branches/blender2.5/blender/source/blender/makesrna/RNA_enum_types.h	2009-04-01 12:43:07 UTC (rev 19492)
@@ -30,6 +30,8 @@
 /* Types */
 
 extern EnumPropertyItem prop_mode_items[];
+extern EnumPropertyItem space_type_items[];
+extern EnumPropertyItem region_type_items[];
 
 #endif /* RNA_ENUM_TYPES */
 

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2009-04-01 08:59:36 UTC (rev 19491)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2009-04-01 12:43:07 UTC (rev 19492)
@@ -1832,6 +1832,32 @@
 	}
 }
 
+int RNA_enum_value_from_id(EnumPropertyItem *item, const char *identifier, int *value)
+{
+	for( ; item->identifier; item++) {
+		if (strcmp(item->identifier, identifier)==0) {
+			*value= item->value;
+			return 1;
+		}
+	}
+	
+	return 0;
+}
+
+int	RNA_enum_id_from_value(EnumPropertyItem *item, int value, const char **identifier)
+{
+	for( ; item->identifier; item++) {
+		if (item->value==value) {
+			*identifier= item->identifier;
+			return 1;
+		}
+	}
+
+	return 0;
+}
+
+
+
 void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
 {
 	PropertyRNA *prop= RNA_struct_find_property(ptr, name);

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_screen.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_screen.c	2009-04-01 08:59:36 UTC (rev 19491)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_screen.c	2009-04-01 12:43:07 UTC (rev 19492)
@@ -32,6 +32,14 @@
 #include "DNA_screen_types.h"
 #include "DNA_scene_types.h"
 
+EnumPropertyItem region_type_items[] = {
+	{RGN_TYPE_WINDOW, "WINDOW", "Window", ""},
+	{RGN_TYPE_HEADER, "HEADER", "Header", ""},
+	{RGN_TYPE_CHANNELS, "CHANNELS", "Channels", ""},
+	{RGN_TYPE_TEMPORARY, "TEMPORARY", "Temporary", ""},
+	{RGN_TYPE_UI, "BUTTONS_WINDOW", "Window", ""},
+	{0, NULL, NULL, NULL}};
+
 #ifdef RNA_RUNTIME
 
 #else

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_space.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_space.c	2009-04-01 08:59:36 UTC (rev 19491)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_space.c	2009-04-01 12:43:07 UTC (rev 19492)
@@ -33,6 +33,26 @@
 
 #include "WM_types.h"
 
+EnumPropertyItem space_type_items[] = {
+	{SPACE_EMPTY, "EMPTY", "Empty", ""},
+	{SPACE_VIEW3D, "VIEW_3D", "3D View", ""},
+	{SPACE_IPO, "GRAPH_EDITOR", "Graph Editor", ""},
+	{SPACE_OUTLINER, "OUTLINER", "Outliner", ""},
+	{SPACE_BUTS, "BUTTONS_WINDOW", "Buttons Window", ""},
+	{SPACE_FILE, "FILE_BROWSER", "File Browser", ""},
+	{SPACE_IMAGE, "IMAGE_EDITOR", "Image Editor", ""},
+	{SPACE_INFO, "USER_PREFERENCES", "User Preferences", ""},
+	{SPACE_SEQ, "SEQUENCE_EDITOR", "Sequence Editor", ""},
+	{SPACE_TEXT, "TEXT_EDITOR", "Text Editor", ""},
+	//{SPACE_IMASEL, "IMAGE_BROWSER", "Image Browser", ""},
+	{SPACE_SOUND, "AUDIO_WINDOW", "Audio Window", ""},
+	{SPACE_ACTION, "DOPESHEET_EDITOR", "DopeSheet Editor", ""},
+	{SPACE_NLA, "NLA_EDITOR", "NLA Editor", ""},
+	{SPACE_SCRIPT, "SCRIPTS_WINDOW", "Scripts Window", ""},
+	{SPACE_TIME, "TIMELINE", "Timeline", ""},
+	{SPACE_NODE, "NODE_EDITOR", "Node Editor", ""},
+	{0, NULL, NULL, NULL}};
+
 #ifdef RNA_RUNTIME
 
 #include "DNA_scene_types.h"
@@ -117,26 +137,6 @@
 {
 	StructRNA *srna;
 	PropertyRNA *prop;
-
-	static EnumPropertyItem type_items[] = {
-		{SPACE_EMPTY, "EMPTY", "Empty", ""},
-		{SPACE_VIEW3D, "VIEW_3D", "3D View", ""},
-		{SPACE_IPO, "GRAPH_EDITOR", "Graph Editor", ""},
-		{SPACE_OUTLINER, "OUTLINER", "Outliner", ""},
-		{SPACE_BUTS, "BUTTONS_WINDOW", "Buttons Window", ""},
-		{SPACE_FILE, "FILE_BROWSER", "File Browser", ""},
-		{SPACE_IMAGE, "IMAGE_EDITOR", "Image Editor", ""},
-		{SPACE_INFO, "USER_PREFERENCES", "User Preferences", ""},
-		{SPACE_SEQ, "SEQUENCE_EDITOR", "Sequence Editor", ""},
-		{SPACE_TEXT, "TEXT_EDITOR", "Text Editor", ""},
-		//{SPACE_IMASEL, "IMAGE_BROWSER", "Image Browser", ""},
-		{SPACE_SOUND, "AUDIO_WINDOW", "Audio Window", ""},
-		{SPACE_ACTION, "DOPESHEET_EDITOR", "DopeSheet Editor", ""},
-		{SPACE_NLA, "NLA_EDITOR", "NLA Editor", ""},
-		{SPACE_SCRIPT, "SCRIPTS_WINDOW", "Scripts Window", ""},
-		{SPACE_TIME, "TIMELINE", "Timeline", ""},
-		{SPACE_NODE, "NODE_EDITOR", "Node Editor", ""},
-		{0, NULL, NULL, NULL}};
 	
 	srna= RNA_def_struct(brna, "Space", NULL);
 	RNA_def_struct_sdna(srna, "SpaceLink");
@@ -145,7 +145,7 @@
 	
 	prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
 	RNA_def_property_enum_sdna(prop, NULL, "spacetype");
-	RNA_def_property_enum_items(prop, type_items);
+	RNA_def_property_enum_items(prop, space_type_items);
 	RNA_def_property_clear_flag(prop, PROP_EDITABLE);
 	RNA_def_property_ui_text(prop, "Type", "Space data type.");
 }

Modified: branches/blender2.5/blender/source/blender/python/BPY_extern.h
===================================================================
--- branches/blender2.5/blender/source/blender/python/BPY_extern.h	2009-04-01 08:59:36 UTC (rev 19491)
+++ branches/blender2.5/blender/source/blender/python/BPY_extern.h	2009-04-01 12:43:07 UTC (rev 19492)
@@ -139,7 +139,8 @@
 	void BPY_scripts_clear_pyobjects( void );
 	
 	void error_pyscript( void );
-	
+	void BPY_DECREF(void *pyob_ptr);	/* Py_DECREF() */
+
 /* void BPY_Err_Handle(struct Text *text); */
 /* void BPY_clear_bad_scriptlink(struct ID *id, struct Text *byebye); */
 /* void BPY_clear_bad_scriptlist(struct ListBase *, struct Text *byebye); */

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-01 08:59:36 UTC (rev 19491)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_interface.c	2009-04-01 12:43:07 UTC (rev 19492)
@@ -241,6 +241,11 @@
 	return 1;
 }
 
+void BPY_DECREF(void *pyob_ptr)
+{
+	Py_DECREF((PyObject *)pyob_ptr);
+}
+
 #if 0
 /* called from the the scripts window, assume context is ok */
 int BPY_run_python_script_space(const char *modulename, const char *func)

Modified: branches/blender2.5/blender/source/blender/python/intern/bpy_operator.c
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_operator.c	2009-04-01 08:59:36 UTC (rev 19491)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_operator.c	2009-04-01 12:43:07 UTC (rev 19492)
@@ -24,7 +24,7 @@
  */
 
 #include "bpy_operator.h"
-#include "bpy_opwrapper.h"
+#include "bpy_operator_wrap.h"
 #include "bpy_rna.h" /* for setting arg props only - pyrna_py_to_prop() */

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list