[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60395] trunk/blender/source/blender: rna: implementing function to remove keymap from keyconfig
Dalai Felinto
dfelinto at gmail.com
Fri Sep 27 16:05:07 CEST 2013
Revision: 60395
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60395
Author: dfelinto
Date: 2013-09-27 14:05:07 +0000 (Fri, 27 Sep 2013)
Log Message:
-----------
rna: implementing function to remove keymap from keyconfig
Thanks Campbell Barton for reviewing.
Modified Paths:
--------------
trunk/blender/source/blender/makesrna/intern/rna_wm_api.c
trunk/blender/source/blender/windowmanager/WM_keymap.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 2013-09-27 13:56:16 UTC (rev 60394)
+++ trunk/blender/source/blender/makesrna/intern/rna_wm_api.c 2013-09-27 14:05:07 UTC (rev 60395)
@@ -262,6 +262,18 @@
return ot->modalkeymap;
}
+static void rna_KeyMap_remove(wmKeyConfig *keyconfig, ReportList *reports, PointerRNA *keymap_ptr)
+{
+ wmKeyMap *keymap = keymap_ptr->data;
+
+ if (WM_keymap_remove(keyconfig, keymap) == FALSE) {
+ BKE_reportf(reports, RPT_ERROR, "KeyConfig '%s' cannot be removed", keymap->idname);
+ return;
+ }
+
+ RNA_POINTER_INVALIDATE(keymap_ptr);
+}
+
static void rna_KeyConfig_remove(wmWindowManager *wm, ReportList *reports, PointerRNA *keyconf_ptr)
{
wmKeyConfig *keyconf = keyconf_ptr->data;
@@ -671,6 +683,12 @@
parm = RNA_def_pointer(func, "keymap", "KeyMap", "Key Map", "Added key map");
RNA_def_function_return(func, parm);
+ func = RNA_def_function(srna, "remove", "rna_KeyMap_remove"); /* remove_keymap */
+ RNA_def_function_flag(func, FUNC_USE_REPORTS);
+ parm = RNA_def_pointer(func, "keymap", "KeyMap", "Key Map", "Removed key map");
+ RNA_def_property_flag(parm, PROP_REQUIRED | PROP_NEVER_NULL | PROP_RNAPTR);
+ RNA_def_property_clear_flag(parm, PROP_THICK_WRAP);
+
func = RNA_def_function(srna, "find", "rna_keymap_find"); /* find_keymap */
parm = RNA_def_string(func, "name", "", 0, "Name", "");
RNA_def_property_flag(parm, PROP_REQUIRED);
Modified: trunk/blender/source/blender/windowmanager/WM_keymap.h
===================================================================
--- trunk/blender/source/blender/windowmanager/WM_keymap.h 2013-09-27 13:56:16 UTC (rev 60394)
+++ trunk/blender/source/blender/windowmanager/WM_keymap.h 2013-09-27 14:05:07 UTC (rev 60395)
@@ -72,6 +72,7 @@
wmKeyMap *WM_keymap_find_all(const struct bContext *C, const char *idname, int spaceid, int regionid);
wmKeyMap *WM_keymap_active(struct wmWindowManager *wm, struct wmKeyMap *keymap);
wmKeyMap *WM_keymap_guess_opname(const struct bContext *C, const char *opname);
+int WM_keymap_remove(struct wmKeyConfig *keyconfig, struct wmKeyMap *keymap);
wmKeyMapItem *WM_keymap_item_find_id(struct wmKeyMap *keymap, int id);
int WM_keymap_item_compare(struct wmKeyMapItem *k1, struct wmKeyMapItem *k2);
Modified: trunk/blender/source/blender/windowmanager/intern/wm_keymap.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_keymap.c 2013-09-27 13:56:16 UTC (rev 60394)
+++ trunk/blender/source/blender/windowmanager/intern/wm_keymap.c 2013-09-27 14:05:07 UTC (rev 60395)
@@ -299,6 +299,21 @@
BLI_freelistN(&keymap->items);
}
+int WM_keymap_remove(wmKeyConfig *keyconf, wmKeyMap *keymap)
+{
+ if (BLI_findindex(&keyconf->keymaps, keymap) != -1) {
+
+ WM_keymap_free(keymap);
+ BLI_remlink(&keyconf->keymaps, keymap);
+ MEM_freeN(keymap);
+
+ return TRUE;
+ }
+ else {
+ return FALSE;
+ }
+}
+
static void keymap_event_set(wmKeyMapItem *kmi, short type, short val, int modifier, short keymodifier)
{
kmi->type = type;
More information about the Bf-blender-cvs
mailing list