Revision: 18932
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18932
Author:   mfoxdogg
Date:     2009-02-12 00:50:06 +0100 (Thu, 12 Feb 2009)

Log Message:
-----------
  2.5
******
ported selection_invert for both edit armature and pose mode

Modified Paths:
--------------
    
branches/blender2.5/blender/source/blender/editors/armature/armature_intern.h
    branches/blender2.5/blender/source/blender/editors/armature/armature_ops.c
    branches/blender2.5/blender/source/blender/editors/armature/editarmature.c

Modified: 
branches/blender2.5/blender/source/blender/editors/armature/armature_intern.h
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/armature/armature_intern.h   
    2009-02-11 23:02:21 UTC (rev 18931)
+++ 
branches/blender2.5/blender/source/blender/editors/armature/armature_intern.h   
    2009-02-11 23:50:06 UTC (rev 18932)
@@ -42,6 +42,7 @@
 void ARMATURE_OT_parent_set(struct wmOperatorType *ot);
 void ARMATURE_OT_parent_clear(struct wmOperatorType *ot);
 void ARMATURE_OT_de_select_all(struct wmOperatorType *ot);
+void ARMATURE_OT_selection_invert(struct wmOperatorType *ot);
 
 void POSE_OT_hide(struct wmOperatorType *ot);
 void POSE_OT_reveil(struct wmOperatorType *ot);
@@ -49,6 +50,7 @@
 void POSE_OT_loc_clear(struct wmOperatorType *ot);
 void POSE_OT_scale_clear(struct wmOperatorType *ot);
 void POSE_OT_de_select_all(struct wmOperatorType *ot);
+void POSE_OT_selection_invert(struct wmOperatorType *ot);
 void POSE_OT_select_parent(struct wmOperatorType *ot);
 
 #endif /* ED_ARMATURE_INTERN_H */

Modified: 
branches/blender2.5/blender/source/blender/editors/armature/armature_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/armature/armature_ops.c  
2009-02-11 23:02:21 UTC (rev 18931)
+++ branches/blender2.5/blender/source/blender/editors/armature/armature_ops.c  
2009-02-11 23:50:06 UTC (rev 18932)
@@ -119,6 +119,7 @@
        WM_operatortype_append(ARMATURE_OT_parent_clear);
        
        WM_operatortype_append(ARMATURE_OT_de_select_all);
+       WM_operatortype_append(ARMATURE_OT_selection_invert);
        
        /* POSE */
        WM_operatortype_append(POSE_OT_hide);
@@ -129,6 +130,7 @@
        WM_operatortype_append(POSE_OT_scale_clear);
        
        WM_operatortype_append(POSE_OT_de_select_all);
+       WM_operatortype_append(POSE_OT_selection_invert);
 
        WM_operatortype_append(POSE_OT_select_parent);
        
@@ -157,6 +159,7 @@
        WM_keymap_add_item(keymap, "ARMATURE_OT_clear_parent", PKEY, KM_PRESS, 
KM_ALT, 0);
        
        WM_keymap_add_item(keymap, "ARMATURE_OT_de_select_all", AKEY, KM_PRESS, 
0, 0);
+       WM_keymap_add_item(keymap, "ARMATURE_OT_selection_invert", IKEY, 
KM_PRESS, KM_CTRL, 0);
        
        WM_keymap_add_item(keymap, "ARMATURE_OT_test", TKEY, KM_PRESS, 0, 0);  
// XXX temp test for context iterators... to be removed
        
@@ -174,6 +177,7 @@
        WM_keymap_add_item(keymap, "POSE_OT_scale_clear", SKEY, KM_PRESS, 
KM_ALT, 0);
        
        WM_keymap_add_item(keymap, "POSE_OT_de_select_all", AKEY, KM_PRESS, 0, 
0);
+       WM_keymap_add_item(keymap, "POSE_OT_selection_invert", IKEY, KM_PRESS, 
KM_CTRL, 0);
 
        WM_keymap_add_item(keymap, "POSE_OT_select_parent", PKEY, KM_PRESS, 
KM_SHIFT, 0);
 }

Modified: 
branches/blender2.5/blender/source/blender/editors/armature/editarmature.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/armature/editarmature.c  
2009-02-11 23:02:21 UTC (rev 18931)
+++ branches/blender2.5/blender/source/blender/editors/armature/editarmature.c  
2009-02-11 23:50:06 UTC (rev 18932)
@@ -3509,8 +3509,45 @@
        
        RNA_def_enum(ot->srna, "type", prop_editarm_clear_parent_types, 0, 
"ClearType", "What way to clear parenting");
 }
-/* ****** (de)select All *******/
 
+/* ****************  Selections  ******************/
+
+static int armature_selection_invert_exec(bContext *C, wmOperator *op)
+{
+       Object *obedit = CTX_data_edit_object(C);
+       bArmature *arm= obedit->data;
+       EditBone *ebone;
+       
+       /*      Set the flags */
+       for (ebone=arm->edbo->first;ebone;ebone=ebone->next) {
+               /* select bone */
+               if(arm->layer & ebone->layer && (ebone->flag & 
BONE_HIDDEN_A)==0) {
+                       ebone->flag ^= (BONE_SELECTED | BONE_TIPSEL | 
BONE_ROOTSEL);
+                       ebone->flag &= ~BONE_ACTIVE;
+               }
+       }       
+       
+       /* undo? */
+       WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, NULL);
+       
+       return OPERATOR_FINISHED;
+}
+
+void ARMATURE_OT_selection_invert(wmOperatorType *ot)
+{
+       
+       /* identifiers */
+       ot->name= "Invert Selection";
+       ot->idname= "ARMATURE_OT_selection_invert";
+       
+       /* api callbacks */
+       ot->exec= armature_selection_invert_exec;
+       ot->poll= ED_operator_editarmature;
+       
+       /* flags */
+       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+       
+}
 static int armature_de_select_all_exec(bContext *C, wmOperator *op)
 {
        Object *obedit = CTX_data_edit_object(C);
@@ -4380,7 +4417,42 @@
 
 }
 
+/* ***************** selections ********************** */
 
+static int pose_selection_invert_exec(bContext *C, wmOperator *op)
+{
+       Object *ob= CTX_data_active_object(C);
+       bArmature *arm= ob->data;
+       bPoseChannel *pchan;
+       
+       /*      Set the flags */
+       for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
+               if ((pchan->bone->layer & arm->layer) && !(pchan->bone->flag & 
BONE_HIDDEN_P)) {
+                               pchan->bone->flag ^= 
(BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL);
+                               pchan->bone->flag &= ~BONE_ACTIVE;
+               }
+       }       
+
+       WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, NULL);
+       
+       return OPERATOR_FINISHED;
+}
+
+void POSE_OT_selection_invert(wmOperatorType *ot)
+{
+       
+       /* identifiers */
+       ot->name= "Invert Selection";
+       ot->idname= "POSE_OT_selection_invert";
+       
+       /* api callbacks */
+       ot->exec= pose_selection_invert_exec;
+       ot->poll= ED_operator_posemode;
+       
+       /* flags */
+       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+       
+}
 static int pose_de_select_all_exec(bContext *C, wmOperator *op)
 {
        Object *ob= CTX_data_active_object(C);


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to