pep8 cleanup
This commit is contained in:
@@ -954,6 +954,7 @@ def register():
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
@@ -961,4 +962,3 @@ def unregister():
|
||||
|
||||
if __name__ == "__main__":
|
||||
register()
|
||||
|
||||
|
||||
@@ -191,10 +191,10 @@ def register():
|
||||
bpy.types.register(ExportMDD)
|
||||
bpy.types.INFO_MT_file_export.append(menu_func)
|
||||
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(ExportMDD)
|
||||
bpy.types.INFO_MT_file_export.remove(menu_func)
|
||||
|
||||
if __name__ == "__main__":
|
||||
register()
|
||||
|
||||
|
||||
@@ -1648,4 +1648,3 @@ def unregister():
|
||||
|
||||
if __name__ == "__main__":
|
||||
register()
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
# origonal model the mdd was Baked out from their will be Strange
|
||||
# behavior
|
||||
#
|
||||
# vertex animation to ShapeKeys with ipo and gives the frame a value of 1.0
|
||||
# vertex animation to ShapeKeys with ipo and gives the frame a value of 1.0
|
||||
# A modifier to read mdd files would be Ideal but thats for another day :)
|
||||
#
|
||||
# Please send any fixes,updates,bugs to Slow67_at_Gmail.com
|
||||
@@ -36,15 +36,15 @@ from struct import unpack
|
||||
|
||||
|
||||
def mdd_import(filepath, ob, scene, PREF_START_FRAME=0, PREF_JUMP=1):
|
||||
|
||||
|
||||
print('\n\nimporting mdd "%s"' % filepath)
|
||||
|
||||
|
||||
bpy.ops.object.mode_set(mode='OBJECT')
|
||||
|
||||
file = open(filepath, 'rb')
|
||||
frames, points = unpack(">2i", file.read(8))
|
||||
time = unpack((">%df" % frames), file.read(frames * 4))
|
||||
|
||||
|
||||
print('\tpoints:%d frames:%d' % (points,frames))
|
||||
|
||||
# If target object doesn't have Basis shape key, create it.
|
||||
@@ -58,18 +58,18 @@ def mdd_import(filepath, ob, scene, PREF_START_FRAME=0, PREF_JUMP=1):
|
||||
scene.current_frame = PREF_START_FRAME
|
||||
|
||||
def UpdateMesh(ob, fr):
|
||||
|
||||
|
||||
# Insert new shape key
|
||||
new_shapekey = ob.add_shape_key()
|
||||
new_shapekey.name = ("frame_%.4d" % fr)
|
||||
new_shapekey_name = new_shapekey.name
|
||||
|
||||
|
||||
ob.active_shape_key_index = len(ob.data.shape_keys.keys)-1
|
||||
index = len(ob.data.shape_keys.keys)-1
|
||||
ob.shape_key_lock = True
|
||||
|
||||
|
||||
verts = ob.data.shape_keys.keys[ len(ob.data.shape_keys.keys)-1 ].data
|
||||
|
||||
|
||||
|
||||
for v in verts:
|
||||
# 12 is the size of 3 floats
|
||||
@@ -77,7 +77,7 @@ def mdd_import(filepath, ob, scene, PREF_START_FRAME=0, PREF_JUMP=1):
|
||||
v.co[:] = x,z,y
|
||||
#me.update()
|
||||
ob.shape_key_lock = False
|
||||
|
||||
|
||||
|
||||
# insert keyframes
|
||||
shape_keys = ob.data.shape_keys
|
||||
@@ -94,12 +94,12 @@ def mdd_import(filepath, ob, scene, PREF_START_FRAME=0, PREF_JUMP=1):
|
||||
ob.data.shape_keys.keys[index].value = 0.0
|
||||
shape_keys.keys[len(ob.data.shape_keys.keys)-1].keyframe_insert("value")
|
||||
|
||||
ob.data.update()
|
||||
ob.data.update()
|
||||
|
||||
|
||||
for i in range(frames):
|
||||
UpdateMesh(ob, i)
|
||||
|
||||
|
||||
|
||||
from bpy.props import *
|
||||
|
||||
@@ -148,7 +148,7 @@ def menu_func(self, context):
|
||||
def register():
|
||||
bpy.types.register(importMDD)
|
||||
bpy.types.INFO_MT_file_import.append(menu_func)
|
||||
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(importMDD)
|
||||
bpy.types.INFO_MT_file_import.remove(menu_func)
|
||||
|
||||
@@ -26,10 +26,10 @@ from rna_prop_ui import rna_idprop_ui_prop_get
|
||||
SPECIAL_TYPES = "root",
|
||||
LAYER_TYPES = "main", "extra", "ik", "fk"
|
||||
|
||||
ORG_LAYERS = [n==31 for n in range(0,32)]
|
||||
MCH_LAYERS = [n==30 for n in range(0,32)]
|
||||
DEF_LAYERS = [n==29 for n in range(0,32)]
|
||||
ROOT_LAYERS = [n==28 for n in range(0,32)]
|
||||
ORG_LAYERS = [n == 31 for n in range(0, 32)]
|
||||
MCH_LAYERS = [n == 30 for n in range(0, 32)]
|
||||
DEF_LAYERS = [n == 29 for n in range(0, 32)]
|
||||
ROOT_LAYERS = [n == 28 for n in range(0, 32)]
|
||||
|
||||
ORG_PREFIX = "ORG-"
|
||||
MCH_PREFIX = "MCH-"
|
||||
@@ -38,7 +38,6 @@ DEF_PREFIX = "DEF-"
|
||||
WGT_PREFIX = "WGT-"
|
||||
|
||||
|
||||
|
||||
class RigifyError(Exception):
|
||||
"""Exception raised for errors in the metarig.
|
||||
"""
|
||||
@@ -456,12 +455,12 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True):
|
||||
bone.deform = True
|
||||
else:
|
||||
# Assign bone appearance if there is a widget for it
|
||||
obj.pose.bones[bone_name].custom_shape = context.scene.objects.get(WGT_PREFIX+bone_name)
|
||||
obj.pose.bones[bone_name].custom_shape = context.scene.objects.get(WGT_PREFIX + bone_name)
|
||||
|
||||
layer_tot[:] = [max(lay) for lay in zip(layer_tot, bone.layer)]
|
||||
|
||||
# Only for demo'ing
|
||||
layer_show = [a and not (b or c or d) for a,b,c,d in zip(layer_tot, ORG_LAYERS, MCH_LAYERS, DEF_LAYERS)]
|
||||
layer_show = [a and not (b or c or d) for a, b, c, d in zip(layer_tot, ORG_LAYERS, MCH_LAYERS, DEF_LAYERS)]
|
||||
arm.layer = layer_show
|
||||
|
||||
|
||||
|
||||
@@ -110,4 +110,3 @@ def main(obj, bone_definition, base_names, options):
|
||||
deform(obj, bone_definition, base_names, options)
|
||||
|
||||
return (cpy,)
|
||||
|
||||
|
||||
@@ -215,8 +215,8 @@ def main(obj, bone_definition, base_names, options):
|
||||
|
||||
# Set up bones for hinge
|
||||
if make_hinge:
|
||||
socket = copy_bone_simple(arm, org_f1, "MCH-socket_"+control, parent=True).name
|
||||
hinge = copy_bone_simple(arm, eb[org_f1].parent.name, "MCH-hinge_"+control).name
|
||||
socket = copy_bone_simple(arm, org_f1, "MCH-socket_" + control, parent=True).name
|
||||
hinge = copy_bone_simple(arm, eb[org_f1].parent.name, "MCH-hinge_" + control).name
|
||||
|
||||
eb[control].connected = False
|
||||
eb[control].parent = eb[hinge]
|
||||
@@ -343,7 +343,7 @@ def main(obj, bone_definition, base_names, options):
|
||||
|
||||
# Last step setup layers
|
||||
if "ex_layer" in options:
|
||||
layer = [n==options["ex_layer"] for n in range(0,32)]
|
||||
layer = [n == options["ex_layer"] for n in range(0, 32)]
|
||||
else:
|
||||
layer = list(arm.bones[bone_definition[0]].layer)
|
||||
for bone_name in [f1, f2, f3]:
|
||||
|
||||
@@ -227,7 +227,7 @@ def ik(obj, bone_definition, base_names, options):
|
||||
con = ik_chain.shin_p.constraints.new('IK')
|
||||
con.chain_length = 2
|
||||
con.iterations = 500
|
||||
con.pole_angle = -pi/2
|
||||
con.pole_angle = -pi / 2.0
|
||||
con.use_tail = True
|
||||
con.use_stretch = True
|
||||
con.use_target = True
|
||||
@@ -265,7 +265,7 @@ def ik(obj, bone_definition, base_names, options):
|
||||
|
||||
# last step setup layers
|
||||
if "ik_layer" in options:
|
||||
layer = [n==options["ik_layer"] for n in range(0,32)]
|
||||
layer = [n == options["ik_layer"] for n in range(0, 32)]
|
||||
else:
|
||||
layer = list(mt_chain.thigh_b.layer)
|
||||
for attr in ik_chain.attr_names:
|
||||
@@ -368,7 +368,7 @@ def fk(obj, bone_definition, base_names, options):
|
||||
|
||||
# last step setup layers
|
||||
if "fk_layer" in options:
|
||||
layer = [n==options["fk_layer"] for n in range(0,32)]
|
||||
layer = [n == options["fk_layer"] for n in range(0, 32)]
|
||||
else:
|
||||
layer = list(mt_chain.thigh_b.layer)
|
||||
for attr in fk_chain.attr_names:
|
||||
@@ -499,4 +499,3 @@ def main(obj, bone_definition, base_names, options):
|
||||
|
||||
bpy.ops.object.mode_set(mode='OBJECT')
|
||||
blend_bone_list(obj, bone_definition + [None], bones_fk, bones_ik, target_bone=bones_ik[6], target_prop="ik", blend_default=1.0)
|
||||
|
||||
|
||||
@@ -332,7 +332,7 @@ def main(obj, bone_definition, base_names, options):
|
||||
|
||||
# last step setup layers
|
||||
if "ex_layer" in options:
|
||||
layer = [n==options["ex_layer"] for n in range(0,32)]
|
||||
layer = [n == options["ex_layer"] for n in range(0, 32)]
|
||||
else:
|
||||
layer = list(arm.bones[bone_definition[1]].layer)
|
||||
for attr in ex_chain.attr_names:
|
||||
@@ -346,4 +346,3 @@ def main(obj, bone_definition, base_names, options):
|
||||
|
||||
# no blending the result of this
|
||||
return None
|
||||
|
||||
|
||||
@@ -463,7 +463,7 @@ def main(obj, bone_definition, base_names, options):
|
||||
|
||||
# last step setup layers
|
||||
if "ex_layer" in options:
|
||||
layer = [n==options["ex_layer"] for n in range(0,32)]
|
||||
layer = [n == options["ex_layer"] for n in range(0, 32)]
|
||||
else:
|
||||
layer = list(arm.bones[bone_definition[1]].layer)
|
||||
for attr in ex.attr_names:
|
||||
|
||||
@@ -48,12 +48,11 @@ bool_map = {0:False, 1:True,
|
||||
"no":False, "yes":True,
|
||||
"No":False, "Yes":True}
|
||||
|
||||
|
||||
def metarig_definition(obj, orig_bone_name):
|
||||
return (orig_bone_name,)
|
||||
|
||||
|
||||
|
||||
|
||||
def main(obj, bone_definition, base_names, options):
|
||||
""" A stretchy bone from one bone to another.
|
||||
Deformation only (no controls).
|
||||
@@ -108,4 +107,3 @@ def main(obj, bone_definition, base_names, options):
|
||||
con.volume = 'NO_VOLUME'
|
||||
|
||||
return tuple()
|
||||
|
||||
|
||||
@@ -163,4 +163,3 @@ def main(obj, bone_definitions, base_names, options):
|
||||
|
||||
|
||||
return None
|
||||
|
||||
|
||||
@@ -41,12 +41,12 @@ RIG_TYPE = "track_dual"
|
||||
# pbone = obj.pose.bones['Bone']
|
||||
# pbone['type'] = 'copy'
|
||||
|
||||
bool_map = {0:False, 1:True,
|
||||
0.0:False, 1.0:True,
|
||||
"false":False, "true":True,
|
||||
"False":False, "True":True,
|
||||
"no":False, "yes":True,
|
||||
"No":False, "Yes":True}
|
||||
bool_map = {0: False, 1: True,
|
||||
0.0: False, 1.0: True,
|
||||
"false": False, "true": True,
|
||||
"False": False, "True": True,
|
||||
"no": False, "yes": True,
|
||||
"No": False, "Yes": True}
|
||||
|
||||
|
||||
def metarig_definition(obj, orig_bone_name):
|
||||
|
||||
@@ -98,4 +98,3 @@ def main(obj, bone_definition, base_names, options):
|
||||
|
||||
|
||||
return tuple()
|
||||
|
||||
|
||||
@@ -338,7 +338,7 @@ def _GetInfoRNA(bl_rna, cls, parent_id=''):
|
||||
key = parent_id, bl_rna.identifier
|
||||
try:
|
||||
return cls.global_lookup[key]
|
||||
except:
|
||||
except KeyError:
|
||||
instance = cls.global_lookup[key] = cls(bl_rna)
|
||||
return instance
|
||||
|
||||
@@ -367,7 +367,6 @@ def BuildRNAInfo():
|
||||
rna_children_dict = {} # store all rna_structs nested from here
|
||||
rna_references_dict = {} # store a list of rna path strings that reference this type
|
||||
rna_functions_dict = {} # store all functions directly in this type (not inherited)
|
||||
rna_words = set()
|
||||
|
||||
def rna_id_ignore(rna_id):
|
||||
if rna_id == "rna_type":
|
||||
@@ -512,7 +511,7 @@ def BuildRNAInfo():
|
||||
|
||||
try:
|
||||
rna_prop_ptr = rna_prop.fixed_type
|
||||
except:
|
||||
except AttributeError:
|
||||
rna_prop_ptr = None
|
||||
|
||||
# Does this property point to me?
|
||||
|
||||
@@ -609,10 +609,10 @@ def register():
|
||||
bpy.types.register(AddHuman)
|
||||
bpy.types.INFO_MT_armature_add.append(menu_func)
|
||||
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(AddHuman)
|
||||
bpy.types.INFO_MT_armature_add.remove(menu_func)
|
||||
|
||||
if __name__ == "__main__":
|
||||
register()
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
import bpy
|
||||
|
||||
|
||||
class SaveDirty(bpy.types.Operator):
|
||||
'''Select object matching a naming pattern'''
|
||||
bl_idname = "image.save_dirty"
|
||||
|
||||
@@ -383,6 +383,7 @@ class ShapeTransfer(bpy.types.Operator):
|
||||
return {'CANCELLED'}
|
||||
return self._main(ob_act, objects, self.properties.mode, self.properties.use_clamp)
|
||||
|
||||
|
||||
class JoinUVs(bpy.types.Operator):
|
||||
'''Copy UV Layout to objects with matching geometry'''
|
||||
bl_idname = "object.join_uvs"
|
||||
@@ -440,6 +441,7 @@ class JoinUVs(bpy.types.Operator):
|
||||
self._main(context)
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
class MakeDupliFace(bpy.types.Operator):
|
||||
'''Make linked objects into dupli-faces'''
|
||||
bl_idname = "object.make_dupli_face"
|
||||
@@ -520,6 +522,7 @@ def register():
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
@@ -527,4 +530,3 @@ def unregister():
|
||||
|
||||
if __name__ == "__main__":
|
||||
register()
|
||||
|
||||
|
||||
@@ -123,4 +123,3 @@ def unregister():
|
||||
|
||||
if __name__ == "__main__":
|
||||
register()
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
import bpy
|
||||
|
||||
|
||||
class SequencerCrossfadeSounds(bpy.types.Operator):
|
||||
'''Do crossfading volume animation of two selected sound strips.'''
|
||||
|
||||
@@ -73,9 +74,9 @@ class SequencerCrossfadeSounds(bpy.types.Operator):
|
||||
def register():
|
||||
bpy.types.register(SequencerCrossfadeSounds)
|
||||
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(SequencerCrossfadeSounds)
|
||||
|
||||
if __name__ == "__main__":
|
||||
register()
|
||||
|
||||
|
||||
@@ -266,10 +266,10 @@ def register():
|
||||
bpy.types.register(FollowActiveQuads)
|
||||
bpy.types.VIEW3D_MT_uv_map.append(menu_func)
|
||||
|
||||
|
||||
def unregister():
|
||||
bpy.types.unregister(FollowActiveQuads)
|
||||
bpy.types.VIEW3D_MT_uv_map.remove(menu_func)
|
||||
|
||||
if __name__ == "__main__":
|
||||
register()
|
||||
|
||||
|
||||
@@ -371,7 +371,9 @@ class WM_OT_context_modal_mouse(bpy.types.Operator):
|
||||
self._values_store(context)
|
||||
|
||||
if not self._values:
|
||||
self.report({'WARNING'}, "Nothing to operate on: %s[ ].%s" % (self.properties.path_iter, self.properties.path_item))
|
||||
self.report({'WARNING'}, "Nothing to operate on: %s[ ].%s" %
|
||||
(self.properties.path_iter, self.properties.path_item))
|
||||
|
||||
return {'CANCELLED'}
|
||||
else:
|
||||
self.properties.initial_x = event.mouse_x
|
||||
|
||||
@@ -20,7 +20,7 @@ def draw_callback_px(self, context):
|
||||
|
||||
bgl.glEnd()
|
||||
|
||||
# restore opengl defaults
|
||||
# restore opengl defaults
|
||||
bgl.glLineWidth(1)
|
||||
bgl.glDisable(bgl.GL_BLEND)
|
||||
bgl.glColor4f(0.0, 0.0, 0.0, 1.0)
|
||||
@@ -50,7 +50,7 @@ class ModalDrawOperator(bpy.types.Operator):
|
||||
def invoke(self, context, event):
|
||||
if context.area.type == 'VIEW_3D':
|
||||
context.manager.add_modal_handler(self)
|
||||
|
||||
|
||||
# Add the region OpenGL drawing callback
|
||||
# draw in view space with 'POST_VIEW' and 'PRE_VIEW'
|
||||
self._handle = context.region.callback_add(draw_callback_px, (self, context), 'POST_PIXEL')
|
||||
@@ -72,4 +72,4 @@ def unregister():
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
register()
|
||||
register()
|
||||
|
||||
@@ -103,6 +103,7 @@ class OnionSkinButtonsPanel(bpy.types.Panel):
|
||||
################################################
|
||||
# Specific Panels for DataTypes
|
||||
|
||||
|
||||
class OBJECT_PT_motion_paths(MotionPathButtonsPanel):
|
||||
#bl_label = "Object Motion Paths"
|
||||
bl_context = "object"
|
||||
@@ -129,13 +130,14 @@ class OBJECT_PT_motion_paths(MotionPathButtonsPanel):
|
||||
col = split.column()
|
||||
col.operator("object.paths_clear", text="Clear Paths")
|
||||
|
||||
|
||||
class OBJECT_PT_onion_skinning(OnionSkinButtonsPanel):
|
||||
#bl_label = "Object Onion Skinning"
|
||||
bl_context = "object"
|
||||
|
||||
def poll(self, context):
|
||||
return (context.object)
|
||||
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
@@ -144,6 +146,7 @@ class OBJECT_PT_onion_skinning(OnionSkinButtonsPanel):
|
||||
|
||||
self.draw_settings(context, ob.animation_visualisation, wide_ui)
|
||||
|
||||
|
||||
class DATA_PT_motion_paths(MotionPathButtonsPanel):
|
||||
#bl_label = "Bones Motion Paths"
|
||||
bl_context = "data"
|
||||
@@ -171,6 +174,7 @@ class DATA_PT_motion_paths(MotionPathButtonsPanel):
|
||||
col = split.column()
|
||||
col.operator("pose.paths_clear", text="Clear Paths")
|
||||
|
||||
|
||||
class DATA_PT_onion_skinning(OnionSkinButtonsPanel):
|
||||
#bl_label = "Bones Onion Skinning"
|
||||
bl_context = "data"
|
||||
@@ -187,17 +191,18 @@ class DATA_PT_onion_skinning(OnionSkinButtonsPanel):
|
||||
|
||||
self.draw_settings(context, ob.pose.animation_visualisation, wide_ui, bones=True)
|
||||
|
||||
# NOTE:
|
||||
# NOTE:
|
||||
# The specialised panel types defined here (i.e. OBJECT_PT_*, etc.)
|
||||
# aren't registered here, but are rather imported to (and registered)
|
||||
# in the files defining the contexts where they reside. Otherwise,
|
||||
# these panels appear at the top of the lists by default.
|
||||
#
|
||||
# However, we keep these empty register funcs here just in case
|
||||
# something will need them again one day, and also to make
|
||||
# something will need them again one day, and also to make
|
||||
# it easier to maintain these scripts.
|
||||
classes = []
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
|
||||
@@ -253,7 +253,7 @@ class DATA_PT_iksolver_itasc(DataButtonsPanel):
|
||||
row.prop(itasc, "dampmax", text="Damp", slider=True)
|
||||
row.prop(itasc, "dampeps", text="Eps", slider=True)
|
||||
|
||||
# import generic panels from other files
|
||||
# import generic panels from other files
|
||||
from properties_animviz import DATA_PT_motion_paths, DATA_PT_onion_skinning
|
||||
|
||||
classes = [
|
||||
|
||||
@@ -304,7 +304,8 @@ class OBJECT_PT_animation(ObjectButtonsPanel):
|
||||
row.prop(ob, "track_override_parent", text="Override Parent")
|
||||
row.active = (ob.parent is not None)
|
||||
|
||||
# import generic panels from other files
|
||||
|
||||
# import generic panels from other files
|
||||
from properties_animviz import OBJECT_PT_motion_paths, OBJECT_PT_onion_skinning
|
||||
|
||||
classes = [
|
||||
@@ -316,7 +317,7 @@ classes = [
|
||||
OBJECT_PT_display,
|
||||
OBJECT_PT_duplication,
|
||||
OBJECT_PT_animation,
|
||||
|
||||
|
||||
OBJECT_PT_motion_paths,
|
||||
#OBJECT_PT_onion_skinning,
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ class INFO_HT_header(bpy.types.Header):
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
|
||||
wm = context.manager
|
||||
if wm and len(wm.operators):
|
||||
last_op = wm.operators[-1]
|
||||
@@ -64,7 +64,7 @@ class INFO_HT_header(bpy.types.Header):
|
||||
layout.separator()
|
||||
|
||||
layout.template_running_jobs()
|
||||
|
||||
|
||||
if last_op and last_op.has_reports:
|
||||
layout.template_reports_banner(last_op)
|
||||
else:
|
||||
|
||||
@@ -471,10 +471,10 @@ class SEQUENCER_PT_input(SequencerButtonsPanel):
|
||||
return False
|
||||
|
||||
return strip.type in ('MOVIE', 'IMAGE')
|
||||
|
||||
|
||||
def draw_filename(self, context):
|
||||
pass
|
||||
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
@@ -502,7 +502,8 @@ class SEQUENCER_PT_input(SequencerButtonsPanel):
|
||||
col.label(text="Trim Duration:")
|
||||
col.prop(strip, "animation_start_offset", text="Start")
|
||||
col.prop(strip, "animation_end_offset", text="End")
|
||||
|
||||
|
||||
|
||||
class SEQUENCER_PT_input_movie(SEQUENCER_PT_input):
|
||||
bl_label = "Strip Input"
|
||||
|
||||
@@ -527,6 +528,7 @@ class SEQUENCER_PT_input_movie(SEQUENCER_PT_input):
|
||||
col = split.column()
|
||||
col.prop(strip, "filepath", text="")
|
||||
|
||||
|
||||
class SEQUENCER_PT_input_image(SEQUENCER_PT_input):
|
||||
bl_label = "Strip Input"
|
||||
|
||||
|
||||
@@ -1483,7 +1483,7 @@ class WM_OT_addon_install(bpy.types.Operator):
|
||||
|
||||
#extract the file to "addons"
|
||||
file_to_extract.extractall(path_addons)
|
||||
|
||||
|
||||
except:
|
||||
traceback.print_exc()
|
||||
return {'CANCELLED'}
|
||||
|
||||
@@ -906,7 +906,7 @@ class VIEW3D_PT_tools_projectpaint(View3DPanel):
|
||||
|
||||
sub = col.column()
|
||||
sub.prop(ipaint, "seam_bleed")
|
||||
|
||||
|
||||
sub = col.column()
|
||||
col.operator("image.save_dirty", text="Save Edited")
|
||||
col.operator("paint.camera_project")
|
||||
|
||||
Reference in New Issue
Block a user