[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13794] trunk/blender/source/blender: Following on from the commits yesterday for "Action Channel Settings" quick-toggle tools, bones now have this functionality too.

Joshua Leung aligorith at gmail.com
Thu Feb 21 12:14:22 CET 2008


Revision: 13794
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13794
Author:   aligorith
Date:     2008-02-21 12:14:21 +0100 (Thu, 21 Feb 2008)

Log Message:
-----------
Following on from the commits yesterday for "Action Channel Settings" quick-toggle tools, bones now have this functionality too.

Use Shift-W to toggle, Ctrl-Shift-W to enable, and Alt-W to disable one of the bone's settings.

Modified Paths:
--------------
    trunk/blender/source/blender/include/BIF_editarmature.h
    trunk/blender/source/blender/src/editarmature.c
    trunk/blender/source/blender/src/header_action.c
    trunk/blender/source/blender/src/header_view3d.c
    trunk/blender/source/blender/src/space.c

Modified: trunk/blender/source/blender/include/BIF_editarmature.h
===================================================================
--- trunk/blender/source/blender/include/BIF_editarmature.h	2008-02-21 11:14:04 UTC (rev 13793)
+++ trunk/blender/source/blender/include/BIF_editarmature.h	2008-02-21 11:14:21 UTC (rev 13794)
@@ -111,6 +111,7 @@
 void	selectconnected_armature(void);
 void	selectconnected_posearmature(void);
 void	select_bone_parent(void);
+void	setflag_armature(short mode);
 void    unique_editbone_name (struct ListBase *ebones, char *name);
 
 void	auto_align_armature(short mode);

Modified: trunk/blender/source/blender/src/editarmature.c
===================================================================
--- trunk/blender/source/blender/src/editarmature.c	2008-02-21 11:14:04 UTC (rev 13793)
+++ trunk/blender/source/blender/src/editarmature.c	2008-02-21 11:14:21 UTC (rev 13794)
@@ -836,7 +836,99 @@
 	BIF_undo_push("Select Parent");
 }
 
+/* helper for setflag_sel_bone() */
+static void bone_setflag (int *bone, int flag, short mode)
+{
+	if (bone && flag) {
+		/* exception for inverse flags */
+		if (flag == BONE_NO_DEFORM) {
+			if (mode == 2)
+				*bone |= flag;
+			else if (mode == 1)
+				*bone &= ~flag;
+			else
+				*bone ^= flag;
 
+		}
+		else {
+			if (mode == 2)
+				*bone &= ~flag;
+			else if (mode == 1)
+				*bone |= flag;
+			else
+				*bone ^= flag;
+		}
+	}
+}
+
+/* used by posemode and editmode */
+void setflag_armature (short mode)
+{
+	Object *ob;
+	bArmature *arm;	
+	int flag;
+	
+	/* get data */
+	if (G.obedit)
+		ob= G.obedit;
+	else if (OBACT)
+		ob= OBACT;
+	else
+		return;
+	arm= (bArmature *)ob->data;
+	
+	/* get flag to set (sync these with the ones used in eBone_Flag */
+	if (mode == 2)
+		flag= pupmenu("Disable Setting%t|Draw Wire%x1|Deform%x2|Mult VG%x3|Hinge%x4|No Scale%x5");
+	else if (mode == 1)
+		flag= pupmenu("Enable Setting%t|Draw Wire%x1|Deform%x2|Mult VG%x3|Hinge%x4|No Scale%x5");
+	else
+		flag= pupmenu("Toggle Setting%t|Draw Wire%x1|Deform%x2|Mult VG%x3|Hinge%x4|No Scale%x5");
+	switch (flag) {
+		case 1: 	flag = BONE_DRAWWIRE; 	break;
+		case 2:		flag = BONE_NO_DEFORM; break;
+		case 3: 	flag = BONE_MULT_VG_ENV; break;
+		case 4:		flag = BONE_HINGE; break;
+		case 5:		flag = BONE_NO_SCALE; break;
+		default:	return;
+	}
+	
+	/* determine which mode armature is in */
+	if ((!G.obedit) && (ob->flag & OB_POSEMODE)) {
+		/* deal with pose channels */
+		bPoseChannel *pchan;
+		
+		/* set setting */
+		for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
+			if ((pchan->bone) && (arm->layer & pchan->bone->layer)) {
+				if (pchan->bone->flag & BONE_SELECTED) {
+					bone_setflag(&pchan->bone->flag, flag, mode);
+				}
+			}
+		}
+	}
+	else if (G.obedit) {
+		/* deal with editbones */
+		EditBone *curbone;
+		
+		/* set setting */
+		for (curbone= G.edbo.first; curbone; curbone= curbone->next) {
+			if (arm->layer & curbone->layer) {
+				if (curbone->flag & BONE_SELECTED) {
+					bone_setflag(&curbone->flag, flag, mode);
+				}
+			}
+		}
+	}
+	
+	allqueue(REDRAWVIEW3D, 0);
+	allqueue(REDRAWBUTSEDIT, 0);
+	allqueue(REDRAWBUTSOBJECT, 0);
+	allqueue(REDRAWOOPS, 0);
+	
+	BIF_undo_push("Change Bone Setting");
+}
+
 /* **************** END PoseMode & EditMode *************************** */
 /* **************** Posemode stuff ********************** */
 

Modified: trunk/blender/source/blender/src/header_action.c
===================================================================
--- trunk/blender/source/blender/src/header_action.c	2008-02-21 11:14:04 UTC (rev 13793)
+++ trunk/blender/source/blender/src/header_action.c	2008-02-21 11:14:21 UTC (rev 13794)
@@ -150,7 +150,8 @@
 	ACTMENU_KEY_DUPLICATE = 0,
 	ACTMENU_KEY_DELETE,
 	ACTMENU_KEY_CLEAN,
-	ACTMENU_KEY_SAMPLEKEYS
+	ACTMENU_KEY_SAMPLEKEYS,
+	ACTMENU_KEY_INSERTKEY
 };
 
 enum {
@@ -1244,6 +1245,9 @@
 		case ACTMENU_KEY_SAMPLEKEYS:
 			sample_action_keys();
 			break;
+		case ACTMENU_KEY_INSERTKEY:
+			insertkey_action();
+			break;
 	}
 }
 
@@ -1267,7 +1271,15 @@
 	
 	uiDefBut(block, SEPR, 0, "", 0, yco-=6, 
 					menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
+	
+	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, 
+					"Insert Key|I", 0, yco-=20, 
+					menuwidth, 19, NULL, 0.0, 0.0, 0, 
+					ACTMENU_KEY_INSERTKEY, "");
 
+	uiDefBut(block, SEPR, 0, "", 0, yco-=6, 
+			 menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
+					
 	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, 
 					"Duplicate|Shift D", 0, yco-=20, 
 					menuwidth, 19, NULL, 0.0, 0.0, 0, 

Modified: trunk/blender/source/blender/src/header_view3d.c
===================================================================
--- trunk/blender/source/blender/src/header_view3d.c	2008-02-21 11:14:04 UTC (rev 13793)
+++ trunk/blender/source/blender/src/header_view3d.c	2008-02-21 11:14:21 UTC (rev 13794)
@@ -3884,7 +3884,30 @@
 	return block;
 }
 
+static void do_view3d_armature_settingsmenu(void *arg, int event)
+{
+	setflag_armature(event);
+}
 
+static uiBlock *view3d_armature_settingsmenu(void *arg_unused)
+{
+	uiBlock *block;
+	short yco= 0, menuwidth=120;
+
+	block= uiNewBlock(&curarea->uiblocks, "view3d_armature_settingsmenu", 
+					  UI_EMBOSSP, UI_HELV, G.curscreen->mainwin);
+	uiBlockSetButmFunc(block, do_view3d_armature_settingsmenu, NULL);
+
+	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Toggle a Setting|Shift W", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 0, "");
+	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Enable a Setting|Ctrl Shift W", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 1, "");
+	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Disable a Setting|Alt W", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 2, "");
+
+	uiBlockSetDirection(block, UI_RIGHT);
+	uiTextBoundsBlock(block, 60);
+
+	return block;
+}
+
 static uiBlock *view3d_edit_armaturemenu(void *arg_unused)
 {
 	bArmature *arm= G.obedit->data;
@@ -3937,6 +3960,7 @@
 	uiDefBut(block, SEPR, 0, "",				0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
 	
 	uiDefIconTextBlockBut(block, view3d_edit_armature_parentmenu, NULL, ICON_RIGHTARROW_THIN, "Parent", 0, yco-=20, 120, 19, "");
+	uiDefIconTextBlockBut(block, view3d_armature_settingsmenu, NULL, ICON_RIGHTARROW_THIN, "Bone Settings", 0, yco-=20, 120, 19, "");
 	
 	uiDefBut(block, SEPR, 0, "",				0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
 	
@@ -4319,6 +4343,8 @@
 	
 	uiDefIconTextBlockBut(block, view3d_pose_armature_showhidemenu, 
 						  NULL, ICON_RIGHTARROW_THIN,   "Show/Hide Bones", 0, yco-=20, 120, 19, "");
+	uiDefIconTextBlockBut(block, view3d_armature_settingsmenu, 
+						  NULL, ICON_RIGHTARROW_THIN,   "Bone Settings", 0, yco-=20, 120, 19, "");
 	
 	if(curarea->headertype==HEADERTOP) {
 		uiBlockSetDirection(block, UI_DOWN);

Modified: trunk/blender/source/blender/src/space.c
===================================================================
--- trunk/blender/source/blender/src/space.c	2008-02-21 11:14:04 UTC (rev 13793)
+++ trunk/blender/source/blender/src/space.c	2008-02-21 11:14:21 UTC (rev 13794)
@@ -2547,7 +2547,23 @@
 				}
 				break;
 			case WKEY:
-				if((G.qual==LR_SHIFTKEY)) {
+				if ( ((ob) && (ob->flag & OB_POSEMODE)) ||
+					 ((G.obedit) && (G.obedit->type==OB_ARMATURE)) ) 
+				{
+					if (G.qual) {
+						if (G.qual == (LR_CTRLKEY|LR_SHIFTKEY))
+							val= 1;
+						else if (G.qual == LR_ALTKEY)
+							val= 2;
+						else
+							val= 0;
+						
+						setflag_armature(val);
+					}
+					else if (G.qual == 0)
+						special_editmenu();
+				}
+				else if((G.qual==LR_SHIFTKEY)) {
 					initTransform(TFM_WARP, CTX_NONE);
 					Transform();
 				}





More information about the Bf-blender-cvs mailing list