diff options
Diffstat (limited to 'release/ui/buttons_object_constraint.py')
-rw-r--r-- | release/ui/buttons_object_constraint.py | 91 |
1 files changed, 70 insertions, 21 deletions
diff --git a/release/ui/buttons_object_constraint.py b/release/ui/buttons_object_constraint.py index 1ff1bec199d..d44e6fdd10d 100644 --- a/release/ui/buttons_object_constraint.py +++ b/release/ui/buttons_object_constraint.py @@ -1,34 +1,39 @@ import bpy -class DataButtonsPanel(bpy.types.Panel): +class ConstraintButtonsPanel(bpy.types.Panel): __space_type__ = "BUTTONS_WINDOW" __region_type__ = "WINDOW" __context__ = "object" - def poll(self, context): - ob = context.active_object - return (ob != None) - -class DATA_PT_constraints(DataButtonsPanel): - __idname__ = "DATA_PT_constraints" - __label__ = "Constraints" - - def draw(self, context): - ob = context.active_object + def draw_constraint(self, con): layout = self.layout + box = layout.template_constraint(con) - row = layout.row() - row.item_menu_enumO("OBJECT_OT_constraint_add", "type") - row.itemL(); + if box: + if con.type == "COPY_LOCATION": + self.copy_location(box, con) - for con in ob.constraints: - box = layout.template_constraint(con) + # show/key buttons here are most likely obsolete now, with + # keyframing functionality being part of every button + if con.type not in ("RIGID_BODY_JOINT", "NULL"): + box.itemR(con, "influence") + + def space_template(self, layout, con, target=True, owner=True): + if target or owner: + row = layout.row() + + row.itemL(text="Convert:") + + if target: + row.itemR(con, "target_space", text="") - if box: - if con.type == 'COPY_LOCATION': - self.copy_location(box, con) - + if target and owner: + row.itemL(icon=8) # XXX + + if owner: + row.itemR(con, "owner_space", text="") + def target_template(self, layout, con, subtargets=True): layout.itemR(con, "target") # XXX limiting settings for only 'curves' or some type of object @@ -55,5 +60,49 @@ class DATA_PT_constraints(DataButtonsPanel): layout.itemR(con, "offset") -bpy.types.register(DATA_PT_constraints) + self.space_template(layout, con) + +class OBJECT_PT_constraints(ConstraintButtonsPanel): + __idname__ = "OBJECT_PT_constraints" + __label__ = "Constraints" + __context__ = "object" + + def poll(self, context): + ob = context.active_object + return (ob != None) + + def draw(self, context): + ob = context.active_object + layout = self.layout + + row = layout.row() + row.item_menu_enumO("OBJECT_OT_constraint_add", "type") + row.itemL(); + + for con in ob.constraints: + self.draw_constraint(con) + +class BONE_PT_constraints(ConstraintButtonsPanel): + __idname__ = "BONE_PT_constraints" + __label__ = "Constraints" + __context__ = "bone" + + def poll(self, context): + ob = context.active_object + return (ob and ob.type == "ARMATURE") + + def draw(self, context): + ob = context.active_object + pchan = ob.pose.pose_channels[0] + layout = self.layout + + #row = layout.row() + #row.item_menu_enumO("BONE_OT_constraint_add", "type") + #row.itemL(); + + for con in pchan.constraints: + self.draw_constraint(con) + +bpy.types.register(OBJECT_PT_constraints) +bpy.types.register(BONE_PT_constraints) |