[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