[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21056] branches/blender2.5/blender/source /blender: RNA read-only wrapped wmEvent so python operators invoke functions

Campbell Barton ideasman42 at gmail.com
Sun Jun 21 16:30:59 CEST 2009


Revision: 21056
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21056
Author:   campbellbarton
Date:     2009-06-21 16:30:59 +0200 (Sun, 21 Jun 2009)

Log Message:
-----------
RNA read-only wrapped wmEvent so python operators invoke functions
* 2 new enums event_value_items and event_type_items in RNA_enum_types.h
* WM_key_event_string now uses an RNA enum lookup rather then its own switch statement.
* moved wmEvent from WM_types.h into DNA_windowmanager_types.h
* added RNA_enum_identifier and RNA_enum_name to get strings from an enum value.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/transform/transform_input.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_ndofinput.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_numinput.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.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_wm.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_operator_wrap.c
    branches/blender2.5/blender/source/blender/windowmanager/WM_types.h
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_keymap.c

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform_input.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform_input.c	2009-06-21 14:10:17 UTC (rev 21055)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform_input.c	2009-06-21 14:30:59 UTC (rev 21056)
@@ -26,6 +26,7 @@
 #include <math.h>
 
 #include "DNA_screen_types.h"
+#include "DNA_windowmanager_types.h"
 
 #include "BLI_arithb.h"
 

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform_ndofinput.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform_ndofinput.c	2009-06-21 14:10:17 UTC (rev 21055)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform_ndofinput.c	2009-06-21 14:30:59 UTC (rev 21056)
@@ -31,6 +31,7 @@
 #include "BKE_utildefines.h"	/* ABS */
 
 #include "DNA_view3d_types.h" /* for G.vd (view3d) */
+#include "DNA_windowmanager_types.h" /* for G.vd (view3d) */
 
 #include "WM_types.h"
 

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform_numinput.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform_numinput.c	2009-06-21 14:10:17 UTC (rev 21055)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform_numinput.c	2009-06-21 14:30:59 UTC (rev 21056)
@@ -34,6 +34,7 @@
 #include "BKE_utildefines.h"	/* ABS */
 
 #include "WM_types.h"
+#include "DNA_windowmanager_types.h"
 
 #include "transform.h"
 

Modified: branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h	2009-06-21 14:10:17 UTC (rev 21055)
+++ branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h	2009-06-21 14:30:59 UTC (rev 21056)
@@ -222,5 +222,36 @@
 	WM_RADIALCONTROL_ANGLE
 } wmRadialControlMode;
 
+/* ************** wmEvent ************************ */
+/* for read-only rna access, dont save this */
+
+/* each event should have full modifier state */
+/* event comes from eventmanager and from keymap */
+typedef struct wmEvent {
+	struct wmEvent *next, *prev;
+	
+	short type;			/* event code itself (short, is also in keymap) */
+	short val;			/* press, release, scrollvalue */
+	short x, y;			/* mouse pointer position, screen coord */
+	short mval[2];		/* region mouse position, name convention pre 2.5 :) */
+	short prevx, prevy;	/* previous mouse pointer position */
+	short unicode;		/* future, ghost? */
+	char ascii;			/* from ghost */
+	char pad;
+	
+	/* modifier states */
+	short shift, ctrl, alt, oskey;	/* oskey is apple or windowskey, value denotes order of pressed */
+	short keymodifier;				/* rawkey modifier */
+	
+	/* keymap item, set by handler (weak?) */
+	const char *keymap_idname;
+	
+	/* custom data */
+	short custom;	/* custom data type, stylus, 6dof, see wm_event_types.h */
+	void *customdata;	/* ascii, unicode, mouse coords, angles, vectors, dragdrop info */
+	short customdatafree;
+	
+} wmEvent;
+
 #endif /* DNA_WINDOWMANAGER_TYPES_H */
 

Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/RNA_access.h	2009-06-21 14:10:17 UTC (rev 21055)
+++ branches/blender2.5/blender/source/blender/makesrna/RNA_access.h	2009-06-21 14:30:59 UTC (rev 21056)
@@ -172,6 +172,7 @@
 extern StructRNA RNA_EnvironmentMapTexture;
 extern StructRNA RNA_ExplodeModifier;
 extern StructRNA RNA_ExpressionController;
+extern StructRNA RNA_Event;
 extern StructRNA RNA_FCurve;
 extern StructRNA RNA_FModifier;
 extern StructRNA RNA_FModifierCycles;
@@ -541,6 +542,9 @@
 void RNA_property_float_range(PointerRNA *ptr, PropertyRNA *prop, float *hardmin, float *hardmax);
 void RNA_property_float_ui_range(PointerRNA *ptr, PropertyRNA *prop, float *softmin, float *softmax, float *step, float *precision);
 
+int RNA_enum_identifier(const EnumPropertyItem *item, const int value, const char **identifier);
+int RNA_enum_name(const EnumPropertyItem *item, const int value, const char **name);
+
 void RNA_property_enum_items(PointerRNA *ptr, PropertyRNA *prop, const EnumPropertyItem **item, int *totitem);
 int RNA_property_enum_value(PointerRNA *ptr, PropertyRNA *prop, const char *identifier, int *value);
 int RNA_property_enum_identifier(PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier);

Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_enum_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/RNA_enum_types.h	2009-06-21 14:10:17 UTC (rev 21055)
+++ branches/blender2.5/blender/source/blender/makesrna/RNA_enum_types.h	2009-06-21 14:30:59 UTC (rev 21056)
@@ -40,6 +40,9 @@
 
 extern EnumPropertyItem fmodifier_type_items[];
 
+extern EnumPropertyItem event_value_items[];
+extern EnumPropertyItem event_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-06-21 14:10:17 UTC (rev 21055)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2009-06-21 14:30:59 UTC (rev 21056)
@@ -669,6 +669,28 @@
 	return 0;
 }
 
+int RNA_enum_identifier(const EnumPropertyItem *item, const int value, const char **identifier)
+{
+	for (; item->identifier; item++) {
+		if(item->value==value) {
+			*identifier = item->identifier;
+			return 1;
+		}
+	}
+	return 0;
+}
+
+int RNA_enum_name(const EnumPropertyItem *item, const int value, const char **name)
+{
+	for (; item->identifier; item++) {
+		if(item->value==value) {
+			*name = item->name;
+			return 1;
+		}
+	}
+	return 0;
+}
+
 int RNA_property_enum_identifier(PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier)
 {	
 	const EnumPropertyItem *item;
@@ -676,14 +698,7 @@
 	
 	RNA_property_enum_items(ptr, prop, &item, &totitem);
 	
-	for(i=0; i<totitem; i++) {
-		if(item[i].value==value) {
-			*identifier = item[i].identifier;
-			return 1;
-		}
-	}
-	
-	return 0;
+	return RNA_enum_identifier(item, value, identifier);
 }
 
 const char *RNA_property_ui_name(PropertyRNA *prop)

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_wm.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_wm.c	2009-06-21 14:10:17 UTC (rev 21055)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_wm.c	2009-06-21 14:30:59 UTC (rev 21056)
@@ -30,7 +30,121 @@
 #include "rna_internal.h"
 
 #include "DNA_windowmanager_types.h"
+#include "WM_types.h" /* wmEvent */
 
+
+EnumPropertyItem event_value_items[] = {
+	{KM_ANY, "ANY", 0, "Any", ""},
+	{KM_NOTHING, "NOTHING", 0, "Nothing", ""},
+	{KM_PRESS, "PRESS", 0, "Press", ""},
+	{KM_RELEASE, "RELEASE", 0, "Release", ""},
+	{0, NULL, 0, NULL, NULL}};
+
+/* not returned: CAPSLOCKKEY, UNKNOWNKEY, COMMANDKEY, GRLESSKEY */
+EnumPropertyItem event_type_items[] = {
+	{AKEY, "A", 0, "A", ""},
+	{BKEY, "B", 0, "B", ""},
+	{CKEY, "C", 0, "C", ""},
+	{DKEY, "D", 0, "D", ""},
+	{EKEY, "E", 0, "E", ""},
+	{FKEY, "F", 0, "F", ""},
+	{GKEY, "G", 0, "G", ""},
+	{HKEY, "H", 0, "H", ""},
+	{IKEY, "I", 0, "I", ""},
+	{JKEY, "J", 0, "J", ""},
+	{KKEY, "K", 0, "K", ""},
+	{LKEY, "L", 0, "L", ""},
+	{MKEY, "M", 0, "M", ""},
+	{NKEY, "N", 0, "N", ""},
+	{OKEY, "O", 0, "O", ""},
+	{PKEY, "P", 0, "P", ""},
+	{QKEY, "Q", 0, "Q", ""},
+	{RKEY, "R", 0, "R", ""},
+	{SKEY, "S", 0, "S", ""},
+	{TKEY, "T", 0, "T", ""},
+	{UKEY, "U", 0, "U", ""},
+	{VKEY, "V", 0, "V", ""},
+	{WKEY, "W", 0, "W", ""},
+	{XKEY, "X", 0, "X", ""},
+	{YKEY, "Y", 0, "Y", ""},
+	{ZKEY, "Z", 0, "Z", ""},
+	
+	{ZEROKEY, "ZERO",	0, "Zero Key", ""},
+	{ONEKEY, "ONE",		0, "One Key", ""},
+	{TWOKEY, "TWO",		0, "Two Key", ""},
+	{THREEKEY, "THREE",	0, "Three Key", ""},
+	{FOURKEY, "FOUR",	0, "Four Key", ""},
+	{FIVEKEY, "FIVE",	0, "Five Key", ""},
+	{SIXKEY, "SIX",		0, "Six Key", ""},
+	{SEVENKEY, "SEVEN",	0, "Seven Key", ""},
+	{EIGHTKEY, "EIGHT",	0, "Eight Key", ""},
+	{NINEKEY, "NINE",	0, "Nine Key", ""},
+	
+	{LEFTCTRLKEY,	"LEFT_CTRL",	0, "Left Ctrl", ""},
+	{LEFTALTKEY,	"LEFT_ALT",		0, "Left Alt", ""},
+	{RIGHTALTKEY,	"RIGHT_ALT",	0, "Right Alt", ""},
+	{RIGHTCTRLKEY,	"RIGHT_CTRL",	0, "Rightctrl", ""},
+	{RIGHTSHIFTKEY,	"RIGHT_SHIFT",	0, "Rightshift", ""},
+	{LEFTSHIFTKEY,	"LEFT_SHIFT",	0, "Leftshift", ""},
+	
+	{ESCKEY, "ESC", 0, "Esc", ""},
+	{TABKEY, "TAB", 0, "Tab", ""},
+	{RETKEY, "RET", 0, "Return", ""},
+	{SPACEKEY, "SPACE", 0, "Spacebar", ""},
+	{LINEFEEDKEY, "LINE_FEED", 0, "Line Feed", ""},
+	{BACKSPACEKEY, "BACK_SPACE", 0, "Back Space", ""},
+	{DELKEY, "DEL", 0, "Delete", ""},
+	{SEMICOLONKEY, "SEMI_COLON", 0, "Semicolon", ""},
+	{PERIODKEY, "PERIOD", 0, "Period", ""},
+	{COMMAKEY, "COMMA", 0, "Comma", ""},
+	{QUOTEKEY, "QUOTE", 0, "Quote", ""},
+	{ACCENTGRAVEKEY, "ACCENT_GRAVE", 0, "Accentgrave", ""},
+	{MINUSKEY, "MINUS", 0, "Minus", ""},
+	{SLASHKEY, "SLASH", 0, "Slash", ""},
+	{BACKSLASHKEY, "BACK_SLASH", 0, "Backslash", ""},
+	{EQUALKEY, "EQUAL", 0, "Equal", ""},
+	{LEFTBRACKETKEY, "LEFT_BRACKET", 0, "Leftbracket", ""},
+	{RIGHTBRACKETKEY, "RIGHT_BRACKET", 0, "Rightbracket", ""},
+	{LEFTARROWKEY, "LEFT_ARROW", 0, "Left Arrow", ""},
+	{DOWNARROWKEY, "DOWN_ARROW", 0, "Down Arrow", ""},
+	{RIGHTARROWKEY, "RIGHT_ARROW", 0, "Right Arrow", ""},
+	{UPARROWKEY, "UP_ARROW", 0, "Up Arrow", ""},
+	{PAD2, "NUMPAD_2", 0, "Numpad 2", ""},
+	{PAD4, "NUMPAD_4", 0, "Numpad 4", ""},
+	{PAD6, "NUMPAD_6", 0, "Numpad 6", ""},
+	{PAD8, "NUMPAD_8", 0, "Numpad 8", ""},
+	{PAD1, "NUMPAD_1", 0, "Numpad 1", ""},
+	{PAD3, "NUMPAD_3", 0, "Numpad 3", ""},
+	{PAD5, "NUMPAD_5", 0, "Numpad 5", ""},
+	{PAD7, "NUMPAD_7", 0, "Numpad 7", ""},
+	{PAD9, "NUMPAD_9", 0, "Numpad 9", ""},
+	{PADPERIOD, "NUMPAD_PERIOD", 0, "Numpad .", ""},
+	{PADSLASHKEY, "NUMPAD_SLASH", 0, "Numpad /", ""},
+	{PADASTERKEY, "NUMPAD_ASTERIX", 0, "Numpad *", ""},
+	{PAD0, "NUMPAD_0", 0, "Numpad 0", ""},

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list