[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25219] trunk/blender/source/blender: RNA functions to find keymaps in a keyconfig ( from the usual idname + space or modal keymaps from operator id)

Martin Poirier theeth at yahoo.com
Tue Dec 8 19:02:50 CET 2009


Revision: 25219
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25219
Author:   theeth
Date:     2009-12-08 19:02:50 +0100 (Tue, 08 Dec 2009)

Log Message:
-----------
RNA functions to find keymaps in a keyconfig (from the usual idname + space or modal keymaps from operator id)

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/intern/rna_wm_api.c
    trunk/blender/source/blender/windowmanager/WM_api.h
    trunk/blender/source/blender/windowmanager/intern/wm_keymap.c

Modified: trunk/blender/source/blender/makesrna/intern/rna_wm_api.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_wm_api.c	2009-12-08 17:37:31 UTC (rev 25218)
+++ trunk/blender/source/blender/makesrna/intern/rna_wm_api.c	2009-12-08 18:02:50 UTC (rev 25219)
@@ -52,6 +52,21 @@
 	}
 }
 
+static wmKeyMap *rna_keymap_find(wmKeyConfig *keyconf, char *idname, int spaceid, int regionid)
+{
+	return WM_keymap_list_find(&keyconf->keymaps, idname, spaceid, regionid);
+}
+
+static wmKeyMap *rna_keymap_find_modal(wmKeyConfig *keyconf, char *idname)
+{
+	wmOperatorType *ot = WM_operatortype_find(idname, 0);
+
+	if (!ot)
+		return NULL;
+	else
+		return ot->modalkeymap;
+}
+
 static wmKeyMap *rna_keymap_active(wmKeyMap *km, bContext *C)
 {
 	wmWindowManager *wm = CTX_wm_manager(C);
@@ -175,6 +190,20 @@
 	RNA_def_boolean(func, "modal", 0, "Modal", "");
 	parm= RNA_def_pointer(func, "keymap", "KeyMap", "Key Map", "Added key map.");
 	RNA_def_function_return(func, parm);
+
+	func= RNA_def_function(srna, "find_keymap", "rna_keymap_find");
+	parm= RNA_def_string(func, "name", "", 0, "Name", "");
+	RNA_def_property_flag(parm, PROP_REQUIRED);
+	RNA_def_enum(func, "space_type", space_type_items, SPACE_EMPTY, "Space Type", "");
+	RNA_def_enum(func, "region_type", region_type_items, RGN_TYPE_WINDOW, "Region Type", "");
+	parm= RNA_def_pointer(func, "keymap", "KeyMap", "Key Map", "Corresponding key map.");
+	RNA_def_function_return(func, parm);
+
+	func= RNA_def_function(srna, "find_keymap_modal", "rna_keymap_find_modal");
+	parm= RNA_def_string(func, "name", "", 0, "Operator Name", "");
+	RNA_def_property_flag(parm, PROP_REQUIRED);
+	parm= RNA_def_pointer(func, "keymap", "KeyMap", "Key Map", "Corresponding key map.");
+	RNA_def_function_return(func, parm);
 }
 
 void RNA_api_keymap(StructRNA *srna)

Modified: trunk/blender/source/blender/windowmanager/WM_api.h
===================================================================
--- trunk/blender/source/blender/windowmanager/WM_api.h	2009-12-08 17:37:31 UTC (rev 25218)
+++ trunk/blender/source/blender/windowmanager/WM_api.h	2009-12-08 18:02:50 UTC (rev 25219)
@@ -108,6 +108,7 @@
 char		 *WM_keymap_item_to_string(wmKeyMapItem *kmi, char *str, int len);
 
 wmKeyMap	*WM_keymap_find(struct wmKeyConfig *keyconf, char *idname, int spaceid, int regionid);
+wmKeyMap	*WM_keymap_list_find(ListBase *lb, char *idname, int spaceid, int regionid);
 wmKeyMap	*WM_keymap_active(struct wmWindowManager *wm, struct wmKeyMap *keymap);
 int			 WM_keymap_user_init(struct wmWindowManager *wm, struct wmKeyMap *keymap);
 wmKeyMap	*WM_keymap_copy_to_user(struct wmKeyMap *keymap);

Modified: trunk/blender/source/blender/windowmanager/intern/wm_keymap.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_keymap.c	2009-12-08 17:37:31 UTC (rev 25218)
+++ trunk/blender/source/blender/windowmanager/intern/wm_keymap.c	2009-12-08 18:02:50 UTC (rev 25219)
@@ -229,7 +229,7 @@
    space/region ids are same as DNA_space_types.h */
 /* gets free'd in wm.c */
 
-static wmKeyMap *wm_keymap_list_find(ListBase *lb, char *idname, int spaceid, int regionid)
+wmKeyMap *WM_keymap_list_find(ListBase *lb, char *idname, int spaceid, int regionid)
 {
 	wmKeyMap *km;
 
@@ -243,7 +243,7 @@
 
 wmKeyMap *WM_keymap_find(wmKeyConfig *keyconf, char *idname, int spaceid, int regionid)
 {
-	wmKeyMap *km= wm_keymap_list_find(&keyconf->keymaps, idname, spaceid, regionid);
+	wmKeyMap *km= WM_keymap_list_find(&keyconf->keymaps, idname, spaceid, regionid);
 	
 	if(km==NULL) {
 		km= MEM_callocN(sizeof(struct wmKeyMap), "keymap list");
@@ -455,7 +455,7 @@
 	/* init from user key config */
 	keyconf= wm_keyconfig_list_find(&wm->keyconfigs, U.keyconfigstr);
 	if(keyconf) {
-		km= wm_keymap_list_find(&keyconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+		km= WM_keymap_list_find(&keyconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
 		if(km) {
 			keymap->poll= km->poll; /* lazy init */
 			keymap->modal_items= km->modal_items;
@@ -464,7 +464,7 @@
 	}
 
 	/* or from default */
-	km= wm_keymap_list_find(&wm->defaultconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+	km= WM_keymap_list_find(&wm->defaultconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
 	if(km) {
 		keymap->poll= km->poll; /* lazy init */
 		keymap->modal_items= km->modal_items;
@@ -483,7 +483,7 @@
 		return NULL;
 	
 	/* first user defined keymaps */
-	km= wm_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+	km= WM_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
 	if(km) {
 		km->poll= keymap->poll; /* lazy init */
 		km->modal_items= keymap->modal_items;
@@ -493,7 +493,7 @@
 	/* then user key config */
 	keyconf= wm_keyconfig_list_find(&wm->keyconfigs, U.keyconfigstr);
 	if(keyconf) {
-		km= wm_keymap_list_find(&keyconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+		km= WM_keymap_list_find(&keyconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
 		if(km) {
 			km->poll= keymap->poll; /* lazy init */
 			km->modal_items= keymap->modal_items;
@@ -502,7 +502,7 @@
 	}
 
 	/* then use default */
-	km= wm_keymap_list_find(&wm->defaultconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+	km= WM_keymap_list_find(&wm->defaultconf->keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
 	return km;
 }
 
@@ -511,7 +511,7 @@
 	wmKeyMap *usermap;
 	wmKeyMapItem *kmi;
 
-	usermap= wm_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+	usermap= WM_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
 
 	if(!usermap) {
 		/* not saved yet, duplicate existing */
@@ -549,7 +549,7 @@
 {
 	wmKeyMap *usermap;
 
-	usermap= wm_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
+	usermap= WM_keymap_list_find(&U.keymaps, keymap->idname, keymap->spaceid, keymap->regionid);
 
 	if(usermap) {
 		WM_keymap_free(usermap);





More information about the Bf-blender-cvs mailing list