[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24564] trunk/blender/source/blender/ makesrna/intern/rna_wm.c: RNA property for propvalue in keymapitems.

Martin Poirier theeth at yahoo.com
Sat Nov 14 23:43:42 CET 2009


Revision: 24564
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24564
Author:   theeth
Date:     2009-11-14 23:43:42 +0100 (Sat, 14 Nov 2009)

Log Message:
-----------
RNA property for propvalue in keymapitems.

Enables modification of modal keymaps.

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/intern/rna_wm.c

Modified: trunk/blender/source/blender/makesrna/intern/rna_wm.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_wm.c	2009-11-14 20:46:18 UTC (rev 24563)
+++ trunk/blender/source/blender/makesrna/intern/rna_wm.c	2009-11-14 22:43:42 UTC (rev 24564)
@@ -230,6 +230,10 @@
 	{TIMER2, "TIMER2", 0, "Timer 2", ""},
 	{0, NULL, 0, NULL, NULL}};	
 
+EnumPropertyItem keymap_propvalue_items[] = {
+		{0, "NONE", 0, "", ""},
+		{0, NULL, 0, NULL, NULL}};
+
 #define KMI_TYPE_KEYBOARD	0
 #define KMI_TYPE_MOUSE		1
 #define KMI_TYPE_TWEAK		2
@@ -403,6 +407,30 @@
 	else return event_value_items;
 }
 
+static EnumPropertyItem *rna_KeyMapItem_propvalue_itemf(bContext *C, PointerRNA *ptr, int *free)
+{
+	wmWindowManager *wm = CTX_wm_manager(C);
+	wmKeyConfig *kc;
+
+	for(kc=wm->keyconfigs.first; kc; kc=kc->next) {
+		wmKeyMap *km;
+
+		for(km=kc->keymaps.first; km; km=km->next) {
+			/* only check if it's a modal keymap */
+			if (km->modal_items) {
+				wmKeyMapItem *ki;
+				for (ki=km->items.first; ki; ki=ki->next) {
+					if (ki == ptr->data) {
+						return km->modal_items;
+					}
+				}
+			}
+		}
+	}
+
+	return keymap_propvalue_items;
+}
+
 static PointerRNA rna_WindowManager_active_keyconfig_get(PointerRNA *ptr)
 {
 	wmWindowManager *wm= ptr->data;
@@ -795,6 +823,12 @@
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", KMI_EXPANDED);
 	RNA_def_property_ui_text(prop, "Expanded", "Expanded in the user interface.");
 
+	prop= RNA_def_property(srna, "propvalue", PROP_ENUM, PROP_NONE);
+	RNA_def_property_enum_sdna(prop, NULL, "propvalue");
+	RNA_def_property_enum_items(prop, keymap_propvalue_items);
+	RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_KeyMapItem_propvalue_itemf");
+	RNA_def_property_ui_text(prop, "Property Value", "The value this event translates to in a modal keymap.");
+
 	prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", KMI_INACTIVE);
 	RNA_def_property_ui_text(prop, "Active", "Activate or deactivate item.");





More information about the Bf-blender-cvs mailing list