[Bf-blender-cvs] [947cdb3] master: UI: add ability to access/generate 'shortcuts strings' of modal keymaps.

Bastien Montagne noreply at git.blender.org
Fri Jul 3 15:57:33 CEST 2015


Commit: 947cdb3acd296d8e2e849586d5a41cc0d0dcb28c
Author: Bastien Montagne
Date:   Fri Jul 3 15:07:46 2015 +0200
Branches: master
https://developer.blender.org/rB947cdb3acd296d8e2e849586d5a41cc0d0dcb28c

UI: add ability to access/generate 'shortcuts strings' of modal keymaps.

We already had that for global keymaps (used e.g. to generate shortcuts for menu entries),
but this wasn’t possible for modal keymaps yet (e.g. help message in header during
transforms and other modal operation).

This commit only adds needing background code, it does not change anything from user PoV.
Modal operators will be updated to use it in comming weeks.

Thanks to Campbell for revisions & suggestions. :)

Differential Revision: https://developer.blender.org/D780

===================================================================

M	source/blender/editors/armature/pose_lib.c
M	source/blender/editors/include/UI_interface.h
M	source/blender/editors/interface/interface.c
M	source/blender/editors/interface/interface_handlers.c
M	source/blender/editors/interface/interface_layout.c
M	source/blender/editors/space_outliner/outliner_tree.c
M	source/blender/editors/transform/transform.c
M	source/blender/makesrna/intern/rna_wm.c
M	source/blender/windowmanager/WM_keymap.h
M	source/blender/windowmanager/intern/wm_keymap.c

===================================================================

diff --git a/source/blender/editors/armature/pose_lib.c b/source/blender/editors/armature/pose_lib.c
index d571fb3..3ced37d 100644
--- a/source/blender/editors/armature/pose_lib.c
+++ b/source/blender/editors/armature/pose_lib.c
@@ -1196,7 +1196,7 @@ static int poselib_preview_handle_event(bContext *UNUSED(C), wmOperator *op, con
 	
 	/* only accept 'press' event, and ignore 'release', so that we don't get double actions */
 	if (ELEM(event->val, KM_PRESS, KM_NOTHING) == 0) {
-		//printf("PoseLib: skipping event with type '%s' and val %d\n", WM_key_event_string(event->type), event->val);
+		//printf("PoseLib: skipping event with type '%s' and val %d\n", WM_key_event_string(event->type, false), event->val);
 		return ret; 
 	}
 	
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index b5e1b9f..bb6c9a1 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -86,6 +86,7 @@ typedef struct uiLayout uiLayout;
 /* names */
 #define UI_MAX_DRAW_STR 400
 #define UI_MAX_NAME_STR 128
+#define UI_MAX_SHORTCUT_STR 64
 
 /* use for clamping popups within the screen */
 #define UI_SCREEN_MARGIN 10
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index e045db8..1a62fb4 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -2825,7 +2825,7 @@ void ui_but_update(uiBut *but)
 			}
 			else {
 				UI_GET_BUT_VALUE_INIT(but, value);
-				str = WM_key_event_string((short)value);
+				str = WM_key_event_string((short)value, false);
 			}
 			BLI_snprintf(but->drawstr, UI_MAX_DRAW_STR, "%s%s", but->str, str);
 			break;
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 58cf6b9..c51d990 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -3651,7 +3651,7 @@ static int ui_do_but_HOTKEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data
 		if (event->val == KM_PRESS) {
 			if (ISHOTKEY(event->type)) {
 				
-				if (WM_key_event_string(event->type)[0])
+				if (WM_key_event_string(event->type, false)[0])
 					ui_but_value_set(but, event->type);
 				else
 					data->cancel = true;
@@ -3687,7 +3687,7 @@ static int ui_do_but_KEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data, c
 		}
 
 		if (event->val == KM_PRESS) {
-			if (WM_key_event_string(event->type)[0])
+			if (WM_key_event_string(event->type, false)[0])
 				ui_but_value_set(but, event->type);
 			else
 				data->cancel = true;
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c
index a61b208..0e30ba5 100644
--- a/source/blender/editors/interface/interface_layout.c
+++ b/source/blender/editors/interface/interface_layout.c
@@ -668,7 +668,7 @@ static uiBut *ui_item_with_label(uiLayout *layout, uiBlock *block, const char *n
 		if (RNA_struct_is_a(ptr->type, &RNA_KeyMapItem)) {
 			char buf[128];
 
-			WM_keymap_item_to_string(ptr->data, buf, sizeof(buf));
+			WM_keymap_item_to_string(ptr->data, buf, sizeof(buf), false);
 
 			but = uiDefButR_prop(block, UI_BTYPE_HOTKEY_EVENT, 0, buf, x, y, w, h, ptr, prop, 0, 0, 0, -1, -1, NULL);
 			UI_but_func_set(but, ui_keymap_but_cb, but, NULL);
diff --git a/source/blender/editors/space_outliner/outliner_tree.c b/source/blender/editors/space_outliner/outliner_tree.c
index 0c1d631..b86d670 100644
--- a/source/blender/editors/space_outliner/outliner_tree.c
+++ b/source/blender/editors/space_outliner/outliner_tree.c
@@ -1139,7 +1139,7 @@ static TreeElement *outliner_add_element(SpaceOops *soops, ListBase *lb, void *i
 			int a = 0;
 			
 			for (kmi = km->items.first; kmi; kmi = kmi->next, a++) {
-				const char *key = WM_key_event_string(kmi->type);
+				const char *key = WM_key_event_string(kmi->type, false);
 				
 				if (key[0]) {
 					wmOperatorType *ot = NULL;
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 66146ff..0497967 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -4422,7 +4422,7 @@ static void applyShrinkFatten(TransInfo *t, const int UNUSED(mval[2]))
 	if (t->keymap) {
 		wmKeyMapItem *kmi = WM_modalkeymap_find_propvalue(t->keymap, TFM_MODAL_RESIZE);
 		if (kmi) {
-			ofs += WM_keymap_item_to_string(kmi, str + ofs, MAX_INFO_LEN - ofs);
+			ofs += WM_keymap_item_to_string(kmi, str + ofs, MAX_INFO_LEN - ofs, false);
 		}
 	}
 	BLI_snprintf(str + ofs, MAX_INFO_LEN - ofs, IFACE_(" or Alt) Even Thickness %s"),
@@ -7743,7 +7743,7 @@ static void headerSeqSlide(TransInfo *t, const float val[2], char str[MAX_INFO_L
 	if (t->keymap) {
 		wmKeyMapItem *kmi = WM_modalkeymap_find_propvalue(t->keymap, TFM_MODAL_TRANSLATE);
 		if (kmi) {
-			ofs += WM_keymap_item_to_string(kmi, str + ofs, MAX_INFO_LEN - ofs);
+			ofs += WM_keymap_item_to_string(kmi, str + ofs, MAX_INFO_LEN - ofs, false);
 		}
 	}
 	ofs += BLI_snprintf(str + ofs, MAX_INFO_LEN - ofs, IFACE_(" or Alt) Expand to fit %s"),
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index 4446f5d..86c6d43 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -168,34 +168,34 @@ static EnumPropertyItem event_ndof_type_items[] = {
 
 /* not returned: CAPSLOCKKEY, UNKNOWNKEY */
 EnumPropertyItem event_type_items[] = {
-
+	/* Note we abuse 'tooltip' message here to store a 'compact' form of some (too) long names. */
 	{0, "NONE", 0, "", ""},
-	{LEFTMOUSE, "LEFTMOUSE", 0, "Left Mouse", ""},
-	{MIDDLEMOUSE, "MIDDLEMOUSE", 0, "Middle Mouse", ""},
-	{RIGHTMOUSE, "RIGHTMOUSE", 0, "Right Mouse", ""},
-	{BUTTON4MOUSE, "BUTTON4MOUSE", 0, "Button4 Mouse", ""},
-	{BUTTON5MOUSE, "BUTTON5MOUSE", 0, "Button5 Mouse", ""},
-	{BUTTON6MOUSE, "BUTTON6MOUSE", 0, "Button6 Mouse", ""},
-	{BUTTON7MOUSE, "BUTTON7MOUSE", 0, "Button7 Mouse", ""},
-	{ACTIONMOUSE, "ACTIONMOUSE", 0, "Action Mouse", ""},
-	{SELECTMOUSE, "SELECTMOUSE", 0, "Select Mouse", ""},
+	{LEFTMOUSE, "LEFTMOUSE", 0, "Left Mouse", "LMB"},
+	{MIDDLEMOUSE, "MIDDLEMOUSE", 0, "Middle Mouse", "MMB"},
+	{RIGHTMOUSE, "RIGHTMOUSE", 0, "Right Mouse", "RMB"},
+	{BUTTON4MOUSE, "BUTTON4MOUSE", 0, "Button4 Mouse", "MB4"},
+	{BUTTON5MOUSE, "BUTTON5MOUSE", 0, "Button5 Mouse", "MB5"},
+	{BUTTON6MOUSE, "BUTTON6MOUSE", 0, "Button6 Mouse", "MB6"},
+	{BUTTON7MOUSE, "BUTTON7MOUSE", 0, "Button7 Mouse", "MB7"},
+	{ACTIONMOUSE, "ACTIONMOUSE", 0, "Action Mouse", "MBA"},
+	{SELECTMOUSE, "SELECTMOUSE", 0, "Select Mouse", "MBS"},
 	{0, "", 0, NULL, NULL},
-	{MOUSEMOVE, "MOUSEMOVE", 0, "Mouse Move", ""},
-	{INBETWEEN_MOUSEMOVE, "INBETWEEN_MOUSEMOVE", 0, "In-between Move", ""},
-	{MOUSEPAN, "TRACKPADPAN", 0, "Mouse/Trackpad Pan", ""},
-	{MOUSEZOOM, "TRACKPADZOOM", 0, "Mouse/Trackpad Zoom", ""},
-	{MOUSEROTATE, "MOUSEROTATE", 0, "Mouse/Trackpad Rotate", ""},
+	{MOUSEMOVE, "MOUSEMOVE", 0, "Mouse Move", "MsMov"},
+	{INBETWEEN_MOUSEMOVE, "INBETWEEN_MOUSEMOVE", 0, "In-between Move", "MsSubMov"},
+	{MOUSEPAN, "TRACKPADPAN", 0, "Mouse/Trackpad Pan", "MsPan"},
+	{MOUSEZOOM, "TRACKPADZOOM", 0, "Mouse/Trackpad Zoom", "MsZoom"},
+	{MOUSEROTATE, "MOUSEROTATE", 0, "Mouse/Trackpad Rotate", "MsRot"},
 	{0, "", 0, NULL, NULL},
-	{WHEELUPMOUSE, "WHEELUPMOUSE", 0, "Wheel Up", ""},
-	{WHEELDOWNMOUSE, "WHEELDOWNMOUSE", 0, "Wheel Down", ""},
-	{WHEELINMOUSE, "WHEELINMOUSE", 0, "Wheel In", ""},
-	{WHEELOUTMOUSE, "WHEELOUTMOUSE", 0, "Wheel Out", ""},
+	{WHEELUPMOUSE, "WHEELUPMOUSE", 0, "Wheel Up", "WhUp"},
+	{WHEELDOWNMOUSE, "WHEELDOWNMOUSE", 0, "Wheel Down", "WhDown"},
+	{WHEELINMOUSE, "WHEELINMOUSE", 0, "Wheel In", "WhIn"},
+	{WHEELOUTMOUSE, "WHEELOUTMOUSE", 0, "Wheel Out", "WhOut"},
 	{0, "", 0, NULL, NULL},
-	{EVT_TWEAK_L, "EVT_TWEAK_L", 0, "Tweak Left", ""},
-	{EVT_TWEAK_M, "EVT_TWEAK_M", 0, "Tweak Middle", ""},
-	{EVT_TWEAK_R, "EVT_TWEAK_R", 0, "Tweak Right", ""},
-	{EVT_TWEAK_A, "EVT_TWEAK_A", 0, "Tweak Action", ""},
-	{EVT_TWEAK_S, "EVT_TWEAK_S", 0, "Tweak Select", ""},
+	{EVT_TWEAK_L, "EVT_TWEAK_L", 0, "Tweak Left", "TwkL"},
+	{EVT_TWEAK_M, "EVT_TWEAK_M", 0, "Tweak Middle", "TwkM"},
+	{EVT_TWEAK_R, "EVT_TWEAK_R", 0, "Tweak Right", "TwkR"},
+	{EVT_TWEAK_A, "EVT_TWEAK_A", 0, "Tweak Action", "TwkA"},
+	{EVT_TWEAK_S, "EVT_TWEAK_S", 0, "Tweak Select", "TwkS"},
 	{0, "", 0, NULL, NULL},
 	{AKEY, "A", 0, "A", ""},
 	{BKEY, "B", 0, "B", ""},
@@ -235,22 +235,22 @@ EnumPropertyItem event_type_items[] = {
 	{EIGHTKEY, "EIGHT", 0, "8", ""},
 	{NINEKEY, "NINE",   0, "9", ""},
 	{0, "", 0, NULL, NULL},
-	{LEFTCTRLKEY,   "LEFT_CTRL",    0, "Left Ctrl", ""},
-	{LEFTALTKEY,    "LEFT_ALT",     0, "Left Alt", ""},
-	{LEFTSHIFTKEY,  "LEFT_SHIFT",   0, "Left Shift", ""},
-	{RIGHTALTKEY,   "RIGHT_ALT",    0, "Right Alt", ""},
-	{RIGHTCTRLKEY,  "RIGHT_CTRL",   0, "Right Ctrl", ""},
-	{RIGHTSHIFTKEY, "RIGHT_SHIFT",  0, "Right Shift", ""},
+	{LEFTCTRLKEY,   "LEFT_CTRL",    0, "Left Ctrl", "CtrlL"},
+	{LEFTALTKEY,    "LEFT_ALT",     0, "Left Alt", "AltL"},
+	{LEFTSHIFTKEY,  "LEFT_SHIFT",   0, "Left Shift", "ShiftL"},
+	{RIGHTALTKEY,   "RIGHT_ALT",    0, "Right Alt", "AltR"},
+	{RIGHTCTRLKEY,  "RIGHT_CTRL",   0, "Right Ctrl", "CtrlR"},
+	{RIGHTSHIFTKEY, "RIGHT_SHIFT",  0, "Right Shift", "ShiftR"},
 	{0, "", 0, NULL, NULL},
-	{OSKEY, "OSKEY",    0, "OS Key", ""},
+	{OSKEY, "OSKEY",    0, "OS Key", "Cmd"},
 	{GRLESSKEY, "GRLESS",   0, "Grless", ""},
 	{ESCKEY, "ESC", 0, "Esc", ""},
 	{TABKEY, "TAB", 0, "Tab", ""},
-	{RETKEY, "RET", 0, "Return", ""},
-	{SPACEKEY, "SPACE", 0, "Spacebar", ""},
+	{RETKEY, "RET", 0, "Return", "Enter"},
+	{SPACEKEY, "SPACE", 0, "Spacebar", "Space"},
 	{LINEFEEDKEY, "LINE_FEED", 0, "Line Feed", ""},
-	{BACKSPACEKEY, "BACK_SPACE", 0, "Back Space", ""},
-	{DELKEY, "DEL", 0, "Delete", ""},
+	{BACKSPACEKEY, "BACK_SPACE", 0, "Back Space", "BkSpace"},
+	{DELKEY, "DEL", 0, "Delete", "Del"},
 	{SEMICOLONKEY, "SEMI_COLON", 0, ";", ""},
 	{PERIODKEY, "PERIOD", 0, ".", ""},
 	{COMMAKEY, "COMMA", 0, ",", ""},
@@ -262,26 +262,26 @@ EnumPropertyItem event_type_items[] = {
 	{EQUALKEY

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list