Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-06-27 11:51:52 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-06-27 11:51:52 +0400
commita1abdf1c1c59f908684001d1d9b0b4bbc392cca7 (patch)
tree862dda5356e2b532a86bb1774514e193b8ed3a10 /source/blender
parent93bb6238e0c6b7ea008776f4e1c3958ef5382c09 (diff)
fix [#27778] Set Bone Flags - No Scale - Toggle seems not to work.
Toggling options on the selection is better done as a generic operator. Replace ARMATURE_OT_flags_set and POSE_OT_flags_set with WM_OT_context_collection_boolean_set and use menus to access it with specific settings. This way its easy make a key shortcut which toggles any boolean on any collection - sequences, metaballs, objects, bones etc.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/editors/armature/armature_intern.h4
-rw-r--r--source/blender/editors/armature/armature_ops.c24
-rw-r--r--source/blender/editors/armature/editarmature.c123
3 files changed, 7 insertions, 144 deletions
diff --git a/source/blender/editors/armature/armature_intern.h b/source/blender/editors/armature/armature_intern.h
index 82decf8d1cf..85da7a212c9 100644
--- a/source/blender/editors/armature/armature_intern.h
+++ b/source/blender/editors/armature/armature_intern.h
@@ -79,8 +79,6 @@ void ARMATURE_OT_separate(struct wmOperatorType *ot);
void ARMATURE_OT_autoside_names(struct wmOperatorType *ot);
void ARMATURE_OT_flip_names(struct wmOperatorType *ot);
-void ARMATURE_OT_flags_set(struct wmOperatorType *ot);
-
void ARMATURE_OT_layers_show_all(struct wmOperatorType *ot);
void ARMATURE_OT_armature_layers(struct wmOperatorType *ot);
void ARMATURE_OT_bone_layers(struct wmOperatorType *ot);
@@ -125,8 +123,6 @@ void POSE_OT_flip_names(struct wmOperatorType *ot);
void POSE_OT_quaternions_flip(struct wmOperatorType *ot);
-void POSE_OT_flags_set(struct wmOperatorType *ot);
-
void POSE_OT_armature_layers(struct wmOperatorType *ot);
void POSE_OT_bone_layers(struct wmOperatorType *ot);
diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c
index 545cff82483..7bc9bb48a4c 100644
--- a/source/blender/editors/armature/armature_ops.c
+++ b/source/blender/editors/armature/armature_ops.c
@@ -85,8 +85,6 @@ void ED_operatortypes_armature(void)
WM_operatortype_append(ARMATURE_OT_autoside_names);
WM_operatortype_append(ARMATURE_OT_flip_names);
- WM_operatortype_append(ARMATURE_OT_flags_set);
-
WM_operatortype_append(ARMATURE_OT_layers_show_all);
WM_operatortype_append(ARMATURE_OT_armature_layers);
WM_operatortype_append(ARMATURE_OT_bone_layers);
@@ -141,8 +139,6 @@ void ED_operatortypes_armature(void)
WM_operatortype_append(POSE_OT_quaternions_flip);
- WM_operatortype_append(POSE_OT_flags_set);
-
WM_operatortype_append(POSE_OT_armature_layers);
WM_operatortype_append(POSE_OT_bone_layers);
@@ -268,12 +264,9 @@ void ED_keymap_armature(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "ARMATURE_OT_separate", PKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
/* set flags */
- kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_flags_set", WKEY, KM_PRESS, KM_SHIFT, 0);
- RNA_enum_set(kmi->ptr, "mode", 2); // toggle
- kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_flags_set", WKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
- RNA_enum_set(kmi->ptr, "mode", 1); // enable
- kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_flags_set", WKEY, KM_PRESS, KM_ALT, 0);
- RNA_enum_set(kmi->ptr, "mode", 0); // clear
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_toggle", WKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_enable", WKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_disable", WKEY, KM_PRESS, KM_ALT, 0);
/* armature/bone layers */
WM_keymap_add_item(keymap, "ARMATURE_OT_layers_show_all", ACCENTGRAVEKEY, KM_PRESS, KM_CTRL, 0);
@@ -349,13 +342,10 @@ void ED_keymap_armature(wmKeyConfig *keyconf)
WM_keymap_add_menu(keymap, "VIEW3D_MT_pose_group", GKEY, KM_PRESS, KM_CTRL, 0);
/* set flags */
- kmi= WM_keymap_add_item(keymap, "POSE_OT_flags_set", WKEY, KM_PRESS, KM_SHIFT, 0);
- RNA_enum_set(kmi->ptr, "mode", 2); // toggle
- kmi= WM_keymap_add_item(keymap, "POSE_OT_flags_set", WKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
- RNA_enum_set(kmi->ptr, "mode", 1); // enable
- kmi= WM_keymap_add_item(keymap, "POSE_OT_flags_set", WKEY, KM_PRESS, KM_ALT, 0);
- RNA_enum_set(kmi->ptr, "mode", 0); // clear
-
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_toggle", WKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_enable", WKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_disable", WKEY, KM_PRESS, KM_ALT, 0);
+
/* armature/bone layers */
WM_keymap_add_item(keymap, "ARMATURE_OT_layers_show_all", ACCENTGRAVEKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "POSE_OT_armature_layers", MKEY, KM_PRESS, KM_SHIFT, 0);
diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c
index abf08393544..20352206121 100644
--- a/source/blender/editors/armature/editarmature.c
+++ b/source/blender/editors/armature/editarmature.c
@@ -1352,30 +1352,6 @@ static void *get_nearest_bone (bContext *C, short findunsel, int x, int y)
return NULL;
}
-/* 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;
- }
- }
-}
-
/* Get the first available child of an editbone */
static EditBone *editbone_get_child(bArmature *arm, EditBone *pabone, short use_visibility)
{
@@ -1396,105 +1372,6 @@ static EditBone *editbone_get_child(bArmature *arm, EditBone *pabone, short use_
return chbone;
}
-/* callback for posemode setflag */
-static int pose_setflag_exec (bContext *C, wmOperator *op)
-{
- int flag= RNA_enum_get(op->ptr, "type");
- int mode= RNA_enum_get(op->ptr, "mode");
-
- /* loop over all selected pchans */
- CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pose_bones)
- {
- bone_setflag(&pchan->bone->flag, flag, mode);
- }
- CTX_DATA_END;
-
- /* note, notifier might evolve */
- WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ED_object_pose_armature(CTX_data_active_object(C)));
-
- return OPERATOR_FINISHED;
-}
-
-/* callback for editbones setflag */
-static int armature_bones_setflag_exec (bContext *C, wmOperator *op)
-{
- int flag= RNA_enum_get(op->ptr, "type");
- int mode= RNA_enum_get(op->ptr, "mode");
-
- /* loop over all selected pchans */
- CTX_DATA_BEGIN(C, EditBone *, ebone, selected_bones)
- {
- bone_setflag(&ebone->flag, flag, mode);
- }
- CTX_DATA_END;
-
- /* note, notifier might evolve */
- WM_event_add_notifier(C, NC_OBJECT|ND_POSE, CTX_data_edit_object(C));
-
- return OPERATOR_FINISHED;
-}
-
-/* settings that can be changed */
-static EnumPropertyItem prop_bone_setting_types[] = {
- {BONE_DRAWWIRE, "DRAWWIRE", 0, "Draw Wire", ""},
- {BONE_NO_DEFORM, "DEFORM", 0, "Deform", ""},
- {BONE_MULT_VG_ENV, "MULT_VG", 0, "Multiply Vertex Groups", ""},
- {BONE_HINGE, "HINGE", 0, "Hinge", ""},
- {BONE_NO_SCALE, "NO_SCALE", 0, "No Scale", ""},
- {BONE_EDITMODE_LOCKED, "LOCKED", 0, "Locked", "(For EditMode only)"},
- {0, NULL, 0, NULL, NULL}
-};
-
-/* ways that settings can be changed */
-static EnumPropertyItem prop_bone_setting_modes[] = {
- {0, "CLEAR", 0, "Clear", ""},
- {1, "ENABLE", 0, "Enable", ""},
- {2, "TOGGLE", 0, "Toggle", ""},
- {0, NULL, 0, NULL, NULL}
-};
-
-
-void ARMATURE_OT_flags_set (wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Set Bone Flags";
- ot->idname= "ARMATURE_OT_flags_set";
- ot->description= "Set flags for armature bones";
-
- /* callbacks */
- ot->invoke= WM_menu_invoke;
- ot->exec= armature_bones_setflag_exec;
- ot->poll= ED_operator_editarmature;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-
- /* properties */
- ot->prop= RNA_def_enum(ot->srna, "type", prop_bone_setting_types, 0, "Type", "");
- RNA_def_enum(ot->srna, "mode", prop_bone_setting_modes, 0, "Mode", "");
-}
-
-void POSE_OT_flags_set (wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Set Bone Flags";
- ot->idname= "POSE_OT_flags_set";
- ot->description= "Set flags for armature bones";
-
- /* callbacks */
- ot->invoke= WM_menu_invoke;
- ot->exec= pose_setflag_exec;
- ot->poll= ED_operator_posemode;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-
- /* properties */
- ot->prop= RNA_def_enum(ot->srna, "type", prop_bone_setting_types, 0, "Type", "");
- RNA_def_enum(ot->srna, "mode", prop_bone_setting_modes, 0, "Mode", "");
-}
-
-
/* **************** END PoseMode & EditMode *************************** */
/* **************** Posemode stuff ********************** */