diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2010-05-06 02:57:58 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2010-05-06 02:57:58 +0400 |
commit | 8a20433f0fef5ab2d881d010cd5bd19fe484e555 (patch) | |
tree | cd9e8f67eb2d4d16d1b62244025db41cd342e805 /release | |
parent | a1d0913afe228aa55c47eea2d3ffd617df67fcc0 (diff) | |
parent | 09e6190b490213851711ea7356e76142f527a523 (diff) |
Merged changes in the trunk up to revision 28600.
Diffstat (limited to 'release')
36 files changed, 203 insertions, 144 deletions
diff --git a/release/datafiles/blenderbuttons b/release/datafiles/blenderbuttons Binary files differindex d53a7b8ec51..a38525c7f46 100644 --- a/release/datafiles/blenderbuttons +++ b/release/datafiles/blenderbuttons diff --git a/release/scripts/modules/rigify/arm_biped.py b/release/scripts/modules/rigify/arm_biped.py index b75b26b5f2f..7a99eb5d80a 100644 --- a/release/scripts/modules/rigify/arm_biped.py +++ b/release/scripts/modules/rigify/arm_biped.py @@ -192,7 +192,7 @@ def fk(obj, definitions, base_names, options): # shoulder is used as a hinge fk_chain.rename("shoulder", "MCH-%s_hinge" % base_names[mt.arm]) - fk_chain.shoulder_e.translate(Vector(0.0, fk_chain.shoulder_e.length / 2, 0.0)) + fk_chain.shoulder_e.translate(Vector((0.0, fk_chain.shoulder_e.length / 2, 0.0))) # upper arm constrains to this. ex.socket_e = copy_bone_simple(arm, mt.arm, "MCH-%s_socket" % base_names[mt.arm]) @@ -240,7 +240,7 @@ def fk(obj, definitions, base_names, options): con.name = "hinge" con.target = obj con.subtarget = mt.shoulder - driver_fcurve = con.driver_add("influence", 0) + driver_fcurve = con.driver_add("influence") driver = driver_fcurve.driver diff --git a/release/scripts/modules/rigify/eye_balls.py b/release/scripts/modules/rigify/eye_balls.py index 20bb08f39a8..48f0448dfb3 100644 --- a/release/scripts/modules/rigify/eye_balls.py +++ b/release/scripts/modules/rigify/eye_balls.py @@ -57,7 +57,7 @@ def addget_shape_key_driver(obj, name="Key"): if driver_s.data_path == driver_path: fcurve = driver_s if fcurve == None: - fcurve = obj.data.shape_keys.keys[name].driver_add("value", 0) + fcurve = obj.data.shape_keys.keys[name].driver_add("value") fcurve.driver.type = 'AVERAGE' new = True @@ -217,7 +217,7 @@ def control(obj, definitions, base_names, options): eyes += ["ORG-"+name] # Get the average position of the eyes - center = Vector(0,0,0) + center = Vector((0, 0, 0)) for eye in eyes: center += eb[eye].head if len(eyes) != 0: @@ -295,7 +295,7 @@ def control(obj, definitions, base_names, options): con.target = obj con.subtarget = head - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' mod = fcurve.modifiers[0] diff --git a/release/scripts/modules/rigify/eye_lid.py b/release/scripts/modules/rigify/eye_lid.py index 30492e4e138..bb9749011c2 100644 --- a/release/scripts/modules/rigify/eye_lid.py +++ b/release/scripts/modules/rigify/eye_lid.py @@ -299,14 +299,15 @@ def control(obj, definitions, base_names, options): lid8 = copy_bone_simple(obj.data, definitions[9], base_names[definitions[9]]).name size = eb[lid1].length - eb[lid1].tail = eb[lid1].head + Vector(0,size,0) - eb[lid2].tail = eb[lid2].head + Vector(0,size,0) - eb[lid3].tail = eb[lid3].head + Vector(0,size,0) - eb[lid4].tail = eb[lid4].head + Vector(0,size,0) - eb[lid5].tail = eb[lid5].head + Vector(0,size,0) - eb[lid6].tail = eb[lid6].head + Vector(0,size,0) - eb[lid7].tail = eb[lid7].head + Vector(0,size,0) - eb[lid8].tail = eb[lid8].head + Vector(0,size,0) + size_y = Vector(0.0, size, 0.0) + eb[lid1].tail = eb[lid1].head + size_y + eb[lid2].tail = eb[lid2].head + size_y + eb[lid3].tail = eb[lid3].head + size_y + eb[lid4].tail = eb[lid4].head + size_y + eb[lid5].tail = eb[lid5].head + size_y + eb[lid6].tail = eb[lid6].head + size_y + eb[lid7].tail = eb[lid7].head + size_y + eb[lid8].tail = eb[lid8].head + size_y eb[lid1].roll = 0 eb[lid2].roll = 0 @@ -438,7 +439,7 @@ def control(obj, definitions, base_names, options): con.minimum = -distance*2 con.maximum = distance con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() @@ -457,7 +458,7 @@ def control(obj, definitions, base_names, options): con.minimum = -distance*2 con.maximum = distance con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() @@ -475,7 +476,7 @@ def control(obj, definitions, base_names, options): con.minimum = -distance*2 con.maximum = distance con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() @@ -493,7 +494,7 @@ def control(obj, definitions, base_names, options): con.minimum = -distance*2 con.maximum = distance con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() @@ -511,7 +512,7 @@ def control(obj, definitions, base_names, options): con.minimum = -distance*2 con.maximum = distance con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() @@ -530,7 +531,7 @@ def control(obj, definitions, base_names, options): con.minimum = -distance con.maximum = distance*2 con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() @@ -548,7 +549,7 @@ def control(obj, definitions, base_names, options): con.minimum = -distance con.maximum = distance*2 con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() @@ -566,7 +567,7 @@ def control(obj, definitions, base_names, options): con.minimum = -distance con.maximum = distance*2 con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() @@ -584,7 +585,7 @@ def control(obj, definitions, base_names, options): con.minimum = -distance con.maximum = distance*2 con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() @@ -602,7 +603,7 @@ def control(obj, definitions, base_names, options): con.minimum = -distance con.maximum = distance*2 con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() diff --git a/release/scripts/modules/rigify/finger_curl.py b/release/scripts/modules/rigify/finger_curl.py index 27ed437b5ac..63f1816012b 100644 --- a/release/scripts/modules/rigify/finger_curl.py +++ b/release/scripts/modules/rigify/finger_curl.py @@ -291,7 +291,7 @@ def main(obj, bone_definition, base_names, options): hinge_driver_path = pb[control].path_from_id() + '["hinge"]' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver var = driver.variables.new() driver.type = 'AVERAGE' diff --git a/release/scripts/modules/rigify/leg_biped.py b/release/scripts/modules/rigify/leg_biped.py index 2ea217847d7..53028986873 100644 --- a/release/scripts/modules/rigify/leg_biped.py +++ b/release/scripts/modules/rigify/leg_biped.py @@ -201,7 +201,7 @@ def ik(obj, bone_definition, base_names, options): ik.knee_target_e.local_location = False # roll the bone to point up... could also point in the same direction as ik.foot_roll - # ik.foot_roll_02_e.matrix * Vector(0.0, 0.0, 1.0) # ACK!, no rest matrix in editmode + # ik.foot_roll_02_e.matrix * Vector((0.0, 0.0, 1.0)) # ACK!, no rest matrix in editmode ik.foot_roll_01_e.align_roll((0.0, 0.0, -1.0)) bpy.ops.object.mode_set(mode='OBJECT') @@ -298,7 +298,7 @@ def fk(obj, bone_definition, base_names, options): ex.thigh_socket_e = copy_bone_simple(arm, mt_chain.thigh, "MCH-%s_socket" % base_names[mt_chain.thigh], parent=True) ex.thigh_socket = ex.thigh_socket_e.name - ex.thigh_socket_e.tail = ex.thigh_socket_e.head + Vector(0.0, 0.0, ex.thigh_socket_e.length / 4.0) + ex.thigh_socket_e.tail = ex.thigh_socket_e.head + Vector((0.0, 0.0, ex.thigh_socket_e.length / 4.0)) ex.thigh_hinge_e = copy_bone_simple(arm, mt.hips, "MCH-%s_hinge" % base_names[mt_chain.thigh], parent=False) ex.thigh_hinge = ex.thigh_hinge_e.name @@ -351,7 +351,7 @@ def fk(obj, bone_definition, base_names, options): # add driver hinge_driver_path = fk_chain.thigh_p.path_from_id() + '["hinge"]' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver var = driver.variables.new() driver.type = 'AVERAGE' diff --git a/release/scripts/modules/rigify/leg_quadruped.py b/release/scripts/modules/rigify/leg_quadruped.py index 3ee9065af61..688387bbd53 100644 --- a/release/scripts/modules/rigify/leg_quadruped.py +++ b/release/scripts/modules/rigify/leg_quadruped.py @@ -160,7 +160,7 @@ def ik(obj, bone_definition, base_names, options): ik.foot_roll_e.parent = ik_chain.foot_e ik.foot_roll_e.head -= mt_chain.toe_e.vector.normalize() * mt_chain.foot_e.length ik.foot_roll_e.tail = ik.foot_roll_e.head - (mt_chain.foot_e.vector.normalize() * mt_chain.toe_e.length) - ik.foot_roll_e.align_roll(mt_chain.foot_e.matrix.rotation_part() * Vector(0.0, 0.0, -1.0)) + ik.foot_roll_e.align_roll(mt_chain.foot_e.matrix.rotation_part() * Vector((0.0, 0.0, -1.0))) # MCH-foot ik.foot_roll_01_e = copy_bone_simple(arm, mt_chain.foot, "MCH-" + base_names[mt_chain.foot]) @@ -213,7 +213,7 @@ def ik(obj, bone_definition, base_names, options): con = mt_chain.thigh_p.constraints.new('COPY_TRANSFORMS') con.target = obj con.subtarget = ik_chain.thigh - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver var = driver.variables.new() driver.type = 'AVERAGE' @@ -225,7 +225,7 @@ def ik(obj, bone_definition, base_names, options): con = mt_chain.shin_p.constraints.new('COPY_TRANSFORMS') con.target = obj con.subtarget = ik_chain.shin - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver var = driver.variables.new() driver.type = 'AVERAGE' @@ -237,7 +237,7 @@ def ik(obj, bone_definition, base_names, options): con = mt_chain.foot_p.constraints.new('COPY_TRANSFORMS') con.target = obj con.subtarget = ik.foot_roll_02 - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver var = driver.variables.new() driver.type = 'AVERAGE' @@ -249,7 +249,7 @@ def ik(obj, bone_definition, base_names, options): con = mt_chain.toe_p.constraints.new('COPY_TRANSFORMS') con.target = obj con.subtarget = ik_chain.toe - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver var = driver.variables.new() driver.type = 'AVERAGE' @@ -371,7 +371,7 @@ def fk(obj, bone_definition, base_names, options): hinge_driver_path = pb[fk_chain.thigh].path_from_id() + '["hinge"]' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver var = driver.variables.new() driver.type = 'AVERAGE' diff --git a/release/scripts/modules/rigify/mouth.py b/release/scripts/modules/rigify/mouth.py index 9d36c60eede..d516a48ec95 100644 --- a/release/scripts/modules/rigify/mouth.py +++ b/release/scripts/modules/rigify/mouth.py @@ -77,7 +77,7 @@ def addget_shape_key_driver(obj, name="Key"): if driver_s.data_path == driver_path: fcurve = driver_s if fcurve == None: - fcurve = obj.data.shape_keys.keys[name].driver_add("value", 0) + fcurve = obj.data.shape_keys.keys[name].driver_add("value") fcurve.driver.type = 'AVERAGE' new = True @@ -173,7 +173,7 @@ def deform(obj, definitions, base_names, options): jopen1 = copy_bone_simple(obj.data, jaw, "MCH-"+base_names[jaw]+".track1", parent=True).name eb[jopen1].connected = False eb[jopen1].head = eb[jaw].tail - eb[jopen1].tail = eb[jopen1].head + Vector(0, 0, eb[jaw].length/4) + eb[jopen1].tail = eb[jopen1].head + Vector((0, 0, eb[jaw].length/4)) jopen2 = copy_bone_simple(obj.data, jopen1, "MCH-"+base_names[jaw]+".track2").name eb[jopen2].parent = eb[jaw] @@ -427,7 +427,7 @@ def control(obj, definitions, base_names, options): # Jaw open tracker jopent = copy_bone_simple(obj.data, jaw_e.name, "MCH-"+base_names[jaw_e.name]+".track", parent=True).name eb[jopent].connected = False - eb[jopent].tail = jaw_e.tail + Vector(0,0,jaw_e.length) + eb[jopent].tail = jaw_e.tail + Vector((0.0, 0.0, jaw_e.length)) eb[jopent].head = jaw_e.tail bpy.ops.object.mode_set(mode='OBJECT') @@ -548,7 +548,7 @@ def control(obj, definitions, base_names, options): con.minimum = 0.0 con.maximum = 1.0 con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() @@ -566,7 +566,7 @@ def control(obj, definitions, base_names, options): con.minimum = 0.0 con.maximum = 1.0 con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() @@ -584,7 +584,7 @@ def control(obj, definitions, base_names, options): con.minimum = 0.0 con.maximum = 1.0 con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() @@ -602,7 +602,7 @@ def control(obj, definitions, base_names, options): con.minimum = 0.0 con.maximum = 1.0 con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() @@ -620,7 +620,7 @@ def control(obj, definitions, base_names, options): con.minimum = 0.0 con.maximum = 1.0 con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() @@ -638,7 +638,7 @@ def control(obj, definitions, base_names, options): con.minimum = 0.0 con.maximum = 1.0 con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() @@ -656,7 +656,7 @@ def control(obj, definitions, base_names, options): con.minimum = 0.0 con.maximum = 1.0 con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() @@ -674,7 +674,7 @@ def control(obj, definitions, base_names, options): con.minimum = 0.0 con.maximum = 1.0 con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() diff --git a/release/scripts/modules/rigify/neck.py b/release/scripts/modules/rigify/neck.py index 7d220663256..0d2ab25bcc9 100644 --- a/release/scripts/modules/rigify/neck.py +++ b/release/scripts/modules/rigify/neck.py @@ -222,7 +222,7 @@ def main(obj, bone_definition, base_names, options): hinge_driver_path = pb[neck_ctrl].path_from_id() + '["hinge"]' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver var = driver.variables.new() driver.type = 'AVERAGE' @@ -256,7 +256,7 @@ def main(obj, bone_definition, base_names, options): hinge_driver_path = pb[head_ctrl].path_from_id() + '["hinge"]' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver var = driver.variables.new() driver.type = 'AVERAGE' @@ -301,7 +301,7 @@ def main(obj, bone_definition, base_names, options): if i < (len(neck_head)-1): inf = (i+1) / len(neck_head) - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver var = driver.variables.new() var.name = "ext" diff --git a/release/scripts/modules/rigify/neck_flex.py b/release/scripts/modules/rigify/neck_flex.py index 514d443a1f9..08f963434d1 100644 --- a/release/scripts/modules/rigify/neck_flex.py +++ b/release/scripts/modules/rigify/neck_flex.py @@ -176,7 +176,7 @@ def main(obj, bone_definition, base_names, options): ex.neck_socket_e.connected = False ex.neck_socket_e.parent = mt.body_e ex.neck_socket_e.head = mt.head_e.head - ex.neck_socket_e.tail = mt.head_e.head - Vector(0.0, neck_chain_segment_length / 2.0, 0.0) + ex.neck_socket_e.tail = mt.head_e.head - Vector((0.0, neck_chain_segment_length / 2.0, 0.0)) ex.neck_socket_e.roll = 0.0 @@ -239,7 +239,7 @@ def main(obj, bone_definition, base_names, options): # add driver hinge_driver_path = ex.head_ctrl_p.path_from_id() + '["hinge"]' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver var = driver.variables.new() driver.type = 'AVERAGE' @@ -259,7 +259,7 @@ def main(obj, bone_definition, base_names, options): target_names = [("b%.2d" % (i + 1)) for i in range(len(neck_chain))] ex.head_ctrl_p["bend_tot"] = 0.0 - fcurve = ex.head_ctrl_p.driver_add('["bend_tot"]', 0) + fcurve = ex.head_ctrl_p.driver_add('["bend_tot"]') driver = fcurve.driver driver.type = 'SUM' fcurve.modifiers.remove(0) # grr dont need a modifier @@ -296,7 +296,7 @@ def main(obj, bone_definition, base_names, options): con.owner_space = 'LOCAL' con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'SCRIPTED' driver.expression = "bend/bend_tot" diff --git a/release/scripts/modules/rigify/palm_curl.py b/release/scripts/modules/rigify/palm_curl.py index ed656cf2243..2bdd28a348a 100644 --- a/release/scripts/modules/rigify/palm_curl.py +++ b/release/scripts/modules/rigify/palm_curl.py @@ -254,7 +254,7 @@ def main(obj, bone_definition, base_names, options): child_pbone_02 = obj.pose.bones[children[1]].bone rel_vec = child_pbone_01.head - child_pbone_02.head - x_vec = child_pbone_01.matrix.rotation_part() * Vector(1.0, 0.0, 0.0) + x_vec = child_pbone_01.matrix.rotation_part() * Vector((1.0, 0.0, 0.0)) return degrees(rel_vec.angle(x_vec)) > 90.0 diff --git a/release/scripts/modules/rigify/shape_key_control.py b/release/scripts/modules/rigify/shape_key_control.py index fd0e900a7b5..ac3987ca7e1 100644 --- a/release/scripts/modules/rigify/shape_key_control.py +++ b/release/scripts/modules/rigify/shape_key_control.py @@ -57,7 +57,7 @@ def addget_shape_key_driver(obj, name="Key"): if driver_s.data_path == driver_path: fcurve = driver_s if fcurve == None: - fcurve = obj.data.shape_keys.keys[name].driver_add("value", 0) + fcurve = obj.data.shape_keys.keys[name].driver_add("value") fcurve.driver.type = 'AVERAGE' new = True diff --git a/release/scripts/modules/rigify/shape_key_distance.py b/release/scripts/modules/rigify/shape_key_distance.py index 68501ac829b..06dd3d67d4b 100644 --- a/release/scripts/modules/rigify/shape_key_distance.py +++ b/release/scripts/modules/rigify/shape_key_distance.py @@ -54,7 +54,7 @@ def addget_shape_key_driver(obj, name="Key"): if driver_s.data_path == driver_path: fcurve = driver_s if fcurve == None: - fcurve = obj.data.shape_keys.keys[name].driver_add("value", 0) + fcurve = obj.data.shape_keys.keys[name].driver_add("value") fcurve.driver.type = 'AVERAGE' return fcurve diff --git a/release/scripts/modules/rigify/shape_key_rotdiff.py b/release/scripts/modules/rigify/shape_key_rotdiff.py index 2c30d95e666..7049bcf74bb 100644 --- a/release/scripts/modules/rigify/shape_key_rotdiff.py +++ b/release/scripts/modules/rigify/shape_key_rotdiff.py @@ -54,7 +54,7 @@ def addget_shape_key_driver(obj, name="Key"): if driver_s.data_path == driver_path: fcurve = driver_s if fcurve == None: - fcurve = obj.data.shape_keys.keys[name].driver_add("value", 0) + fcurve = obj.data.shape_keys.keys[name].driver_add("value") fcurve.driver.type = 'AVERAGE' return fcurve diff --git a/release/scripts/modules/rigify/spine_pivot_flex.py b/release/scripts/modules/rigify/spine_pivot_flex.py index 025074490cb..d3bab72d9a1 100644 --- a/release/scripts/modules/rigify/spine_pivot_flex.py +++ b/release/scripts/modules/rigify/spine_pivot_flex.py @@ -177,11 +177,11 @@ def main(obj, bone_definition, base_names, options): # copy the pelvis, offset to make MCH-spine_rotate and MCH-ribcage_hinge ex.ribcage_hinge_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_hinge" % base_names[mt.ribcage]) ex.ribcage_hinge = ex.ribcage_hinge_e.name - ex.ribcage_hinge_e.translate(Vector(0.0, spine_chain_segment_length / 4.0, 0.0)) + ex.ribcage_hinge_e.translate(Vector((0.0, spine_chain_segment_length / 4.0, 0.0))) ex.spine_rotate_e = copy_bone_simple(arm, mt.ribcage, "MCH-%s_rotate" % spine_chain_basename) ex.spine_rotate = ex.spine_rotate_e.name - ex.spine_rotate_e.translate(Vector(0.0, spine_chain_segment_length / 2.0, 0.0)) + ex.spine_rotate_e.translate(Vector((0.0, spine_chain_segment_length / 2.0, 0.0))) ex.spine_rotate_e.connected = False ex.spine_rotate_e.parent = ex.pelvis_copy_e @@ -294,7 +294,7 @@ def main(obj, bone_definition, base_names, options): con.subtarget = ex.pelvis_copy # add driver - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver var = driver.variables.new() driver.type = 'AVERAGE' @@ -350,7 +350,7 @@ def main(obj, bone_definition, base_names, options): rib_driver_path = ex.ribcage_copy_p.path_from_id() ex.ribcage_copy_p["bend_tot"] = 0.0 - fcurve = ex.ribcage_copy_p.driver_add('["bend_tot"]', 0) + fcurve = ex.ribcage_copy_p.driver_add('["bend_tot"]') driver = fcurve.driver driver.type = 'SUM' fcurve.modifiers.remove(0) # grr dont need a modifier @@ -385,7 +385,7 @@ def main(obj, bone_definition, base_names, options): del spine_p # add driver - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'SCRIPTED' driver.expression = "bend/bend_tot" @@ -440,7 +440,7 @@ def main(obj, bone_definition, base_names, options): if i == spine_chain_len: con.head_tail = 1.0 - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver var = driver.variables.new() driver.type = 'AVERAGE' diff --git a/release/scripts/modules/rigify/tail_control.py b/release/scripts/modules/rigify/tail_control.py index 76eaf6dd4d9..47da9778913 100644 --- a/release/scripts/modules/rigify/tail_control.py +++ b/release/scripts/modules/rigify/tail_control.py @@ -135,7 +135,7 @@ def main(obj, bone_definitions, base_names, options): # Add drivers bone_path = pb[bones[0]].path_from_id() - driver_fcurve = con_f.driver_add("influence", 0) + driver_fcurve = con_f.driver_add("influence") driver = driver_fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() @@ -148,7 +148,7 @@ def main(obj, bone_definitions, base_names, options): mod.coefficients[0] = 1.0 mod.coefficients[1] = -1.0 - driver_fcurve = con_h.driver_add("influence", 0) + driver_fcurve = con_h.driver_add("influence") driver = driver_fcurve.driver driver.type = 'AVERAGE' var = driver.variables.new() diff --git a/release/scripts/modules/rigify/tongue.py b/release/scripts/modules/rigify/tongue.py index 43a8c2125ce..b6dfe756b71 100644 --- a/release/scripts/modules/rigify/tongue.py +++ b/release/scripts/modules/rigify/tongue.py @@ -179,7 +179,7 @@ def main(obj, bone_definition, base_names, options): ex.neck_socket_e.connected = False ex.neck_socket_e.parent = mt.body_e ex.neck_socket_e.head = mt.head_e.head - ex.neck_socket_e.tail = mt.head_e.head - Vector(0.0, neck_chain_segment_length / 2.0, 0.0) + ex.neck_socket_e.tail = mt.head_e.head - Vector((0.0, neck_chain_segment_length / 2.0, 0.0)) ex.neck_socket_e.roll = 0.0 @@ -243,7 +243,7 @@ def main(obj, bone_definition, base_names, options): # add driver hinge_driver_path = ex.head_ctrl_p.path_to_id() + '["hinge"]' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver var = driver.variables.new() driver.type = 'AVERAGE' @@ -263,7 +263,7 @@ def main(obj, bone_definition, base_names, options): target_names = [("b%.2d" % (i + 1)) for i in range(len(neck_chain))] ex.head_ctrl_p["bend_tot"] = 0.0 - fcurve = ex.head_ctrl_p.driver_add('["bend_tot"]', 0) + fcurve = ex.head_ctrl_p.driver_add('["bend_tot"]') driver = fcurve.driver driver.type = 'SUM' fcurve.modifiers.remove(0) # grr dont need a modifier @@ -308,7 +308,7 @@ def main(obj, bone_definition, base_names, options): con.owner_space = 'LOCAL' con.target_space = 'LOCAL' - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'SCRIPTED' driver.expression = "bend/bend_tot" diff --git a/release/scripts/modules/rigify_utils.py b/release/scripts/modules/rigify_utils.py index 1d5768e7f22..25ab6bebf48 100644 --- a/release/scripts/modules/rigify_utils.py +++ b/release/scripts/modules/rigify_utils.py @@ -154,7 +154,7 @@ def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, ta con.target = obj con.subtarget = to_bone_name - fcurve = con.driver_add("influence", 0) + fcurve = con.driver_add("influence") driver = fcurve.driver driver.type = 'AVERAGE' fcurve.modifiers.remove(0) # grr dont need a modifier @@ -204,12 +204,12 @@ def add_pole_target_bone(obj, base_bone_name, name, mode='CROSS'): offset.length = distance elif mode == 'ZAVERAGE': # between both bones Z axis - z_axis_a = base_ebone.matrix.copy().rotation_part() * Vector(0.0, 0.0, -1.0) - z_axis_b = parent_ebone.matrix.copy().rotation_part() * Vector(0.0, 0.0, -1.0) + z_axis_a = base_ebone.matrix.copy().rotation_part() * Vector((0.0, 0.0, -1.0)) + z_axis_b = parent_ebone.matrix.copy().rotation_part() * Vector((0.0, 0.0, -1.0)) offset = (z_axis_a + z_axis_b).normalize() * distance else: # preset axis - offset = Vector(0, 0, 0) + offset = Vector((0.0, 0.0, 0.0)) if mode[0] == "+": val = distance else: diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py index d0a9de329c1..80c61e0a6d9 100644 --- a/release/scripts/modules/rna_info.py +++ b/release/scripts/modules/rna_info.py @@ -200,41 +200,41 @@ class InfoPropertyRNA: if self.type == "enum": self.enum_items[:] = rna_prop.items.keys() - + + if self.array_length: self.default = tuple(getattr(rna_prop, "default_array", ())) + else: + self.default = getattr(rna_prop, "default", None) + self.default_str = "" # fallback + + + if self.type == "pointer": + # pointer has no default, just set as None + self.default = None + self.default_str = "None" + elif self.type == "string": + self.default_str = "\"%s\"" % self.default + elif self.type == "enum": + self.default_str = "'%s'" % self.default + elif self.array_length: self.default_str = '' # special case for floats if len(self.default) > 0: - if type(self.default[0]) is float: + if self.type == "float": self.default_str = "(%s)" % ", ".join([float_as_string(f) for f in self.default]) if not self.default_str: self.default_str = str(self.default) else: - self.default = getattr(rna_prop, "default", "") - if type(self.default) is float: + if self.type == "float": self.default_str = float_as_string(self.default) else: self.default_str = str(self.default) self.srna = GetInfoStructRNA(rna_prop.srna) # valid for pointer/collections - def get_default_string(self): - # pointer has no default, just set as None - if self.type == "pointer": - return "None" - elif self.type == "string": - return '"' + self.default_str + '"' - elif self.type == "enum": - if self.default_str: - return "'" + self.default_str + "'" - else: - return "" - - return self.default_str - def get_arg_default(self, force=True): - default = self.get_default_string() + default = self.default_str if default and (force or self.is_required == False): return "%s=%s" % (self.identifier, default) return self.identifier @@ -245,11 +245,18 @@ class InfoPropertyRNA: type_str += self.type if self.array_length: type_str += " array of %d items" % (self.array_length) - + if self.type in ("float", "int"): type_str += " in [%s, %s]" % (range_str(self.min), range_str(self.max)) elif self.type == "enum": type_str += " in [%s]" % ', '.join([("'%s'" % s) for s in self.enum_items]) + + if not (as_arg or as_ret): + # write default property, ignore function args for this + if self.type != "pointer": + if self.default_str: + type_str += ", default %s" % self.default_str + else: if self.type == "collection": if self.collection_type: @@ -261,17 +268,22 @@ class InfoPropertyRNA: type_str += collection_str + (class_fmt % self.fixed_type.identifier) + # setup qualifiers for this value. + type_info = [] if as_ret: pass elif as_arg: if not self.is_required: - type_str += ", (optional)" + type_info.append("optional") else: # readonly is only useful for selfs, not args if self.is_readonly: - type_str += ", (readonly)" + type_info.append("readonly") if self.is_never_none: - type_str += ", (never None)" + type_info.append("never None") + + if type_info: + type_str += (", (%s)" % ", ".join(type_info)) return type_str @@ -568,6 +580,16 @@ def BuildRNAInfo(): for prop in func.return_values: prop.build() + if 1: + for rna_info in InfoStructRNA.global_lookup.values(): + for prop in rna_info.properties: + # ERROR CHECK + default = prop.default + if type(default) in (float, int): + if default < prop.min or default > prop.max: + print("\t %s.%s, %s not in [%s - %s]" % (rna_info.identifier, prop.identifier, default, prop.min, prop.max)) + + # now for operators op_mods = dir(bpy.ops) diff --git a/release/scripts/op/console_python.py b/release/scripts/op/console_python.py index 99654505c17..87abe0b6f47 100644 --- a/release/scripts/op/console_python.py +++ b/release/scripts/op/console_python.py @@ -40,9 +40,9 @@ def get_console(console_id): ''' from code import InteractiveConsole - try: - consoles = get_console.consoles - except: + consoles = getattr(get_console, "consoles", None) + + if consoles is None: consoles = get_console.consoles = {} # clear all dead consoles, use text names as IDs @@ -53,16 +53,17 @@ def get_console(console_id): del consoles[id] ''' - try: - console, stdout, stderr = consoles[console_id] - + console_data = consoles.get(console_id) + + if console_data: + console, stdout, stderr = console_data + # XXX, bug in python 3.1.2 ? # seems there is no way to clear StringIO objects for writing, have to make new ones each time. import io stdout = io.StringIO() stderr = io.StringIO() - - except: + else: namespace = {'__builtins__': __builtins__, 'bpy': bpy} console = InteractiveConsole(namespace) diff --git a/release/scripts/op/image.py b/release/scripts/op/image.py index 45ccda1396b..9907362502e 100644 --- a/release/scripts/op/image.py +++ b/release/scripts/op/image.py @@ -28,7 +28,7 @@ class EditExternally(bpy.types.Operator): bl_label = "Image Edit Externally" bl_options = {'REGISTER'} - path = StringProperty(name="File Path", description="Path to an image file", maxlen= 1024, default= "") + path = StringProperty(name="File Path", description="Path to an image file", maxlen=1024, default="") def _editor_guess(self, context): import platform diff --git a/release/scripts/op/sequencer.py b/release/scripts/op/sequencer.py index c72fa45655e..a542337345c 100644 --- a/release/scripts/op/sequencer.py +++ b/release/scripts/op/sequencer.py @@ -98,19 +98,41 @@ class SequencerCutMulticam(bpy.types.Operator): cfra = context.scene.frame_current bpy.ops.sequencer.cut(frame=cfra,type='HARD',side='RIGHT') - for s in context.scene.sequence_editor.sequences: + for s in context.scene.sequence_editor.sequences_all: if s.selected and s.type == 'MULTICAM' and s.frame_final_start <= cfra and cfra < s.frame_final_end: context.scene.sequence_editor.active_strip = s context.scene.sequence_editor.active_strip.multicam_source = camera return {'FINISHED'} +class SequencerDeinterlaceSelectedMovies(bpy.types.Operator): + '''Deinterlace all selected movie sources.''' + + bl_idname = "sequencer.deinterlace_selected_movies" + bl_label = "Deinterlace Movies" + bl_options = {'REGISTER', 'UNDO'} + + def poll(self, context): + if context.scene and context.scene.sequence_editor: + return True + else: + return False + + def execute(self, context): + for s in context.scene.sequence_editor.sequences_all: + if s.selected and s.type == 'MOVIE': + s.de_interlace = True + + return {'FINISHED'} + + def register(): register = bpy.types.register register(SequencerCrossfadeSounds) register(SequencerCutMulticam) + register(SequencerDeinterlaceSelectedMovies) def unregister(): @@ -118,6 +140,7 @@ def unregister(): unregister(SequencerCrossfadeSounds) unregister(SequencerCutMulticam) + unregister(SequencerDeinterlaceSelectedMovies) if __name__ == "__main__": register() diff --git a/release/scripts/op/vertexpaint_dirt.py b/release/scripts/op/vertexpaint_dirt.py index c7b7ee71964..c1521866a56 100644 --- a/release/scripts/op/vertexpaint_dirt.py +++ b/release/scripts/op/vertexpaint_dirt.py @@ -69,10 +69,10 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, # normalize the vector by dividing by the number of connected verts tot_con = len(con[i]) - + if tot_con == 0: continue - + vec /= tot_con # angle is the acos of the dot product between vert and connected verts normals diff --git a/release/scripts/ui/properties_data_mesh.py b/release/scripts/ui/properties_data_mesh.py index a33b4f22368..5321c76679c 100644 --- a/release/scripts/ui/properties_data_mesh.py +++ b/release/scripts/ui/properties_data_mesh.py @@ -155,6 +155,9 @@ class DATA_PT_vertex_groups(DataButtonsPanel): col.operator("object.vertex_group_add", icon='ZOOMIN', text="") col.operator("object.vertex_group_remove", icon='ZOOMOUT', text="") col.menu("MESH_MT_vertex_group_specials", icon='DOWNARROW_HLT', text="") + if group: + col.operator("object.vertex_group_move", icon='TRIA_UP', text="").direction = 'UP' + col.operator("object.vertex_group_move", icon='TRIA_DOWN', text="").direction = 'DOWN' if group: row = layout.row() @@ -303,7 +306,7 @@ class DATA_PT_texface(DataButtonsPanel): ob = context.active_object rd = context.scene.render - return (context.mode =='EDIT_MESH') and (rd.engine == 'BLENDER_GAME') and ob and ob.type == 'MESH' + return (context.mode == 'EDIT_MESH') and (rd.engine == 'BLENDER_GAME') and ob and ob.type == 'MESH' def draw(self, context): layout = self.layout diff --git a/release/scripts/ui/properties_object.py b/release/scripts/ui/properties_object.py index 7169d936904..043a0d2434b 100644 --- a/release/scripts/ui/properties_object.py +++ b/release/scripts/ui/properties_object.py @@ -155,13 +155,11 @@ class OBJECT_PT_groups(ObjectButtonsPanel): ob = context.object wide_ui = context.region.width > narrowui - if wide_ui: - split = layout.split() - split.operator_menu_enum("object.group_add", "group") - split.label() - else: - layout.operator_menu_enum("object.group_add", "group") + split = layout.split(percentage=0.8, align=True) + split.operator("object.group_link", text="Link to Group") + split.operator("object.group_add", text="", icon='ZOOMIN') + # XXX, this is bad practice, yes, I wrote it :( - campbell index = 0 value = str(tuple(context.scene.cursor_location)) for group in bpy.data.groups: diff --git a/release/scripts/ui/properties_particle.py b/release/scripts/ui/properties_particle.py index 84b756e6257..6ec396bf7a1 100644 --- a/release/scripts/ui/properties_particle.py +++ b/release/scripts/ui/properties_particle.py @@ -389,7 +389,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel): row.prop(part, "physics_type", expand=True) else: row.prop(part, "physics_type", text="") - + if part.physics_type != 'NO': row = layout.row() col = row.column(align=True) diff --git a/release/scripts/ui/properties_physics_common.py b/release/scripts/ui/properties_physics_common.py index 025a16894a9..20073c68989 100644 --- a/release/scripts/ui/properties_physics_common.py +++ b/release/scripts/ui/properties_physics_common.py @@ -20,6 +20,7 @@ narrowui = 180 +import bpy def point_cache_ui(self, context, cache, enabled, particles, smoke): layout = self.layout @@ -48,12 +49,11 @@ def point_cache_ui(self, context, cache, enabled, particles, smoke): layout.label(text=cache.info) else: layout.prop(cache, "name", text="File Name") - + split = layout.split() col = split.column(align=True) - + if not particles: - col.enabled = enabled col.prop(cache, "frame_start") col.prop(cache, "frame_end") @@ -67,22 +67,24 @@ def point_cache_ui(self, context, cache, enabled, particles, smoke): sub = col.column() sub.enabled = enabled sub.prop(cache, "quick_cache") - col.prop(cache, "disk_cache") + + sub = col.column() + sub.enabled = bpy.data.file_is_saved + sub.prop(cache, "disk_cache") col.label(text=cache.info) - layout.separator() - + split = layout.split() - + col = split.column() - + if cache.baked == True: col.operator("ptcache.free_bake", text="Free Bake") else: col.operator("ptcache.bake", text="Bake").bake = True - + sub = col.row() sub.enabled = (cache.frames_skipped or cache.outdated) and enabled sub.operator("ptcache.bake", text="Calculate To Frame").bake = False @@ -90,8 +92,8 @@ def point_cache_ui(self, context, cache, enabled, particles, smoke): sub = col.column() sub.enabled = enabled sub.operator("ptcache.bake_from_cache", text="Current Cache to Bake") - - + + if wide_ui: col = split.column() col.operator("ptcache.bake_all", text="Bake All Dynamics").bake = True diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py index abed887610f..f1c8ba0ac62 100644 --- a/release/scripts/ui/properties_render.py +++ b/release/scripts/ui/properties_render.py @@ -106,7 +106,6 @@ class RENDER_PT_layers(RenderButtonsPanel): col.label(text="Mask Layers:") col.prop(rl, "zmask_layers", text="") - layout.separator() layout.label(text="Include:") diff --git a/release/scripts/ui/properties_texture.py b/release/scripts/ui/properties_texture.py index d537b5c29c2..07a097cfd3a 100644 --- a/release/scripts/ui/properties_texture.py +++ b/release/scripts/ui/properties_texture.py @@ -47,6 +47,7 @@ class TEXTURE_MT_envmap_specials(bpy.types.Menu): from properties_material import active_node_mat + def context_tex_datablock(context): idblock = context.material if idblock: @@ -71,7 +72,8 @@ class TextureButtonsPanel(bpy.types.Panel): def poll(self, context): tex = context.texture - if not tex or tex == None: return False + if not tex: + return False engine = context.scene.render.engine return (tex.type != 'NONE' or tex.use_nodes) and (engine in self.COMPAT_ENGINES) @@ -102,7 +104,7 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel): engine = context.scene.render.engine if not hasattr(context, "texture_slot"): return False - return ((context.material or context.world or context.lamp or context.brush or context.texture) + return ((context.material or context.world or context.lamp or context.brush or context.texture) and (engine in self.COMPAT_ENGINES)) def draw(self, context): @@ -212,7 +214,7 @@ class TextureSlotPanel(TextureButtonsPanel): def poll(self, context): if not hasattr(context, "texture_slot"): return False - + engine = context.scene.render.engine return TextureButtonsPanel.poll(self, context) and (engine in self.COMPAT_ENGINES) @@ -228,7 +230,7 @@ class TEXTURE_PT_mapping(TextureSlotPanel): if not getattr(context, "texture_slot", None): return False - + engine = context.scene.render.engine return (engine in self.COMPAT_ENGINES) @@ -277,7 +279,7 @@ class TEXTURE_PT_mapping(TextureSlotPanel): row = layout.row() row.active = tex.map_mode in ('FIXED', 'TILED') row.prop(tex, "angle") - + row = layout.row() row.active = tex.map_mode in ('TILED', '3D') row.column().prop(tex, "size") diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index 7f595207f53..dd07f7b66f8 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -471,7 +471,7 @@ class IMAGE_PT_scope_sample(bpy.types.Panel): def poll(self, context): sima = context.space_data - return sima + return sima def draw(self, context): layout = self.layout diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index 12734f0a931..0cd92bb91fd 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -85,7 +85,7 @@ class INFO_MT_file(bpy.types.Menu): layout.operator_context = 'INVOKE_AREA' layout.operator("wm.open_mainfile", text="Open...", icon='FILE_FOLDER') layout.menu("INFO_MT_file_open_recent") - layout.operator("wm.recover_last_session") + layout.operator("wm.recover_last_session", icon='RECOVER_LAST') layout.operator("wm.recover_auto_save", text="Recover Auto Save...") layout.separator() diff --git a/release/scripts/ui/space_outliner.py b/release/scripts/ui/space_outliner.py index a0f8f41f58a..ec3c430feaa 100644 --- a/release/scripts/ui/space_outliner.py +++ b/release/scripts/ui/space_outliner.py @@ -85,6 +85,7 @@ class OUTLINER_MT_view(bpy.types.Menu): layout.operator("screen.area_dupli") layout.operator("screen.screen_full_area") + class OUTLINER_MT_search(bpy.types.Menu): bl_label = "Search" @@ -98,6 +99,7 @@ class OUTLINER_MT_search(bpy.types.Menu): col.prop(space, "match_case_sensitive") col.prop(space, "match_complete") + class OUTLINER_MT_edit_datablocks(bpy.types.Menu): bl_label = "Edit" @@ -118,7 +120,7 @@ class OUTLINER_MT_edit_datablocks(bpy.types.Menu): classes = [ OUTLINER_HT_header, OUTLINER_MT_view, - OUTLINER_MT_search, + OUTLINER_MT_search, OUTLINER_MT_edit_datablocks] diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index d928f40250e..ca31e134e59 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -236,6 +236,7 @@ class SEQUENCER_MT_strip(bpy.types.Menu): layout.operator("sequencer.cut", text="Cut (hard) at frame").type = 'HARD' layout.operator("sequencer.cut", text="Cut (soft) at frame").type = 'SOFT' layout.operator("sequencer.images_separate") + layout.operator("sequencer.deinterlace_selected_movies") layout.separator() layout.operator("sequencer.duplicate") @@ -446,7 +447,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): elif strip.type == 'TRANSFORM': self.draw_panel_transform(strip) - + elif strip.type == "MULTICAM": layout.prop(strip, "multicam_source") @@ -518,7 +519,7 @@ class SEQUENCER_PT_input(SequencerButtonsPanel): 'CROSS', 'GAMMA_CROSS', 'MULTIPLY', 'OVER_DROP', 'PLUGIN', 'WIPE', 'GLOW', 'TRANSFORM', 'COLOR', - 'MULTICAM','SPEED') + 'MULTICAM', 'SPEED') def draw_filename(self, context): pass @@ -611,6 +612,7 @@ class SEQUENCER_PT_input_image(SEQUENCER_PT_input): col = split.column() col.prop(elem, "filename", text="") # strip.elements[0] could be a fallback + class SEQUENCER_PT_input_secondary(SEQUENCER_PT_input): bl_label = "Strip Input" @@ -627,6 +629,7 @@ class SEQUENCER_PT_input_secondary(SEQUENCER_PT_input): def draw_filename(self, context): pass + class SEQUENCER_PT_sound(SequencerButtonsPanel): bl_label = "Sound" diff --git a/release/scripts/ui/space_time.py b/release/scripts/ui/space_time.py index 7417b9659b2..00bdcf785fa 100644 --- a/release/scripts/ui/space_time.py +++ b/release/scripts/ui/space_time.py @@ -39,7 +39,7 @@ class TIME_HT_header(bpy.types.Header): sub.menu("TIME_MT_frame") sub.menu("TIME_MT_playback") - layout.prop(scene, "use_preview_range", text="PR") + layout.prop(scene, "use_preview_range", text="", toggle=True) row = layout.row(align=True) if not scene.use_preview_range: @@ -67,7 +67,7 @@ class TIME_HT_header(bpy.types.Header): row.operator("screen.frame_jump", text="", icon='FF').end = True row = layout.row(align=True) - row.prop(tools, "use_auto_keying", text="", toggle=True, icon='REC') + row.prop(tools, "use_auto_keying", text="", toggle=True) if screen.animation_playing and tools.use_auto_keying: subsub = row.row() subsub.prop(tools, "record_with_nla", toggle=True) diff --git a/release/scripts/ui/space_userpref_keymap.py b/release/scripts/ui/space_userpref_keymap.py index 4f440729e9d..961b138ab7e 100644 --- a/release/scripts/ui/space_userpref_keymap.py +++ b/release/scripts/ui/space_userpref_keymap.py @@ -92,7 +92,7 @@ KM_HIERARCHY = [ ]), ('Property Editor', 'PROPERTIES', 'WINDOW', []), # align context menu - + ('Script', 'SCRIPTS_WINDOW', 'WINDOW', []), ('Text', 'TEXT_EDITOR', 'WINDOW', []), ('Console', 'CONSOLE', 'WINDOW', []), @@ -107,19 +107,22 @@ KM_HIERARCHY = [ ('View3D Zoom Modal', 'EMPTY', 'WINDOW', []), ] + def _km_exists_in(km, export_keymaps): for km2, kc in export_keymaps: if km2.name == km.name: return True return False -# kc1 takes priority over kc2 + def _merge_keymaps(kc1, kc2): + """ note: kc1 takes priority over kc2 + """ merged_keymaps = [(km, kc1) for km in kc1.keymaps] if kc1 != kc2: merged_keymaps.extend([(km, kc2) for km in kc2.keymaps if not _km_exists_in(km, merged_keymaps)]) - - return merged_keymaps + + return merged_keymaps class InputKeyMapPanel(bpy.types.Panel): diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 16e4141e2ff..7b78d6c4299 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -993,8 +993,8 @@ class VIEW3D_MT_particle_specials(bpy.types.Menu): layout.separator() if particle_edit.selection_mode == 'POINT': layout.operator("particle.subdivide") - layout.operator("particle.select_first") - layout.operator("particle.select_last") + layout.operator("particle.select_roots") + layout.operator("particle.select_tips") layout.operator("particle.remove_doubles") |