diff --git a/release/scripts/keyingsets/keyingsets_builtins.py b/release/scripts/keyingsets/keyingsets_builtins.py index 2afc440892d..73b75057299 100644 --- a/release/scripts/keyingsets/keyingsets_builtins.py +++ b/release/scripts/keyingsets/keyingsets_builtins.py @@ -141,7 +141,7 @@ class BUILTIN_KSI_VisualLoc(bpy.types.KeyingSetInfo): class BUILTIN_KSI_VisualRot(bpy.types.KeyingSetInfo): bl_label = "Visual Rotation" - insertkey_visual = True + bl_options = {'INSERTKEY_VISUAL'} # poll - use predefined callback for selected bones/objects poll = RKS_POLL_selected_items @@ -156,7 +156,7 @@ class BUILTIN_KSI_VisualRot(bpy.types.KeyingSetInfo): class BUILTIN_KSI_VisualLocRot(bpy.types.KeyingSetInfo): bl_label = "Visual LocRot" - insertkey_visual = True + bl_options = {'INSERTKEY_VISUAL'} # poll - use predefined callback for selected bones/objects poll = RKS_POLL_selected_items diff --git a/release/scripts/ui/properties_scene.py b/release/scripts/ui/properties_scene.py index bb89b52cce6..6b54b86fabd 100644 --- a/release/scripts/ui/properties_scene.py +++ b/release/scripts/ui/properties_scene.py @@ -96,9 +96,7 @@ class SCENE_PT_keying_sets(SceneButtonsPanel, bpy.types.Panel): col = row.column() col.label(text="Keyframing Settings:") - col.prop(ks, "use_insertkey_needed", text="Needed") - col.prop(ks, "use_insertkey_visual", text="Visual") - col.prop(ks, "use_insertkey_xyz_to_rgb", text="XYZ to RGB") + col.prop(ks, "bl_options") class SCENE_PT_keying_set_paths(SceneButtonsPanel, bpy.types.Panel): @@ -234,7 +232,7 @@ class ANIM_OT_keying_set_export(bpy.types.Operator): f.write("# Keying Set: %s\n" % ks.name) f.write("import bpy\n\n") - f.write("scene= bpy.data.scenes[0]\n\n") + f.write("scene= bpy.data.scenes[0]\n\n") # XXX, why not use the current scene? # Add KeyingSet and set general settings f.write("# Keying Set Level declarations\n") @@ -243,10 +241,8 @@ class ANIM_OT_keying_set_export(bpy.types.Operator): if not ks.is_path_absolute: f.write("ks.is_path_absolute = False\n") f.write("\n") - - f.write("ks.use_insertkey_needed = %s\n" % ks.use_insertkey_needed) - f.write("ks.use_insertkey_visual = %s\n" % ks.use_insertkey_visual) - f.write("ks.use_insertkey_xyz_to_rgb = %s\n" % ks.use_insertkey_xyz_to_rgb) + + f.write("ks.bl_options = %r\n" % ks.bl_options) f.write("\n") # generate and write set of lookups for id's used in paths diff --git a/source/blender/makesrna/intern/rna_animation.c b/source/blender/makesrna/intern/rna_animation.c index 42cd6fd5911..cee6b7f854a 100644 --- a/source/blender/makesrna/intern/rna_animation.c +++ b/source/blender/makesrna/intern/rna_animation.c @@ -394,21 +394,18 @@ static void rna_KeyingSet_paths_clear(KeyingSet *keyingset, ReportList *reports) static void rna_def_common_keying_flags(StructRNA *srna, short reg) { PropertyRNA *prop; - - prop= RNA_def_property(srna, "use_insertkey_needed", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "keyingflag", INSERTKEY_NEEDED); - RNA_def_property_ui_text(prop, "Insert Keyframes - Only Needed", "Only insert keyframes where they're needed in the relevant F-Curves"); - if (reg) RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL); - - prop= RNA_def_property(srna, "use_insertkey_visual", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "keyingflag", INSERTKEY_MATRIX); - RNA_def_property_ui_text(prop, "Insert Keyframes - Visual", "Insert keyframes based on 'visual transforms'"); - if (reg) RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL); - - prop= RNA_def_property(srna, "use_insertkey_xyz_to_rgb", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "keyingflag", INSERTKEY_XYZ2RGB); - RNA_def_property_ui_text(prop, "F-Curve Colors - XYZ to RGB", "Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis"); - if (reg) RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL); + + static EnumPropertyItem keying_flag_items[] = { + {INSERTKEY_NEEDED, "INSERTKEY_NEEDED", 0, "Insert Keyframes - Only Needed", "Only insert keyframes where they're needed in the relevant F-Curves"}, + {INSERTKEY_MATRIX, "INSERTKEY_VISUAL", 0, "Insert Keyframes - Visual", "Insert keyframes based on 'visual transforms'"}, + {INSERTKEY_XYZ2RGB, "INSERTKEY_XYZ_TO_RGB", 0, "F-Curve Colors - XYZ to RGB", "Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis"}, + {0, NULL, 0, NULL, NULL}}; + + prop= RNA_def_property(srna, "bl_options", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "keyingflag"); + RNA_def_property_enum_items(prop, keying_flag_items); + RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL|PROP_ENUM_FLAG); + RNA_def_property_ui_text(prop, "Options", "Keying set options"); } /* --- */ diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index eba441ad82f..1bcaf490c8d 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -939,22 +939,12 @@ static void rna_TimeLine_remove(Scene *scene, ReportList *reports, TimeMarker *m MEM_freeN(marker); } -static KeyingSet *rna_Scene_keying_set_new(Scene *sce, ReportList *reports, - char name[], int absolute, int insertkey_needed, int insertkey_visual) +static KeyingSet *rna_Scene_keying_set_new(Scene *sce, ReportList *reports, char name[]) { KeyingSet *ks= NULL; - short flag=0, keyingflag=0; - - /* validate flags */ - if (absolute) - flag |= KEYINGSET_ABSOLUTE; - if (insertkey_needed) - keyingflag |= INSERTKEY_NEEDED; - if (insertkey_visual) - keyingflag |= INSERTKEY_MATRIX; - + /* call the API func, and set the active keyingset index */ - ks= BKE_keyingset_add(&sce->keyingsets, name, flag, keyingflag); + ks= BKE_keyingset_add(&sce->keyingsets, name, KEYINGSET_ABSOLUTE, 0); if (ks) { sce->active_keyingset= BLI_countlist(&sce->keyingsets); @@ -3010,17 +3000,13 @@ static void rna_def_scene_keying_sets(BlenderRNA *brna, PropertyRNA *cprop) func= RNA_def_function(srna, "new", "rna_Scene_keying_set_new"); RNA_def_function_ui_description(func, "Add a new Keying Set to Scene."); RNA_def_function_flag(func, FUNC_USE_REPORTS); + /* name */ + RNA_def_string(func, "name", "KeyingSet", 64, "Name", "Name of Keying Set"); + /* returns the new KeyingSet */ parm= RNA_def_pointer(func, "keyingset", "KeyingSet", "", "Newly created Keying Set."); RNA_def_function_return(func, parm); - /* name */ - RNA_def_string(func, "name", "KeyingSet", 64, "Name", "Name of Keying Set"); - /* flags */ - RNA_def_boolean(func, "absolute", 1, "Absolute", "Keying Set defines specific paths/settings to be keyframed (i.e. is not reliant on context info)"); - /* keying flags */ - RNA_def_boolean(func, "insertkey_needed", 0, "Insert Keyframes - Only Needed", "Only insert keyframes where they're needed in the relevant F-Curves."); - RNA_def_boolean(func, "insertkey_visual", 0, "Insert Keyframes - Visual", "Insert keyframes based on 'visual transforms'."); - + prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE); RNA_def_property_struct_type(prop, "KeyingSet"); RNA_def_property_flag(prop, PROP_EDITABLE);