[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60775] trunk/blender/source/blender: Fix [#37077] User prefs > Input and Outliner Keymaps mismatch in representation .

Bastien Montagne montagne29 at wanadoo.fr
Tue Oct 15 15:55:06 CEST 2013


Revision: 60775
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60775
Author:   mont29
Date:     2013-10-15 13:55:06 +0000 (Tue, 15 Oct 2013)
Log Message:
-----------
Fix [#37077] User prefs > Input and Outliner Keymaps mismatch in representation.

Remove KeyMap mode from outliner, was an old half-finished features redondant with user preferences settings...

Also moved key map item's "event type to map type" and map type defines at WM level, this is too much generic to be at RNA level.

Also added a check in versionning code to convert all outdated outliner modes to a valid one (seems old 'verse' ones were not handled as well).

Thanks to Brecht for reviews and advices!

Modified Paths:
--------------
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/editors/animation/keyframing.c
    trunk/blender/source/blender/editors/space_outliner/outliner_draw.c
    trunk/blender/source/blender/editors/space_outliner/outliner_select.c
    trunk/blender/source/blender/editors/space_outliner/outliner_tree.c
    trunk/blender/source/blender/makesdna/DNA_space_types.h
    trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h
    trunk/blender/source/blender/makesrna/intern/rna_space.c
    trunk/blender/source/blender/makesrna/intern/rna_wm.c
    trunk/blender/source/blender/windowmanager/WM_keymap.h
    trunk/blender/source/blender/windowmanager/intern/wm_keymap.c

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2013-10-15 13:45:27 UTC (rev 60774)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2013-10-15 13:55:06 UTC (rev 60775)
@@ -9724,6 +9724,30 @@
 		} FOREACH_NODETREE_END
 	}
 
+	{
+		bScreen *sc;
+		ScrArea *sa;
+		SpaceLink *sl;
+
+		/* Update files using invalid (outdated) outlinevis Outliner values. */
+		for (sc = main->screen.first; sc; sc = sc->id.next) {
+			for (sa = sc->areabase.first; sa; sa = sa->next) {
+				for (sl = sa->spacedata.first; sl; sl = sl->next) {
+					if (sl->spacetype == SPACE_OUTLINER) {
+						SpaceOops *so = (SpaceOops *)sl;
+
+						if (!ELEM11(so->outlinevis, SO_ALL_SCENES, SO_CUR_SCENE, SO_VISIBLE, SO_SELECTED, SO_ACTIVE,
+						                            SO_SAME_TYPE, SO_GROUPS, SO_LIBRARIES, SO_SEQUENCE, SO_DATABLOCKS,
+						                            SO_USERDEF))
+						{
+							so->outlinevis = SO_ALL_SCENES;
+						}
+					}
+				}
+			}
+		}
+	}
+
 	/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
 	/* WATCH IT 2!: Userdef struct init see do_versions_userdef() above! */
 

Modified: trunk/blender/source/blender/editors/animation/keyframing.c
===================================================================
--- trunk/blender/source/blender/editors/animation/keyframing.c	2013-10-15 13:45:27 UTC (rev 60774)
+++ trunk/blender/source/blender/editors/animation/keyframing.c	2013-10-15 13:55:06 UTC (rev 60775)
@@ -1225,7 +1225,7 @@
 	
 	/* if Outliner, don't allow in some views */
 	if (so) {
-		if (ELEM5(so->outlinevis, SO_GROUPS, SO_LIBRARIES, SO_SEQUENCE, SO_USERDEF, SO_KEYMAP)) {
+		if (ELEM4(so->outlinevis, SO_GROUPS, SO_LIBRARIES, SO_SEQUENCE, SO_USERDEF)) {
 			return 0;
 		}
 	}

Modified: trunk/blender/source/blender/editors/space_outliner/outliner_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_outliner/outliner_draw.c	2013-10-15 13:45:27 UTC (rev 60774)
+++ trunk/blender/source/blender/editors/space_outliner/outliner_draw.c	2013-10-15 13:55:06 UTC (rev 60775)
@@ -765,286 +765,6 @@
 	uiBlockSetEmboss(block, UI_EMBOSS);
 }
 
-static void operator_call_cb(struct bContext *UNUSED(C), void *arg_kmi, void *arg2)
-{
-	wmOperatorType *ot = arg2;
-	wmKeyMapItem *kmi = arg_kmi;
-	
-	if (ot)
-		BLI_strncpy(kmi->idname, ot->idname, OP_MAX_TYPENAME);
-}
-
-static void operator_search_cb(const struct bContext *UNUSED(C), void *UNUSED(arg_kmi),
-                               const char *str, uiSearchItems *items)
-{
-	GHashIterator *iter = WM_operatortype_iter();
-
-	for (; !BLI_ghashIterator_done(iter); BLI_ghashIterator_step(iter)) {
-		wmOperatorType *ot = BLI_ghashIterator_getValue(iter);
-		
-		if (BLI_strcasestr(ot->idname, str)) {
-			char name[OP_MAX_TYPENAME];
-			
-			/* display name for menu */
-			WM_operator_py_idname(name, ot->idname);
-			
-			if (false == uiSearchItemAdd(items, name, ot, 0))
-				break;
-		}
-	}
-	BLI_ghashIterator_free(iter);
-}
-
-/* operator Search browse menu, open */
-static uiBlock *operator_search_menu(bContext *C, ARegion *ar, void *arg_kmi)
-{
-	static char search[OP_MAX_TYPENAME];
-	wmEvent event;
-	wmWindow *win = CTX_wm_window(C);
-	wmKeyMapItem *kmi = arg_kmi;
-	wmOperatorType *ot = WM_operatortype_find(kmi->idname, 0);
-	uiBlock *block;
-	uiBut *but;
-	
-	/* clear initial search string, then all items show */
-	search[0] = 0;
-	
-	block = uiBeginBlock(C, ar, "_popup", UI_EMBOSS);
-	uiBlockSetFlag(block, UI_BLOCK_LOOP | UI_BLOCK_REDRAW | UI_BLOCK_SEARCH_MENU);
-	
-	/* fake button, it holds space for search items */
-	uiDefBut(block, LABEL, 0, "", 10, 15, uiSearchBoxWidth(), uiSearchBoxHeight(), NULL, 0, 0, 0, 0, NULL);
-	
-	but = uiDefSearchBut(block, search, 0, ICON_VIEWZOOM, sizeof(search), 10, 0, 150, UI_UNIT_Y, 0, 0, "");
-	uiButSetSearchFunc(but, operator_search_cb, arg_kmi, operator_call_cb, ot);
-	
-	uiBoundsBlock(block, 6);
-	uiBlockSetDirection(block, UI_DOWN);
-	uiEndBlock(C, block);
-	
-	wm_event_init_from_window(win, &event);
-	event.type = EVT_BUT_OPEN;
-	event.val = KM_PRESS;
-	event.customdata = but;
-	event.customdatafree = FALSE;
-	wm_event_add(win, &event);
-	
-	return block;
-}
-
-#define OL_KM_KEYBOARD      0
-#define OL_KM_MOUSE         1
-#define OL_KM_TWEAK         2
-#define OL_KM_SPECIALS      3
-
-static short keymap_menu_type(short type)
-{
-	if (ISKEYBOARD(type)) return OL_KM_KEYBOARD;
-	if (ISTWEAK(type)) return OL_KM_TWEAK;
-	if (ISMOUSE(type)) return OL_KM_MOUSE;
-//	return OL_KM_SPECIALS;
-	return 0;
-}
-
-static const char *keymap_type_menu(void)
-{
-	static const char string[] =
-	    "Event Type%t"
-	    "|Keyboard%x" STRINGIFY(OL_KM_KEYBOARD)
-	    "|Mouse%x" STRINGIFY(OL_KM_MOUSE)
-	    "|Tweak%x" STRINGIFY(OL_KM_TWEAK)
-//	"|Specials%x" STRINGIFY(OL_KM_SPECIALS)
-	;
-
-	return string;
-}
-
-static const char *keymap_mouse_menu(void)
-{
-	static const char string[] =
-	    "Mouse Event%t"
-	    "|Left Mouse%x" STRINGIFY(LEFTMOUSE)
-	    "|Middle Mouse%x" STRINGIFY(MIDDLEMOUSE)
-	    "|Right Mouse%x" STRINGIFY(RIGHTMOUSE)
-	    "|Middle Mouse%x" STRINGIFY(MIDDLEMOUSE)
-	    "|Right Mouse%x" STRINGIFY(RIGHTMOUSE)
-	    "|Button4 Mouse%x" STRINGIFY(BUTTON4MOUSE)
-	    "|Button5 Mouse%x" STRINGIFY(BUTTON5MOUSE)
-	    "|Action Mouse%x" STRINGIFY(ACTIONMOUSE)
-	    "|Select Mouse%x" STRINGIFY(SELECTMOUSE)
-	    "|Mouse Move%x" STRINGIFY(MOUSEMOVE)
-	    "|Wheel Up%x" STRINGIFY(WHEELUPMOUSE)
-	    "|Wheel Down%x" STRINGIFY(WHEELDOWNMOUSE)
-	    "|Wheel In%x" STRINGIFY(WHEELINMOUSE)
-	    "|Wheel Out%x" STRINGIFY(WHEELOUTMOUSE)
-	    "|Mouse/Trackpad Pan%x" STRINGIFY(MOUSEPAN)
-	    "|Mouse/Trackpad Zoom%x" STRINGIFY(MOUSEZOOM)
-	    "|Mouse/Trackpad Rotate%x" STRINGIFY(MOUSEROTATE)
-	;
-
-	return string;
-}
-
-static const char *keymap_tweak_menu(void)
-{
-	static const char string[] =
-	    "Tweak Event%t"
-	    "|Left Mouse%x" STRINGIFY(EVT_TWEAK_L)
-	    "|Middle Mouse%x" STRINGIFY(EVT_TWEAK_M)
-	    "|Right Mouse%x" STRINGIFY(EVT_TWEAK_R)
-	    "|Action Mouse%x" STRINGIFY(EVT_TWEAK_A)
-	    "|Select Mouse%x" STRINGIFY(EVT_TWEAK_S)
-	;
-
-	return string;
-}
-
-static const char *keymap_tweak_dir_menu(void)
-{
-	static const char string[] =
-	    "Tweak Direction%t"
-	    "|Any%x" STRINGIFY(KM_ANY)
-	    "|North%x" STRINGIFY(EVT_GESTURE_N)
-	    "|North-East%x" STRINGIFY(EVT_GESTURE_NE)
-	    "|East%x" STRINGIFY(EVT_GESTURE_E)
-	    "|Sout-East%x" STRINGIFY(EVT_GESTURE_SE)
-	    "|South%x" STRINGIFY(EVT_GESTURE_S)
-	    "|South-West%x" STRINGIFY(EVT_GESTURE_SW)
-	    "|West%x" STRINGIFY(EVT_GESTURE_W)
-	    "|North-West%x" STRINGIFY(EVT_GESTURE_NW)
-	;
-
-	return string;
-}
-
-
-static void keymap_type_cb(bContext *C, void *kmi_v, void *UNUSED(arg_v))
-{
-	wmKeyMapItem *kmi = kmi_v;
-	short maptype = keymap_menu_type(kmi->type);
-	
-	if (maptype != kmi->maptype) {
-		switch (kmi->maptype) {
-			case OL_KM_KEYBOARD:
-				kmi->type = AKEY;
-				kmi->val = KM_PRESS;
-				break;
-			case OL_KM_MOUSE:
-				kmi->type = LEFTMOUSE;
-				kmi->val = KM_PRESS;
-				break;
-			case OL_KM_TWEAK:
-				kmi->type = EVT_TWEAK_L;
-				kmi->val = KM_ANY;
-				break;
-			case OL_KM_SPECIALS:
-				kmi->type = AKEY;
-				kmi->val = KM_PRESS;
-				break;
-		}
-		ED_region_tag_redraw(CTX_wm_region(C));
-	}
-}
-
-static void outliner_draw_keymapbuts(uiBlock *block, ARegion *ar, SpaceOops *soops, ListBase *lb)
-{
-	TreeElement *te;
-	TreeStoreElem *tselem;
-	
-	uiBlockSetEmboss(block, UI_EMBOSST);
-	
-	for (te = lb->first; te; te = te->next) {
-		tselem = TREESTORE(te);
-		if (te->ys + 2 * UI_UNIT_Y >= ar->v2d.cur.ymin && te->ys <= ar->v2d.cur.ymax) {
-			uiBut *but;
-			const char *str;
-			int xstart = 240;
-			int butw1 = UI_UNIT_X; /* operator */
-			int butw2 = 90; /* event type, menus */
-			int butw3 = 43; /* modifiers */
-
-			if (tselem->type == TSE_KEYMAP_ITEM) {
-				wmKeyMapItem *kmi = te->directdata;
-				
-				/* modal map? */
-				if (kmi->propvalue) {
-					/* pass */
-				}
-				else {
-					uiDefBlockBut(block, operator_search_menu, kmi, "", xstart, te->ys + 1, butw1, UI_UNIT_Y - 1,
-					              TIP_("Assign new Operator"));
-				}
-				xstart += butw1 + 10;
-				
-				/* map type button */
-				kmi->maptype = keymap_menu_type(kmi->type);
-				
-				str = keymap_type_menu();
-				but = uiDefButS(block, MENU, 0, str,    xstart, te->ys + 1, butw2, UI_UNIT_Y - 1, &kmi->maptype,
-				                0, 0, 0, 0, TIP_("Event type"));
-				uiButSetFunc(but, keymap_type_cb, kmi, NULL);
-				xstart += butw2 + 5;
-				
-				/* edit actual event */
-				switch (kmi->maptype) {
-					case OL_KM_KEYBOARD:
-						uiDefKeyevtButS(block, 0, "", xstart, te->ys + 1, butw2, UI_UNIT_Y - 1, &kmi->type,
-						                TIP_("Key code"));
-						xstart += butw2 + 5;
-						break;
-					case OL_KM_MOUSE:
-						str = keymap_mouse_menu();
-						uiDefButS(block, MENU, 0, str, xstart, te->ys + 1, butw2, UI_UNIT_Y - 1, &kmi->type,
-						          0, 0, 0, 0, TIP_("Mouse button"));
-						xstart += butw2 + 5;
-						break;
-					case OL_KM_TWEAK:
-						str = keymap_tweak_menu();
-						uiDefButS(block, MENU, 0, str, xstart, te->ys + 1, butw2, UI_UNIT_Y - 1, &kmi->type,
-						          0, 0, 0, 0, TIP_("Tweak gesture"));
-						xstart += butw2 + 5;
-						str = keymap_tweak_dir_menu();
-						uiDefButS(block, MENU, 0, str, xstart, te->ys + 1, butw2, UI_UNIT_Y - 1, &kmi->val,
-						          0, 0, 0, 0, TIP_("Tweak gesture direction"));
-						xstart += butw2 + 5;
-						break;
-				}
-				
-				/* modifiers */
-				uiDefButS(block, OPTION, 0, IFACE_("Shift"), xstart, te->ys + 1, butw3 + 5, UI_UNIT_Y - 1,
-				          &kmi->shift, 0, 0, 0, 0, TIP_("Modifier"));
-				xstart += butw3 + 5;
-				uiDefButS(block, OPTION, 0, IFACE_("Ctrl"), xstart, te->ys + 1, butw3, UI_UNIT_Y - 1, &kmi->ctrl,
-				          0, 0, 0, 0, TIP_("Modifier"));
-				xstart += butw3;
-				uiDefButS(block, OPTION, 0, IFACE_("Alt"), xstart, te->ys + 1, butw3, UI_UNIT_Y - 1, &kmi->alt,
-				          0, 0, 0, 0, TIP_("Modifier"));
-				xstart += butw3;
-				uiDefButS(block, OPTION, 0, IFACE_("OS"), xstart, te->ys + 1, butw3, UI_UNIT_Y - 1, &kmi->oskey,
-				          0, 0, 0, 0, TIP_("Modifier"));
-				xstart += butw3 + 5;
-				uiDefKeyevtButS(block, 0, "", xstart, te->ys + 1, butw3, UI_UNIT_Y - 1, &kmi->keymodifier,
-				                TIP_("Key Modifier code"));
-				xstart += butw3 + 5;

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list