diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-06-01 19:44:06 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-06-01 20:26:07 +0300 |
commit | d18cd768bb0cc7dd9eba36e3f0c4e2189853c08f (patch) | |
tree | 2ab5904859fe19fa3ffb401b3f65db3b481a4f75 /release/scripts/startup/bl_ui/properties_data_bone.py | |
parent | bfe1d0e0dc6281d33448c3d4ddfa2e231bbc5566 (diff) |
UI: use single column properties for object data
patch by @billreynish w/ minor edits
Diffstat (limited to 'release/scripts/startup/bl_ui/properties_data_bone.py')
-rw-r--r-- | release/scripts/startup/bl_ui/properties_data_bone.py | 320 |
1 files changed, 144 insertions, 176 deletions
diff --git a/release/scripts/startup/bl_ui/properties_data_bone.py b/release/scripts/startup/bl_ui/properties_data_bone.py index e1763e363ae..079669dbd02 100644 --- a/release/scripts/startup/bl_ui/properties_data_bone.py +++ b/release/scripts/startup/bl_ui/properties_data_bone.py @@ -62,88 +62,63 @@ class BONE_PT_transform(BoneButtonsPanel, Panel): def draw(self, context): layout = self.layout + layout.use_property_split = True ob = context.object bone = context.bone + col = layout.column() + if bone and ob: pchan = ob.pose.bones[bone.name] - - row = layout.row() - col = row.column() - col.prop(pchan, "location") col.active = not (bone.parent and bone.use_connect) - col = row.column() + sub = col.row(align=True) + sub.prop(pchan, "location") + sub.prop(pchan, "lock_location", text="") + + col = layout.column() if pchan.rotation_mode == 'QUATERNION': - col.prop(pchan, "rotation_quaternion", text="Rotation") + sub = col.row(align=True) + sub.prop(pchan, "rotation_quaternion", text="Rotation") + subsub = sub.column(align=True) + subsub.prop(pchan, "lock_rotation_w", text="") + subsub.prop(pchan, "lock_rotation", text="") elif pchan.rotation_mode == 'AXIS_ANGLE': - #col.label(text="Rotation") + # col.label(text="Rotation") #col.prop(pchan, "rotation_angle", text="Angle") #col.prop(pchan, "rotation_axis", text="Axis") - col.prop(pchan, "rotation_axis_angle", text="Rotation") + sub = col.row(align=True) + sub.prop(pchan, "rotation_axis_angle", text="Rotation") + subsub = sub.column(align=True) + subsub.prop(pchan, "lock_rotation_w", text="") + subsub.prop(pchan, "lock_rotation", text="") else: - col.prop(pchan, "rotation_euler", text="Rotation") + sub = col.row(align=True) + sub.prop(pchan, "rotation_euler", text="Rotation") + sub.prop(pchan, "lock_rotation", text="") - row.column().prop(pchan, "scale") + col = layout.column() + sub = col.row(align=True) + sub.prop(pchan, "scale") + sub.prop(pchan, "lock_scale", text="") - layout.prop(pchan, "rotation_mode") + col = layout.column() + col.prop(pchan, "rotation_mode") elif context.edit_bone: bone = context.edit_bone - row = layout.row() - row.column().prop(bone, "head") - row.column().prop(bone, "tail") - - col = row.column() - sub = col.column(align=True) - sub.label(text="Roll:") - sub.prop(bone, "roll", text="") - sub.label() - sub.prop(bone, "lock") - - -class BONE_PT_transform_locks(BoneButtonsPanel, Panel): - bl_label = "Transform Locks" - bl_options = {'DEFAULT_CLOSED'} - - @classmethod - def poll(cls, context): - ob = context.object - return ob and ob.mode == 'POSE' and context.bone - - def draw(self, context): - layout = self.layout - - ob = context.object - bone = context.bone - pchan = ob.pose.bones[bone.name] - - split = layout.split(percentage=0.1) - - col = split.column(align=True) - col.label(text="") - col.label(text="X:") - col.label(text="Y:") - col.label(text="Z:") - - col = split.column() - col.active = not (bone.parent and bone.use_connect) - col.prop(pchan, "lock_location", text="Location") - - col = split.column() - col.prop(pchan, "lock_rotation", text="Rotation") - - col = split.column() - col.prop(pchan, "lock_scale", text="Scale") + col = layout.column() + col.prop(bone, "head") + col.prop(bone, "tail") - if pchan.rotation_mode in {'QUATERNION', 'AXIS_ANGLE'}: - row = layout.row() - row.prop(pchan, "lock_rotations_4d", text="Lock Rotation") + col = layout.column() + col.prop(bone, "roll") + col.prop(bone, "lock") - sub = row.row() - sub.active = pchan.lock_rotations_4d - sub.prop(pchan, "lock_rotation_w", text="W") + col = layout.column() + col.prop(bone, "tail_radius") + col.prop(bone, "envelope_distance") class BONE_PT_curved(BoneButtonsPanel, Panel): @@ -166,54 +141,52 @@ class BONE_PT_curved(BoneButtonsPanel, Panel): bbone = bone layout = self.layout + layout.use_property_split = True + layout.prop(bone, "bbone_segments", text="Segments") col = layout.column() col.active = bone.bbone_segments > 1 - row = col.row() - sub = row.column(align=True) - sub.label(text="Curve XY Offsets:") - sub.prop(bbone, "bbone_curveinx", text="In X") - sub.prop(bbone, "bbone_curveoutx", text="Out X") - sub.prop(bbone, "bbone_curveiny", text="In Y") - sub.prop(bbone, "bbone_curveouty", text="Out Y") - - sub = row.column(align=True) - sub.label("Roll:") - sub.prop(bbone, "bbone_rollin", text="In") - sub.prop(bbone, "bbone_rollout", text="Out") - sub.prop(bone, "use_endroll_as_inroll") - - row = col.row() - sub = row.column(align=True) - sub.label(text="Scale:") - sub.prop(bbone, "bbone_scalein", text="In") - sub.prop(bbone, "bbone_scaleout", text="Out") - - sub = row.column(align=True) - sub.label("Easing:") - sub.prop(bbone, "bbone_easein", text="In") - sub.prop(bbone, "bbone_easeout", text="Out") + col = layout.column(align=True) + col.prop(bbone, "bbone_curveinx", text="Curve In X") + col.prop(bbone, "bbone_curveiny", text="In Y") + + col = layout.column(align=True) + col.prop(bbone, "bbone_curveoutx", text="Curve Out X") + col.prop(bbone, "bbone_curveouty", text="Out Y") + + col = layout.column(align=True) + col.prop(bbone, "bbone_rollin", text="Roll In") + col.prop(bbone, "bbone_rollout", text="Out") + col.prop(bone, "use_endroll_as_inroll") + + col = layout.column(align=True) + col.prop(bbone, "bbone_scalein", text="Scale In") + col.prop(bbone, "bbone_scaleout", text="Out") + + col = layout.column(align=True) + col.prop(bbone, "bbone_easein", text="Ease In") + col.prop(bbone, "bbone_easeout", text="Out") if pchan: layout.separator() col = layout.column() + col.use_property_split = False col.prop(pchan, "use_bbone_custom_handles") - row = col.row() - row.active = pchan.use_bbone_custom_handles + col = layout.column(align=True) + col.active = pchan.use_bbone_custom_handles + col.use_property_split = True - sub = row.column(align=True) - sub.label(text="In:") - sub.prop_search(pchan, "bbone_custom_handle_start", ob.pose, "bones", text="") - sub.prop(pchan, "use_bbone_relative_start_handle", text="Relative") + sub = col.column() + sub.prop_search(pchan, "bbone_custom_handle_start", ob.pose, "bones", text="Custom Handle Start") + sub.prop_search(pchan, "bbone_custom_handle_end", ob.pose, "bones", text="End") - sub = row.column(align=True) - sub.label(text="Out:") - sub.prop_search(pchan, "bbone_custom_handle_end", ob.pose, "bones", text="") - sub.prop(pchan, "use_bbone_relative_end_handle", text="Relative") + sub = col.column(align=True) + sub.prop(pchan, "use_bbone_relative_start_handle", text="Relative Handle Start") + sub.prop(pchan, "use_bbone_relative_end_handle", text="End") class BONE_PT_relations(BoneButtonsPanel, Panel): @@ -221,6 +194,7 @@ class BONE_PT_relations(BoneButtonsPanel, Panel): def draw(self, context): layout = self.layout + layout.use_property_split = True ob = context.object bone = context.bone @@ -232,26 +206,22 @@ class BONE_PT_relations(BoneButtonsPanel, Panel): elif bone is None: bone = context.edit_bone - split = layout.split() - - col = split.column() - col.label(text="Layers:") + col = layout.column() + col.use_property_split = False col.prop(bone, "layers", text="") + col.use_property_split = True + col = layout.column() col.separator() - if ob and pchan: - col.label(text="Bone Group:") - col.prop_search(pchan, "bone_group", ob.pose, "bone_groups", text="") - col.label(text="Object Children:") - col.prop(bone, "use_relative_parent") - - col = split.column() - col.label(text="Parent:") if context.bone: - col.prop(bone, "parent", text="") + col.prop(bone, "parent") else: - col.prop_search(bone, "parent", arm, "edit_bones", text="") + col.prop_search(bone, "parent", arm, "edit_bones") + + if ob and pchan: + col.prop(bone, "use_relative_parent") + col.prop_search(pchan, "bone_group", ob.pose, "bone_groups", text="Bone Group") sub = col.column() sub.active = (bone.parent is not None) @@ -274,6 +244,7 @@ class BONE_PT_display(BoneButtonsPanel, Panel): # note. this works ok in edit-mode but isn't # all that useful so disabling for now. layout = self.layout + layout.use_property_split = True ob = context.object bone = context.bone @@ -285,23 +256,20 @@ class BONE_PT_display(BoneButtonsPanel, Panel): bone = context.edit_bone if bone: - split = layout.split() - col = split.column() + col = layout.column() col.prop(bone, "hide", text="Hide") sub = col.column() sub.active = bool(pchan and pchan.custom_shape) sub.prop(bone, "show_wire", text="Wireframe") if pchan: - col = split.column() - - col.label(text="Custom Shape:") - col.prop(pchan, "custom_shape", text="") + col = layout.column() + col.prop(pchan, "custom_shape") if pchan.custom_shape: col.prop(pchan, "use_custom_shape_bone_size", text="Bone Size") col.prop(pchan, "custom_shape_scale", text="Scale") - col.prop_search(pchan, "custom_shape_transform", ob.pose, "bones", text="At") + col.prop_search(pchan, "custom_shape_transform", ob.pose, "bones") class BONE_PT_inverse_kinematics(BoneButtonsPanel, Panel): @@ -315,80 +283,82 @@ class BONE_PT_inverse_kinematics(BoneButtonsPanel, Panel): def draw(self, context): layout = self.layout + layout.use_property_split = True ob = context.object bone = context.bone pchan = ob.pose.bones[bone.name] - row = layout.row() - active = pchan.is_in_ik_chain - split = layout.split(percentage=0.25) - split.prop(pchan, "lock_ik_x", text="X") - split.active = active - row = split.row() - row.prop(pchan, "ik_stiffness_x", text="Stiffness", slider=True) - row.active = pchan.lock_ik_x is False and active + col = layout.column() + col.prop(pchan, "ik_stretch", slider=True) + col.active = active + + layout.separator() + + col = layout.column(align=True) - split = layout.split(percentage=0.25) - sub = split.row() + col.prop(pchan, "lock_ik_x", text="Lock IK X") + col.prop(pchan, "lock_ik_y", text="Y") + col.prop(pchan, "lock_ik_z", text="Z") - sub.prop(pchan, "use_ik_limit_x", text="Limit") + col = layout.column(align=True) + + sub = col.column(align=True) sub.active = pchan.lock_ik_x is False and active - sub = split.row(align=True) - sub.prop(pchan, "ik_min_x", text="") - sub.prop(pchan, "ik_max_x", text="") - sub.active = pchan.lock_ik_x is False and pchan.use_ik_limit_x and active + sub.prop(pchan, "ik_stiffness_x", text="Stiffness X", slider=True) + sub = col.column(align=True) + sub.active = pchan.lock_ik_y is False and active + sub.prop(pchan, "ik_stiffness_y", text="Y", slider=True) + sub = col.column(align=True) + sub.active = pchan.lock_ik_z is False and active + sub.prop(pchan, "ik_stiffness_z", text="Z", slider=True) + + col = layout.column(align=True) - split = layout.split(percentage=0.25) - split.prop(pchan, "lock_ik_y", text="Y") - split.active = active - row = split.row() - row.prop(pchan, "ik_stiffness_y", text="Stiffness", slider=True) - row.active = pchan.lock_ik_y is False and active + sub = col.column() + sub.active = pchan.lock_ik_x is False and active + sub.prop(pchan, "use_ik_limit_x", text="Limit X") - split = layout.split(percentage=0.25) - sub = split.row() + sub = col.column(align=True) + sub.active = pchan.lock_ik_x is False and pchan.use_ik_limit_x and active + sub.prop(pchan, "ik_min_x", text="Min") + sub.prop(pchan, "ik_max_x", text="Max") + + col.separator() - sub.prop(pchan, "use_ik_limit_y", text="Limit") + sub = col.column() sub.active = pchan.lock_ik_y is False and active + sub.prop(pchan, "use_ik_limit_y", text="Limit Y") - sub = split.row(align=True) - sub.prop(pchan, "ik_min_y", text="") - sub.prop(pchan, "ik_max_y", text="") + sub = col.column(align=True) sub.active = pchan.lock_ik_y is False and pchan.use_ik_limit_y and active + sub.prop(pchan, "ik_min_y", text="Min") + sub.prop(pchan, "ik_max_y", text="Max") - split = layout.split(percentage=0.25) - split.prop(pchan, "lock_ik_z", text="Z") - split.active = active - sub = split.row() - sub.prop(pchan, "ik_stiffness_z", text="Stiffness", slider=True) - sub.active = pchan.lock_ik_z is False and active - - split = layout.split(percentage=0.25) - sub = split.row() + col.separator() - sub.prop(pchan, "use_ik_limit_z", text="Limit") + sub = col.column() sub.active = pchan.lock_ik_z is False and active - sub = split.row(align=True) - sub.prop(pchan, "ik_min_z", text="") - sub.prop(pchan, "ik_max_z", text="") + sub.prop(pchan, "use_ik_limit_z", text="Limit Z") + + sub = col.column(align=True) sub.active = pchan.lock_ik_z is False and pchan.use_ik_limit_z and active + sub.prop(pchan, "ik_min_z", text="Min") + sub.prop(pchan, "ik_max_z", text="Max") - split = layout.split(percentage=0.25) - split.label(text="Stretch:") - sub = split.row() - sub.prop(pchan, "ik_stretch", text="", slider=True) - sub.active = active + col.separator() if ob.pose.ik_solver == 'ITASC': - split = layout.split() - col = split.column() + + col = layout.column() col.prop(pchan, "use_ik_rotation_control", text="Control Rotation") col.active = active - col = split.column() - col.prop(pchan, "ik_rotation_weight", text="Weight", slider=True) + + col = layout.column() + + col.prop(pchan, "ik_rotation_weight", text="IK Rotation Weight", slider=True) col.active = active # not supported yet #row = layout.row() @@ -410,6 +380,7 @@ class BONE_PT_deform(BoneButtonsPanel, Panel): def draw(self, context): layout = self.layout + layout.use_property_split = True bone = context.bone @@ -418,17 +389,15 @@ class BONE_PT_deform(BoneButtonsPanel, Panel): layout.active = bone.use_deform - row = layout.row() + col = layout.column() + col.prop(bone, "envelope_distance", text="Envelope Distance") + col.prop(bone, "envelope_weight", text="Envelope Weight") + col.prop(bone, "use_envelope_multiply", text="Envelope Multiply") - col = row.column(align=True) - col.label(text="Envelope:") - col.prop(bone, "envelope_distance", text="Distance") - col.prop(bone, "envelope_weight", text="Weight") - col.prop(bone, "use_envelope_multiply", text="Multiply") + col.separator() - col = row.column(align=True) - col.label(text="Envelope Radius:") - col.prop(bone, "head_radius", text="Head") + col = layout.column(align=True) + col.prop(bone, "head_radius", text="Radius Head") col.prop(bone, "tail_radius", text="Tail") @@ -448,7 +417,6 @@ class BONE_PT_custom_props(BoneButtonsPanel, PropertyPanel, Panel): classes = ( BONE_PT_context_bone, BONE_PT_transform, - BONE_PT_transform_locks, BONE_PT_curved, BONE_PT_relations, BONE_PT_display, |