Action Constraint GUI - Refinements and Clarification
authorJoshua Leung <aligorith@gmail.com>
Fri, 27 Jan 2012 01:30:58 +0000 (01:30 +0000)
committerJoshua Leung <aligorith@gmail.com>
Fri, 27 Jan 2012 01:30:58 +0000 (01:30 +0000)
While looking at a bug report, I found that the current GUI for the Action
Constraint actually didn't make sense, mixing up settings so that it wasn't
clear which settings corresponded to which others. This commit cleans up the
layout into a clearer two-column design to have a "from" -> "to" layout, making
all the
relationships between things clear.

For more details see http://aligorith.blogspot.com/2012/01/action-constraint-
gui-revised.html

release/scripts/startup/bl_ui/properties_object_constraint.py
source/blender/makesrna/intern/rna_constraint.c

index 57adfa1fa2028ec1694669da3ebb3fff9fab1eed..dff23e6238f0dae79a5daedb0171f294b874d41b 100644 (file)
@@ -434,25 +434,28 @@ class ConstraintButtonsPanel():
     def ACTION(self, context, layout, con):
         self.target_template(layout, con)
 
-        layout.prop(con, "action")
-
-        layout.prop(con, "transform_channel")
-
         split = layout.split()
-
-        col = split.column(align=True)
-        col.label(text="Action Length:")
-        col.prop(con, "frame_start", text="Start")
-        col.prop(con, "frame_end", text="End")
-
+        
+        col = split.column()
+        col.label(text="From Target:")
+        col.prop(con, "transform_channel", text="")
+        col.prop(con, "target_space", text="")
+        
+        col = split.column()
+        col.label(text="To Action:")
+        col.prop(con, "action", text="")
+        
+        split = layout.split()
+        
         col = split.column(align=True)
         col.label(text="Target Range:")
         col.prop(con, "min", text="Min")
         col.prop(con, "max", text="Max")
-
-        row = layout.row()
-        row.label(text="Convert:")
-        row.prop(con, "target_space", text="")
+        
+        col = split.column(align=True)
+        col.label(text="Action Range:")
+        col.prop(con, "frame_start", text="Start")
+        col.prop(con, "frame_end", text="End")
 
     def LOCKED_TRACK(self, context, layout, con):
         self.target_template(layout, con)
index 3258b8c3dcbfe38c0c6a75f1e1a49dce4fe2a084..e12f411f81f51bc5af51463ab310144ff74c9ab8 100644 (file)
@@ -1026,15 +1026,15 @@ static void rna_def_constraint_action(BlenderRNA *brna)
        PropertyRNA *prop;
 
        static EnumPropertyItem transform_channel_items[] = {
-               {20, "LOCATION_X", 0, "Location X", ""},
-               {21, "LOCATION_Y", 0, "Location Y", ""},
-               {22, "LOCATION_Z", 0, "Location Z", ""},
-               {00, "ROTATION_X", 0, "Rotation X", ""},
-               {01, "ROTATION_Y", 0, "Rotation Y", ""},
-               {02, "ROTATION_Z", 0, "Rotation Z", ""},
-               {10, "SCALE_X", 0, "Scale X", ""},
-               {11, "SCALE_Y", 0, "Scale Y", ""},
-               {12, "SCALE_Z", 0, "Scale Z", ""},
+               {20, "LOCATION_X", 0, "X Location", ""},
+               {21, "LOCATION_Y", 0, "Y Location", ""},
+               {22, "LOCATION_Z", 0, "Z Location", ""},
+               {00, "ROTATION_X", 0, "X Rotation", ""},
+               {01, "ROTATION_Y", 0, "Y Rotation", ""},
+               {02, "ROTATION_Z", 0, "Z Rotation", ""},
+               {10, "SCALE_X", 0, "Z Scale", ""},
+               {11, "SCALE_Y", 0, "Y Scale", ""},
+               {12, "SCALE_Z", 0, "Z Scale", ""},
                {0, NULL, 0, NULL, NULL}};
 
        srna= RNA_def_struct(brna, "ActionConstraint", "Constraint");
@@ -2011,12 +2011,12 @@ static void rna_def_constraint_spline_ik(BlenderRNA *brna)
        RNA_def_property_int_sdna(prop, NULL, "chainlen");
        RNA_def_property_range(prop, 1, 255); // TODO: this should really check the max length of the chain the constraint is attached to
        RNA_def_property_ui_text(prop, "Chain Length", "How many bones are included in the chain");
-       RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
+       RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); // XXX: this update goes wrong... needs extra flush?
        
        /* direct access to bindings */
        // NOTE: only to be used by experienced users
        prop= RNA_def_property(srna, "joint_bindings", PROP_FLOAT, PROP_FACTOR);
-       RNA_def_property_array(prop, 32); // XXX this is the maximum value allowed
+       RNA_def_property_array(prop, 32); // XXX this is the maximum value allowed - why? 
        RNA_def_property_flag(prop, PROP_DYNAMIC);
        RNA_def_property_dynamic_array_funcs(prop, "rna_SplineIKConstraint_joint_bindings_get_length");
        RNA_def_property_float_funcs(prop, "rna_SplineIKConstraint_joint_bindings_get", "rna_SplineIKConstraint_joint_bindings_set", NULL);