[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26255] trunk/blender/source/blender/ editors/transform: Use modal keymap events for transform numinput increment and decrement

Martin Poirier theeth at yahoo.com
Mon Jan 25 18:48:03 CET 2010


Revision: 26255
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26255
Author:   theeth
Date:     2010-01-25 18:48:02 +0100 (Mon, 25 Jan 2010)

Log Message:
-----------
Use modal keymap events for transform numinput increment and decrement

Modified Paths:
--------------
    trunk/blender/source/blender/editors/transform/transform.c
    trunk/blender/source/blender/editors/transform/transform.h
    trunk/blender/source/blender/editors/transform/transform_numinput.c

Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c	2010-01-25 17:24:04 UTC (rev 26254)
+++ trunk/blender/source/blender/editors/transform/transform.c	2010-01-25 17:48:02 UTC (rev 26255)
@@ -470,6 +470,8 @@
 #define TFM_MODAL_CONS_OFF		15
 #define TFM_MODAL_ADD_SNAP		16
 #define TFM_MODAL_REMOVE_SNAP	17
+/*	18 and 19 used by numinput, defined in transform.h
+ * */
 
 /* called in transform_ops.c, on each regeneration of keymaps */
 wmKeyMap* transform_modal_keymap(wmKeyConfig *keyconf)
@@ -492,6 +494,8 @@
 	{TFM_MODAL_CONS_OFF, "CONS_OFF", 0, "Remove Constraints", ""},
 	{TFM_MODAL_ADD_SNAP, "ADD_SNAP", 0, "Add Snap Point", ""},
 	{TFM_MODAL_REMOVE_SNAP, "REMOVE_SNAP", 0, "Remove Last Snap Point", ""},
+	{TFM_MODAL_INCREMENT_UP, "INCREMENT_UP", 0, "Numinput Increment Up", ""},
+	{TFM_MODAL_INCREMENT_DOWN, "INCREMENT_DOWN", 0, "Numinput Increment Down", ""},
 	{0, NULL, 0, NULL, NULL}};
 	
 	wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Transform Modal Map");
@@ -519,6 +523,9 @@
 	WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, 0, 0, TFM_MODAL_ADD_SNAP);
 	WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, KM_ALT, 0, TFM_MODAL_REMOVE_SNAP);
 
+	WM_modalkeymap_add_item(keymap, UPARROWKEY, KM_PRESS, 0, 0, TFM_MODAL_INCREMENT_UP);
+	WM_modalkeymap_add_item(keymap, DOWNARROWKEY, KM_PRESS, 0, 0, TFM_MODAL_INCREMENT_DOWN);
+
 	return keymap;
 }
 
@@ -702,6 +709,9 @@
 				handled = 0;
 				break;
 		}
+
+		// Modal numinput events
+		t->redraw |= handleNumInput(&(t->num), event, t->snap[1]);
 	}
 	/* else do non-mapped events */
 	else if (event->val==KM_PRESS) {

Modified: trunk/blender/source/blender/editors/transform/transform.h
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.h	2010-01-25 17:24:04 UTC (rev 26254)
+++ trunk/blender/source/blender/editors/transform/transform.h	2010-01-25 17:48:02 UTC (rev 26255)
@@ -679,6 +679,9 @@
 void applyNumInput(NumInput *n, float *vec);
 char handleNumInput(NumInput *n, struct wmEvent *event, float increment);
 
+#define TFM_MODAL_INCREMENT_UP   18
+#define TFM_MODAL_INCREMENT_DOWN 19
+
 /*********************** NDofInput ********************************/
 
 void initNDofInput(NDofInput *n);

Modified: trunk/blender/source/blender/editors/transform/transform_numinput.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_numinput.c	2010-01-25 17:24:04 UTC (rev 26254)
+++ trunk/blender/source/blender/editors/transform/transform_numinput.c	2010-01-25 17:48:02 UTC (rev 26255)
@@ -164,127 +164,138 @@
 	float Val = 0;
 	short idx = n->idx, idx_max = n->idx_max;
 
-	switch (event->type) {
-    case DOWNARROWKEY: /* Increments down*/
-		if (!n->ctrl[idx])
-			n->ctrl[idx] = 1;
+	if (event->type == EVT_MODAL_MAP) {
+		switch (event->val) {
+		case TFM_MODAL_INCREMENT_UP:
+			if (!n->ctrl[idx])
+				n->ctrl[idx] = 1;
 
-        n->val[idx] -= increment;
-        break;
-    case UPARROWKEY: /* Increments up*/
-		if (!n->ctrl[idx])
-			n->ctrl[idx] = 1;
-
-		n->val[idx] += increment;
-        break;
-	case BACKSPACEKEY:
-		if (n->ctrl[idx] == 0) {
-			n->val[0]		= 
-				n->val[1]	= 
-				n->val[2]	= 0.0f;
-			n->ctrl[0]		= 
-				n->ctrl[1]	= 
-				n->ctrl[2]	= 0;
-			n->inv[0]		= 
-				n->inv[1]	= 
-				n->inv[2]	= 0;
-		}
-		else {
-			n->val[idx] = 0.0f;
-			n->ctrl[idx] = 0;
-			n->inv[idx] = 0;
-		}
-		break;
-	case PERIODKEY:
-	case PADPERIOD:
-		if (n->flag & NUM_NO_FRACTION)
+	        n->val[idx] += increment;
 			break;
+		case TFM_MODAL_INCREMENT_DOWN:
+			if (!n->ctrl[idx])
+				n->ctrl[idx] = 1;
 
-		switch (n->ctrl[idx])
-		{
-		case 0:
-		case 1:
-			n->ctrl[idx] = 10;
+	        n->val[idx] -= increment;
 			break;
-		case -1:
-			n->ctrl[idx] = -10;
 		}
-		break;
-	case PADMINUS:
-		if(event->alt)
+	} else {
+		switch (event->type) {
+		case UPARROWKEY: /* Increments up*/
+			if (!n->ctrl[idx])
+				n->ctrl[idx] = 1;
+
+			n->val[idx] += increment;
 			break;
-	case MINUSKEY:
-		if (n->flag & NUM_NO_NEGATIVE)
+		case BACKSPACEKEY:
+			if (n->ctrl[idx] == 0) {
+				n->val[0]		=
+					n->val[1]	=
+					n->val[2]	= 0.0f;
+				n->ctrl[0]		=
+					n->ctrl[1]	=
+					n->ctrl[2]	= 0;
+				n->inv[0]		=
+					n->inv[1]	=
+					n->inv[2]	= 0;
+			}
+			else {
+				n->val[idx] = 0.0f;
+				n->ctrl[idx] = 0;
+				n->inv[idx] = 0;
+			}
 			break;
+		case PERIODKEY:
+		case PADPERIOD:
+			if (n->flag & NUM_NO_FRACTION)
+				break;
 
-		if (n->ctrl[idx]) {
-			n->ctrl[idx] *= -1;
-			n->val[idx] *= -1;
-		}
-		else
-			n->ctrl[idx] = -1;
-		break;
-	case PADSLASHKEY:
-	case SLASHKEY:
-		n->inv[idx] = !n->inv[idx];
-		break;
-	case TABKEY:
-		idx++;
-		if (idx > idx_max)
-			idx = 0;
-		n->idx = idx;
-		break;
-	case PAD9:
-	case NINEKEY:
-		Val += 1.0f;
-	case PAD8:
-	case EIGHTKEY:
-		Val += 1.0f;
-	case PAD7:
-	case SEVENKEY:
-		Val += 1.0f;
-	case PAD6:
-	case SIXKEY:
-		Val += 1.0f;
-	case PAD5:
-	case FIVEKEY:
-		Val += 1.0f;
-	case PAD4:
-	case FOURKEY:
-		Val += 1.0f;
-	case PAD3:
-	case THREEKEY:
-		Val += 1.0f;
-	case PAD2:
-	case TWOKEY:
-		Val += 1.0f;
-	case PAD1:
-	case ONEKEY:
-		Val += 1.0f;
-	case PAD0:
-	case ZEROKEY:
-		if (!n->ctrl[idx])
-			n->ctrl[idx] = 1;
+			switch (n->ctrl[idx])
+			{
+			case 0:
+			case 1:
+				n->ctrl[idx] = 10;
+				break;
+			case -1:
+				n->ctrl[idx] = -10;
+			}
+			break;
+		case PADMINUS:
+			if(event->alt)
+				break;
+		case MINUSKEY:
+			if (n->flag & NUM_NO_NEGATIVE)
+				break;
 
-		if (fabs(n->val[idx]) > 9999999.0f);
-		else if (n->ctrl[idx] == 1) {
-			n->val[idx] *= 10;
-			n->val[idx] += Val;
-		}
-		else if (n->ctrl[idx] == -1) {
-			n->val[idx] *= 10;
-			n->val[idx] -= Val;
-		}
-		else {
-			/* float resolution breaks when over six digits after comma */
-			if( ABS(n->ctrl[idx]) < 10000000) {
-				n->val[idx] += Val / (float)n->ctrl[idx];
-				n->ctrl[idx] *= 10;
+			if (n->ctrl[idx]) {
+				n->ctrl[idx] *= -1;
+				n->val[idx] *= -1;
 			}
+			else
+				n->ctrl[idx] = -1;
+			break;
+		case PADSLASHKEY:
+		case SLASHKEY:
+			n->inv[idx] = !n->inv[idx];
+			break;
+		case TABKEY:
+			idx++;
+			if (idx > idx_max)
+				idx = 0;
+			n->idx = idx;
+			break;
+		case PAD9:
+		case NINEKEY:
+			Val += 1.0f;
+		case PAD8:
+		case EIGHTKEY:
+			Val += 1.0f;
+		case PAD7:
+		case SEVENKEY:
+			Val += 1.0f;
+		case PAD6:
+		case SIXKEY:
+			Val += 1.0f;
+		case PAD5:
+		case FIVEKEY:
+			Val += 1.0f;
+		case PAD4:
+		case FOURKEY:
+			Val += 1.0f;
+		case PAD3:
+		case THREEKEY:
+			Val += 1.0f;
+		case PAD2:
+		case TWOKEY:
+			Val += 1.0f;
+		case PAD1:
+		case ONEKEY:
+			Val += 1.0f;
+		case PAD0:
+		case ZEROKEY:
+			if (!n->ctrl[idx])
+				n->ctrl[idx] = 1;
+
+			if (fabs(n->val[idx]) > 9999999.0f);
+			else if (n->ctrl[idx] == 1) {
+				n->val[idx] *= 10;
+				n->val[idx] += Val;
+			}
+			else if (n->ctrl[idx] == -1) {
+				n->val[idx] *= 10;
+				n->val[idx] -= Val;
+			}
+			else {
+				/* float resolution breaks when over six digits after comma */
+				if( ABS(n->ctrl[idx]) < 10000000) {
+					n->val[idx] += Val / (float)n->ctrl[idx];
+					n->ctrl[idx] *= 10;
+				}
+			}
+			break;
+		default:
+			return 0;
 		}
-		break;
-	default:
-		return 0;
 	}
 	
 	/* REDRAW SINCE NUMBERS HAVE CHANGED */





More information about the Bf-blender-cvs mailing list