rna UI api rename...

note: this aims to follow pep8 however I chose to use 'prop/props' rather then 'property/properties' because it would make function names too long.

itemR() --> prop()
items_enumR() --> props_enum()
item_menu_enumR() --> prop_menu_enum()
item_pointerR() --> prop_pointer()
itemO() --> operator()
item_enumO() --> operator_enum()
items_enumO() --> operator_enums()
item_menu_enumO() --> operator_menu_enum()
item_booleanO() --> operator_boolean()
item_intO() --> operator_int()
item_floatO() --> operator_float()
item_stringO() --> operator_string()
itemL() --> label()
itemM() --> menu()
itemS() --> separator()

batch script used http://www.pasteall.org/9345
This commit is contained in:
Campbell Barton
2009-11-23 00:27:30 +00:00
parent 6555eca6fe
commit caab05ec8c
57 changed files with 4603 additions and 4603 deletions

View File

@@ -884,7 +884,7 @@ class RENDER_PT_povray_radiosity(RenderButtonsPanel):
def draw_header(self, context):
scene = context.scene
self.layout.itemR(scene, "pov_radio_enable", text="")
self.layout.prop(scene, "pov_radio_enable", text="")
def draw(self, context):
layout = self.layout
@@ -897,34 +897,34 @@ class RENDER_PT_povray_radiosity(RenderButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(scene, "pov_radio_count", text="Rays")
col.itemR(scene, "pov_radio_recursion_limit", text="Recursions")
col.prop(scene, "pov_radio_count", text="Rays")
col.prop(scene, "pov_radio_recursion_limit", text="Recursions")
col = split.column()
col.itemR(scene, "pov_radio_error_bound", text="Error")
col.prop(scene, "pov_radio_error_bound", text="Error")
layout.itemR(scene, "pov_radio_display_advanced")
layout.prop(scene, "pov_radio_display_advanced")
if scene.pov_radio_display_advanced:
split = layout.split()
col = split.column()
col.itemR(scene, "pov_radio_adc_bailout", slider=True)
col.itemR(scene, "pov_radio_gray_threshold", slider=True)
col.itemR(scene, "pov_radio_low_error_factor", slider=True)
col.prop(scene, "pov_radio_adc_bailout", slider=True)
col.prop(scene, "pov_radio_gray_threshold", slider=True)
col.prop(scene, "pov_radio_low_error_factor", slider=True)
col = split.column()
col.itemR(scene, "pov_radio_brightness")
col.itemR(scene, "pov_radio_minimum_reuse", text="Min Reuse")
col.itemR(scene, "pov_radio_nearest_count")
col.prop(scene, "pov_radio_brightness")
col.prop(scene, "pov_radio_minimum_reuse", text="Min Reuse")
col.prop(scene, "pov_radio_nearest_count")
split = layout.split()
col = split.column()
col.itemL(text="Estimation Influence:")
col.itemR(scene, "pov_radio_media")
col.itemR(scene, "pov_radio_normal")
col.label(text="Estimation Influence:")
col.prop(scene, "pov_radio_media")
col.prop(scene, "pov_radio_normal")
col = split.column()
col.itemR(scene, "pov_radio_always_sample")
col.prop(scene, "pov_radio_always_sample")
bpy.types.register(RENDER_PT_povray_radiosity)

View File

@@ -1142,6 +1142,6 @@ import dynamic_menu
def menu_func(self, context):
default_path = bpy.data.filename.replace(".blend", ".3ds")
self.layout.item_stringO(Export3DS.bl_idname, "path", default_path, text="Autodesk 3DS...")
self.layout.operator_string(Export3DS.bl_idname, "path", default_path, text="Autodesk 3DS...")
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)

View File

@@ -3466,7 +3466,7 @@ import dynamic_menu
def menu_func(self, context):
default_path = bpy.data.filename.replace(".blend", ".fbx")
self.layout.item_stringO(ExportFBX.bl_idname, "path", default_path, text="Autodesk FBX...")
self.layout.operator_string(ExportFBX.bl_idname, "path", default_path, text="Autodesk FBX...")
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)

View File

@@ -191,7 +191,7 @@ import dynamic_menu
def menu_func(self, context):
default_path = bpy.data.filename.replace(".blend", ".mdd")
self.layout.item_stringO(ExportMDD.bl_idname, "path", default_path, text="Vertex Keyframe Animation (.mdd)...")
self.layout.operator_string(ExportMDD.bl_idname, "path", default_path, text="Vertex Keyframe Animation (.mdd)...")
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)

View File

@@ -1008,7 +1008,7 @@ import dynamic_menu
def menu_func(self, context):
default_path = bpy.data.filename.replace(".blend", ".obj")
self.layout.item_stringO(ExportOBJ.bl_idname, "path", default_path, text="Wavefront (.obj)...")
self.layout.operator_string(ExportOBJ.bl_idname, "path", default_path, text="Wavefront (.obj)...")
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)

View File

@@ -298,7 +298,7 @@ import dynamic_menu
def menu_func(self, context):
default_path = bpy.data.filename.replace(".blend", ".ply")
self.layout.item_stringO(ExportPLY.bl_idname, "path", default_path, text="Stanford (.ply)...")
self.layout.operator_string(ExportPLY.bl_idname, "path", default_path, text="Stanford (.ply)...")
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)

View File

@@ -1244,7 +1244,7 @@ import dynamic_menu
def menu_func(self, context):
default_path = bpy.data.filename.replace(".blend", ".x3d")
self.layout.item_stringO(ExportX3D.bl_idname, "path", default_path, text="X3D Extensible 3D (.x3d)...")
self.layout.operator_string(ExportX3D.bl_idname, "path", default_path, text="X3D Extensible 3D (.x3d)...")
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)

View File

@@ -877,5 +877,5 @@ bpy.ops.add(BvhImporter)
import dynamic_menu
menu_func = lambda self, context: self.layout.itemO(BvhImporter.bl_idname, text="Motion Capture (.bvh)...")
menu_func = lambda self, context: self.layout.operator(BvhImporter.bl_idname, text="Motion Capture (.bvh)...")
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_import, menu_func)

View File

@@ -1167,7 +1167,7 @@ class IMPORT_OT_autodesk_3ds(bpy.types.Operator):
bpy.ops.add(IMPORT_OT_autodesk_3ds)
import dynamic_menu
menu_func = lambda self, context: self.layout.itemO(IMPORT_OT_autodesk_3ds.bl_idname, text="3D Studio (.3ds)...")
menu_func = lambda self, context: self.layout.operator(IMPORT_OT_autodesk_3ds.bl_idname, text="3D Studio (.3ds)...")
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_import, menu_func)
# NOTES:

View File

@@ -1626,7 +1626,7 @@ bpy.ops.add(IMPORT_OT_obj)
import dynamic_menu
menu_func = lambda self, context: self.layout.itemO(IMPORT_OT_obj.bl_idname, text="Wavefront (.obj)...")
menu_func = lambda self, context: self.layout.operator(IMPORT_OT_obj.bl_idname, text="Wavefront (.obj)...")
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_import, menu_func)

View File

@@ -63,15 +63,15 @@ class RENDER_PT_network_settings(RenderButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(scene.network_render, "mode")
col.itemR(scene.network_render, "path")
col.itemR(scene.network_render, "server_address")
col.itemR(scene.network_render, "server_port")
col.prop(scene.network_render, "mode")
col.prop(scene.network_render, "path")
col.prop(scene.network_render, "server_address")
col.prop(scene.network_render, "server_port")
if scene.network_render.mode == "RENDER_MASTER":
col.itemR(scene.network_render, "server_broadcast")
col.prop(scene.network_render, "server_broadcast")
else:
col.itemO("render.netclientscan", icon="ICON_FILE_REFRESH", text="")
col.operator("render.netclientscan", icon="ICON_FILE_REFRESH", text="")
@rnaType
class RENDER_PT_network_job(RenderButtonsPanel):
@@ -93,13 +93,13 @@ class RENDER_PT_network_job(RenderButtonsPanel):
split = layout.split()
col = split.column()
col.itemO("render.netclientanim", icon='ICON_RENDER_ANIMATION')
col.itemO("render.netclientsend", icon="ICON_FILE_BLEND")
col.itemO("render.netclientweb", icon="ICON_QUESTION")
col.itemR(scene.network_render, "job_name")
col.operator("render.netclientanim", icon='ICON_RENDER_ANIMATION')
col.operator("render.netclientsend", icon="ICON_FILE_BLEND")
col.operator("render.netclientweb", icon="ICON_QUESTION")
col.prop(scene.network_render, "job_name")
row = col.row()
row.itemR(scene.network_render, "priority")
row.itemR(scene.network_render, "chunks")
row.prop(scene.network_render, "priority")
row.prop(scene.network_render, "chunks")
@rnaType
class RENDER_PT_network_slaves(RenderButtonsPanel):
@@ -120,22 +120,22 @@ class RENDER_PT_network_slaves(RenderButtonsPanel):
row.template_list(netsettings, "slaves", netsettings, "active_slave_index", rows=2)
sub = row.column(align=True)
sub.itemO("render.netclientslaves", icon="ICON_FILE_REFRESH", text="")
sub.itemO("render.netclientblacklistslave", icon="ICON_ZOOMOUT", text="")
sub.operator("render.netclientslaves", icon="ICON_FILE_REFRESH", text="")
sub.operator("render.netclientblacklistslave", icon="ICON_ZOOMOUT", text="")
if len(netrender.slaves) == 0 and len(netsettings.slaves) > 0:
while(len(netsettings.slaves) > 0):
netsettings.slaves.remove(0)
if netsettings.active_slave_index >= 0 and len(netsettings.slaves) > 0:
layout.itemS()
layout.separator()
slave = netrender.slaves[netsettings.active_slave_index]
layout.itemL(text="Name: " + slave.name)
layout.itemL(text="Address: " + slave.address[0])
layout.itemL(text="Seen: " + time.ctime(slave.last_seen))
layout.itemL(text="Stats: " + slave.stats)
layout.label(text="Name: " + slave.name)
layout.label(text="Address: " + slave.address[0])
layout.label(text="Seen: " + time.ctime(slave.last_seen))
layout.label(text="Stats: " + slave.stats)
@rnaType
class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel):
@@ -156,21 +156,21 @@ class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel):
row.template_list(netsettings, "slaves_blacklist", netsettings, "active_blacklisted_slave_index", rows=2)
sub = row.column(align=True)
sub.itemO("render.netclientwhitelistslave", icon="ICON_ZOOMOUT", text="")
sub.operator("render.netclientwhitelistslave", icon="ICON_ZOOMOUT", text="")
if len(netrender.blacklist) == 0 and len(netsettings.slaves_blacklist) > 0:
while(len(netsettings.slaves_blacklist) > 0):
netsettings.slaves_blacklist.remove(0)
if netsettings.active_blacklisted_slave_index >= 0 and len(netsettings.slaves_blacklist) > 0:
layout.itemS()
layout.separator()
slave = netrender.blacklist[netsettings.active_blacklisted_slave_index]
layout.itemL(text="Name: " + slave.name)
layout.itemL(text="Address: " + slave.address[0])
layout.itemL(text="Seen: " + time.ctime(slave.last_seen))
layout.itemL(text="Stats: " + slave.stats)
layout.label(text="Name: " + slave.name)
layout.label(text="Address: " + slave.address[0])
layout.label(text="Seen: " + time.ctime(slave.last_seen))
layout.label(text="Stats: " + slave.stats)
@rnaType
class RENDER_PT_network_jobs(RenderButtonsPanel):
@@ -191,24 +191,24 @@ class RENDER_PT_network_jobs(RenderButtonsPanel):
row.template_list(netsettings, "jobs", netsettings, "active_job_index", rows=2)
sub = row.column(align=True)
sub.itemO("render.netclientstatus", icon="ICON_FILE_REFRESH", text="")
sub.itemO("render.netclientcancel", icon="ICON_ZOOMOUT", text="")
sub.itemO("render.netclientcancelall", icon="ICON_PANEL_CLOSE", text="")
sub.itemO("render.netclientdownload", icon='ICON_RENDER_ANIMATION', text="")
sub.operator("render.netclientstatus", icon="ICON_FILE_REFRESH", text="")
sub.operator("render.netclientcancel", icon="ICON_ZOOMOUT", text="")
sub.operator("render.netclientcancelall", icon="ICON_PANEL_CLOSE", text="")
sub.operator("render.netclientdownload", icon='ICON_RENDER_ANIMATION', text="")
if len(netrender.jobs) == 0 and len(netsettings.jobs) > 0:
while(len(netsettings.jobs) > 0):
netsettings.jobs.remove(0)
if netsettings.active_job_index >= 0 and len(netsettings.jobs) > 0:
layout.itemS()
layout.separator()
job = netrender.jobs[netsettings.active_job_index]
layout.itemL(text="Name: %s" % job.name)
layout.itemL(text="Length: %04i" % len(job))
layout.itemL(text="Done: %04i" % job.results[DONE])
layout.itemL(text="Error: %04i" % job.results[ERROR])
layout.label(text="Name: %s" % job.name)
layout.label(text="Length: %04i" % len(job))
layout.label(text="Done: %04i" % job.results[DONE])
layout.label(text="Error: %04i" % job.results[ERROR])
@rnaType
class NetRenderSettings(bpy.types.IDPropertyGroup):

View File

@@ -145,7 +145,7 @@ class Menu(StructRNA):
if f.startswith("."):
continue
layout.item_stringO(operator, "path", path, text=path_to_name(f))
layout.operator_string(operator, "path", path, text=path_to_name(f))
def draw_preset(self, context):
'''Define these on the subclass

View File

@@ -75,7 +75,7 @@ def draw(layout, context, context_member, use_edit = True):
if use_edit:
row = layout.row()
props = row.itemO("wm.properties_add", properties=True, text="Add")
props = row.operator("wm.properties_add", properties=True, text="Add")
props.path = context_member
del row
@@ -102,20 +102,20 @@ def draw(layout, context, context_member, use_edit = True):
else:
row = box.row()
row.itemL(text=key)
row.label(text=key)
# explicit exception for arrays
if convert_to_pyobject and not hasattr(val_orig, "len"):
row.itemL(text=val_draw)
row.label(text=val_draw)
else:
row.itemR(rna_item, '["%s"]' % key, text="")
row.prop(rna_item, '["%s"]' % key, text="")
if use_edit:
row = split.row(align=True)
prop = row.itemO("wm.properties_edit", properties=True, text="edit")
prop = row.operator("wm.properties_edit", properties=True, text="edit")
assign_props(prop, val_draw, key)
prop = row.itemO("wm.properties_remove", properties=True, text="", icon='ICON_ZOOMOUT')
prop = row.operator("wm.properties_remove", properties=True, text="", icon='ICON_ZOOMOUT')
assign_props(prop, val_draw, key)

View File

@@ -130,7 +130,7 @@ bpy.ops.add(AddTorus)
# Add to a menu
import dynamic_menu
menu_func = (lambda self, context: self.layout.itemO(AddTorus.bl_idname,
menu_func = (lambda self, context: self.layout.operator(AddTorus.bl_idname,
text="Torus", icon='ICON_MESH_DONUT'))
menu_item = dynamic_menu.add(bpy.types.INFO_MT_mesh_add, menu_func)

View File

@@ -650,7 +650,7 @@ bpy.ops.add(MESH_OT_skin)
# Add to a menu
import dynamic_menu
menu_item = dynamic_menu.add(bpy.types.VIEW3D_MT_edit_mesh_faces, (lambda self, context: self.layout.itemO("mesh.skin", text="Bridge Faces")) )
menu_item = dynamic_menu.add(bpy.types.VIEW3D_MT_edit_mesh_faces, (lambda self, context: self.layout.operator("mesh.skin", text="Bridge Faces")) )
if __name__ == "__main__":
bpy.ops.mesh.skin()

View File

@@ -1136,7 +1136,7 @@ bpy.ops.add(SmartProject)
# Add to a menu
import dynamic_menu
menu_func = (lambda self, context: self.layout.itemO(SmartProject.bl_idname,
menu_func = (lambda self, context: self.layout.operator(SmartProject.bl_idname,
text="Smart Project"))
menu_item = dynamic_menu.add(bpy.types.VIEW3D_MT_uv_map, menu_func)

View File

@@ -51,7 +51,7 @@ bpy.ops.add(ExportSomeData)
# Only needed if you want to add into a dynamic menu
import dynamic_menu
menu_func = lambda self, context: self.layout.itemO("export.some_data", text="Example Exporter...")
menu_func = lambda self, context: self.layout.operator("export.some_data", text="Example Exporter...")
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)
# Use for running this script directly

View File

@@ -47,10 +47,10 @@ class DATA_PT_context_arm(DataButtonsPanel):
split = layout.split(percentage=0.65)
if ob:
split.template_ID(ob, "data")
split.itemS()
split.separator()
elif arm:
split.template_ID(space, "pin_id")
split.itemS()
split.separator()
else:
layout.template_ID(ob, "data")
@@ -64,23 +64,23 @@ class DATA_PT_skeleton(DataButtonsPanel):
arm = context.armature
wide_ui = context.region.width > narrowui
layout.itemR(arm, "pose_position", expand=True)
layout.prop(arm, "pose_position", expand=True)
split = layout.split()
col = split.column()
col.itemL(text="Layers:")
col.itemR(arm, "layer", text="")
col.itemL(text="Protected Layers:")
col.itemR(arm, "layer_protection", text="")
col.label(text="Layers:")
col.prop(arm, "layer", text="")
col.label(text="Protected Layers:")
col.prop(arm, "layer_protection", text="")
if wide_ui:
col = split.column()
col.itemL(text="Deform:")
col.itemR(arm, "deform_vertexgroups", text="Vertex Groups")
col.itemR(arm, "deform_envelope", text="Envelopes")
col.itemR(arm, "deform_quaternion", text="Quaternion")
col.itemR(arm, "deform_bbone_rest", text="B-Bones Rest")
col.label(text="Deform:")
col.prop(arm, "deform_vertexgroups", text="Vertex Groups")
col.prop(arm, "deform_envelope", text="Envelopes")
col.prop(arm, "deform_quaternion", text="Quaternion")
col.prop(arm, "deform_bbone_rest", text="B-Bones Rest")
class DATA_PT_display(DataButtonsPanel):
@@ -93,21 +93,21 @@ class DATA_PT_display(DataButtonsPanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.row().itemR(arm, "drawtype", expand=True)
layout.row().prop(arm, "drawtype", expand=True)
else:
layout.row().itemR(arm, "drawtype", text="")
layout.row().prop(arm, "drawtype", text="")
split = layout.split()
col = split.column()
col.itemR(arm, "draw_names", text="Names")
col.itemR(arm, "draw_axes", text="Axes")
col.itemR(arm, "draw_custom_bone_shapes", text="Shapes")
col.prop(arm, "draw_names", text="Names")
col.prop(arm, "draw_axes", text="Axes")
col.prop(arm, "draw_custom_bone_shapes", text="Shapes")
if wide_ui:
col = split.column()
col.itemR(arm, "draw_group_colors", text="Colors")
col.itemR(arm, "delay_deform", text="Delay Refresh")
col.prop(arm, "draw_group_colors", text="Colors")
col.prop(arm, "delay_deform", text="Delay Refresh")
class DATA_PT_bone_groups(DataButtonsPanel):
@@ -128,20 +128,20 @@ class DATA_PT_bone_groups(DataButtonsPanel):
col = row.column(align=True)
col.active = (ob.proxy is None)
col.itemO("pose.group_add", icon='ICON_ZOOMIN', text="")
col.itemO("pose.group_remove", icon='ICON_ZOOMOUT', text="")
col.operator("pose.group_add", icon='ICON_ZOOMIN', text="")
col.operator("pose.group_remove", icon='ICON_ZOOMOUT', text="")
group = pose.active_bone_group
if group:
col = layout.column()
col.active = (ob.proxy is None)
col.itemR(group, "name")
col.prop(group, "name")
split = layout.split()
split.active = (ob.proxy is None)
col = split.column()
col.itemR(group, "color_set")
col.prop(group, "color_set")
if group.color_set:
if wide_ui:
col = split.column()
@@ -150,10 +150,10 @@ class DATA_PT_bone_groups(DataButtonsPanel):
row = layout.row(align=True)
row.active = (ob.proxy is None)
row.itemO("pose.group_assign", text="Assign")
row.itemO("pose.group_remove", text="Remove") #row.itemO("pose.bone_group_remove_from", text="Remove")
#row.itemO("object.bone_group_select", text="Select")
#row.itemO("object.bone_group_deselect", text="Deselect")
row.operator("pose.group_assign", text="Assign")
row.operator("pose.group_remove", text="Remove") #row.operator("pose.bone_group_remove_from", text="Remove")
#row.operator("object.bone_group_select", text="Select")
#row.operator("object.bone_group_deselect", text="Deselect")
class DATA_PT_paths(DataButtonsPanel):
@@ -166,41 +166,41 @@ class DATA_PT_paths(DataButtonsPanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(arm, "paths_type", expand=True)
layout.prop(arm, "paths_type", expand=True)
else:
layout.itemR(arm, "paths_type", text="")
layout.prop(arm, "paths_type", text="")
split = layout.split()
col = split.column()
sub = col.column(align=True)
if (arm.paths_type == 'CURRENT_FRAME'):
sub.itemR(arm, "path_before_current", text="Before")
sub.itemR(arm, "path_after_current", text="After")
sub.prop(arm, "path_before_current", text="Before")
sub.prop(arm, "path_after_current", text="After")
elif (arm.paths_type == 'RANGE'):
sub.itemR(arm, "path_start_frame", text="Start")
sub.itemR(arm, "path_end_frame", text="End")
sub.prop(arm, "path_start_frame", text="Start")
sub.prop(arm, "path_end_frame", text="End")
sub.itemR(arm, "path_size", text="Step")
col.row().itemR(arm, "paths_location", expand=True)
sub.prop(arm, "path_size", text="Step")
col.row().prop(arm, "paths_location", expand=True)
if wide_ui:
col = split.column()
col.itemL(text="Display:")
col.itemR(arm, "paths_show_frame_numbers", text="Frame Numbers")
col.itemR(arm, "paths_highlight_keyframes", text="Keyframes")
col.itemR(arm, "paths_show_keyframe_numbers", text="Keyframe Numbers")
col.label(text="Display:")
col.prop(arm, "paths_show_frame_numbers", text="Frame Numbers")
col.prop(arm, "paths_highlight_keyframes", text="Keyframes")
col.prop(arm, "paths_show_keyframe_numbers", text="Keyframe Numbers")
layout.itemS()
layout.separator()
split = layout.split()
col = split.column()
col.itemO("pose.paths_calculate", text="Calculate Paths")
col.operator("pose.paths_calculate", text="Calculate Paths")
if wide_ui:
col = split.column()
col.itemO("pose.paths_clear", text="Clear Paths")
col.operator("pose.paths_clear", text="Clear Paths")
class DATA_PT_ghost(DataButtonsPanel):
@@ -213,9 +213,9 @@ class DATA_PT_ghost(DataButtonsPanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(arm, "ghost_type", expand=True)
layout.prop(arm, "ghost_type", expand=True)
else:
layout.itemR(arm, "ghost_type", text="")
layout.prop(arm, "ghost_type", text="")
split = layout.split()
@@ -223,17 +223,17 @@ class DATA_PT_ghost(DataButtonsPanel):
sub = col.column(align=True)
if arm.ghost_type == 'RANGE':
sub.itemR(arm, "ghost_start_frame", text="Start")
sub.itemR(arm, "ghost_end_frame", text="End")
sub.itemR(arm, "ghost_size", text="Step")
sub.prop(arm, "ghost_start_frame", text="Start")
sub.prop(arm, "ghost_end_frame", text="End")
sub.prop(arm, "ghost_size", text="Step")
elif arm.ghost_type == 'CURRENT_FRAME':
sub.itemR(arm, "ghost_step", text="Range")
sub.itemR(arm, "ghost_size", text="Step")
sub.prop(arm, "ghost_step", text="Range")
sub.prop(arm, "ghost_size", text="Step")
if wide_ui:
col = split.column()
col.itemL(text="Display:")
col.itemR(arm, "ghost_only_selected", text="Selected Only")
col.label(text="Display:")
col.prop(arm, "ghost_only_selected", text="Selected Only")
bpy.types.register(DATA_PT_context_arm)
bpy.types.register(DATA_PT_skeleton)

View File

@@ -43,8 +43,8 @@ class BONE_PT_context_bone(BoneButtonsPanel):
bone = context.edit_bone
row = layout.row()
row.itemL(text="", icon='ICON_BONE_DATA')
row.itemR(bone, "name", text="")
row.label(text="", icon='ICON_BONE_DATA')
row.prop(bone, "name", text="")
class BONE_PT_transform(BoneButtonsPanel):
@@ -61,21 +61,21 @@ class BONE_PT_transform(BoneButtonsPanel):
bone = context.edit_bone
if wide_ui:
row = layout.row()
row.column().itemR(bone, "head")
row.column().itemR(bone, "tail")
row.column().prop(bone, "head")
row.column().prop(bone, "tail")
col = row.column()
sub = col.column(align=True)
sub.itemL(text="Roll:")
sub.itemR(bone, "roll", text="")
sub.itemL()
sub.itemR(bone, "locked")
sub.label(text="Roll:")
sub.prop(bone, "roll", text="")
sub.label()
sub.prop(bone, "locked")
else:
col = layout.column()
col.itemR(bone, "head")
col.itemR(bone, "tail")
col.itemR(bone, "roll")
col.itemR(bone, "locked")
col.prop(bone, "head")
col.prop(bone, "tail")
col.prop(bone, "roll")
col.prop(bone, "locked")
else:
pchan = ob.pose.bones[context.bone.name]
@@ -83,37 +83,37 @@ class BONE_PT_transform(BoneButtonsPanel):
if wide_ui:
row = layout.row()
col = row.column()
col.itemR(pchan, "location")
col.prop(pchan, "location")
col.active = not (bone.parent and bone.connected)
col = row.column()
if pchan.rotation_mode == 'QUATERNION':
col.itemR(pchan, "rotation_quaternion", text="Rotation")
col.prop(pchan, "rotation_quaternion", text="Rotation")
elif pchan.rotation_mode == 'AXIS_ANGLE':
#col.itemL(text="Rotation")
#col.itemR(pchan, "rotation_angle", text="Angle")
#col.itemR(pchan, "rotation_axis", text="Axis")
col.itemR(pchan, "rotation_axis_angle", 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")
else:
col.itemR(pchan, "rotation_euler", text="Rotation")
col.prop(pchan, "rotation_euler", text="Rotation")
row.column().itemR(pchan, "scale")
row.column().prop(pchan, "scale")
layout.itemR(pchan, "rotation_mode")
layout.prop(pchan, "rotation_mode")
else:
col = layout.column()
sub = col.column()
sub.active = not (bone.parent and bone.connected)
sub.itemR(pchan, "location")
col.itemL(text="Rotation:")
col.itemR(pchan, "rotation_mode", text="")
sub.prop(pchan, "location")
col.label(text="Rotation:")
col.prop(pchan, "rotation_mode", text="")
if pchan.rotation_mode == 'QUATERNION':
col.itemR(pchan, "rotation_quaternion", text="")
col.prop(pchan, "rotation_quaternion", text="")
elif pchan.rotation_mode == 'AXIS_ANGLE':
col.itemR(pchan, "rotation_axis_angle", text="")
col.prop(pchan, "rotation_axis_angle", text="")
else:
col.itemR(pchan, "rotation_euler", text="")
col.itemR(pchan, "scale")
col.prop(pchan, "rotation_euler", text="")
col.prop(pchan, "scale")
class BONE_PT_transform_locks(BoneButtonsPanel):
@@ -132,19 +132,19 @@ class BONE_PT_transform_locks(BoneButtonsPanel):
row = layout.row()
col = row.column()
col.itemR(pchan, "lock_location")
col.prop(pchan, "lock_location")
col.active = not (bone.parent and bone.connected)
col = row.column()
if pchan.rotation_mode in ('QUATERNION', 'AXIS_ANGLE'):
col.itemR(pchan, "lock_rotations_4d", text="Lock Rotation")
col.prop(pchan, "lock_rotations_4d", text="Lock Rotation")
if pchan.lock_rotations_4d:
col.itemR(pchan, "lock_rotation_w", text="W")
col.itemR(pchan, "lock_rotation", text="")
col.prop(pchan, "lock_rotation_w", text="W")
col.prop(pchan, "lock_rotation", text="")
else:
col.itemR(pchan, "lock_rotation", text="Rotation")
col.prop(pchan, "lock_rotation", text="Rotation")
row.column().itemR(pchan, "lock_scale")
row.column().prop(pchan, "lock_scale")
class BONE_PT_relations(BoneButtonsPanel):
@@ -167,28 +167,28 @@ class BONE_PT_relations(BoneButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Layers:")
col.itemR(bone, "layer", text="")
col.label(text="Layers:")
col.prop(bone, "layer", text="")
col.itemS()
col.separator()
if ob and pchan:
col.itemL(text="Bone Group:")
col.item_pointerR(pchan, "bone_group", ob.pose, "bone_groups", text="")
col.label(text="Bone Group:")
col.prop_pointer(pchan, "bone_group", ob.pose, "bone_groups", text="")
if wide_ui:
col = split.column()
col.itemL(text="Parent:")
col.label(text="Parent:")
if context.bone:
col.itemR(bone, "parent", text="")
col.prop(bone, "parent", text="")
else:
col.item_pointerR(bone, "parent", arm, "edit_bones", text="")
col.prop_pointer(bone, "parent", arm, "edit_bones", text="")
sub = col.column()
sub.active = (bone.parent is not None)
sub.itemR(bone, "connected")
sub.itemR(bone, "hinge", text="Inherit Rotation")
sub.itemR(bone, "inherit_scale", text="Inherit Scale")
sub.prop(bone, "connected")
sub.prop(bone, "hinge", text="Inherit Rotation")
sub.prop(bone, "inherit_scale", text="Inherit Scale")
class BONE_PT_display(BoneButtonsPanel):
@@ -215,13 +215,13 @@ class BONE_PT_display(BoneButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(bone, "draw_wire", text="Wireframe")
col.itemR(bone, "hidden", text="Hide")
col.prop(bone, "draw_wire", text="Wireframe")
col.prop(bone, "hidden", text="Hide")
if wide_ui:
col = split.column()
col.itemL(text="Custom Shape:")
col.itemR(pchan, "custom_shape", text="")
col.label(text="Custom Shape:")
col.prop(pchan, "custom_shape", text="")
class BONE_PT_deform(BoneButtonsPanel):
@@ -234,7 +234,7 @@ class BONE_PT_deform(BoneButtonsPanel):
if not bone:
bone = context.edit_bone
self.layout.itemR(bone, "deform", text="")
self.layout.prop(bone, "deform", text="")
def draw(self, context):
layout = self.layout
@@ -250,29 +250,29 @@ class BONE_PT_deform(BoneButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Envelope:")
col.label(text="Envelope:")
sub = col.column(align=True)
sub.itemR(bone, "envelope_distance", text="Distance")
sub.itemR(bone, "envelope_weight", text="Weight")
col.itemR(bone, "multiply_vertexgroup_with_envelope", text="Multiply")
sub.prop(bone, "envelope_distance", text="Distance")
sub.prop(bone, "envelope_weight", text="Weight")
col.prop(bone, "multiply_vertexgroup_with_envelope", text="Multiply")
sub = col.column(align=True)
sub.itemL(text="Radius:")
sub.itemR(bone, "head_radius", text="Head")
sub.itemR(bone, "tail_radius", text="Tail")
sub.label(text="Radius:")
sub.prop(bone, "head_radius", text="Head")
sub.prop(bone, "tail_radius", text="Tail")
if wide_ui:
col = split.column()
col.itemL(text="Curved Bones:")
col.label(text="Curved Bones:")
sub = col.column(align=True)
sub.itemR(bone, "bbone_segments", text="Segments")
sub.itemR(bone, "bbone_in", text="Ease In")
sub.itemR(bone, "bbone_out", text="Ease Out")
sub.prop(bone, "bbone_segments", text="Segments")
sub.prop(bone, "bbone_in", text="Ease In")
sub.prop(bone, "bbone_out", text="Ease Out")
col.itemL(text="Offset:")
col.itemR(bone, "cyclic_offset")
col.label(text="Offset:")
col.prop(bone, "cyclic_offset")
class BONE_PT_properties(BoneButtonsPanel):

View File

@@ -47,10 +47,10 @@ class DATA_PT_context_camera(DataButtonsPanel):
split = layout.split(percentage=0.65)
if ob:
split.template_ID(ob, "data")
split.itemS()
split.separator()
elif cam:
split.template_ID(space, "pin_id")
split.itemS()
split.separator()
else:
if ob:
layout.template_ID(ob, "data")
@@ -68,50 +68,50 @@ class DATA_PT_camera(DataButtonsPanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(cam, "type", expand=True)
layout.prop(cam, "type", expand=True)
else:
layout.itemR(cam, "type", text="")
layout.prop(cam, "type", text="")
split = layout.split()
col = split.column()
if cam.type == 'PERSP':
if cam.lens_unit == 'MILLIMETERS':
col.itemR(cam, "lens", text="Angle")
col.prop(cam, "lens", text="Angle")
elif cam.lens_unit == 'DEGREES':
col.itemR(cam, "angle")
col.prop(cam, "angle")
if wide_ui:
col = split.column()
col.itemR(cam, "lens_unit", text="")
col.prop(cam, "lens_unit", text="")
elif cam.type == 'ORTHO':
col.itemR(cam, "ortho_scale")
col.prop(cam, "ortho_scale")
layout.itemR(cam, "panorama")
layout.prop(cam, "panorama")
split = layout.split()
col = split.column(align=True)
col.itemL(text="Shift:")
col.itemR(cam, "shift_x", text="X")
col.itemR(cam, "shift_y", text="Y")
col.label(text="Shift:")
col.prop(cam, "shift_x", text="X")
col.prop(cam, "shift_y", text="Y")
if wide_ui:
col = split.column(align=True)
col.itemL(text="Clipping:")
col.itemR(cam, "clip_start", text="Start")
col.itemR(cam, "clip_end", text="End")
col.label(text="Clipping:")
col.prop(cam, "clip_start", text="Start")
col.prop(cam, "clip_end", text="End")
layout.itemL(text="Depth of Field:")
layout.label(text="Depth of Field:")
split = layout.split()
col = split.column()
col.itemR(cam, "dof_object", text="")
col.prop(cam, "dof_object", text="")
if wide_ui:
col = split.column()
col.itemR(cam, "dof_distance", text="Distance")
col.prop(cam, "dof_distance", text="Distance")
class DATA_PT_camera_display(DataButtonsPanel):
@@ -126,19 +126,19 @@ class DATA_PT_camera_display(DataButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(cam, "show_limits", text="Limits")
col.itemR(cam, "show_mist", text="Mist")
col.itemR(cam, "show_title_safe", text="Title Safe")
col.itemR(cam, "show_name", text="Name")
col.prop(cam, "show_limits", text="Limits")
col.prop(cam, "show_mist", text="Mist")
col.prop(cam, "show_title_safe", text="Title Safe")
col.prop(cam, "show_name", text="Name")
if wide_ui:
col = split.column()
col.itemR(cam, "draw_size", text="Size")
col.itemS()
col.itemR(cam, "show_passepartout", text="Passepartout")
col.prop(cam, "draw_size", text="Size")
col.separator()
col.prop(cam, "show_passepartout", text="Passepartout")
sub = col.column()
sub.active = cam.show_passepartout
sub.itemR(cam, "passepartout_alpha", text="Alpha", slider=True)
sub.prop(cam, "passepartout_alpha", text="Alpha", slider=True)
bpy.types.register(DATA_PT_context_camera)
bpy.types.register(DATA_PT_camera)

View File

@@ -64,10 +64,10 @@ class DATA_PT_context_curve(DataButtonsPanel):
if ob:
split.template_ID(ob, "data")
split.itemS()
split.separator()
elif curve:
split.template_ID(space, "pin_id")
split.itemS()
split.separator()
else:
layout.template_ID(ob, "data")
@@ -87,42 +87,42 @@ class DATA_PT_shape_curve(DataButtonsPanel):
if is_curve:
row = layout.row()
row.itemR(curve, "dimensions", expand=True)
row.prop(curve, "dimensions", expand=True)
split = layout.split()
col = split.column()
col.itemL(text="Resolution:")
col.label(text="Resolution:")
sub = col.column(align=True)
sub.itemR(curve, "resolution_u", text="Preview U")
sub.itemR(curve, "render_resolution_u", text="Render U")
sub.prop(curve, "resolution_u", text="Preview U")
sub.prop(curve, "render_resolution_u", text="Render U")
if is_curve:
col.itemL(text="Twisting:")
col.itemR(curve, "twist_mode", text="")
col.itemR(curve, "twist_smooth", text="Smooth")
col.label(text="Twisting:")
col.prop(curve, "twist_mode", text="")
col.prop(curve, "twist_smooth", text="Smooth")
if is_text:
col.itemL(text="Display:")
col.itemR(curve, "fast", text="Fast Editing")
col.label(text="Display:")
col.prop(curve, "fast", text="Fast Editing")
if wide_ui:
col = split.column()
if is_surf:
sub = col.column(align=True)
sub.itemL(text="")
sub.itemR(curve, "resolution_v", text="Preview V")
sub.itemR(curve, "render_resolution_v", text="Render V")
sub.label(text="")
sub.prop(curve, "resolution_v", text="Preview V")
sub.prop(curve, "render_resolution_v", text="Render V")
if is_curve or is_text:
sub = col.column()
sub.active = (curve.dimensions == '2D')
sub.itemL(text="Caps:")
sub.itemR(curve, "front")
sub.itemR(curve, "back")
sub.label(text="Caps:")
sub.prop(curve, "front")
sub.prop(curve, "back")
col.itemL(text="Textures:")
# col.itemR(curve, "uv_orco")
col.itemR(curve, "auto_texspace")
col.label(text="Textures:")
# col.prop(curve, "uv_orco")
col.prop(curve, "auto_texspace")
class DATA_PT_geometry_curve(DataButtonsPanel):
@@ -137,19 +137,19 @@ class DATA_PT_geometry_curve(DataButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Modification:")
col.itemR(curve, "width")
col.itemR(curve, "extrude")
col.itemL(text="Taper Object:")
col.itemR(curve, "taper_object", text="")
col.label(text="Modification:")
col.prop(curve, "width")
col.prop(curve, "extrude")
col.label(text="Taper Object:")
col.prop(curve, "taper_object", text="")
if wide_ui:
col = split.column()
col.itemL(text="Bevel:")
col.itemR(curve, "bevel_depth", text="Depth")
col.itemR(curve, "bevel_resolution", text="Resolution")
col.itemL(text="Bevel Object:")
col.itemR(curve, "bevel_object", text="")
col.label(text="Bevel:")
col.prop(curve, "bevel_depth", text="Depth")
col.prop(curve, "bevel_resolution", text="Resolution")
col.label(text="Bevel Object:")
col.prop(curve, "bevel_object", text="")
class DATA_PT_pathanim(DataButtonsPanelCurve):
@@ -158,7 +158,7 @@ class DATA_PT_pathanim(DataButtonsPanelCurve):
def draw_header(self, context):
curve = context.curve
self.layout.itemR(curve, "use_path", text="")
self.layout.prop(curve, "use_path", text="")
def draw(self, context):
layout = self.layout
@@ -169,21 +169,21 @@ class DATA_PT_pathanim(DataButtonsPanelCurve):
layout.active = curve.use_path
row = layout.row()
layout.itemR(curve, "path_length", text="Frames")
layout.prop(curve, "path_length", text="Frames")
if wide_ui:
row.itemL()
row.label()
split = layout.split()
col = split.column()
col.itemR(curve, "use_path_follow")
col.itemR(curve, "use_stretch")
col.prop(curve, "use_path_follow")
col.prop(curve, "use_stretch")
if wide_ui:
col = split.column()
col.itemR(curve, "use_radius")
col.itemR(curve, "use_time_offset", text="Offset Children")
col.prop(curve, "use_radius")
col.prop(curve, "use_time_offset", text="Offset Children")
class DATA_PT_active_spline(DataButtonsPanelActive):
@@ -204,57 +204,57 @@ class DATA_PT_active_spline(DataButtonsPanelActive):
# These settings are below but its easier to have
# poly's set aside since they use so few settings
col = split.column()
col.itemL(text="Cyclic:")
col.itemR(act_spline, "smooth")
col.label(text="Cyclic:")
col.prop(act_spline, "smooth")
col = split.column()
col.itemR(act_spline, "cyclic_u", text="U")
col.prop(act_spline, "cyclic_u", text="U")
else:
col = split.column()
col.itemL(text="Cyclic:")
col.label(text="Cyclic:")
if act_spline.type == 'NURBS':
col.itemL(text="Bezier:")
col.itemL(text="Endpoint:")
col.itemL(text="Order:")
col.label(text="Bezier:")
col.label(text="Endpoint:")
col.label(text="Order:")
col.itemL(text="Resolution:")
col.label(text="Resolution:")
col = split.column()
col.itemR(act_spline, "cyclic_u", text="U")
col.prop(act_spline, "cyclic_u", text="U")
if act_spline.type == 'NURBS':
sub = col.column()
# sub.active = (not act_spline.cyclic_u)
sub.itemR(act_spline, "bezier_u", text="U")
sub.itemR(act_spline, "endpoint_u", text="U")
sub.prop(act_spline, "bezier_u", text="U")
sub.prop(act_spline, "endpoint_u", text="U")
sub = col.column()
sub.itemR(act_spline, "order_u", text="U")
col.itemR(act_spline, "resolution_u", text="U")
sub.prop(act_spline, "order_u", text="U")
col.prop(act_spline, "resolution_u", text="U")
if is_surf:
col = split.column()
col.itemR(act_spline, "cyclic_v", text="V")
col.prop(act_spline, "cyclic_v", text="V")
# its a surface, assume its a nurb.
sub = col.column()
sub.active = (not act_spline.cyclic_v)
sub.itemR(act_spline, "bezier_v", text="V")
sub.itemR(act_spline, "endpoint_v", text="V")
sub.prop(act_spline, "bezier_v", text="V")
sub.prop(act_spline, "endpoint_v", text="V")
sub = col.column()
sub.itemR(act_spline, "order_v", text="V")
sub.itemR(act_spline, "resolution_v", text="V")
sub.prop(act_spline, "order_v", text="V")
sub.prop(act_spline, "resolution_v", text="V")
if not is_surf:
split = layout.split()
col = split.column()
col.active = (curve.dimensions == '3D')
col.itemL(text="Interpolation:")
col.itemR(act_spline, "tilt_interpolation", text="Tilt")
col.itemR(act_spline, "radius_interpolation", text="Radius")
col.label(text="Interpolation:")
col.prop(act_spline, "tilt_interpolation", text="Tilt")
col.prop(act_spline, "radius_interpolation", text="Radius")
layout.itemR(act_spline, "smooth")
layout.prop(act_spline, "smooth")
class DATA_PT_font(DataButtonsPanel):
@@ -271,44 +271,44 @@ class DATA_PT_font(DataButtonsPanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(text, "font")
layout.prop(text, "font")
else:
layout.itemR(text, "font", text="")
layout.prop(text, "font", text="")
split = layout.split()
col = split.column()
col.itemR(text, "text_size", text="Size")
col.prop(text, "text_size", text="Size")
if wide_ui:
col = split.column()
col.itemR(text, "shear")
col.prop(text, "shear")
split = layout.split()
col = split.column()
col.itemL(text="Object Font:")
col.itemR(text, "family", text="")
col.label(text="Object Font:")
col.prop(text, "family", text="")
if wide_ui:
col = split.column()
col.itemL(text="Text on Curve:")
col.itemR(text, "text_on_curve", text="")
col.label(text="Text on Curve:")
col.prop(text, "text_on_curve", text="")
split = layout.split()
col = split.column(align=True)
col.itemL(text="Underline:")
col.itemR(text, "ul_position", text="Position")
col.itemR(text, "ul_height", text="Thickness")
col.label(text="Underline:")
col.prop(text, "ul_position", text="Position")
col.prop(text, "ul_height", text="Thickness")
if wide_ui:
col = split.column()
col.itemL(text="Character:")
col.itemR(char, "bold")
col.itemR(char, "italic")
col.itemR(char, "underline")
# col.itemR(char, "style")
# col.itemR(char, "wrap")
col.label(text="Character:")
col.prop(char, "bold")
col.prop(char, "italic")
col.prop(char, "underline")
# col.prop(char, "style")
# col.prop(char, "wrap")
class DATA_PT_paragraph(DataButtonsPanel):
@@ -323,25 +323,25 @@ class DATA_PT_paragraph(DataButtonsPanel):
text = context.curve
wide_ui = context.region.width > narrowui
layout.itemL(text="Align:")
layout.label(text="Align:")
if wide_ui:
layout.itemR(text, "spacemode", expand=True)
layout.prop(text, "spacemode", expand=True)
else:
layout.itemR(text, "spacemode", text="")
layout.prop(text, "spacemode", text="")
split = layout.split()
col = split.column(align=True)
col.itemL(text="Spacing:")
col.itemR(text, "spacing", text="Character")
col.itemR(text, "word_spacing", text="Word")
col.itemR(text, "line_dist", text="Line")
col.label(text="Spacing:")
col.prop(text, "spacing", text="Character")
col.prop(text, "word_spacing", text="Word")
col.prop(text, "line_dist", text="Line")
if wide_ui:
col = split.column(align=True)
col.itemL(text="Offset:")
col.itemR(text, "offset_x", text="X")
col.itemR(text, "offset_y", text="Y")
col.label(text="Offset:")
col.prop(text, "offset_x", text="X")
col.prop(text, "offset_y", text="Y")
class DATA_PT_textboxes(DataButtonsPanel):
@@ -360,15 +360,15 @@ class DATA_PT_textboxes(DataButtonsPanel):
split = layout.box().split()
col = split.column(align=True)
col.itemL(text="Dimensions:")
col.itemR(box, "width", text="Width")
col.itemR(box, "height", text="Height")
col.label(text="Dimensions:")
col.prop(box, "width", text="Width")
col.prop(box, "height", text="Height")
if wide_ui:
col = split.column(align=True)
col.itemL(text="Offset:")
col.itemR(box, "x", text="X")
col.itemR(box, "y", text="Y")
col.label(text="Offset:")
col.prop(box, "x", text="X")
col.prop(box, "y", text="Y")
bpy.types.register(DATA_PT_context_curve)
bpy.types.register(DATA_PT_shape_curve)

View File

@@ -41,10 +41,10 @@ class DATA_PT_empty(DataButtonsPanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(ob, "empty_draw_type", text="Display")
layout.prop(ob, "empty_draw_type", text="Display")
else:
layout.itemR(ob, "empty_draw_type", text="")
layout.prop(ob, "empty_draw_type", text="")
layout.itemR(ob, "empty_draw_size", text="Size")
layout.prop(ob, "empty_draw_size", text="Size")
bpy.types.register(DATA_PT_empty)

View File

@@ -54,10 +54,10 @@ class DATA_PT_context_lamp(DataButtonsPanel):
split = layout.split(percentage=0.65)
if ob:
split.template_ID(ob, "data")
split.itemS()
split.separator()
elif lamp:
split.template_ID(space, "pin_id")
split.itemS()
split.separator()
else:
if ob:
layout.template_ID(ob, "data")
@@ -75,40 +75,40 @@ class DATA_PT_lamp(DataButtonsPanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(lamp, "type", expand=True)
layout.prop(lamp, "type", expand=True)
else:
layout.itemR(lamp, "type", text="")
layout.prop(lamp, "type", text="")
split = layout.split()
col = split.column()
sub = col.column()
sub.itemR(lamp, "color", text="")
sub.itemR(lamp, "energy")
sub.prop(lamp, "color", text="")
sub.prop(lamp, "energy")
if lamp.type in ('POINT', 'SPOT'):
sub.itemL(text="Falloff:")
sub.itemR(lamp, "falloff_type", text="")
sub.itemR(lamp, "distance")
sub.label(text="Falloff:")
sub.prop(lamp, "falloff_type", text="")
sub.prop(lamp, "distance")
if lamp.falloff_type == 'LINEAR_QUADRATIC_WEIGHTED':
col.itemL(text="Attenuation Factors:")
col.label(text="Attenuation Factors:")
sub = col.column(align=True)
sub.itemR(lamp, "linear_attenuation", slider=True, text="Linear")
sub.itemR(lamp, "quadratic_attenuation", slider=True, text="Quadratic")
sub.prop(lamp, "linear_attenuation", slider=True, text="Linear")
sub.prop(lamp, "quadratic_attenuation", slider=True, text="Quadratic")
col.itemR(lamp, "sphere")
col.prop(lamp, "sphere")
if lamp.type == 'AREA':
col.itemR(lamp, "distance")
col.itemR(lamp, "gamma")
col.prop(lamp, "distance")
col.prop(lamp, "gamma")
if wide_ui:
col = split.column()
col.itemR(lamp, "negative")
col.itemR(lamp, "layer", text="This Layer Only")
col.itemR(lamp, "specular")
col.itemR(lamp, "diffuse")
col.prop(lamp, "negative")
col.prop(lamp, "layer", text="This Layer Only")
col.prop(lamp, "specular")
col.prop(lamp, "diffuse")
class DATA_PT_sunsky(DataButtonsPanel):
@@ -124,59 +124,59 @@ class DATA_PT_sunsky(DataButtonsPanel):
lamp = context.lamp.sky
wide_ui = context.region.width > narrowui
layout.itemR(lamp, "sky")
layout.prop(lamp, "sky")
row = layout.row()
row.active = lamp.sky or lamp.atmosphere
row.itemR(lamp, "atmosphere_turbidity", text="Turbidity")
row.prop(lamp, "atmosphere_turbidity", text="Turbidity")
split = layout.split()
col = split.column()
col.active = lamp.sky
col.itemL(text="Blending:")
col.label(text="Blending:")
sub = col.column()
sub.itemR(lamp, "sky_blend_type", text="")
sub.itemR(lamp, "sky_blend", text="Factor")
sub.prop(lamp, "sky_blend_type", text="")
sub.prop(lamp, "sky_blend", text="Factor")
col.itemL(text="Color Space:")
col.label(text="Color Space:")
sub = col.column()
sub.row().itemR(lamp, "sky_color_space", expand=True)
sub.itemR(lamp, "sky_exposure", text="Exposure")
sub.row().prop(lamp, "sky_color_space", expand=True)
sub.prop(lamp, "sky_exposure", text="Exposure")
if wide_ui:
col = split.column()
col.active = lamp.sky
col.itemL(text="Horizon:")
col.label(text="Horizon:")
sub = col.column()
sub.itemR(lamp, "horizon_brightness", text="Brightness")
sub.itemR(lamp, "spread", text="Spread")
sub.prop(lamp, "horizon_brightness", text="Brightness")
sub.prop(lamp, "spread", text="Spread")
col.itemL(text="Sun:")
col.label(text="Sun:")
sub = col.column()
sub.itemR(lamp, "sun_brightness", text="Brightness")
sub.itemR(lamp, "sun_size", text="Size")
sub.itemR(lamp, "backscattered_light", slider=True, text="Back Light")
sub.prop(lamp, "sun_brightness", text="Brightness")
sub.prop(lamp, "sun_size", text="Size")
sub.prop(lamp, "backscattered_light", slider=True, text="Back Light")
layout.itemS()
layout.separator()
layout.itemR(lamp, "atmosphere")
layout.prop(lamp, "atmosphere")
split = layout.split()
col = split.column()
col.active = lamp.atmosphere
col.itemL(text="Intensity:")
col.itemR(lamp, "sun_intensity", text="Sun")
col.itemR(lamp, "atmosphere_distance_factor", text="Distance")
col.label(text="Intensity:")
col.prop(lamp, "sun_intensity", text="Sun")
col.prop(lamp, "atmosphere_distance_factor", text="Distance")
if wide_ui:
col = split.column()
col.active = lamp.atmosphere
col.itemL(text="Scattering:")
col.label(text="Scattering:")
sub = col.column(align=True)
sub.itemR(lamp, "atmosphere_inscattering", slider=True, text="Inscattering")
sub.itemR(lamp, "atmosphere_extinction", slider=True, text="Extinction")
sub.prop(lamp, "atmosphere_inscattering", slider=True, text="Inscattering")
sub.prop(lamp, "atmosphere_extinction", slider=True, text="Extinction")
class DATA_PT_shadow(DataButtonsPanel):
@@ -193,38 +193,38 @@ class DATA_PT_shadow(DataButtonsPanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(lamp, "shadow_method", expand=True)
layout.prop(lamp, "shadow_method", expand=True)
else:
layout.itemR(lamp, "shadow_method", text="")
layout.prop(lamp, "shadow_method", text="")
if lamp.shadow_method != 'NOSHADOW':
split = layout.split()
col = split.column()
col.itemR(lamp, "shadow_color", text="")
col.prop(lamp, "shadow_color", text="")
if wide_ui:
col = split.column()
col.itemR(lamp, "shadow_layer", text="This Layer Only")
col.itemR(lamp, "only_shadow")
col.prop(lamp, "shadow_layer", text="This Layer Only")
col.prop(lamp, "only_shadow")
if lamp.shadow_method == 'RAY_SHADOW':
col = layout.column()
col.itemL(text="Sampling:")
col.label(text="Sampling:")
if wide_ui:
col.row().itemR(lamp, "shadow_ray_sampling_method", expand=True)
col.row().prop(lamp, "shadow_ray_sampling_method", expand=True)
else:
col.itemR(lamp, "shadow_ray_sampling_method", text="")
col.prop(lamp, "shadow_ray_sampling_method", text="")
if lamp.type in ('POINT', 'SUN', 'SPOT'):
split = layout.split()
col = split.column()
col.itemR(lamp, "shadow_soft_size", text="Soft Size")
col.prop(lamp, "shadow_soft_size", text="Soft Size")
col.itemR(lamp, "shadow_ray_samples", text="Samples")
col.prop(lamp, "shadow_ray_samples", text="Samples")
if lamp.shadow_ray_sampling_method == 'ADAPTIVE_QMC':
col.itemR(lamp, "shadow_adaptive_threshold", text="Threshold")
col.prop(lamp, "shadow_adaptive_threshold", text="Threshold")
if wide_ui:
col = split.column()
@@ -234,22 +234,22 @@ class DATA_PT_shadow(DataButtonsPanel):
col = split.column()
if lamp.shape == 'SQUARE':
col.itemR(lamp, "shadow_ray_samples_x", text="Samples")
col.prop(lamp, "shadow_ray_samples_x", text="Samples")
elif lamp.shape == 'RECTANGLE':
col.itemR(lamp, "shadow_ray_samples_x", text="Samples X")
col.itemR(lamp, "shadow_ray_samples_y", text="Samples Y")
col.prop(lamp, "shadow_ray_samples_x", text="Samples X")
col.prop(lamp, "shadow_ray_samples_y", text="Samples Y")
if lamp.shadow_ray_sampling_method == 'ADAPTIVE_QMC':
col.itemR(lamp, "shadow_adaptive_threshold", text="Threshold")
col.prop(lamp, "shadow_adaptive_threshold", text="Threshold")
if wide_ui:
col = split.column()
elif lamp.shadow_ray_sampling_method == 'CONSTANT_JITTERED':
if wide_ui:
col = split.column()
col.itemR(lamp, "umbra")
col.itemR(lamp, "dither")
col.itemR(lamp, "jitter")
col.prop(lamp, "umbra")
col.prop(lamp, "dither")
col.prop(lamp, "jitter")
else:
if wide_ui:
col = split.column()
@@ -257,49 +257,49 @@ class DATA_PT_shadow(DataButtonsPanel):
elif lamp.shadow_method == 'BUFFER_SHADOW':
col = layout.column()
col.itemL(text="Buffer Type:")
col.label(text="Buffer Type:")
if wide_ui:
col.row().itemR(lamp, "shadow_buffer_type", expand=True)
col.row().prop(lamp, "shadow_buffer_type", expand=True)
else:
col.row().itemR(lamp, "shadow_buffer_type", text="")
col.row().prop(lamp, "shadow_buffer_type", text="")
if lamp.shadow_buffer_type in ('REGULAR', 'HALFWAY', 'DEEP'):
split = layout.split()
col = split.column()
col.itemL(text="Filter Type:")
col.itemR(lamp, "shadow_filter_type", text="")
col.label(text="Filter Type:")
col.prop(lamp, "shadow_filter_type", text="")
sub = col.column(align=True)
sub.itemR(lamp, "shadow_buffer_soft", text="Soft")
sub.itemR(lamp, "shadow_buffer_bias", text="Bias")
sub.prop(lamp, "shadow_buffer_soft", text="Soft")
sub.prop(lamp, "shadow_buffer_bias", text="Bias")
if wide_ui:
col = split.column()
col.itemL(text="Sample Buffers:")
col.itemR(lamp, "shadow_sample_buffers", text="")
col.label(text="Sample Buffers:")
col.prop(lamp, "shadow_sample_buffers", text="")
sub = col.column(align=True)
sub.itemR(lamp, "shadow_buffer_size", text="Size")
sub.itemR(lamp, "shadow_buffer_samples", text="Samples")
sub.prop(lamp, "shadow_buffer_size", text="Size")
sub.prop(lamp, "shadow_buffer_samples", text="Samples")
if lamp.shadow_buffer_type == 'DEEP':
col.itemR(lamp, "compression_threshold")
col.prop(lamp, "compression_threshold")
elif lamp.shadow_buffer_type == 'IRREGULAR':
layout.itemR(lamp, "shadow_buffer_bias", text="Bias")
layout.prop(lamp, "shadow_buffer_bias", text="Bias")
split = layout.split()
col = split.column()
col.itemR(lamp, "auto_clip_start", text="Autoclip Start")
col.prop(lamp, "auto_clip_start", text="Autoclip Start")
sub = col.column()
sub.active = not lamp.auto_clip_start
sub.itemR(lamp, "shadow_buffer_clip_start", text="Clip Start")
sub.prop(lamp, "shadow_buffer_clip_start", text="Clip Start")
if wide_ui:
col = split.column()
col.itemR(lamp, "auto_clip_end", text="Autoclip End")
col.prop(lamp, "auto_clip_end", text="Autoclip End")
sub = col.column()
sub.active = not lamp.auto_clip_end
sub.itemR(lamp, "shadow_buffer_clip_end", text=" Clip End")
sub.prop(lamp, "shadow_buffer_clip_end", text=" Clip End")
class DATA_PT_area(DataButtonsPanel):
@@ -317,14 +317,14 @@ class DATA_PT_area(DataButtonsPanel):
split = layout.split()
col = split.column()
col.row().itemR(lamp, "shape", expand=True)
col.row().prop(lamp, "shape", expand=True)
sub = col.column(align=True)
if (lamp.shape == 'SQUARE'):
sub.itemR(lamp, "size")
sub.prop(lamp, "size")
elif (lamp.shape == 'RECTANGLE'):
sub.itemR(lamp, "size", text="Size X")
sub.itemR(lamp, "size_y", text="Size Y")
sub.prop(lamp, "size", text="Size X")
sub.prop(lamp, "size_y", text="Size Y")
class DATA_PT_spot(DataButtonsPanel):
@@ -344,20 +344,20 @@ class DATA_PT_spot(DataButtonsPanel):
col = split.column()
sub = col.column()
sub.itemR(lamp, "spot_size", text="Size")
sub.itemR(lamp, "spot_blend", text="Blend", slider=True)
col.itemR(lamp, "square")
sub.prop(lamp, "spot_size", text="Size")
sub.prop(lamp, "spot_blend", text="Blend", slider=True)
col.prop(lamp, "square")
if wide_ui:
col = split.column()
else:
col.itemS()
col.itemR(lamp, "halo")
col.separator()
col.prop(lamp, "halo")
sub = col.column(align=True)
sub.active = lamp.halo
sub.itemR(lamp, "halo_intensity", text="Intensity")
sub.prop(lamp, "halo_intensity", text="Intensity")
if lamp.shadow_method == 'BUFFER_SHADOW':
sub.itemR(lamp, "halo_step", text="Step")
sub.prop(lamp, "halo_step", text="Step")
class DATA_PT_falloff_curve(DataButtonsPanel):

View File

@@ -47,10 +47,10 @@ class DATA_PT_context_lattice(DataButtonsPanel):
split = layout.split(percentage=0.65)
if ob:
split.template_ID(ob, "data")
split.itemS()
split.separator()
elif lat:
split.template_ID(space, "pin_id")
split.itemS()
split.separator()
else:
if ob:
layout.template_ID(ob, "data")
@@ -69,26 +69,26 @@ class DATA_PT_lattice(DataButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(lat, "points_u")
col.prop(lat, "points_u")
if wide_ui:
col = split.column()
col.itemR(lat, "interpolation_type_u", text="")
col.prop(lat, "interpolation_type_u", text="")
split = layout.split()
col = split.column()
col.itemR(lat, "points_v")
col.prop(lat, "points_v")
if wide_ui:
col = split.column()
col.itemR(lat, "interpolation_type_v", text="")
col.prop(lat, "interpolation_type_v", text="")
split = layout.split()
col = split.column()
col.itemR(lat, "points_w")
col.prop(lat, "points_w")
if wide_ui:
col = split.column()
col.itemR(lat, "interpolation_type_w", text="")
col.prop(lat, "interpolation_type_w", text="")
layout.itemR(lat, "outside")
layout.prop(lat, "outside")
bpy.types.register(DATA_PT_context_lattice)
bpy.types.register(DATA_PT_lattice)

View File

@@ -47,10 +47,10 @@ class DATA_PT_context_mesh(DataButtonsPanel):
split = layout.split(percentage=0.65)
if ob:
split.template_ID(ob, "data")
split.itemS()
split.separator()
elif mesh:
split.template_ID(space, "pin_id")
split.itemS()
split.separator()
else:
if ob:
layout.template_ID(ob, "data")
@@ -70,17 +70,17 @@ class DATA_PT_normals(DataButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(mesh, "autosmooth")
col.prop(mesh, "autosmooth")
sub = col.column()
sub.active = mesh.autosmooth
sub.itemR(mesh, "autosmooth_angle", text="Angle")
sub.prop(mesh, "autosmooth_angle", text="Angle")
if wide_ui:
col = split.column()
else:
col.itemS()
col.itemR(mesh, "vertex_normal_flip")
col.itemR(mesh, "double_sided")
col.separator()
col.prop(mesh, "vertex_normal_flip")
col.prop(mesh, "double_sided")
class DATA_PT_settings(DataButtonsPanel):
@@ -91,7 +91,7 @@ class DATA_PT_settings(DataButtonsPanel):
mesh = context.mesh
layout.itemR(mesh, "texture_mesh")
layout.prop(mesh, "texture_mesh")
class DATA_PT_vertex_groups(DataButtonsPanel):
@@ -114,29 +114,29 @@ class DATA_PT_vertex_groups(DataButtonsPanel):
row.template_list(ob, "vertex_groups", ob, "active_vertex_group_index", rows=rows)
col = row.column(align=True)
col.itemO("object.vertex_group_add", icon='ICON_ZOOMIN', text="")
col.itemO("object.vertex_group_remove", icon='ICON_ZOOMOUT', text="")
col.operator("object.vertex_group_add", icon='ICON_ZOOMIN', text="")
col.operator("object.vertex_group_remove", icon='ICON_ZOOMOUT', text="")
col.itemO("object.vertex_group_copy", icon='ICON_COPY_ID', text="")
col.operator("object.vertex_group_copy", icon='ICON_COPY_ID', text="")
if ob.data.users > 1:
col.itemO("object.vertex_group_copy_to_linked", icon='ICON_LINK_AREA', text="")
col.operator("object.vertex_group_copy_to_linked", icon='ICON_LINK_AREA', text="")
if group:
row = layout.row()
row.itemR(group, "name")
row.prop(group, "name")
if ob.mode == 'EDIT' and len(ob.vertex_groups) > 0:
row = layout.row()
sub = row.row(align=True)
sub.itemO("object.vertex_group_assign", text="Assign")
sub.itemO("object.vertex_group_remove_from", text="Remove")
sub.operator("object.vertex_group_assign", text="Assign")
sub.operator("object.vertex_group_remove_from", text="Remove")
sub = row.row(align=True)
sub.itemO("object.vertex_group_select", text="Select")
sub.itemO("object.vertex_group_deselect", text="Deselect")
sub.operator("object.vertex_group_select", text="Select")
sub.operator("object.vertex_group_deselect", text="Deselect")
layout.itemR(context.tool_settings, "vertex_group_weight", text="Weight")
layout.prop(context.tool_settings, "vertex_group_weight", text="Weight")
class DATA_PT_shape_keys(DataButtonsPanel):
@@ -170,27 +170,27 @@ class DATA_PT_shape_keys(DataButtonsPanel):
col = row.column()
sub = col.column(align=True)
sub.itemO("object.shape_key_add", icon='ICON_ZOOMIN', text="")
sub.itemO("object.shape_key_remove", icon='ICON_ZOOMOUT', text="")
sub.operator("object.shape_key_add", icon='ICON_ZOOMIN', text="")
sub.operator("object.shape_key_remove", icon='ICON_ZOOMOUT', text="")
if kb:
col.itemS()
col.separator()
sub = col.column(align=True)
sub.item_enumO("object.shape_key_move", "type", 'UP', icon='ICON_TRIA_UP', text="")
sub.item_enumO("object.shape_key_move", "type", 'DOWN', icon='ICON_TRIA_DOWN', text="")
sub.operator_enum("object.shape_key_move", "type", 'UP', icon='ICON_TRIA_UP', text="")
sub.operator_enum("object.shape_key_move", "type", 'DOWN', icon='ICON_TRIA_DOWN', text="")
split = layout.split(percentage=0.4)
row = split.row()
row.enabled = enable_edit
if wide_ui:
row.itemR(key, "relative")
row.prop(key, "relative")
row = split.row()
row.alignment = 'RIGHT'
if not wide_ui:
layout.itemR(key, "relative")
layout.prop(key, "relative")
row = layout.row()
@@ -198,48 +198,48 @@ class DATA_PT_shape_keys(DataButtonsPanel):
subsub = sub.row(align=True)
subsub.active = enable_edit_value
if ob.shape_key_lock:
subsub.itemR(ob, "shape_key_lock", icon='ICON_PINNED', text="")
subsub.prop(ob, "shape_key_lock", icon='ICON_PINNED', text="")
else:
subsub.itemR(ob, "shape_key_lock", icon='ICON_UNPINNED', text="")
subsub.prop(ob, "shape_key_lock", icon='ICON_UNPINNED', text="")
if kb.mute:
subsub.itemR(kb, "mute", icon='ICON_MUTE_IPO_ON', text="")
subsub.prop(kb, "mute", icon='ICON_MUTE_IPO_ON', text="")
else:
subsub.itemR(kb, "mute", icon='ICON_MUTE_IPO_OFF', text="")
sub.itemR(ob, "shape_key_edit_mode", text="")
subsub.prop(kb, "mute", icon='ICON_MUTE_IPO_OFF', text="")
sub.prop(ob, "shape_key_edit_mode", text="")
sub = row.row(align=True)
sub.itemO("object.shape_key_mirror", icon='ICON_ARROW_LEFTRIGHT', text="")
sub.itemO("object.shape_key_clear", icon='ICON_X', text="")
sub.operator("object.shape_key_mirror", icon='ICON_ARROW_LEFTRIGHT', text="")
sub.operator("object.shape_key_clear", icon='ICON_X', text="")
row = layout.row()
row.itemR(kb, "name")
row.prop(kb, "name")
if key.relative:
if ob.active_shape_key_index != 0:
row = layout.row()
row.active = enable_edit_value
row.itemR(kb, "value")
row.prop(kb, "value")
split = layout.split()
col = split.column(align=True)
col.active = enable_edit_value
col.itemL(text="Range:")
col.itemR(kb, "slider_min", text="Min")
col.itemR(kb, "slider_max", text="Max")
col.label(text="Range:")
col.prop(kb, "slider_min", text="Min")
col.prop(kb, "slider_max", text="Max")
if wide_ui:
col = split.column(align=True)
col.active = enable_edit_value
col.itemL(text="Blend:")
col.item_pointerR(kb, "vertex_group", ob, "vertex_groups", text="")
col.item_pointerR(kb, "relative_key", key, "keys", text="")
col.label(text="Blend:")
col.prop_pointer(kb, "vertex_group", ob, "vertex_groups", text="")
col.prop_pointer(kb, "relative_key", key, "keys", text="")
else:
row = layout.row()
row.active = enable_edit_value
row.itemR(key, "slurph")
row.prop(key, "slurph")
class DATA_PT_uv_texture(DataButtonsPanel):
@@ -256,12 +256,12 @@ class DATA_PT_uv_texture(DataButtonsPanel):
col.template_list(me, "uv_textures", me, "active_uv_texture_index", rows=2)
col = row.column(align=True)
col.itemO("mesh.uv_texture_add", icon='ICON_ZOOMIN', text="")
col.itemO("mesh.uv_texture_remove", icon='ICON_ZOOMOUT', text="")
col.operator("mesh.uv_texture_add", icon='ICON_ZOOMIN', text="")
col.operator("mesh.uv_texture_remove", icon='ICON_ZOOMOUT', text="")
lay = me.active_uv_texture
if lay:
layout.itemR(lay, "name")
layout.prop(lay, "name")
class DATA_PT_vertex_colors(DataButtonsPanel):
@@ -278,12 +278,12 @@ class DATA_PT_vertex_colors(DataButtonsPanel):
col.template_list(me, "vertex_colors", me, "active_vertex_color_index", rows=2)
col = row.column(align=True)
col.itemO("mesh.vertex_color_add", icon='ICON_ZOOMIN', text="")
col.itemO("mesh.vertex_color_remove", icon='ICON_ZOOMOUT', text="")
col.operator("mesh.vertex_color_add", icon='ICON_ZOOMIN', text="")
col.operator("mesh.vertex_color_remove", icon='ICON_ZOOMOUT', text="")
lay = me.active_vertex_color
if lay:
layout.itemR(lay, "name")
layout.prop(lay, "name")
bpy.types.register(DATA_PT_context_mesh)
bpy.types.register(DATA_PT_normals)

View File

@@ -47,10 +47,10 @@ class DATA_PT_context_metaball(DataButtonsPanel):
split = layout.split(percentage=0.65)
if ob:
split.template_ID(ob, "data")
split.itemS()
split.separator()
elif mball:
split.template_ID(space, "pin_id")
split.itemS()
split.separator()
else:
if ob:
layout.template_ID(ob, "data")
@@ -70,21 +70,21 @@ class DATA_PT_metaball(DataButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Resolution:")
col.label(text="Resolution:")
sub = col.column(align=True)
sub.itemR(mball, "wire_size", text="View")
sub.itemR(mball, "render_size", text="Render")
sub.prop(mball, "wire_size", text="View")
sub.prop(mball, "render_size", text="Render")
if wide_ui:
col = split.column()
col.itemL(text="Settings:")
col.itemR(mball, "threshold", text="Threshold")
col.label(text="Settings:")
col.prop(mball, "threshold", text="Threshold")
layout.itemL(text="Update:")
layout.label(text="Update:")
if wide_ui:
layout.itemR(mball, "flag", expand=True)
layout.prop(mball, "flag", expand=True)
else:
layout.itemR(mball, "flag", text="")
layout.prop(mball, "flag", text="")
class DATA_PT_metaball_element(DataButtonsPanel):
@@ -100,35 +100,35 @@ class DATA_PT_metaball_element(DataButtonsPanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(metaelem, "type")
layout.prop(metaelem, "type")
else:
layout.itemR(metaelem, "type", text="")
layout.prop(metaelem, "type", text="")
split = layout.split()
col = split.column(align=True)
col.itemL(text="Settings:")
col.itemR(metaelem, "stiffness", text="Stiffness")
col.itemR(metaelem, "negative", text="Negative")
col.itemR(metaelem, "hide", text="Hide")
col.label(text="Settings:")
col.prop(metaelem, "stiffness", text="Stiffness")
col.prop(metaelem, "negative", text="Negative")
col.prop(metaelem, "hide", text="Hide")
if wide_ui:
col = split.column(align=True)
if metaelem.type in ('CUBE', 'ELLIPSOID'):
col.itemL(text="Size:")
col.itemR(metaelem, "size_x", text="X")
col.itemR(metaelem, "size_y", text="Y")
col.itemR(metaelem, "size_z", text="Z")
col.label(text="Size:")
col.prop(metaelem, "size_x", text="X")
col.prop(metaelem, "size_y", text="Y")
col.prop(metaelem, "size_z", text="Z")
elif metaelem.type == 'TUBE':
col.itemL(text="Size:")
col.itemR(metaelem, "size_x", text="X")
col.label(text="Size:")
col.prop(metaelem, "size_x", text="X")
elif metaelem.type == 'PLANE':
col.itemL(text="Size:")
col.itemR(metaelem, "size_x", text="X")
col.itemR(metaelem, "size_y", text="Y")
col.label(text="Size:")
col.prop(metaelem, "size_x", text="X")
col.prop(metaelem, "size_y", text="Y")
bpy.types.register(DATA_PT_context_metaball)
bpy.types.register(DATA_PT_metaball)

View File

@@ -38,9 +38,9 @@ class DATA_PT_modifiers(DataButtonsPanel):
wide_ui = context.region.width > narrowui
row = layout.row()
row.item_menu_enumO("object.modifier_add", "type")
row.operator_menu_enum("object.modifier_add", "type")
if wide_ui:
row.itemL()
row.label()
for md in ob.modifiers:
box = layout.template_modifier(md)
@@ -56,447 +56,447 @@ class DATA_PT_modifiers(DataButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Object:")
col.itemR(md, "object", text="")
col.label(text="Object:")
col.prop(md, "object", text="")
if wide_ui:
col = split.column()
col.itemL(text="Vertex Group::")
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
col.label(text="Vertex Group::")
col.prop_pointer(md, "vertex_group", ob, "vertex_groups", text="")
sub = col.column()
sub.active = md.vertex_group
sub.itemR(md, "invert")
sub.prop(md, "invert")
split = layout.split()
col = split.column()
col.itemL(text="Bind To:")
col.itemR(md, "use_vertex_groups", text="Vertex Groups")
col.itemR(md, "use_bone_envelopes", text="Bone Envelopes")
col.label(text="Bind To:")
col.prop(md, "use_vertex_groups", text="Vertex Groups")
col.prop(md, "use_bone_envelopes", text="Bone Envelopes")
if wide_ui:
col = split.column()
col.itemL(text="Deformation:")
col.itemR(md, "quaternion")
col.itemR(md, "multi_modifier")
col.label(text="Deformation:")
col.prop(md, "quaternion")
col.prop(md, "multi_modifier")
def ARRAY(self, layout, ob, md, wide_ui):
if wide_ui:
layout.itemR(md, "fit_type")
layout.prop(md, "fit_type")
else:
layout.itemR(md, "fit_type", text="")
layout.prop(md, "fit_type", text="")
if md.fit_type == 'FIXED_COUNT':
layout.itemR(md, "count")
layout.prop(md, "count")
elif md.fit_type == 'FIT_LENGTH':
layout.itemR(md, "length")
layout.prop(md, "length")
elif md.fit_type == 'FIT_CURVE':
layout.itemR(md, "curve")
layout.prop(md, "curve")
layout.itemS()
layout.separator()
split = layout.split()
col = split.column()
col.itemR(md, "constant_offset")
col.prop(md, "constant_offset")
sub = col.column()
sub.active = md.constant_offset
sub.itemR(md, "constant_offset_displacement", text="")
sub.prop(md, "constant_offset_displacement", text="")
col.itemS()
col.separator()
col.itemR(md, "merge_adjacent_vertices", text="Merge")
col.prop(md, "merge_adjacent_vertices", text="Merge")
sub = col.column()
sub.active = md.merge_adjacent_vertices
sub.itemR(md, "merge_end_vertices", text="First Last")
sub.itemR(md, "merge_distance", text="Distance")
sub.prop(md, "merge_end_vertices", text="First Last")
sub.prop(md, "merge_distance", text="Distance")
if wide_ui:
col = split.column()
col.itemR(md, "relative_offset")
col.prop(md, "relative_offset")
sub = col.column()
sub.active = md.relative_offset
sub.itemR(md, "relative_offset_displacement", text="")
sub.prop(md, "relative_offset_displacement", text="")
col.itemS()
col.separator()
col.itemR(md, "add_offset_object")
col.prop(md, "add_offset_object")
sub = col.column()
sub.active = md.add_offset_object
sub.itemR(md, "offset_object", text="")
sub.prop(md, "offset_object", text="")
layout.itemS()
layout.separator()
col = layout.column()
col.itemR(md, "start_cap")
col.itemR(md, "end_cap")
col.prop(md, "start_cap")
col.prop(md, "end_cap")
def BEVEL(self, layout, ob, md, wide_ui):
split = layout.split()
col = split.column()
col.itemR(md, "width")
col.prop(md, "width")
if wide_ui:
col = split.column()
col.itemR(md, "only_vertices")
col.prop(md, "only_vertices")
layout.itemL(text="Limit Method:")
layout.row().itemR(md, "limit_method", expand=True)
layout.label(text="Limit Method:")
layout.row().prop(md, "limit_method", expand=True)
if md.limit_method == 'ANGLE':
layout.itemR(md, "angle")
layout.prop(md, "angle")
elif md.limit_method == 'WEIGHT':
layout.row().itemR(md, "edge_weight_method", expand=True)
layout.row().prop(md, "edge_weight_method", expand=True)
def BOOLEAN(self, layout, ob, md, wide_ui):
split = layout.split()
col = split.column()
col.itemL(text="Operation:")
col.itemR(md, "operation", text="")
col.label(text="Operation:")
col.prop(md, "operation", text="")
if wide_ui:
col = split.column()
col.itemL(text="Object:")
col.itemR(md, "object", text="")
col.label(text="Object:")
col.prop(md, "object", text="")
def BUILD(self, layout, ob, md, wide_ui):
split = layout.split()
col = split.column()
col.itemR(md, "start")
col.itemR(md, "length")
col.prop(md, "start")
col.prop(md, "length")
if wide_ui:
col = split.column()
col.itemR(md, "randomize")
col.prop(md, "randomize")
sub = col.column()
sub.active = md.randomize
sub.itemR(md, "seed")
sub.prop(md, "seed")
def CAST(self, layout, ob, md, wide_ui):
split = layout.split(percentage=0.25)
if wide_ui:
split.itemL(text="Cast Type:")
split.itemR(md, "cast_type", text="")
split.label(text="Cast Type:")
split.prop(md, "cast_type", text="")
else:
layout.itemR(md, "cast_type", text="")
layout.prop(md, "cast_type", text="")
split = layout.split(percentage=0.25)
col = split.column()
col.itemR(md, "x")
col.itemR(md, "y")
col.itemR(md, "z")
col.prop(md, "x")
col.prop(md, "y")
col.prop(md, "z")
col = split.column()
col.itemR(md, "factor")
col.itemR(md, "radius")
col.itemR(md, "size")
col.itemR(md, "from_radius")
col.prop(md, "factor")
col.prop(md, "radius")
col.prop(md, "size")
col.prop(md, "from_radius")
split = layout.split()
col = split.column()
col.itemL(text="Vertex Group:")
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
col.label(text="Vertex Group:")
col.prop_pointer(md, "vertex_group", ob, "vertex_groups", text="")
if wide_ui:
col = split.column()
col.itemL(text="Control Object:")
col.itemR(md, "object", text="")
col.label(text="Control Object:")
col.prop(md, "object", text="")
if md.object:
col.itemR(md, "use_transform")
col.prop(md, "use_transform")
def CLOTH(self, layout, ob, md, wide_ui):
layout.itemL(text="See Cloth panel.")
layout.label(text="See Cloth panel.")
def COLLISION(self, layout, ob, md, wide_ui):
layout.itemL(text="See Collision panel.")
layout.label(text="See Collision panel.")
def CURVE(self, layout, ob, md, wide_ui):
split = layout.split()
col = split.column()
col.itemL(text="Object:")
col.itemR(md, "object", text="")
col.label(text="Object:")
col.prop(md, "object", text="")
if wide_ui:
col = split.column()
col.itemL(text="Vertex Group:")
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
layout.itemL(text="Deformation Axis:")
layout.row().itemR(md, "deform_axis", expand=True)
col.label(text="Vertex Group:")
col.prop_pointer(md, "vertex_group", ob, "vertex_groups", text="")
layout.label(text="Deformation Axis:")
layout.row().prop(md, "deform_axis", expand=True)
def DECIMATE(self, layout, ob, md, wide_ui):
layout.itemR(md, "ratio")
layout.itemR(md, "face_count")
layout.prop(md, "ratio")
layout.prop(md, "face_count")
def DISPLACE(self, layout, ob, md, wide_ui):
split = layout.split()
col = split.column()
col.itemL(text="Texture:")
col.itemR(md, "texture", text="")
col.itemL(text="Vertex Group:")
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
col.label(text="Texture:")
col.prop(md, "texture", text="")
col.label(text="Vertex Group:")
col.prop_pointer(md, "vertex_group", ob, "vertex_groups", text="")
if wide_ui:
col = split.column()
col.itemL(text="Direction:")
col.itemR(md, "direction", text="")
col.itemL(text="Texture Coordinates:")
col.itemR(md, "texture_coordinates", text="")
col.label(text="Direction:")
col.prop(md, "direction", text="")
col.label(text="Texture Coordinates:")
col.prop(md, "texture_coordinates", text="")
if md.texture_coordinates == 'OBJECT':
layout.itemR(md, "texture_coordinate_object", text="Object")
layout.prop(md, "texture_coordinate_object", text="Object")
elif md.texture_coordinates == 'UV' and ob.type == 'MESH':
layout.item_pointerR(md, "uv_layer", ob.data, "uv_textures")
layout.prop_pointer(md, "uv_layer", ob.data, "uv_textures")
layout.itemS()
layout.separator()
split = layout.split()
col = split.column()
col.itemR(md, "midlevel")
col.prop(md, "midlevel")
if wide_ui:
col = split.column()
col.itemR(md, "strength")
col.prop(md, "strength")
def EDGE_SPLIT(self, layout, ob, md, wide_ui):
split = layout.split()
col = split.column()
col.itemR(md, "use_edge_angle", text="Edge Angle")
col.prop(md, "use_edge_angle", text="Edge Angle")
sub = col.column()
sub.active = md.use_edge_angle
sub.itemR(md, "split_angle")
sub.prop(md, "split_angle")
if wide_ui:
col = split.column()
col.itemR(md, "use_sharp", text="Sharp Edges")
col.prop(md, "use_sharp", text="Sharp Edges")
def EXPLODE(self, layout, ob, md, wide_ui):
split = layout.split()
col = split.column()
col.itemL(text="Vertex group:")
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
col.label(text="Vertex group:")
col.prop_pointer(md, "vertex_group", ob, "vertex_groups", text="")
sub = col.column()
sub.active = md.vertex_group
sub.itemR(md, "protect")
sub.prop(md, "protect")
if wide_ui:
col = split.column()
col.itemR(md, "split_edges")
col.itemR(md, "unborn")
col.itemR(md, "alive")
col.itemR(md, "dead")
col.prop(md, "split_edges")
col.prop(md, "unborn")
col.prop(md, "alive")
col.prop(md, "dead")
layout.itemO("object.explode_refresh", text="Refresh")
layout.operator("object.explode_refresh", text="Refresh")
def FLUID_SIMULATION(self, layout, ob, md, wide_ui):
layout.itemL(text="See Fluid panel.")
layout.label(text="See Fluid panel.")
def HOOK(self, layout, ob, md, wide_ui):
split = layout.split()
col = split.column()
col.itemL(text="Object:")
col.itemR(md, "object", text="")
col.label(text="Object:")
col.prop(md, "object", text="")
if md.object and md.object.type == 'ARMATURE':
col.itemL(text="Bone:")
col.item_pointerR(md, "subtarget", md.object.data, "bones", text="")
col.label(text="Bone:")
col.prop_pointer(md, "subtarget", md.object.data, "bones", text="")
if wide_ui:
col = split.column()
col.itemL(text="Vertex Group:")
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
col.label(text="Vertex Group:")
col.prop_pointer(md, "vertex_group", ob, "vertex_groups", text="")
layout.itemS()
layout.separator()
split = layout.split()
col = split.column()
col.itemR(md, "falloff")
col.itemR(md, "force", slider=True)
col.prop(md, "falloff")
col.prop(md, "force", slider=True)
if wide_ui:
col = split.column()
else:
col.itemS()
col.itemO("object.hook_reset", text="Reset")
col.itemO("object.hook_recenter", text="Recenter")
col.separator()
col.operator("object.hook_reset", text="Reset")
col.operator("object.hook_recenter", text="Recenter")
if ob.mode == 'EDIT':
layout.itemS()
layout.separator()
row = layout.row()
row.itemO("object.hook_select", text="Select")
row.itemO("object.hook_assign", text="Assign")
row.operator("object.hook_select", text="Select")
row.operator("object.hook_assign", text="Assign")
def LATTICE(self, layout, ob, md, wide_ui):
split = layout.split()
col = split.column()
col.itemL(text="Object:")
col.itemR(md, "object", text="")
col.label(text="Object:")
col.prop(md, "object", text="")
if wide_ui:
col = split.column()
col.itemL(text="Vertex Group:")
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
col.label(text="Vertex Group:")
col.prop_pointer(md, "vertex_group", ob, "vertex_groups", text="")
def MASK(self, layout, ob, md, wide_ui):
split = layout.split()
col = split.column()
col.itemL(text="Mode:")
col.itemR(md, "mode", text="")
col.label(text="Mode:")
col.prop(md, "mode", text="")
if wide_ui:
col = split.column()
col.itemL(text="Vertex Group:")
col.label(text="Vertex Group:")
if md.mode == 'ARMATURE':
col.itemR(md, "armature", text="")
col.prop(md, "armature", text="")
elif md.mode == 'VERTEX_GROUP':
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
col.prop_pointer(md, "vertex_group", ob, "vertex_groups", text="")
sub = col.column()
sub.active = md.vertex_group
sub.itemR(md, "invert")
sub.prop(md, "invert")
def MESH_DEFORM(self, layout, ob, md, wide_ui):
split = layout.split()
col = split.column()
col.itemL(text="Object:")
col.itemR(md, "object", text="")
col.label(text="Object:")
col.prop(md, "object", text="")
if md.object and md.object.type == 'ARMATURE':
col.itemL(text="Bone:")
col.item_pointerR(md, "subtarget", md.object.data, "bones", text="")
col.label(text="Bone:")
col.prop_pointer(md, "subtarget", md.object.data, "bones", text="")
if wide_ui:
col = split.column()
col.itemL(text="Vertex Group:")
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
col.label(text="Vertex Group:")
col.prop_pointer(md, "vertex_group", ob, "vertex_groups", text="")
sub = col.column()
sub.active = md.vertex_group
sub.itemR(md, "invert")
sub.prop(md, "invert")
layout.itemS()
layout.separator()
if md.is_bound:
layout.itemO("object.meshdeform_bind", text="Unbind")
layout.operator("object.meshdeform_bind", text="Unbind")
else:
layout.itemO("object.meshdeform_bind", text="Bind")
layout.operator("object.meshdeform_bind", text="Bind")
split = layout.split()
col = split.column()
col.itemR(md, "precision")
col.prop(md, "precision")
if wide_ui:
col = split.column()
col.itemR(md, "dynamic")
col.prop(md, "dynamic")
def MIRROR(self, layout, ob, md, wide_ui):
layout.itemR(md, "merge_limit")
layout.prop(md, "merge_limit")
if wide_ui:
split = layout.split(percentage=0.25)
else:
split = layout.split(percentage=0.4)
col = split.column()
col.itemL(text="Axis:")
col.itemR(md, "x")
col.itemR(md, "y")
col.itemR(md, "z")
col.label(text="Axis:")
col.prop(md, "x")
col.prop(md, "y")
col.prop(md, "z")
if wide_ui:
col = split.column()
else:
subsplit = layout.split()
col = subsplit.column()
col.itemL(text="Options:")
col.itemR(md, "clip", text="Clipping")
col.itemR(md, "mirror_vertex_groups", text="Vertex Groups")
col.label(text="Options:")
col.prop(md, "clip", text="Clipping")
col.prop(md, "mirror_vertex_groups", text="Vertex Groups")
col = split.column()
col.itemL(text="Textures:")
col.itemR(md, "mirror_u", text="U")
col.itemR(md, "mirror_v", text="V")
col.label(text="Textures:")
col.prop(md, "mirror_u", text="U")
col.prop(md, "mirror_v", text="V")
col = layout.column()
col.itemL(text="Mirror Object:")
col.itemR(md, "mirror_object", text="")
col.label(text="Mirror Object:")
col.prop(md, "mirror_object", text="")
def MULTIRES(self, layout, ob, md, wide_ui):
if wide_ui:
layout.row().itemR(md, "subdivision_type", expand=True)
layout.row().prop(md, "subdivision_type", expand=True)
else:
layout.row().itemR(md, "subdivision_type", text="")
layout.itemR(md, "level")
layout.row().prop(md, "subdivision_type", text="")
layout.prop(md, "level")
split = layout.split()
col = split.column()
col.itemO("object.multires_subdivide", text="Subdivide")
col.operator("object.multires_subdivide", text="Subdivide")
if wide_ui:
col = split.column()
col.itemO("object.multires_higher_levels_delete", text="Delete Higher")
col.operator("object.multires_higher_levels_delete", text="Delete Higher")
def PARTICLE_INSTANCE(self, layout, ob, md, wide_ui):
layout.itemR(md, "object")
layout.itemR(md, "particle_system_number", text="Particle System")
layout.prop(md, "object")
layout.prop(md, "particle_system_number", text="Particle System")
split = layout.split()
col = split.column()
col.itemL(text="Create From:")
col.itemR(md, "normal")
col.itemR(md, "children")
col.itemR(md, "size")
col.label(text="Create From:")
col.prop(md, "normal")
col.prop(md, "children")
col.prop(md, "size")
if wide_ui:
col = split.column()
col.itemL(text="Show Particles When:")
col.itemR(md, "alive")
col.itemR(md, "unborn")
col.itemR(md, "dead")
col.label(text="Show Particles When:")
col.prop(md, "alive")
col.prop(md, "unborn")
col.prop(md, "dead")
layout.itemS()
layout.separator()
layout.itemR(md, "path", text="Create Along Paths")
layout.prop(md, "path", text="Create Along Paths")
split = layout.split()
split.active = md.path
col = split.column()
col.row().itemR(md, "axis", expand=True)
col.itemR(md, "keep_shape")
col.row().prop(md, "axis", expand=True)
col.prop(md, "keep_shape")
if wide_ui:
col = split.column()
col.itemR(md, "position", slider=True)
col.itemR(md, "random_position", text="Random", slider=True)
col.prop(md, "position", slider=True)
col.prop(md, "random_position", text="Random", slider=True)
def PARTICLE_SYSTEM(self, layout, ob, md, wide_ui):
layout.itemL(text="See Particle panel.")
layout.label(text="See Particle panel.")
def SHRINKWRAP(self, layout, ob, md, wide_ui):
split = layout.split()
col = split.column()
col.itemL(text="Target:")
col.itemR(md, "target", text="")
col.label(text="Target:")
col.prop(md, "target", text="")
if wide_ui:
col = split.column()
col.itemL(text="Vertex Group:")
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
col.label(text="Vertex Group:")
col.prop_pointer(md, "vertex_group", ob, "vertex_groups", text="")
split = layout.split()
col = split.column()
col.itemR(md, "offset")
col.itemR(md, "subsurf_levels")
col.prop(md, "offset")
col.prop(md, "subsurf_levels")
if wide_ui:
col = split.column()
col.itemL(text="Mode:")
col.itemR(md, "mode", text="")
col.label(text="Mode:")
col.prop(md, "mode", text="")
if wide_ui:
split = layout.split(percentage=0.25)
@@ -505,186 +505,186 @@ class DATA_PT_modifiers(DataButtonsPanel):
col = split.column()
if md.mode == 'PROJECT':
col.itemL(text="Axis:")
col.itemR(md, "x")
col.itemR(md, "y")
col.itemR(md, "z")
col.label(text="Axis:")
col.prop(md, "x")
col.prop(md, "y")
col.prop(md, "z")
col = split.column()
col.itemL(text="Direction:")
col.itemR(md, "negative")
col.itemR(md, "positive")
col.label(text="Direction:")
col.prop(md, "negative")
col.prop(md, "positive")
if wide_ui:
col = split.column()
else:
subsplit = layout.split()
col = subsplit.column()
col.itemL(text="Cull Faces:")
col.itemR(md, "cull_front_faces", text="Front")
col.itemR(md, "cull_back_faces", text="Back")
col.label(text="Cull Faces:")
col.prop(md, "cull_front_faces", text="Front")
col.prop(md, "cull_back_faces", text="Back")
layout.itemL(text="Auxiliary Target:")
layout.itemR(md, "auxiliary_target", text="")
layout.label(text="Auxiliary Target:")
layout.prop(md, "auxiliary_target", text="")
elif md.mode == 'NEAREST_SURFACEPOINT':
layout.itemR(md, "keep_above_surface")
layout.prop(md, "keep_above_surface")
def SIMPLE_DEFORM(self, layout, ob, md, wide_ui):
split = layout.split()
col = split.column()
col.itemL(text="Mode:")
col.itemR(md, "mode", text="")
col.label(text="Mode:")
col.prop(md, "mode", text="")
if wide_ui:
col = split.column()
col.itemL(text="Vertex Group:")
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
col.label(text="Vertex Group:")
col.prop_pointer(md, "vertex_group", ob, "vertex_groups", text="")
split = layout.split()
col = split.column()
col.itemL(text="Origin:")
col.itemR(md, "origin", text="")
col.label(text="Origin:")
col.prop(md, "origin", text="")
sub = col.column()
sub.active = md.origin
sub.itemR(md, "relative")
sub.prop(md, "relative")
if wide_ui:
col = split.column()
col.itemL(text="Deform:")
col.itemR(md, "factor")
col.itemR(md, "limits", slider=True)
col.label(text="Deform:")
col.prop(md, "factor")
col.prop(md, "limits", slider=True)
if md.mode in ('TAPER', 'STRETCH'):
col.itemR(md, "lock_x_axis")
col.itemR(md, "lock_y_axis")
col.prop(md, "lock_x_axis")
col.prop(md, "lock_y_axis")
def SMOKE(self, layout, ob, md, wide_ui):
layout.itemL(text="See Smoke panel.")
layout.label(text="See Smoke panel.")
def SMOOTH(self, layout, ob, md, wide_ui):
split = layout.split(percentage=0.25)
col = split.column()
col.itemL(text="Axis:")
col.itemR(md, "x")
col.itemR(md, "y")
col.itemR(md, "z")
col.label(text="Axis:")
col.prop(md, "x")
col.prop(md, "y")
col.prop(md, "z")
col = split.column()
col.itemR(md, "factor")
col.itemR(md, "repeat")
col.itemL(text="Vertex Group:")
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
col.prop(md, "factor")
col.prop(md, "repeat")
col.label(text="Vertex Group:")
col.prop_pointer(md, "vertex_group", ob, "vertex_groups", text="")
def SOFT_BODY(self, layout, ob, md, wide_ui):
layout.itemL(text="See Soft Body panel.")
layout.label(text="See Soft Body panel.")
def SUBSURF(self, layout, ob, md, wide_ui):
if wide_ui:
layout.row().itemR(md, "subdivision_type", expand=True)
layout.row().prop(md, "subdivision_type", expand=True)
else:
layout.row().itemR(md, "subdivision_type", text="")
layout.row().prop(md, "subdivision_type", text="")
split = layout.split()
col = split.column()
col.itemL(text="Subdivisions:")
col.itemR(md, "levels", text="View")
col.itemR(md, "render_levels", text="Render")
col.label(text="Subdivisions:")
col.prop(md, "levels", text="View")
col.prop(md, "render_levels", text="Render")
if wide_ui:
col = split.column()
col.itemL(text="Options:")
col.itemR(md, "optimal_draw", text="Optimal Display")
col.itemR(md, "subsurf_uv")
col.label(text="Options:")
col.prop(md, "optimal_draw", text="Optimal Display")
col.prop(md, "subsurf_uv")
def SURFACE(self, layout, ob, md, wide_ui):
layout.itemL(text="See Fields panel.")
layout.label(text="See Fields panel.")
def UV_PROJECT(self, layout, ob, md, wide_ui):
if ob.type == 'MESH':
split = layout.split()
col = split.column()
col.itemL(text="UV Layer:")
col.item_pointerR(md, "uv_layer", ob.data, "uv_textures", text="")
col.label(text="UV Layer:")
col.prop_pointer(md, "uv_layer", ob.data, "uv_textures", text="")
if wide_ui:
col = split.column()
col.itemL(text="Image:")
col.itemR(md, "image", text="")
col.label(text="Image:")
col.prop(md, "image", text="")
split = layout.split()
col = split.column()
col.itemR(md, "override_image")
col.itemR(md, "num_projectors", text="Projectors")
col.prop(md, "override_image")
col.prop(md, "num_projectors", text="Projectors")
for proj in md.projectors:
col.itemR(proj, "object", text="")
col.prop(proj, "object", text="")
if wide_ui:
col = split.column()
sub = col.column(align=True)
sub.itemL(text="Aspect Ratio:")
sub.itemR(md, "horizontal_aspect_ratio", text="Horizontal")
sub.itemR(md, "vertical_aspect_ratio", text="Vertical")
sub.label(text="Aspect Ratio:")
sub.prop(md, "horizontal_aspect_ratio", text="Horizontal")
sub.prop(md, "vertical_aspect_ratio", text="Vertical")
def WAVE(self, layout, ob, md, wide_ui):
split = layout.split()
col = split.column()
col.itemL(text="Motion:")
col.itemR(md, "x")
col.itemR(md, "y")
col.itemR(md, "cyclic")
col.label(text="Motion:")
col.prop(md, "x")
col.prop(md, "y")
col.prop(md, "cyclic")
if wide_ui:
col = split.column()
col.itemR(md, "normals")
col.prop(md, "normals")
sub = col.column()
sub.active = md.normals
sub.itemR(md, "x_normal", text="X")
sub.itemR(md, "y_normal", text="Y")
sub.itemR(md, "z_normal", text="Z")
sub.prop(md, "x_normal", text="X")
sub.prop(md, "y_normal", text="Y")
sub.prop(md, "z_normal", text="Z")
split = layout.split()
col = split.column()
col.itemL(text="Time:")
col.label(text="Time:")
sub = col.column(align=True)
sub.itemR(md, "time_offset", text="Offset")
sub.itemR(md, "lifetime", text="Life")
col.itemR(md, "damping_time", text="Damping")
sub.prop(md, "time_offset", text="Offset")
sub.prop(md, "lifetime", text="Life")
col.prop(md, "damping_time", text="Damping")
if wide_ui:
col = split.column()
col.itemL(text="Position:")
col.label(text="Position:")
sub = col.column(align=True)
sub.itemR(md, "start_position_x", text="X")
sub.itemR(md, "start_position_y", text="Y")
col.itemR(md, "falloff_radius", text="Falloff")
sub.prop(md, "start_position_x", text="X")
sub.prop(md, "start_position_y", text="Y")
col.prop(md, "falloff_radius", text="Falloff")
layout.itemS()
layout.separator()
layout.itemR(md, "start_position_object")
layout.item_pointerR(md, "vertex_group", ob, "vertex_groups")
layout.itemR(md, "texture")
layout.itemR(md, "texture_coordinates")
layout.prop(md, "start_position_object")
layout.prop_pointer(md, "vertex_group", ob, "vertex_groups")
layout.prop(md, "texture")
layout.prop(md, "texture_coordinates")
if md.texture_coordinates == 'MAP_UV' and ob.type == 'MESH':
layout.item_pointerR(md, "uv_layer", ob.data, "uv_textures")
layout.prop_pointer(md, "uv_layer", ob.data, "uv_textures")
elif md.texture_coordinates == 'OBJECT':
layout.itemR(md, "texture_coordinates_object")
layout.prop(md, "texture_coordinates_object")
layout.itemS()
layout.separator()
split = layout.split()
col = split.column()
col.itemR(md, "speed", slider=True)
col.itemR(md, "height", slider=True)
col.prop(md, "speed", slider=True)
col.prop(md, "height", slider=True)
if wide_ui:
col = split.column()
col.itemR(md, "width", slider=True)
col.itemR(md, "narrowness", slider=True)
col.prop(md, "width", slider=True)
col.prop(md, "narrowness", slider=True)
bpy.types.register(DATA_PT_modifiers)

View File

@@ -45,120 +45,120 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(game, "physics_type")
layout.prop(game, "physics_type")
else:
layout.itemR(game, "physics_type", text="")
layout.itemS()
layout.prop(game, "physics_type", text="")
layout.separator()
#if game.physics_type == 'DYNAMIC':
if game.physics_type in ('DYNAMIC', 'RIGID_BODY'):
split = layout.split()
col = split.column()
col.itemR(game, "actor")
col.itemR(game, "ghost")
col.itemR(ob, "restrict_render", text="Invisible") # out of place but useful
col.prop(game, "actor")
col.prop(game, "ghost")
col.prop(ob, "restrict_render", text="Invisible") # out of place but useful
if wide_ui:
col = split.column()
col.itemR(game, "material_physics")
col.itemR(game, "rotate_from_normal")
col.itemR(game, "no_sleeping")
col.prop(game, "material_physics")
col.prop(game, "rotate_from_normal")
col.prop(game, "no_sleeping")
layout.itemS()
layout.separator()
split = layout.split()
col = split.column()
col.itemL(text="Attributes:")
col.itemR(game, "mass")
col.itemR(game, "radius")
col.itemR(game, "form_factor")
col.label(text="Attributes:")
col.prop(game, "mass")
col.prop(game, "radius")
col.prop(game, "form_factor")
if wide_ui:
col = split.column()
sub = col.column()
sub.active = (game.physics_type == 'RIGID_BODY')
sub.itemR(game, "anisotropic_friction")
sub.prop(game, "anisotropic_friction")
subsub = sub.column()
subsub.active = game.anisotropic_friction
subsub.itemR(game, "friction_coefficients", text="", slider=True)
subsub.prop(game, "friction_coefficients", text="", slider=True)
split = layout.split()
col = split.column()
col.itemL(text="Velocity:")
col.label(text="Velocity:")
sub = col.column(align=True)
sub.itemR(game, "minimum_velocity", text="Minimum")
sub.itemR(game, "maximum_velocity", text="Maximum")
sub.prop(game, "minimum_velocity", text="Minimum")
sub.prop(game, "maximum_velocity", text="Maximum")
if wide_ui:
col = split.column()
col.itemL(text="Damping:")
col.label(text="Damping:")
sub = col.column(align=True)
sub.itemR(game, "damping", text="Translation", slider=True)
sub.itemR(game, "rotation_damping", text="Rotation", slider=True)
sub.prop(game, "damping", text="Translation", slider=True)
sub.prop(game, "rotation_damping", text="Rotation", slider=True)
layout.itemS()
layout.separator()
split = layout.split()
col = split.column()
col.itemL(text="Lock Translation:")
col.itemR(game, "lock_x_axis", text="X")
col.itemR(game, "lock_y_axis", text="Y")
col.itemR(game, "lock_z_axis", text="Z")
col.label(text="Lock Translation:")
col.prop(game, "lock_x_axis", text="X")
col.prop(game, "lock_y_axis", text="Y")
col.prop(game, "lock_z_axis", text="Z")
col = split.column()
col.itemL(text="Lock Rotation:")
col.itemR(game, "lock_x_rot_axis", text="X")
col.itemR(game, "lock_y_rot_axis", text="Y")
col.itemR(game, "lock_z_rot_axis", text="Z")
col.label(text="Lock Rotation:")
col.prop(game, "lock_x_rot_axis", text="X")
col.prop(game, "lock_y_rot_axis", text="Y")
col.prop(game, "lock_z_rot_axis", text="Z")
elif game.physics_type == 'SOFT_BODY':
col = layout.column()
col.itemR(game, "actor")
col.itemR(game, "ghost")
col.itemR(ob, "restrict_render", text="Invisible")
col.prop(game, "actor")
col.prop(game, "ghost")
col.prop(ob, "restrict_render", text="Invisible")
layout.itemS()
layout.separator()
split = layout.split()
col = split.column()
col.itemL(text="Attributes:")
col.itemR(game, "mass")
col.itemR(soft, "welding")
col.itemR(soft, "position_iterations")
col.itemR(soft, "linstiff", slider=True)
col.itemR(soft, "dynamic_friction", slider=True)
col.itemR(soft, "margin", slider=True)
col.itemR(soft, "bending_const", text="Bending Constraints")
col.label(text="Attributes:")
col.prop(game, "mass")
col.prop(soft, "welding")
col.prop(soft, "position_iterations")
col.prop(soft, "linstiff", slider=True)
col.prop(soft, "dynamic_friction", slider=True)
col.prop(soft, "margin", slider=True)
col.prop(soft, "bending_const", text="Bending Constraints")
if wide_ui:
col = split.column()
col.itemR(soft, "shape_match")
col.prop(soft, "shape_match")
sub = col.column()
sub.active = soft.shape_match
sub.itemR(soft, "threshold", slider=True)
sub.prop(soft, "threshold", slider=True)
col.itemS()
col.separator()
col.itemL(text="Cluster Collision:")
col.itemR(soft, "cluster_rigid_to_softbody")
col.itemR(soft, "cluster_soft_to_softbody")
col.label(text="Cluster Collision:")
col.prop(soft, "cluster_rigid_to_softbody")
col.prop(soft, "cluster_soft_to_softbody")
sub = col.column()
sub.active = (soft.cluster_rigid_to_softbody or soft.cluster_soft_to_softbody)
sub.itemR(soft, "cluster_iterations", text="Iterations")
sub.prop(soft, "cluster_iterations", text="Iterations")
elif game.physics_type == 'STATIC':
col = layout.column()
col.itemR(game, "actor")
col.itemR(game, "ghost")
col.itemR(ob, "restrict_render", text="Invisible")
col.prop(game, "actor")
col.prop(game, "ghost")
col.prop(ob, "restrict_render", text="Invisible")
elif game.physics_type in ('SENSOR', 'INVISIBLE', 'NO_COLLISION', 'OCCLUDE'):
layout.itemR(ob, "restrict_render", text="Invisible")
layout.prop(ob, "restrict_render", text="Invisible")
class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel):
@@ -172,7 +172,7 @@ class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel):
def draw_header(self, context):
game = context.active_object.game
self.layout.itemR(game, "use_collision_bounds", text="")
self.layout.prop(game, "use_collision_bounds", text="")
def draw(self, context):
layout = self.layout
@@ -182,18 +182,18 @@ class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel):
layout.active = game.use_collision_bounds
if wide_ui:
layout.itemR(game, "collision_bounds", text="Bounds")
layout.prop(game, "collision_bounds", text="Bounds")
else:
layout.itemR(game, "collision_bounds", text="")
layout.prop(game, "collision_bounds", text="")
split = layout.split()
col = split.column()
col.itemR(game, "collision_margin", text="Margin", slider=True)
col.prop(game, "collision_margin", text="Margin", slider=True)
if wide_ui:
col = split.column()
col.itemR(game, "collision_compound", text="Compound")
col.prop(game, "collision_compound", text="Compound")
bpy.types.register(PHYSICS_PT_game_physics)
@@ -217,8 +217,8 @@ class RENDER_PT_game(RenderButtonsPanel):
layout = self.layout
row = layout.row()
row.itemO("view3d.game_start", text="Start")
row.itemL()
row.operator("view3d.game_start", text="Start")
row.label()
class RENDER_PT_game_player(RenderButtonsPanel):
@@ -230,32 +230,32 @@ class RENDER_PT_game_player(RenderButtonsPanel):
gs = context.scene.game_data
wide_ui = context.region.width > narrowui
layout.itemR(gs, "fullscreen")
layout.prop(gs, "fullscreen")
split = layout.split()
col = split.column()
col.itemL(text="Resolution:")
col.label(text="Resolution:")
sub = col.column(align=True)
sub.itemR(gs, "resolution_x", slider=False, text="X")
sub.itemR(gs, "resolution_y", slider=False, text="Y")
sub.prop(gs, "resolution_x", slider=False, text="X")
sub.prop(gs, "resolution_y", slider=False, text="Y")
if wide_ui:
col = split.column()
col.itemL(text="Quality:")
col.label(text="Quality:")
sub = col.column(align=True)
sub.itemR(gs, "depth", text="Bit Depth", slider=False)
sub.itemR(gs, "frequency", text="FPS", slider=False)
sub.prop(gs, "depth", text="Bit Depth", slider=False)
sub.prop(gs, "frequency", text="FPS", slider=False)
# framing:
col = layout.column()
col.itemL(text="Framing:")
col.label(text="Framing:")
if wide_ui:
col.row().itemR(gs, "framing_type", expand=True)
col.row().prop(gs, "framing_type", expand=True)
else:
col.itemR(gs, "framing_type", text="")
col.prop(gs, "framing_type", text="")
if gs.framing_type == 'LETTERBOX':
col.itemR(gs, "framing_color", text="")
col.prop(gs, "framing_color", text="")
class RENDER_PT_game_stereo(RenderButtonsPanel):
@@ -269,20 +269,20 @@ class RENDER_PT_game_stereo(RenderButtonsPanel):
wide_ui = context.region.width > narrowui
# stereo options:
layout.itemR(gs, "stereo", expand=True)
layout.prop(gs, "stereo", expand=True)
# stereo:
if stereo_mode == 'STEREO':
layout.itemR(gs, "stereo_mode")
layout.itemL(text="To do: Focal Length")
layout.itemL(text="To do: Eye Separation")
layout.prop(gs, "stereo_mode")
layout.label(text="To do: Focal Length")
layout.label(text="To do: Eye Separation")
# dome:
elif stereo_mode == 'DOME':
if wide_ui:
layout.itemR(gs, "dome_mode", text="Dome Type")
layout.prop(gs, "dome_mode", text="Dome Type")
else:
layout.itemR(gs, "dome_mode", text="")
layout.prop(gs, "dome_mode", text="")
dome_type = gs.dome_mode
@@ -293,29 +293,29 @@ class RENDER_PT_game_stereo(RenderButtonsPanel):
dome_type == 'TRUNCATED_FRONT':
col = split.column()
col.itemR(gs, "dome_buffer_resolution", text="Resolution", slider=True)
col.itemR(gs, "dome_angle", slider=True)
col.prop(gs, "dome_buffer_resolution", text="Resolution", slider=True)
col.prop(gs, "dome_angle", slider=True)
if wide_ui:
col = split.column()
col.itemR(gs, "dome_tesselation", text="Tesselation")
col.itemR(gs, "dome_tilt")
col.prop(gs, "dome_tesselation", text="Tesselation")
col.prop(gs, "dome_tilt")
elif dome_type == 'PANORAM_SPH':
col = split.column()
col.itemR(gs, "dome_buffer_resolution", text="Resolution", slider=True)
col.prop(gs, "dome_buffer_resolution", text="Resolution", slider=True)
if wide_ui:
col = split.column()
col.itemR(gs, "dome_tesselation", text="Tesselation")
col.prop(gs, "dome_tesselation", text="Tesselation")
else: # cube map
col = split.column()
col.itemR(gs, "dome_buffer_resolution", text="Resolution", slider=True)
col.prop(gs, "dome_buffer_resolution", text="Resolution", slider=True)
if wide_ui:
col = split.column()
layout.itemR(gs, "dome_text")
layout.prop(gs, "dome_text")
class RENDER_PT_game_shading(RenderButtonsPanel):
@@ -328,22 +328,22 @@ class RENDER_PT_game_shading(RenderButtonsPanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(gs, "material_mode", expand=True)
layout.prop(gs, "material_mode", expand=True)
else:
layout.itemR(gs, "material_mode", text="")
layout.prop(gs, "material_mode", text="")
if gs.material_mode == 'GLSL':
split = layout.split()
col = split.column()
col.itemR(gs, "glsl_lights", text="Lights")
col.itemR(gs, "glsl_shaders", text="Shaders")
col.itemR(gs, "glsl_shadows", text="Shadows")
col.prop(gs, "glsl_lights", text="Lights")
col.prop(gs, "glsl_shaders", text="Shaders")
col.prop(gs, "glsl_shadows", text="Shadows")
col = split.column()
col.itemR(gs, "glsl_ramps", text="Ramps")
col.itemR(gs, "glsl_nodes", text="Nodes")
col.itemR(gs, "glsl_extra_textures", text="Extra Textures")
col.prop(gs, "glsl_ramps", text="Ramps")
col.prop(gs, "glsl_nodes", text="Nodes")
col.prop(gs, "glsl_extra_textures", text="Extra Textures")
class RENDER_PT_game_performance(RenderButtonsPanel):
@@ -358,17 +358,17 @@ class RENDER_PT_game_performance(RenderButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Show:")
col.itemR(gs, "show_debug_properties", text="Debug Properties")
col.itemR(gs, "show_framerate_profile", text="Framerate and Profile")
col.itemR(gs, "show_physics_visualization", text="Physics Visualization")
col.itemR(gs, "deprecation_warnings")
col.label(text="Show:")
col.prop(gs, "show_debug_properties", text="Debug Properties")
col.prop(gs, "show_framerate_profile", text="Framerate and Profile")
col.prop(gs, "show_physics_visualization", text="Physics Visualization")
col.prop(gs, "deprecation_warnings")
if wide_ui:
col = split.column()
col.itemL(text="Render:")
col.itemR(gs, "all_frames")
col.itemR(gs, "display_lists")
col.label(text="Render:")
col.prop(gs, "all_frames")
col.prop(gs, "display_lists")
class RENDER_PT_game_sound(RenderButtonsPanel):
@@ -381,11 +381,11 @@ class RENDER_PT_game_sound(RenderButtonsPanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(scene, "distance_model")
layout.prop(scene, "distance_model")
else:
layout.itemR(scene, "distance_model", text="")
layout.itemR(scene, "speed_of_sound", text="Speed")
layout.itemR(scene, "doppler_factor")
layout.prop(scene, "distance_model", text="")
layout.prop(scene, "speed_of_sound", text="Speed")
layout.prop(scene, "doppler_factor")
bpy.types.register(RENDER_PT_game)
bpy.types.register(RENDER_PT_game_player)
@@ -446,11 +446,11 @@ class WORLD_PT_game_world(WorldButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(world, "horizon_color")
col.prop(world, "horizon_color")
if wide_ui:
col = split.column()
col.itemR(world, "ambient_color")
col.prop(world, "ambient_color")
class WORLD_PT_game_mist(WorldButtonsPanel):
@@ -459,7 +459,7 @@ class WORLD_PT_game_mist(WorldButtonsPanel):
def draw_header(self, context):
world = context.world
self.layout.itemR(world.mist, "enabled", text="")
self.layout.prop(world.mist, "enabled", text="")
def draw(self, context):
layout = self.layout
@@ -471,11 +471,11 @@ class WORLD_PT_game_mist(WorldButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(world.mist, "start")
col.prop(world.mist, "start")
if wide_ui:
col = split.column()
col.itemR(world.mist, "depth")
col.prop(world.mist, "depth")
class WORLD_PT_game_physics(WorldButtonsPanel):
@@ -487,40 +487,40 @@ class WORLD_PT_game_physics(WorldButtonsPanel):
gs = context.scene.game_data
wide_ui = context.region.width > narrowui
layout.itemR(gs, "physics_engine")
layout.prop(gs, "physics_engine")
if gs.physics_engine != 'NONE':
layout.itemR(gs, "physics_gravity", text="Gravity")
layout.prop(gs, "physics_gravity", text="Gravity")
split = layout.split()
col = split.column()
col.itemL(text="Physics Steps:")
col.label(text="Physics Steps:")
sub = col.column(align=True)
sub.itemR(gs, "physics_step_max", text="Max")
sub.itemR(gs, "physics_step_sub", text="Substeps")
col.itemR(gs, "fps", text="FPS")
sub.prop(gs, "physics_step_max", text="Max")
sub.prop(gs, "physics_step_sub", text="Substeps")
col.prop(gs, "fps", text="FPS")
if wide_ui:
col = split.column()
col.itemL(text="Logic Steps:")
col.itemR(gs, "logic_step_max", text="Max")
col.label(text="Logic Steps:")
col.prop(gs, "logic_step_max", text="Max")
col = layout.column()
col.itemR(gs, "use_occlusion_culling", text="Occlusion Culling")
col.prop(gs, "use_occlusion_culling", text="Occlusion Culling")
sub = col.column()
sub.active = gs.use_occlusion_culling
sub.itemR(gs, "occlusion_culling_resolution", text="Resolution")
sub.prop(gs, "occlusion_culling_resolution", text="Resolution")
else:
split = layout.split()
col = split.column()
col.itemL(text="Physics Steps:")
col.itemR(gs, "fps", text="FPS")
col.label(text="Physics Steps:")
col.prop(gs, "fps", text="FPS")
col = split.column()
col.itemL(text="Logic Steps:")
col.itemR(gs, "logic_step_max", text="Max")
col.label(text="Logic Steps:")
col.prop(gs, "logic_step_max", text="Max")
bpy.types.register(WORLD_PT_game_context_world)
bpy.types.register(WORLD_PT_game_world)

View File

@@ -89,15 +89,15 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel):
row.template_list(ob, "materials", ob, "active_material_index", rows=2)
col = row.column(align=True)
col.itemO("object.material_slot_add", icon='ICON_ZOOMIN', text="")
col.itemO("object.material_slot_remove", icon='ICON_ZOOMOUT', text="")
col.itemO("object.material_slot_copy", icon='ICON_COPY_ID', text="")
col.operator("object.material_slot_add", icon='ICON_ZOOMIN', text="")
col.operator("object.material_slot_remove", icon='ICON_ZOOMOUT', text="")
col.operator("object.material_slot_copy", icon='ICON_COPY_ID', text="")
if ob.mode == 'EDIT':
row = layout.row(align=True)
row.itemO("object.material_slot_assign", text="Assign")
row.itemO("object.material_slot_select", text="Select")
row.itemO("object.material_slot_deselect", text="Deselect")
row.operator("object.material_slot_assign", text="Assign")
row.operator("object.material_slot_select", text="Select")
row.operator("object.material_slot_deselect", text="Deselect")
if wide_ui:
split = layout.split(percentage=0.65)
@@ -106,12 +106,12 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel):
split.template_ID(ob, "active_material", new="material.new")
row = split.row()
if slot:
row.itemR(slot, "link", text="")
row.prop(slot, "link", text="")
else:
row.itemL()
row.label()
elif mat:
split.template_ID(space, "pin_id")
split.itemS()
split.separator()
else:
if ob:
layout.template_ID(ob, "active_material", new="material.new")
@@ -120,9 +120,9 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel):
if mat:
if wide_ui:
layout.itemR(mat, "type", expand=True)
layout.prop(mat, "type", expand=True)
else:
layout.itemR(mat, "type", text="")
layout.prop(mat, "type", text="")
class MATERIAL_PT_shading(MaterialButtonsPanel):
@@ -146,21 +146,21 @@ class MATERIAL_PT_shading(MaterialButtonsPanel):
col = split.column()
sub = col.column()
sub.active = not mat.shadeless
sub.itemR(mat, "emit")
sub.itemR(mat, "ambient")
sub.prop(mat, "emit")
sub.prop(mat, "ambient")
sub = col.column()
sub.itemR(mat, "translucency")
sub.prop(mat, "translucency")
if wide_ui:
col = split.column()
col.itemR(mat, "shadeless")
col.prop(mat, "shadeless")
sub = col.column()
sub.active = not mat.shadeless
sub.itemR(mat, "tangent_shading")
sub.itemR(mat, "cubic")
sub.prop(mat, "tangent_shading")
sub.prop(mat, "cubic")
elif mat.type == 'HALO':
layout.itemR(mat, "alpha")
layout.prop(mat, "alpha")
class MATERIAL_PT_strand(MaterialButtonsPanel):
@@ -184,32 +184,32 @@ class MATERIAL_PT_strand(MaterialButtonsPanel):
col = split.column()
sub = col.column(align=True)
sub.itemL(text="Size:")
sub.itemR(tan, "root_size", text="Root")
sub.itemR(tan, "tip_size", text="Tip")
sub.itemR(tan, "min_size", text="Minimum")
sub.itemR(tan, "blender_units")
sub.label(text="Size:")
sub.prop(tan, "root_size", text="Root")
sub.prop(tan, "tip_size", text="Tip")
sub.prop(tan, "min_size", text="Minimum")
sub.prop(tan, "blender_units")
sub = col.column()
sub.active = (not mat.shadeless)
sub.itemR(tan, "tangent_shading")
col.itemR(tan, "shape")
sub.prop(tan, "tangent_shading")
col.prop(tan, "shape")
if wide_ui:
col = split.column()
col.itemL(text="Shading:")
col.itemR(tan, "width_fade")
col.label(text="Shading:")
col.prop(tan, "width_fade")
ob = context.object
if ob and ob.type == 'MESH':
col.item_pointerR(tan, "uv_layer", ob.data, "uv_textures", text="")
col.prop_pointer(tan, "uv_layer", ob.data, "uv_textures", text="")
else:
col.itemR(tan, "uv_layer", text="")
col.itemS()
col.prop(tan, "uv_layer", text="")
col.separator()
sub = col.column()
sub.active = (not mat.shadeless)
sub.itemR(tan, "surface_diffuse")
sub.prop(tan, "surface_diffuse")
sub = col.column()
sub.active = tan.surface_diffuse
sub.itemR(tan, "blend_distance", text="Distance")
sub.prop(tan, "blend_distance", text="Distance")
class MATERIAL_PT_physics(MaterialButtonsPanel):
@@ -225,15 +225,15 @@ class MATERIAL_PT_physics(MaterialButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(phys, "distance")
col.itemR(phys, "friction")
col.itemR(phys, "align_to_normal")
col.prop(phys, "distance")
col.prop(phys, "friction")
col.prop(phys, "align_to_normal")
if wide_ui:
col = split.column()
col.itemR(phys, "force", slider=True)
col.itemR(phys, "elasticity", slider=True)
col.itemR(phys, "damp", slider=True)
col.prop(phys, "force", slider=True)
col.prop(phys, "elasticity", slider=True)
col.prop(phys, "damp", slider=True)
class MATERIAL_PT_options(MaterialButtonsPanel):
@@ -254,31 +254,31 @@ class MATERIAL_PT_options(MaterialButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(mat, "traceable")
col.itemR(mat, "full_oversampling")
col.itemR(mat, "sky")
col.itemR(mat, "exclude_mist")
col.itemR(mat, "invert_z")
col.prop(mat, "traceable")
col.prop(mat, "full_oversampling")
col.prop(mat, "sky")
col.prop(mat, "exclude_mist")
col.prop(mat, "invert_z")
sub = col.row()
sub.itemR(mat, "z_offset")
sub.prop(mat, "z_offset")
sub.active = mat.transparency and mat.transparency_method == 'Z_TRANSPARENCY'
sub = col.column(align=True)
sub.itemL(text="Light Group:")
sub.itemR(mat, "light_group", text="")
sub.label(text="Light Group:")
sub.prop(mat, "light_group", text="")
row = sub.row()
row.active = bool(mat.light_group)
row.itemR(mat, "light_group_exclusive", text="Exclusive")
row.prop(mat, "light_group_exclusive", text="Exclusive")
if wide_ui:
col = split.column()
col.itemR(mat, "face_texture")
col.prop(mat, "face_texture")
sub = col.column()
sub.active = mat.face_texture
sub.itemR(mat, "face_texture_alpha")
col.itemS()
col.itemR(mat, "vertex_color_paint")
col.itemR(mat, "vertex_color_light")
col.itemR(mat, "object_color")
sub.prop(mat, "face_texture_alpha")
col.separator()
col.prop(mat, "vertex_color_paint")
col.prop(mat, "vertex_color_light")
col.prop(mat, "object_color")
class MATERIAL_PT_shadow(MaterialButtonsPanel):
@@ -300,22 +300,22 @@ class MATERIAL_PT_shadow(MaterialButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(mat, "shadows", text="Receive")
col.itemR(mat, "receive_transparent_shadows", text="Receive Transparent")
col.itemR(mat, "only_shadow", text="Shadows Only")
col.itemR(mat, "cast_shadows_only", text="Cast Only")
col.itemR(mat, "shadow_casting_alpha", text="Casting Alpha")
col.prop(mat, "shadows", text="Receive")
col.prop(mat, "receive_transparent_shadows", text="Receive Transparent")
col.prop(mat, "only_shadow", text="Shadows Only")
col.prop(mat, "cast_shadows_only", text="Cast Only")
col.prop(mat, "shadow_casting_alpha", text="Casting Alpha")
if wide_ui:
col = split.column()
col.itemR(mat, "cast_buffer_shadows")
col.prop(mat, "cast_buffer_shadows")
sub = col.column()
sub.active = mat.cast_buffer_shadows
sub.itemR(mat, "shadow_buffer_bias", text="Buffer Bias")
col.itemR(mat, "ray_shadow_bias", text="Auto Ray Bias")
sub.prop(mat, "shadow_buffer_bias", text="Buffer Bias")
col.prop(mat, "ray_shadow_bias", text="Auto Ray Bias")
sub = col.column()
sub.active = (not mat.ray_shadow_bias)
sub.itemR(mat, "shadow_ray_bias", text="Ray Bias")
sub.prop(mat, "shadow_ray_bias", text="Ray Bias")
class MATERIAL_PT_diffuse(MaterialButtonsPanel):
@@ -336,57 +336,57 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(mat, "diffuse_color", text="")
col.prop(mat, "diffuse_color", text="")
sub = col.column()
sub.active = (not mat.shadeless)
sub.itemR(mat, "diffuse_intensity", text="Intensity")
sub.prop(mat, "diffuse_intensity", text="Intensity")
if wide_ui:
col = split.column()
col.active = (not mat.shadeless)
col.itemR(mat, "diffuse_shader", text="")
col.itemR(mat, "use_diffuse_ramp", text="Ramp")
col.prop(mat, "diffuse_shader", text="")
col.prop(mat, "use_diffuse_ramp", text="Ramp")
col = layout.column()
col.active = (not mat.shadeless)
if mat.diffuse_shader == 'OREN_NAYAR':
col.itemR(mat, "roughness")
col.prop(mat, "roughness")
elif mat.diffuse_shader == 'MINNAERT':
col.itemR(mat, "darkness")
col.prop(mat, "darkness")
elif mat.diffuse_shader == 'TOON':
split = col.split()
col = split.column()
col.itemR(mat, "diffuse_toon_size", text="Size")
col.prop(mat, "diffuse_toon_size", text="Size")
if wide_ui:
col = split.column()
col.itemR(mat, "diffuse_toon_smooth", text="Smooth")
col.prop(mat, "diffuse_toon_smooth", text="Smooth")
elif mat.diffuse_shader == 'FRESNEL':
split = col.split()
col = split.column()
col.itemR(mat, "diffuse_fresnel", text="Fresnel")
col.prop(mat, "diffuse_fresnel", text="Fresnel")
if wide_ui:
col = split.column()
col.itemR(mat, "diffuse_fresnel_factor", text="Factor")
col.prop(mat, "diffuse_fresnel_factor", text="Factor")
if mat.use_diffuse_ramp:
layout.itemS()
layout.separator()
layout.template_color_ramp(mat, "diffuse_ramp", expand=True)
layout.itemS()
layout.separator()
split = layout.split()
col = split.column()
col.itemR(mat, "diffuse_ramp_input", text="Input")
col.prop(mat, "diffuse_ramp_input", text="Input")
if wide_ui:
col = split.column()
col.itemR(mat, "diffuse_ramp_blend", text="Blend")
col.prop(mat, "diffuse_ramp_blend", text="Blend")
row = layout.row()
row.itemR(mat, "diffuse_ramp_factor", text="Factor")
row.prop(mat, "diffuse_ramp_factor", text="Factor")
class MATERIAL_PT_specular(MaterialButtonsPanel):
@@ -409,53 +409,53 @@ class MATERIAL_PT_specular(MaterialButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(mat, "specular_color", text="")
col.itemR(mat, "specular_intensity", text="Intensity")
col.prop(mat, "specular_color", text="")
col.prop(mat, "specular_intensity", text="Intensity")
if wide_ui:
col = split.column()
col.itemR(mat, "specular_shader", text="")
col.itemR(mat, "use_specular_ramp", text="Ramp")
col.prop(mat, "specular_shader", text="")
col.prop(mat, "use_specular_ramp", text="Ramp")
col = layout.column()
if mat.specular_shader in ('COOKTORR', 'PHONG'):
col.itemR(mat, "specular_hardness", text="Hardness")
col.prop(mat, "specular_hardness", text="Hardness")
elif mat.specular_shader == 'BLINN':
split = layout.split()
col = split.column()
col.itemR(mat, "specular_hardness", text="Hardness")
col.prop(mat, "specular_hardness", text="Hardness")
if wide_ui:
col = split.column()
col.itemR(mat, "specular_ior", text="IOR")
col.prop(mat, "specular_ior", text="IOR")
elif mat.specular_shader == 'WARDISO':
col.itemR(mat, "specular_slope", text="Slope")
col.prop(mat, "specular_slope", text="Slope")
elif mat.specular_shader == 'TOON':
split = layout.split()
col = split.column()
col.itemR(mat, "specular_toon_size", text="Size")
col.prop(mat, "specular_toon_size", text="Size")
if wide_ui:
col = split.column()
col.itemR(mat, "specular_toon_smooth", text="Smooth")
col.prop(mat, "specular_toon_smooth", text="Smooth")
if mat.use_specular_ramp:
layout.itemS()
layout.separator()
layout.template_color_ramp(mat, "specular_ramp", expand=True)
layout.itemS()
layout.separator()
split = layout.split()
col = split.column()
col.itemR(mat, "specular_ramp_input", text="Input")
col.prop(mat, "specular_ramp_input", text="Input")
if wide_ui:
col = split.column()
col.itemR(mat, "specular_ramp_blend", text="Blend")
col.prop(mat, "specular_ramp_blend", text="Blend")
row = layout.row()
row.itemR(mat, "specular_ramp_factor", text="Factor")
row.prop(mat, "specular_ramp_factor", text="Factor")
class MATERIAL_PT_sss(MaterialButtonsPanel):
@@ -473,7 +473,7 @@ class MATERIAL_PT_sss(MaterialButtonsPanel):
sss = mat.subsurface_scattering
self.layout.active = (not mat.shadeless)
self.layout.itemR(sss, "enabled", text="")
self.layout.prop(sss, "enabled", text="")
def draw(self, context):
layout = self.layout
@@ -486,28 +486,28 @@ class MATERIAL_PT_sss(MaterialButtonsPanel):
row = layout.row().split()
sub = row.row(align=True).split(percentage=0.75)
sub.itemM("MATERIAL_MT_sss_presets", text="Presets")
sub.itemO("material.sss_preset_add", text="Add")
sub.menu("MATERIAL_MT_sss_presets", text="Presets")
sub.operator("material.sss_preset_add", text="Add")
split = layout.split()
col = split.column()
col.itemR(sss, "ior")
col.itemR(sss, "scale")
col.itemR(sss, "color", text="")
col.itemR(sss, "radius", text="RGB Radius")
col.prop(sss, "ior")
col.prop(sss, "scale")
col.prop(sss, "color", text="")
col.prop(sss, "radius", text="RGB Radius")
if wide_ui:
col = split.column()
sub = col.column(align=True)
sub.itemL(text="Blend:")
sub.itemR(sss, "color_factor", text="Color")
sub.itemR(sss, "texture_factor", text="Texture")
sub.itemL(text="Scattering Weight:")
sub.itemR(sss, "front")
sub.itemR(sss, "back")
col.itemS()
col.itemR(sss, "error_tolerance", text="Error")
sub.label(text="Blend:")
sub.prop(sss, "color_factor", text="Color")
sub.prop(sss, "texture_factor", text="Texture")
sub.label(text="Scattering Weight:")
sub.prop(sss, "front")
sub.prop(sss, "back")
col.separator()
col.prop(sss, "error_tolerance", text="Error")
class MATERIAL_PT_mirror(MaterialButtonsPanel):
@@ -523,7 +523,7 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel):
def draw_header(self, context):
raym = active_node_mat(context.material).raytrace_mirror
self.layout.itemR(raym, "enabled", text="")
self.layout.prop(raym, "enabled", text="")
def draw(self, context):
layout = self.layout
@@ -537,36 +537,36 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(raym, "reflect_factor")
col.itemR(mat, "mirror_color", text="")
col.prop(raym, "reflect_factor")
col.prop(mat, "mirror_color", text="")
if wide_ui:
col = split.column()
col.itemR(raym, "fresnel")
col.prop(raym, "fresnel")
sub = col.column()
sub.active = raym.fresnel > 0
sub.itemR(raym, "fresnel_factor", text="Blend")
sub.prop(raym, "fresnel_factor", text="Blend")
split = layout.split()
col = split.column()
col.itemS()
col.itemR(raym, "distance", text="Max Dist")
col.itemR(raym, "depth")
col.itemS()
col.separator()
col.prop(raym, "distance", text="Max Dist")
col.prop(raym, "depth")
col.separator()
sub = col.split(percentage=0.4)
sub.itemL(text="Fade To:")
sub.itemR(raym, "fade_to", text="")
sub.label(text="Fade To:")
sub.prop(raym, "fade_to", text="")
if wide_ui:
col = split.column()
col.itemL(text="Gloss:")
col.itemR(raym, "gloss_factor", text="Amount")
col.label(text="Gloss:")
col.prop(raym, "gloss_factor", text="Amount")
sub = col.column()
sub.active = raym.gloss_factor < 1.0
sub.itemR(raym, "gloss_threshold", text="Threshold")
sub.itemR(raym, "gloss_samples", text="Samples")
sub.itemR(raym, "gloss_anisotropic", text="Anisotropic")
sub.prop(raym, "gloss_threshold", text="Threshold")
sub.prop(raym, "gloss_samples", text="Samples")
sub.prop(raym, "gloss_anisotropic", text="Anisotropic")
class MATERIAL_PT_transp(MaterialButtonsPanel):
@@ -582,7 +582,7 @@ class MATERIAL_PT_transp(MaterialButtonsPanel):
def draw_header(self, context):
mat = active_node_mat(context.material)
self.layout.itemR(mat, "transparency", text="")
self.layout.prop(mat, "transparency", text="")
def draw(self, context):
layout = self.layout
@@ -594,46 +594,46 @@ class MATERIAL_PT_transp(MaterialButtonsPanel):
row = layout.row()
row.active = mat.transparency and (not mat.shadeless)
if wide_ui:
row.itemR(mat, "transparency_method", expand=True)
row.prop(mat, "transparency_method", expand=True)
else:
row.itemR(mat, "transparency_method", text="")
row.prop(mat, "transparency_method", text="")
split = layout.split()
col = split.column()
col.itemR(mat, "alpha")
col.prop(mat, "alpha")
row = col.row()
row.active = mat.transparency and (not mat.shadeless)
row.itemR(mat, "specular_alpha", text="Specular")
row.prop(mat, "specular_alpha", text="Specular")
if wide_ui:
col = split.column()
col.active = (not mat.shadeless)
col.itemR(rayt, "fresnel")
col.prop(rayt, "fresnel")
sub = col.column()
sub.active = rayt.fresnel > 0
sub.itemR(rayt, "fresnel_factor", text="Blend")
sub.prop(rayt, "fresnel_factor", text="Blend")
if mat.transparency_method == 'RAYTRACE':
layout.itemS()
layout.separator()
split = layout.split()
split.active = mat.transparency
col = split.column()
col.itemR(rayt, "ior")
col.itemR(rayt, "filter")
col.itemR(rayt, "falloff")
col.itemR(rayt, "limit")
col.itemR(rayt, "depth")
col.prop(rayt, "ior")
col.prop(rayt, "filter")
col.prop(rayt, "falloff")
col.prop(rayt, "limit")
col.prop(rayt, "depth")
if wide_ui:
col = split.column()
col.itemL(text="Gloss:")
col.itemR(rayt, "gloss_factor", text="Amount")
col.label(text="Gloss:")
col.prop(rayt, "gloss_factor", text="Amount")
sub = col.column()
sub.active = rayt.gloss_factor < 1.0
sub.itemR(rayt, "gloss_threshold", text="Threshold")
sub.itemR(rayt, "gloss_samples", text="Samples")
sub.prop(rayt, "gloss_threshold", text="Threshold")
sub.prop(rayt, "gloss_samples", text="Samples")
class MATERIAL_PT_halo(MaterialButtonsPanel):
@@ -655,35 +655,35 @@ class MATERIAL_PT_halo(MaterialButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(mat, "diffuse_color", text="")
col.itemR(halo, "size")
col.itemR(halo, "hardness")
col.itemR(halo, "add")
col.itemL(text="Options:")
col.itemR(halo, "texture")
col.itemR(halo, "vertex_normal")
col.itemR(halo, "xalpha")
col.itemR(halo, "shaded")
col.itemR(halo, "soft")
col.prop(mat, "diffuse_color", text="")
col.prop(halo, "size")
col.prop(halo, "hardness")
col.prop(halo, "add")
col.label(text="Options:")
col.prop(halo, "texture")
col.prop(halo, "vertex_normal")
col.prop(halo, "xalpha")
col.prop(halo, "shaded")
col.prop(halo, "soft")
if wide_ui:
col = split.column()
col.itemR(halo, "ring")
col.prop(halo, "ring")
sub = col.column()
sub.active = halo.ring
sub.itemR(halo, "rings")
sub.itemR(mat, "mirror_color", text="")
col.itemS()
col.itemR(halo, "lines")
sub.prop(halo, "rings")
sub.prop(mat, "mirror_color", text="")
col.separator()
col.prop(halo, "lines")
sub = col.column()
sub.active = halo.lines
sub.itemR(halo, "line_number", text="Lines")
sub.itemR(mat, "specular_color", text="")
col.itemS()
col.itemR(halo, "star")
sub.prop(halo, "line_number", text="Lines")
sub.prop(mat, "specular_color", text="")
col.separator()
col.prop(halo, "star")
sub = col.column()
sub.active = halo.star
sub.itemR(halo, "star_tips")
sub.prop(halo, "star_tips")
class MATERIAL_PT_flare(MaterialButtonsPanel):
@@ -698,7 +698,7 @@ class MATERIAL_PT_flare(MaterialButtonsPanel):
def draw_header(self, context):
halo = context.material.halo
self.layout.itemR(halo, "flare_mode", text="")
self.layout.prop(halo, "flare_mode", text="")
def draw(self, context):
layout = self.layout
@@ -712,13 +712,13 @@ class MATERIAL_PT_flare(MaterialButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(halo, "flare_size", text="Size")
col.itemR(halo, "flare_boost", text="Boost")
col.itemR(halo, "flare_seed", text="Seed")
col.prop(halo, "flare_size", text="Size")
col.prop(halo, "flare_boost", text="Boost")
col.prop(halo, "flare_seed", text="Seed")
if wide_ui:
col = split.column()
col.itemR(halo, "flares_sub", text="Subflares")
col.itemR(halo, "flare_subsize", text="Subsize")
col.prop(halo, "flares_sub", text="Subflares")
col.prop(halo, "flare_subsize", text="Subsize")
bpy.types.register(MATERIAL_PT_context_material)
bpy.types.register(MATERIAL_PT_preview)
@@ -760,11 +760,11 @@ class MATERIAL_PT_volume_density(VolumeButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(vol, "density")
col.prop(vol, "density")
if wide_ui:
col = split.column()
col.itemR(vol, "density_scale")
col.prop(vol, "density_scale")
class MATERIAL_PT_volume_shading(VolumeButtonsPanel):
@@ -781,18 +781,18 @@ class MATERIAL_PT_volume_shading(VolumeButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(vol, "scattering")
col.itemR(vol, "asymmetry")
col.itemR(vol, "transmission_color")
col.prop(vol, "scattering")
col.prop(vol, "asymmetry")
col.prop(vol, "transmission_color")
if wide_ui:
col = split.column()
sub = col.column(align=True)
sub.itemR(vol, "emission")
sub.itemR(vol, "emission_color", text="")
sub.prop(vol, "emission")
sub.prop(vol, "emission_color", text="")
sub = col.column(align=True)
sub.itemR(vol, "reflection")
sub.itemR(vol, "reflection_color", text="")
sub.prop(vol, "reflection")
sub.prop(vol, "reflection_color", text="")
class MATERIAL_PT_volume_lighting(VolumeButtonsPanel):
@@ -809,28 +809,28 @@ class MATERIAL_PT_volume_lighting(VolumeButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(vol, "lighting_mode", text="")
col.prop(vol, "lighting_mode", text="")
if wide_ui:
col = split.column()
if vol.lighting_mode == 'SHADED':
col.itemR(vol, "external_shadows")
col.itemR(vol, "light_cache")
col.prop(vol, "external_shadows")
col.prop(vol, "light_cache")
sub = col.column()
sub.active = vol.light_cache
sub.itemR(vol, "cache_resolution")
sub.prop(vol, "cache_resolution")
elif vol.lighting_mode in ('MULTIPLE_SCATTERING', 'SHADED_PLUS_MULTIPLE_SCATTERING'):
sub = col.column()
sub.enabled = True
sub.active = False
sub.itemR(vol, "light_cache")
col.itemR(vol, "cache_resolution")
sub.prop(vol, "light_cache")
col.prop(vol, "cache_resolution")
sub = col.column(align=True)
sub.itemR(vol, "ms_diffusion")
sub.itemR(vol, "ms_spread")
sub.itemR(vol, "ms_intensity")
sub.prop(vol, "ms_diffusion")
sub.prop(vol, "ms_spread")
sub.prop(vol, "ms_intensity")
class MATERIAL_PT_volume_transp(VolumeButtonsPanel):
@@ -844,9 +844,9 @@ class MATERIAL_PT_volume_transp(VolumeButtonsPanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(mat, "transparency_method", expand=True)
layout.prop(mat, "transparency_method", expand=True)
else:
layout.itemR(mat, "transparency_method", text="")
layout.prop(mat, "transparency_method", text="")
class MATERIAL_PT_volume_integration(VolumeButtonsPanel):
@@ -863,15 +863,15 @@ class MATERIAL_PT_volume_integration(VolumeButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Step Calculation:")
col.itemR(vol, "step_calculation", text="")
col.label(text="Step Calculation:")
col.prop(vol, "step_calculation", text="")
col = col.column(align=True)
col.itemR(vol, "step_size")
col.prop(vol, "step_size")
if wide_ui:
col = split.column()
col.itemL()
col.itemR(vol, "depth_cutoff")
col.label()
col.prop(vol, "depth_cutoff")
bpy.types.register(MATERIAL_MT_sss_presets)

View File

@@ -38,8 +38,8 @@ class OBJECT_PT_context_object(ObjectButtonsPanel):
ob = context.object
row = layout.row()
row.itemL(text="", icon='ICON_OBJECT_DATA')
row.itemR(ob, "name", text="")
row.label(text="", icon='ICON_OBJECT_DATA')
row.prop(ob, "name", text="")
class OBJECT_PT_transform(ObjectButtonsPanel):
@@ -54,32 +54,32 @@ class OBJECT_PT_transform(ObjectButtonsPanel):
if wide_ui:
row = layout.row()
row.column().itemR(ob, "location")
row.column().prop(ob, "location")
if ob.rotation_mode == 'QUATERNION':
row.column().itemR(ob, "rotation_quaternion", text="Rotation")
row.column().prop(ob, "rotation_quaternion", text="Rotation")
elif ob.rotation_mode == 'AXIS_ANGLE':
#row.column().itemL(text="Rotation")
#row.column().itemR(pchan, "rotation_angle", text="Angle")
#row.column().itemR(pchan, "rotation_axis", text="Axis")
row.column().itemR(ob, "rotation_axis_angle", text="Rotation")
#row.column().label(text="Rotation")
#row.column().prop(pchan, "rotation_angle", text="Angle")
#row.column().prop(pchan, "rotation_axis", text="Axis")
row.column().prop(ob, "rotation_axis_angle", text="Rotation")
else:
row.column().itemR(ob, "rotation_euler", text="Rotation")
row.column().prop(ob, "rotation_euler", text="Rotation")
row.column().itemR(ob, "scale")
row.column().prop(ob, "scale")
layout.itemR(ob, "rotation_mode")
layout.prop(ob, "rotation_mode")
else:
col = layout.column()
col.itemR(ob, "location")
col.itemL(text="Rotation:")
col.itemR(ob, "rotation_mode", text="")
col.prop(ob, "location")
col.label(text="Rotation:")
col.prop(ob, "rotation_mode", text="")
if ob.rotation_mode == 'QUATERNION':
col.itemR(ob, "rotation_quaternion", text="")
col.prop(ob, "rotation_quaternion", text="")
elif ob.rotation_mode == 'AXIS_ANGLE':
col.itemR(ob, "rotation_axis_angle", text="")
col.prop(ob, "rotation_axis_angle", text="")
else:
col.itemR(ob, "rotation_euler", text="")
col.itemR(ob, "scale")
col.prop(ob, "rotation_euler", text="")
col.prop(ob, "scale")
class OBJECT_PT_transform_locks(ObjectButtonsPanel):
@@ -95,18 +95,18 @@ class OBJECT_PT_transform_locks(ObjectButtonsPanel):
row = layout.row()
col = row.column()
col.itemR(ob, "lock_location", text="Location")
col.prop(ob, "lock_location", text="Location")
col = row.column()
if ob.rotation_mode in ('QUATERNION', 'AXIS_ANGLE'):
col.itemR(ob, "lock_rotations_4d", text="Rotation")
col.prop(ob, "lock_rotations_4d", text="Rotation")
if ob.lock_rotations_4d:
col.itemR(ob, "lock_rotation_w", text="W")
col.itemR(ob, "lock_rotation", text="")
col.prop(ob, "lock_rotation_w", text="W")
col.prop(ob, "lock_rotation", text="")
else:
col.itemR(ob, "lock_rotation", text="Rotation")
col.prop(ob, "lock_rotation", text="Rotation")
row.column().itemR(ob, "lock_scale", text="Scale")
row.column().prop(ob, "lock_scale", text="Scale")
class OBJECT_PT_relations(ObjectButtonsPanel):
@@ -121,20 +121,20 @@ class OBJECT_PT_relations(ObjectButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(ob, "layers")
col.itemS()
col.itemR(ob, "pass_index")
col.prop(ob, "layers")
col.separator()
col.prop(ob, "pass_index")
if wide_ui:
col = split.column()
col.itemL(text="Parent:")
col.itemR(ob, "parent", text="")
col.label(text="Parent:")
col.prop(ob, "parent", text="")
sub = col.column()
sub.itemR(ob, "parent_type", text="")
sub.prop(ob, "parent_type", text="")
parent = ob.parent
if parent and ob.parent_type == 'BONE' and parent.type == 'ARMATURE':
sub.item_pointerR(ob, "parent_bone", parent.data, "bones", text="")
sub.prop_pointer(ob, "parent_bone", parent.data, "bones", text="")
sub.active = (parent is not None)
@@ -149,10 +149,10 @@ class OBJECT_PT_groups(ObjectButtonsPanel):
if wide_ui:
split = layout.split()
split.item_menu_enumO("object.group_add", "group", text="Add to Group")
split.itemL()
split.operator_menu_enum("object.group_add", "group", text="Add to Group")
split.label()
else:
layout.item_menu_enumO("object.group_add", "group", text="Add to Group")
layout.operator_menu_enum("object.group_add", "group", text="Add to Group")
for group in bpy.data.groups:
if ob.name in group.objects:
@@ -161,17 +161,17 @@ class OBJECT_PT_groups(ObjectButtonsPanel):
col.set_context_pointer("group", group)
row = col.box().row()
row.itemR(group, "name", text="")
row.itemO("object.group_remove", text="", icon='VICON_X')
row.prop(group, "name", text="")
row.operator("object.group_remove", text="", icon='VICON_X')
split = col.box().split()
col = split.column()
col.itemR(group, "layer", text="Dupli")
col.prop(group, "layer", text="Dupli")
if wide_ui:
col = split.column()
col.itemR(group, "dupli_offset", text="")
col.prop(group, "dupli_offset", text="")
class OBJECT_PT_display(ObjectButtonsPanel):
@@ -185,28 +185,28 @@ class OBJECT_PT_display(ObjectButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(ob, "max_draw_type", text="Type")
col.prop(ob, "max_draw_type", text="Type")
if wide_ui:
col = split.column()
row = col.row()
row.itemR(ob, "draw_bounds", text="Bounds")
row.prop(ob, "draw_bounds", text="Bounds")
sub = row.row()
sub.active = ob.draw_bounds
sub.itemR(ob, "draw_bounds_type", text="")
sub.prop(ob, "draw_bounds_type", text="")
split = layout.split()
col = split.column()
col.itemR(ob, "draw_name", text="Name")
col.itemR(ob, "draw_axis", text="Axis")
col.itemR(ob, "draw_wire", text="Wire")
col.prop(ob, "draw_name", text="Name")
col.prop(ob, "draw_axis", text="Axis")
col.prop(ob, "draw_wire", text="Wire")
if wide_ui:
col = split.column()
col.itemR(ob, "draw_texture_space", text="Texture Space")
col.itemR(ob, "x_ray", text="X-Ray")
col.itemR(ob, "draw_transparent", text="Transparency")
col.prop(ob, "draw_texture_space", text="Texture Space")
col.prop(ob, "x_ray", text="X-Ray")
col.prop(ob, "draw_transparent", text="Transparency")
class OBJECT_PT_duplication(ObjectButtonsPanel):
@@ -219,42 +219,42 @@ class OBJECT_PT_duplication(ObjectButtonsPanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(ob, "dupli_type", expand=True)
layout.prop(ob, "dupli_type", expand=True)
else:
layout.itemR(ob, "dupli_type", text="")
layout.prop(ob, "dupli_type", text="")
if ob.dupli_type == 'FRAMES':
split = layout.split()
col = split.column(align=True)
col.itemR(ob, "dupli_frames_start", text="Start")
col.itemR(ob, "dupli_frames_end", text="End")
col.prop(ob, "dupli_frames_start", text="Start")
col.prop(ob, "dupli_frames_end", text="End")
if wide_ui:
col = split.column(align=True)
col.itemR(ob, "dupli_frames_on", text="On")
col.itemR(ob, "dupli_frames_off", text="Off")
col.prop(ob, "dupli_frames_on", text="On")
col.prop(ob, "dupli_frames_off", text="Off")
layout.itemR(ob, "dupli_frames_no_speed", text="No Speed")
layout.prop(ob, "dupli_frames_no_speed", text="No Speed")
elif ob.dupli_type == 'VERTS':
layout.itemR(ob, "dupli_verts_rotation", text="Rotation")
layout.prop(ob, "dupli_verts_rotation", text="Rotation")
elif ob.dupli_type == 'FACES':
split = layout.split()
col = split.column()
col.itemR(ob, "dupli_faces_scale", text="Scale")
col.prop(ob, "dupli_faces_scale", text="Scale")
if wide_ui:
col = split.column()
col.itemR(ob, "dupli_faces_inherit_scale", text="Inherit Scale")
col.prop(ob, "dupli_faces_inherit_scale", text="Inherit Scale")
elif ob.dupli_type == 'GROUP':
if wide_ui:
layout.itemR(ob, "dupli_group", text="Group")
layout.prop(ob, "dupli_group", text="Group")
else:
layout.itemR(ob, "dupli_group", text="")
layout.prop(ob, "dupli_group", text="")
class OBJECT_PT_animation(ObjectButtonsPanel):
@@ -269,27 +269,27 @@ class OBJECT_PT_animation(ObjectButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Time Offset:")
col.itemR(ob, "time_offset_edit", text="Edit")
col.label(text="Time Offset:")
col.prop(ob, "time_offset_edit", text="Edit")
row = col.row()
row.itemR(ob, "time_offset_particle", text="Particle")
row.prop(ob, "time_offset_particle", text="Particle")
row.active = len(ob.particle_systems) != 0
row = col.row()
row.itemR(ob, "time_offset_parent", text="Parent")
row.prop(ob, "time_offset_parent", text="Parent")
row.active = (ob.parent is not None)
row = col.row()
row.itemR(ob, "slow_parent")
row.prop(ob, "slow_parent")
row.active = (ob.parent is not None)
col.itemR(ob, "time_offset", text="Offset")
col.prop(ob, "time_offset", text="Offset")
if wide_ui:
col = split.column()
col.itemL(text="Track:")
col.itemR(ob, "track", text="")
col.itemR(ob, "track_axis", text="Axis")
col.itemR(ob, "up_axis", text="Up Axis")
col.label(text="Track:")
col.prop(ob, "track", text="")
col.prop(ob, "track_axis", text="Axis")
col.prop(ob, "up_axis", text="Up Axis")
row = col.row()
row.itemR(ob, "track_override_parent", text="Override Parent")
row.prop(ob, "track_override_parent", text="Override Parent")
row.active = (ob.parent is not None)

View File

@@ -39,7 +39,7 @@ class ConstraintButtonsPanel(bpy.types.Panel):
# 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', 'SPLINE_IK', 'NULL'):
box.itemR(con, "influence")
box.prop(con, "influence")
def space_template(self, layout, con, wide_ui, target=True, owner=True):
if target or owner:
@@ -47,63 +47,63 @@ class ConstraintButtonsPanel(bpy.types.Panel):
split = layout.split(percentage=0.2)
if wide_ui:
split.itemL(text="Space:")
split.label(text="Space:")
row = split.row()
else:
row = layout.row()
if target:
row.itemR(con, "target_space", text="")
row.prop(con, "target_space", text="")
if wide_ui:
if target and owner:
row.itemL(icon='ICON_ARROW_LEFTRIGHT')
row.label(icon='ICON_ARROW_LEFTRIGHT')
else:
row = layout.row()
if owner:
row.itemR(con, "owner_space", text="")
row.prop(con, "owner_space", text="")
def target_template(self, layout, con, wide_ui, subtargets=True):
if wide_ui:
layout.itemR(con, "target") # XXX limiting settings for only 'curves' or some type of object
layout.prop(con, "target") # XXX limiting settings for only 'curves' or some type of object
else:
layout.itemR(con, "target", text="")
layout.prop(con, "target", text="")
if con.target and subtargets:
if con.target.type == 'ARMATURE':
if wide_ui:
layout.item_pointerR(con, "subtarget", con.target.data, "bones", text="Bone")
layout.prop_pointer(con, "subtarget", con.target.data, "bones", text="Bone")
else:
layout.item_pointerR(con, "subtarget", con.target.data, "bones", text="")
layout.prop_pointer(con, "subtarget", con.target.data, "bones", text="")
if con.type == 'COPY_LOCATION':
row = layout.row()
row.itemL(text="Head/Tail:")
row.itemR(con, "head_tail", text="")
row.label(text="Head/Tail:")
row.prop(con, "head_tail", text="")
elif con.target.type in ('MESH', 'LATTICE'):
layout.item_pointerR(con, "subtarget", con.target, "vertex_groups", text="Vertex Group")
layout.prop_pointer(con, "subtarget", con.target, "vertex_groups", text="Vertex Group")
def ik_template(self, layout, con, wide_ui):
# only used for iTaSC
layout.itemR(con, "pole_target")
layout.prop(con, "pole_target")
if con.pole_target and con.pole_target.type == 'ARMATURE':
layout.item_pointerR(con, "pole_subtarget", con.pole_target.data, "bones", text="Bone")
layout.prop_pointer(con, "pole_subtarget", con.pole_target.data, "bones", text="Bone")
if con.pole_target:
row = layout.row()
row.itemL()
row.itemR(con, "pole_angle")
row.label()
row.prop(con, "pole_angle")
split = layout.split(percentage=0.33)
col = split.column()
col.itemR(con, "tail")
col.itemR(con, "stretch")
col.prop(con, "tail")
col.prop(con, "stretch")
col = split.column()
col.itemR(con, "chain_length")
col.itemR(con, "targetless")
col.prop(con, "chain_length")
col.prop(con, "targetless")
def CHILD_OF(self, context, layout, con, wide_ui):
self.target_template(layout, con, wide_ui)
@@ -111,136 +111,136 @@ class ConstraintButtonsPanel(bpy.types.Panel):
split = layout.split()
col = split.column()
col.itemL(text="Location:")
col.itemR(con, "locationx", text="X")
col.itemR(con, "locationy", text="Y")
col.itemR(con, "locationz", text="Z")
col.label(text="Location:")
col.prop(con, "locationx", text="X")
col.prop(con, "locationy", text="Y")
col.prop(con, "locationz", text="Z")
col = split.column()
col.itemL(text="Rotation:")
col.itemR(con, "rotationx", text="X")
col.itemR(con, "rotationy", text="Y")
col.itemR(con, "rotationz", text="Z")
col.label(text="Rotation:")
col.prop(con, "rotationx", text="X")
col.prop(con, "rotationy", text="Y")
col.prop(con, "rotationz", text="Z")
col = split.column()
col.itemL(text="Scale:")
col.itemR(con, "sizex", text="X")
col.itemR(con, "sizey", text="Y")
col.itemR(con, "sizez", text="Z")
col.label(text="Scale:")
col.prop(con, "sizex", text="X")
col.prop(con, "sizey", text="Y")
col.prop(con, "sizez", text="Z")
split = layout.split()
col = split.column()
col.itemO("constraint.childof_set_inverse")
col.operator("constraint.childof_set_inverse")
if wide_ui:
col = split.column()
col.itemO("constraint.childof_clear_inverse")
col.operator("constraint.childof_clear_inverse")
def TRACK_TO(self, context, layout, con, wide_ui):
self.target_template(layout, con, wide_ui)
row = layout.row()
if wide_ui:
row.itemL(text="To:")
row.itemR(con, "track", expand=True)
row.label(text="To:")
row.prop(con, "track", expand=True)
split = layout.split()
col = split.column()
col.itemR(con, "up", text="Up")
col.prop(con, "up", text="Up")
if wide_ui:
col = split.column()
col.itemR(con, "target_z")
col.prop(con, "target_z")
self.space_template(layout, con, wide_ui)
def IK(self, context, layout, con, wide_ui):
if context.object.pose.ik_solver == "ITASC":
layout.itemR(con, "ik_type")
layout.prop(con, "ik_type")
getattr(self, 'IK_' + con.ik_type)(context, layout, con, wide_ui)
else:
# Legacy IK constraint
self.target_template(layout, con, wide_ui)
if wide_ui:
layout.itemR(con, "pole_target")
layout.prop(con, "pole_target")
else:
layout.itemR(con, "pole_target", text="")
layout.prop(con, "pole_target", text="")
if con.pole_target and con.pole_target.type == 'ARMATURE':
if wide_ui:
layout.item_pointerR(con, "pole_subtarget", con.pole_target.data, "bones", text="Bone")
layout.prop_pointer(con, "pole_subtarget", con.pole_target.data, "bones", text="Bone")
else:
layout.item_pointerR(con, "pole_subtarget", con.pole_target.data, "bones", text="")
layout.prop_pointer(con, "pole_subtarget", con.pole_target.data, "bones", text="")
if con.pole_target:
row = layout.row()
row.itemR(con, "pole_angle")
row.prop(con, "pole_angle")
if wide_ui:
row.itemL()
row.label()
split = layout.split()
col = split.column()
col.itemR(con, "iterations")
col.itemR(con, "chain_length")
col.prop(con, "iterations")
col.prop(con, "chain_length")
col.itemL(text="Weight:")
col.itemR(con, "weight", text="Position", slider=True)
col.label(text="Weight:")
col.prop(con, "weight", text="Position", slider=True)
sub = col.column()
sub.active = con.rotation
sub.itemR(con, "orient_weight", text="Rotation", slider=True)
sub.prop(con, "orient_weight", text="Rotation", slider=True)
if wide_ui:
col = split.column()
col.itemR(con, "tail")
col.itemR(con, "stretch")
col.itemS()
col.itemR(con, "targetless")
col.itemR(con, "rotation")
col.prop(con, "tail")
col.prop(con, "stretch")
col.separator()
col.prop(con, "targetless")
col.prop(con, "rotation")
def IK_COPY_POSE(self, context, layout, con, wide_ui):
self.target_template(layout, con, wide_ui)
self.ik_template(layout, con, wide_ui)
row = layout.row()
row.itemL(text="Axis Ref:")
row.itemR(con, "axis_reference", expand=True)
row.label(text="Axis Ref:")
row.prop(con, "axis_reference", expand=True)
split = layout.split(percentage=0.33)
split.row().itemR(con, "position")
split.row().prop(con, "position")
row = split.row()
row.itemR(con, "weight", text="Weight", slider=True)
row.prop(con, "weight", text="Weight", slider=True)
row.active = con.position
split = layout.split(percentage=0.33)
row = split.row()
row.itemL(text="Lock:")
row.label(text="Lock:")
row = split.row()
row.itemR(con, "pos_lock_x", text="X")
row.itemR(con, "pos_lock_y", text="Y")
row.itemR(con, "pos_lock_z", text="Z")
row.prop(con, "pos_lock_x", text="X")
row.prop(con, "pos_lock_y", text="Y")
row.prop(con, "pos_lock_z", text="Z")
split.active = con.position
split = layout.split(percentage=0.33)
split.row().itemR(con, "rotation")
split.row().prop(con, "rotation")
row = split.row()
row.itemR(con, "orient_weight", text="Weight", slider=True)
row.prop(con, "orient_weight", text="Weight", slider=True)
row.active = con.rotation
split = layout.split(percentage=0.33)
row = split.row()
row.itemL(text="Lock:")
row.label(text="Lock:")
row = split.row()
row.itemR(con, "rot_lock_x", text="X")
row.itemR(con, "rot_lock_y", text="Y")
row.itemR(con, "rot_lock_z", text="Z")
row.prop(con, "rot_lock_x", text="X")
row.prop(con, "rot_lock_y", text="Y")
row.prop(con, "rot_lock_z", text="Z")
split.active = con.rotation
def IK_DISTANCE(self, context, layout, con, wide_ui):
self.target_template(layout, con, wide_ui)
self.ik_template(layout, con, wide_ui)
layout.itemR(con, "limit_mode")
layout.prop(con, "limit_mode")
row = layout.row()
row.itemR(con, "weight", text="Weight", slider=True)
row.itemR(con, "distance", text="Distance", slider=True)
row.prop(con, "weight", text="Weight", slider=True)
row.prop(con, "distance", text="Distance", slider=True)
def FOLLOW_PATH(self, context, layout, con, wide_ui):
self.target_template(layout, con, wide_ui)
@@ -248,153 +248,153 @@ class ConstraintButtonsPanel(bpy.types.Panel):
split = layout.split()
col = split.column()
col.itemR(con, "use_curve_follow")
col.itemR(con, "use_curve_radius")
col.prop(con, "use_curve_follow")
col.prop(con, "use_curve_radius")
if wide_ui:
col = split.column()
col.itemR(con, "use_fixed_position")
col.prop(con, "use_fixed_position")
if con.use_fixed_position:
col.itemR(con, "offset_factor", text="Offset")
col.prop(con, "offset_factor", text="Offset")
else:
col.itemR(con, "offset")
col.prop(con, "offset")
row = layout.row()
if wide_ui:
row.itemL(text="Forward:")
row.itemR(con, "forward", expand=True)
row.label(text="Forward:")
row.prop(con, "forward", expand=True)
row = layout.row()
row.itemR(con, "up", text="Up")
row.prop(con, "up", text="Up")
if wide_ui:
row.itemL()
row.label()
def LIMIT_ROTATION(self, context, layout, con, wide_ui):
split = layout.split()
col = split.column(align=True)
col.itemR(con, "use_limit_x")
col.prop(con, "use_limit_x")
sub = col.column()
sub.active = con.use_limit_x
sub.itemR(con, "minimum_x", text="Min")
sub.itemR(con, "maximum_x", text="Max")
sub.prop(con, "minimum_x", text="Min")
sub.prop(con, "maximum_x", text="Max")
if wide_ui:
col = split.column(align=True)
col.itemR(con, "use_limit_y")
col.prop(con, "use_limit_y")
sub = col.column()
sub.active = con.use_limit_y
sub.itemR(con, "minimum_y", text="Min")
sub.itemR(con, "maximum_y", text="Max")
sub.prop(con, "minimum_y", text="Min")
sub.prop(con, "maximum_y", text="Max")
if wide_ui:
col = split.column(align=True)
col.itemR(con, "use_limit_z")
col.prop(con, "use_limit_z")
sub = col.column()
sub.active = con.use_limit_z
sub.itemR(con, "minimum_z", text="Min")
sub.itemR(con, "maximum_z", text="Max")
sub.prop(con, "minimum_z", text="Min")
sub.prop(con, "maximum_z", text="Max")
row = layout.row()
row.itemR(con, "limit_transform")
row.prop(con, "limit_transform")
if wide_ui:
row.itemL()
row.label()
row = layout.row()
if wide_ui:
row.itemL(text="Convert:")
row.itemR(con, "owner_space", text="")
row.label(text="Convert:")
row.prop(con, "owner_space", text="")
def LIMIT_LOCATION(self, context, layout, con, wide_ui):
split = layout.split()
col = split.column()
col.itemR(con, "use_minimum_x")
col.prop(con, "use_minimum_x")
sub = col.column()
sub.active = con.use_minimum_x
sub.itemR(con, "minimum_x", text="")
col.itemR(con, "use_maximum_x")
sub.prop(con, "minimum_x", text="")
col.prop(con, "use_maximum_x")
sub = col.column()
sub.active = con.use_maximum_x
sub.itemR(con, "maximum_x", text="")
sub.prop(con, "maximum_x", text="")
if wide_ui:
col = split.column()
col.itemR(con, "use_minimum_y")
col.prop(con, "use_minimum_y")
sub = col.column()
sub.active = con.use_minimum_y
sub.itemR(con, "minimum_y", text="")
col.itemR(con, "use_maximum_y")
sub.prop(con, "minimum_y", text="")
col.prop(con, "use_maximum_y")
sub = col.column()
sub.active = con.use_maximum_y
sub.itemR(con, "maximum_y", text="")
sub.prop(con, "maximum_y", text="")
if wide_ui:
col = split.column()
col.itemR(con, "use_minimum_z")
col.prop(con, "use_minimum_z")
sub = col.column()
sub.active = con.use_minimum_z
sub.itemR(con, "minimum_z", text="")
col.itemR(con, "use_maximum_z")
sub.prop(con, "minimum_z", text="")
col.prop(con, "use_maximum_z")
sub = col.column()
sub.active = con.use_maximum_z
sub.itemR(con, "maximum_z", text="")
sub.prop(con, "maximum_z", text="")
row = layout.row()
row.itemR(con, "limit_transform")
row.prop(con, "limit_transform")
if wide_ui:
row.itemL()
row.label()
row = layout.row()
if wide_ui:
row.itemL(text="Convert:")
row.itemR(con, "owner_space", text="")
row.label(text="Convert:")
row.prop(con, "owner_space", text="")
def LIMIT_SCALE(self, context, layout, con, wide_ui):
split = layout.split()
col = split.column()
col.itemR(con, "use_minimum_x")
col.prop(con, "use_minimum_x")
sub = col.column()
sub.active = con.use_minimum_x
sub.itemR(con, "minimum_x", text="")
col.itemR(con, "use_maximum_x")
sub.prop(con, "minimum_x", text="")
col.prop(con, "use_maximum_x")
sub = col.column()
sub.active = con.use_maximum_x
sub.itemR(con, "maximum_x", text="")
sub.prop(con, "maximum_x", text="")
if wide_ui:
col = split.column()
col.itemR(con, "use_minimum_y")
col.prop(con, "use_minimum_y")
sub = col.column()
sub.active = con.use_minimum_y
sub.itemR(con, "minimum_y", text="")
col.itemR(con, "use_maximum_y")
sub.prop(con, "minimum_y", text="")
col.prop(con, "use_maximum_y")
sub = col.column()
sub.active = con.use_maximum_y
sub.itemR(con, "maximum_y", text="")
sub.prop(con, "maximum_y", text="")
if wide_ui:
col = split.column()
col.itemR(con, "use_minimum_z")
col.prop(con, "use_minimum_z")
sub = col.column()
sub.active = con.use_minimum_z
sub.itemR(con, "minimum_z", text="")
col.itemR(con, "use_maximum_z")
sub.prop(con, "minimum_z", text="")
col.prop(con, "use_maximum_z")
sub = col.column()
sub.active = con.use_maximum_z
sub.itemR(con, "maximum_z", text="")
sub.prop(con, "maximum_z", text="")
row = layout.row()
row.itemR(con, "limit_transform")
row.prop(con, "limit_transform")
if wide_ui:
row.itemL()
row.label()
row = layout.row()
if wide_ui:
row.itemL(text="Convert:")
row.itemR(con, "owner_space", text="")
row.label(text="Convert:")
row.prop(con, "owner_space", text="")
def COPY_ROTATION(self, context, layout, con, wide_ui):
self.target_template(layout, con, wide_ui)
@@ -402,24 +402,24 @@ class ConstraintButtonsPanel(bpy.types.Panel):
split = layout.split()
col = split.column()
col.itemR(con, "rotate_like_x", text="X")
col.prop(con, "rotate_like_x", text="X")
sub = col.column()
sub.active = con.rotate_like_x
sub.itemR(con, "invert_x", text="Invert")
sub.prop(con, "invert_x", text="Invert")
col = split.column()
col.itemR(con, "rotate_like_y", text="Y")
col.prop(con, "rotate_like_y", text="Y")
sub = col.column()
sub.active = con.rotate_like_y
sub.itemR(con, "invert_y", text="Invert")
sub.prop(con, "invert_y", text="Invert")
col = split.column()
col.itemR(con, "rotate_like_z", text="Z")
col.prop(con, "rotate_like_z", text="Z")
sub = col.column()
sub.active = con.rotate_like_z
sub.itemR(con, "invert_z", text="Invert")
sub.prop(con, "invert_z", text="Invert")
layout.itemR(con, "offset")
layout.prop(con, "offset")
self.space_template(layout, con, wide_ui)
@@ -429,24 +429,24 @@ class ConstraintButtonsPanel(bpy.types.Panel):
split = layout.split()
col = split.column()
col.itemR(con, "locate_like_x", text="X")
col.prop(con, "locate_like_x", text="X")
sub = col.column()
sub.active = con.locate_like_x
sub.itemR(con, "invert_x", text="Invert")
sub.prop(con, "invert_x", text="Invert")
col = split.column()
col.itemR(con, "locate_like_y", text="Y")
col.prop(con, "locate_like_y", text="Y")
sub = col.column()
sub.active = con.locate_like_y
sub.itemR(con, "invert_y", text="Invert")
sub.prop(con, "invert_y", text="Invert")
col = split.column()
col.itemR(con, "locate_like_z", text="Z")
col.prop(con, "locate_like_z", text="Z")
sub = col.column()
sub.active = con.locate_like_z
sub.itemR(con, "invert_z", text="Invert")
sub.prop(con, "invert_z", text="Invert")
layout.itemR(con, "offset")
layout.prop(con, "offset")
self.space_template(layout, con, wide_ui)
@@ -454,11 +454,11 @@ class ConstraintButtonsPanel(bpy.types.Panel):
self.target_template(layout, con, wide_ui)
row = layout.row(align=True)
row.itemR(con, "size_like_x", text="X")
row.itemR(con, "size_like_y", text="Y")
row.itemR(con, "size_like_z", text="Z")
row.prop(con, "size_like_x", text="X")
row.prop(con, "size_like_y", text="Y")
row.prop(con, "size_like_z", text="Z")
layout.itemR(con, "offset")
layout.prop(con, "offset")
self.space_template(layout, con, wide_ui)
@@ -468,56 +468,56 @@ class ConstraintButtonsPanel(bpy.types.Panel):
self.target_template(layout, con, wide_ui)
if wide_ui:
layout.itemR(con, "action")
layout.prop(con, "action")
else:
layout.itemR(con, "action", text="")
layout.prop(con, "action", text="")
if wide_ui:
layout.itemR(con, "transform_channel")
layout.prop(con, "transform_channel")
else:
layout.itemR(con, "transform_channel", text="")
layout.prop(con, "transform_channel", text="")
split = layout.split()
col = split.column(align=True)
col.itemL(text="Action Length:")
col.itemR(con, "start_frame", text="Start")
col.itemR(con, "end_frame", text="End")
col.label(text="Action Length:")
col.prop(con, "start_frame", text="Start")
col.prop(con, "end_frame", text="End")
if wide_ui:
col = split.column(align=True)
col.itemL(text="Target Range:")
col.itemR(con, "minimum", text="Min")
col.itemR(con, "maximum", text="Max")
col.label(text="Target Range:")
col.prop(con, "minimum", text="Min")
col.prop(con, "maximum", text="Max")
row = layout.row()
if wide_ui:
row.itemL(text="Convert:")
row.itemR(con, "target_space", text="")
row.label(text="Convert:")
row.prop(con, "target_space", text="")
def LOCKED_TRACK(self, context, layout, con, wide_ui):
self.target_template(layout, con, wide_ui)
row = layout.row()
if wide_ui:
row.itemL(text="To:")
row.itemR(con, "track", expand=True)
row.label(text="To:")
row.prop(con, "track", expand=True)
row = layout.row()
if wide_ui:
row.itemL(text="Lock:")
row.itemR(con, "locked", expand=True)
row.label(text="Lock:")
row.prop(con, "locked", expand=True)
def LIMIT_DISTANCE(self, context, layout, con, wide_ui):
self.target_template(layout, con, wide_ui)
col = layout.column(align=True)
col.itemR(con, "distance")
col.itemO("constraint.limitdistance_reset")
col.prop(con, "distance")
col.operator("constraint.limitdistance_reset")
row = layout.row()
row.itemL(text="Clamp Region:")
row.itemR(con, "limit_mode", text="")
row.label(text="Clamp Region:")
row.prop(con, "limit_mode", text="")
def STRETCH_TO(self, context, layout, con, wide_ui):
self.target_template(layout, con, wide_ui)
@@ -525,23 +525,23 @@ class ConstraintButtonsPanel(bpy.types.Panel):
split = layout.split()
col = split.column()
col.itemR(con, "original_length", text="Rest Length")
col.prop(con, "original_length", text="Rest Length")
if wide_ui:
col = split.column()
col.itemO("constraint.stretchto_reset", text="Reset")
col.operator("constraint.stretchto_reset", text="Reset")
col = layout.column()
col.itemR(con, "bulge", text="Volume Variation")
col.prop(con, "bulge", text="Volume Variation")
row = layout.row()
if wide_ui:
row.itemL(text="Volume:")
row.itemR(con, "volume", expand=True)
row.label(text="Volume:")
row.prop(con, "volume", expand=True)
if not wide_ui:
row = layout.row()
row.itemL(text="Plane:")
row.itemR(con, "keep_axis", expand=True)
row.label(text="Plane:")
row.prop(con, "keep_axis", expand=True)
def FLOOR(self, context, layout, con, wide_ui):
self.target_template(layout, con, wide_ui)
@@ -549,54 +549,54 @@ class ConstraintButtonsPanel(bpy.types.Panel):
split = layout.split()
col = split.column()
col.itemR(con, "sticky")
col.prop(con, "sticky")
if wide_ui:
col = split.column()
col.itemR(con, "use_rotation")
col.prop(con, "use_rotation")
layout.itemR(con, "offset")
layout.prop(con, "offset")
row = layout.row()
if wide_ui:
row.itemL(text="Min/Max:")
row.itemR(con, "floor_location", expand=True)
row.label(text="Min/Max:")
row.prop(con, "floor_location", expand=True)
def RIGID_BODY_JOINT(self, context, layout, con, wide_ui):
self.target_template(layout, con, wide_ui)
if wide_ui:
layout.itemR(con, "pivot_type")
layout.prop(con, "pivot_type")
else:
layout.itemR(con, "pivot_type", text="")
layout.prop(con, "pivot_type", text="")
if wide_ui:
layout.itemR(con, "child")
layout.prop(con, "child")
else:
layout.itemR(con, "child", text="")
layout.prop(con, "child", text="")
split = layout.split()
col = split.column()
col.itemR(con, "disable_linked_collision", text="No Collision")
col.prop(con, "disable_linked_collision", text="No Collision")
if wide_ui:
col = split.column()
col.itemR(con, "draw_pivot", text="Display Pivot")
col.prop(con, "draw_pivot", text="Display Pivot")
split = layout.split()
col = split.column(align=True)
col.itemL(text="Pivot:")
col.itemR(con, "pivot_x", text="X")
col.itemR(con, "pivot_y", text="Y")
col.itemR(con, "pivot_z", text="Z")
col.label(text="Pivot:")
col.prop(con, "pivot_x", text="X")
col.prop(con, "pivot_y", text="Y")
col.prop(con, "pivot_z", text="Z")
if wide_ui:
col = split.column(align=True)
col.itemL(text="Axis:")
col.itemR(con, "axis_x", text="X")
col.itemR(con, "axis_y", text="Y")
col.itemR(con, "axis_z", text="Z")
col.label(text="Axis:")
col.prop(con, "axis_x", text="X")
col.prop(con, "axis_y", text="Y")
col.prop(con, "axis_z", text="Z")
#Missing: Limit arrays (not wrapped in RNA yet)
@@ -605,113 +605,113 @@ class ConstraintButtonsPanel(bpy.types.Panel):
row = layout.row()
if wide_ui:
row.itemL(text="Main Axis:")
row.itemR(con, "main_axis", expand=True)
row.label(text="Main Axis:")
row.prop(con, "main_axis", expand=True)
row = layout.row()
row.itemR(con, "cyclic")
row.prop(con, "cyclic")
def TRANSFORM(self, context, layout, con, wide_ui):
self.target_template(layout, con, wide_ui)
layout.itemR(con, "extrapolate_motion", text="Extrapolate")
layout.prop(con, "extrapolate_motion", text="Extrapolate")
col = layout.column()
col.row().itemL(text="Source:")
col.row().itemR(con, "map_from", expand=True)
col.row().label(text="Source:")
col.row().prop(con, "map_from", expand=True)
split = layout.split()
sub = split.column(align=True)
sub.itemL(text="X:")
sub.itemR(con, "from_min_x", text="Min")
sub.itemR(con, "from_max_x", text="Max")
sub.label(text="X:")
sub.prop(con, "from_min_x", text="Min")
sub.prop(con, "from_max_x", text="Max")
if wide_ui:
sub = split.column(align=True)
sub.itemL(text="Y:")
sub.itemR(con, "from_min_y", text="Min")
sub.itemR(con, "from_max_y", text="Max")
sub.label(text="Y:")
sub.prop(con, "from_min_y", text="Min")
sub.prop(con, "from_max_y", text="Max")
if wide_ui:
sub = split.column(align=True)
sub.itemL(text="Z:")
sub.itemR(con, "from_min_z", text="Min")
sub.itemR(con, "from_max_z", text="Max")
sub.label(text="Z:")
sub.prop(con, "from_min_z", text="Min")
sub.prop(con, "from_max_z", text="Max")
split = layout.split()
col = split.column()
col.itemL(text="Destination:")
col.row().itemR(con, "map_to", expand=True)
col.label(text="Destination:")
col.row().prop(con, "map_to", expand=True)
split = layout.split()
col = split.column()
col.itemL(text="X:")
col.row().itemR(con, "map_to_x_from", expand=True)
col.label(text="X:")
col.row().prop(con, "map_to_x_from", expand=True)
sub = col.column(align=True)
sub.itemR(con, "to_min_x", text="Min")
sub.itemR(con, "to_max_x", text="Max")
sub.prop(con, "to_min_x", text="Min")
sub.prop(con, "to_max_x", text="Max")
if wide_ui:
col = split.column()
col.itemL(text="Y:")
col.row().itemR(con, "map_to_y_from", expand=True)
col.label(text="Y:")
col.row().prop(con, "map_to_y_from", expand=True)
sub = col.column(align=True)
sub.itemR(con, "to_min_y", text="Min")
sub.itemR(con, "to_max_y", text="Max")
sub.prop(con, "to_min_y", text="Min")
sub.prop(con, "to_max_y", text="Max")
if wide_ui:
col = split.column()
col.itemL(text="Z:")
col.row().itemR(con, "map_to_z_from", expand=True)
col.label(text="Z:")
col.row().prop(con, "map_to_z_from", expand=True)
sub = col.column(align=True)
sub.itemR(con, "to_min_z", text="Min")
sub.itemR(con, "to_max_z", text="Max")
sub.prop(con, "to_min_z", text="Min")
sub.prop(con, "to_max_z", text="Max")
self.space_template(layout, con, wide_ui)
def SHRINKWRAP(self, context, layout, con, wide_ui):
self.target_template(layout, con, wide_ui)
layout.itemR(con, "distance")
layout.itemR(con, "shrinkwrap_type")
layout.prop(con, "distance")
layout.prop(con, "shrinkwrap_type")
if con.shrinkwrap_type == 'PROJECT':
row = layout.row(align=True)
row.itemR(con, "axis_x")
row.itemR(con, "axis_y")
row.itemR(con, "axis_z")
row.prop(con, "axis_x")
row.prop(con, "axis_y")
row.prop(con, "axis_z")
def DAMPED_TRACK(self, context, layout, con, wide_ui):
self.target_template(layout, con, wide_ui)
row = layout.row()
if wide_ui:
row.itemL(text="To:")
row.itemR(con, "track", expand=True)
row.label(text="To:")
row.prop(con, "track", expand=True)
def SPLINE_IK(self, context, layout, con, wide_ui):
self.target_template(layout, con, wide_ui)
col = layout.column()
col.itemL(text="Spline Fitting:")
col.itemR(con, "chain_length")
col.itemR(con, "even_divisions")
col.itemR(con, "chain_offset")
col.label(text="Spline Fitting:")
col.prop(con, "chain_length")
col.prop(con, "even_divisions")
col.prop(con, "chain_offset")
col = layout.column()
col.itemL(text="Chain Scaling:")
col.itemR(con, "y_stretch")
col.label(text="Chain Scaling:")
col.prop(con, "y_stretch")
if wide_ui:
col.itemR(con, "xz_scaling_mode")
col.prop(con, "xz_scaling_mode")
else:
col.itemR(con, "xz_scaling_mode", text="")
col.itemR(con, "use_curve_radius")
col.prop(con, "xz_scaling_mode", text="")
col.prop(con, "use_curve_radius")
class OBJECT_PT_constraints(ConstraintButtonsPanel):
@@ -727,9 +727,9 @@ class OBJECT_PT_constraints(ConstraintButtonsPanel):
wide_ui = context.region.width > narrowui
row = layout.row()
row.item_menu_enumO("object.constraint_add", "type")
row.operator_menu_enum("object.constraint_add", "type")
if wide_ui:
row.itemL()
row.label()
for con in ob.constraints:
self.draw_constraint(context, con)
@@ -759,12 +759,12 @@ class BONE_PT_inverse_kinematics(ConstraintButtonsPanel):
wide_ui = context.region.width > narrowui
row = layout.row()
row.itemR(ob.pose, "ik_solver")
row.prop(ob.pose, "ik_solver")
split = layout.split(percentage=0.25)
split.itemR(pchan, "ik_dof_x", text="X")
split.prop(pchan, "ik_dof_x", text="X")
row = split.row()
row.itemR(pchan, "ik_stiffness_x", text="Stiffness", slider=True)
row.prop(pchan, "ik_stiffness_x", text="Stiffness", slider=True)
row.active = pchan.ik_dof_x
if wide_ui:
@@ -772,18 +772,18 @@ class BONE_PT_inverse_kinematics(ConstraintButtonsPanel):
sub = split.row()
else:
sub = layout.column(align=True)
sub.itemR(pchan, "ik_limit_x", text="Limit")
sub.prop(pchan, "ik_limit_x", text="Limit")
sub.active = pchan.ik_dof_x
if wide_ui:
sub = split.row(align=True)
sub.itemR(pchan, "ik_min_x", text="")
sub.itemR(pchan, "ik_max_x", text="")
sub.prop(pchan, "ik_min_x", text="")
sub.prop(pchan, "ik_max_x", text="")
sub.active = pchan.ik_dof_x and pchan.ik_limit_x
split = layout.split(percentage=0.25)
split.itemR(pchan, "ik_dof_y", text="Y")
split.prop(pchan, "ik_dof_y", text="Y")
row = split.row()
row.itemR(pchan, "ik_stiffness_y", text="Stiffness", slider=True)
row.prop(pchan, "ik_stiffness_y", text="Stiffness", slider=True)
row.active = pchan.ik_dof_y
if wide_ui:
@@ -791,18 +791,18 @@ class BONE_PT_inverse_kinematics(ConstraintButtonsPanel):
sub = split.row()
else:
sub = layout.column(align=True)
sub.itemR(pchan, "ik_limit_y", text="Limit")
sub.prop(pchan, "ik_limit_y", text="Limit")
sub.active = pchan.ik_dof_y
if wide_ui:
sub = split.row(align=True)
sub.itemR(pchan, "ik_min_y", text="")
sub.itemR(pchan, "ik_max_y", text="")
sub.prop(pchan, "ik_min_y", text="")
sub.prop(pchan, "ik_max_y", text="")
sub.active = pchan.ik_dof_y and pchan.ik_limit_y
split = layout.split(percentage=0.25)
split.itemR(pchan, "ik_dof_z", text="Z")
split.prop(pchan, "ik_dof_z", text="Z")
sub = split.row()
sub.itemR(pchan, "ik_stiffness_z", text="Stiffness", slider=True)
sub.prop(pchan, "ik_stiffness_z", text="Stiffness", slider=True)
sub.active = pchan.ik_dof_z
if wide_ui:
@@ -810,29 +810,29 @@ class BONE_PT_inverse_kinematics(ConstraintButtonsPanel):
sub = split.row()
else:
sub = layout.column(align=True)
sub.itemR(pchan, "ik_limit_z", text="Limit")
sub.prop(pchan, "ik_limit_z", text="Limit")
sub.active = pchan.ik_dof_z
if wide_ui:
sub = split.row(align=True)
sub.itemR(pchan, "ik_min_z", text="")
sub.itemR(pchan, "ik_max_z", text="")
sub.prop(pchan, "ik_min_z", text="")
sub.prop(pchan, "ik_max_z", text="")
sub.active = pchan.ik_dof_z and pchan.ik_limit_z
split = layout.split()
split.itemR(pchan, "ik_stretch", text="Stretch", slider=True)
split.prop(pchan, "ik_stretch", text="Stretch", slider=True)
if wide_ui:
split.itemL()
split.label()
if ob.pose.ik_solver == 'ITASC':
split = layout.split()
col = split.column()
col.itemR(pchan, "ik_rot_control", text="Control Rotation")
col.prop(pchan, "ik_rot_control", text="Control Rotation")
if wide_ui:
col = split.column()
col.itemR(pchan, "ik_rot_weight", text="Weight", slider=True)
col.prop(pchan, "ik_rot_weight", text="Weight", slider=True)
# not supported yet
#row = layout.row()
#row.itemR(pchan, "ik_lin_control", text="Joint Size")
#row.itemR(pchan, "ik_lin_weight", text="Weight", slider=True)
#row.prop(pchan, "ik_lin_control", text="Joint Size")
#row.prop(pchan, "ik_lin_weight", text="Weight", slider=True)
class BONE_PT_iksolver_itasc(ConstraintButtonsPanel):
@@ -857,39 +857,39 @@ class BONE_PT_iksolver_itasc(ConstraintButtonsPanel):
itasc = ob.pose.ik_param
wide_ui = context.region.width > narrowui
layout.itemR(itasc, "mode", expand=True)
layout.prop(itasc, "mode", expand=True)
simulation = itasc.mode == 'SIMULATION'
if simulation:
layout.itemL(text="Reiteration:")
layout.itemR(itasc, "reiteration", expand=True)
layout.label(text="Reiteration:")
layout.prop(itasc, "reiteration", expand=True)
split = layout.split()
split.active = not simulation or itasc.reiteration != 'NEVER'
col = split.column()
col.itemR(itasc, "precision")
col.prop(itasc, "precision")
if wide_ui:
col = split.column()
col.itemR(itasc, "num_iter")
col.prop(itasc, "num_iter")
if simulation:
layout.itemR(itasc, "auto_step")
layout.prop(itasc, "auto_step")
row = layout.row()
if itasc.auto_step:
row.itemR(itasc, "min_step", text="Min")
row.itemR(itasc, "max_step", text="Max")
row.prop(itasc, "min_step", text="Min")
row.prop(itasc, "max_step", text="Max")
else:
row.itemR(itasc, "num_step")
row.prop(itasc, "num_step")
layout.itemR(itasc, "solver")
layout.prop(itasc, "solver")
if simulation:
layout.itemR(itasc, "feedback")
layout.itemR(itasc, "max_velocity")
layout.prop(itasc, "feedback")
layout.prop(itasc, "max_velocity")
if itasc.solver == 'DLS':
row = layout.row()
row.itemR(itasc, "dampmax", text="Damp", slider=True)
row.itemR(itasc, "dampeps", text="Eps", slider=True)
row.prop(itasc, "dampmax", text="Damp", slider=True)
row.prop(itasc, "dampeps", text="Eps", slider=True)
class BONE_PT_constraints(ConstraintButtonsPanel):
@@ -908,9 +908,9 @@ class BONE_PT_constraints(ConstraintButtonsPanel):
wide_ui = context.region.width > narrowui
row = layout.row()
row.item_menu_enumO("pose.constraint_add", "type")
row.operator_menu_enum("pose.constraint_add", "type")
if wide_ui:
row.itemL()
row.label()
for con in pchan.constraints:
self.draw_constraint(context, con)

View File

@@ -66,68 +66,68 @@ class PARTICLE_PT_particles(ParticleButtonsPanel):
row.template_list(ob, "particle_systems", ob, "active_particle_system_index", rows=2)
col = row.column(align=True)
col.itemO("object.particle_system_add", icon='ICON_ZOOMIN', text="")
col.itemO("object.particle_system_remove", icon='ICON_ZOOMOUT', text="")
col.operator("object.particle_system_add", icon='ICON_ZOOMIN', text="")
col.operator("object.particle_system_remove", icon='ICON_ZOOMOUT', text="")
if psys and not psys.settings:
split = layout.split(percentage=0.32)
col = split.column()
col.itemL(text="Name:")
col.itemL(text="Settings:")
col.label(text="Name:")
col.label(text="Settings:")
col = split.column()
col.itemR(psys, "name", text="")
col.prop(psys, "name", text="")
col.template_ID(psys, "settings", new="particle.new")
elif psys:
part = psys.settings
split = layout.split(percentage=0.32)
col = split.column()
col.itemL(text="Name:")
col.label(text="Name:")
if part.type in ('EMITTER', 'REACTOR', 'HAIR'):
col.itemL(text="Settings:")
col.itemL(text="Type:")
col.label(text="Settings:")
col.label(text="Type:")
col = split.column()
col.itemR(psys, "name", text="")
col.prop(psys, "name", text="")
if part.type in ('EMITTER', 'REACTOR', 'HAIR'):
col.template_ID(psys, "settings", new="particle.new")
#row = layout.row()
#row.itemL(text="Viewport")
#row.itemL(text="Render")
#row.label(text="Viewport")
#row.label(text="Render")
if part:
if part.type not in ('EMITTER', 'REACTOR', 'HAIR'):
layout.itemL(text="No settings for fluid particles")
layout.label(text="No settings for fluid particles")
return
row = col.row()
row.enabled = particle_panel_enabled(context, psys)
row.itemR(part, "type", text="")
row.itemR(psys, "seed")
row.prop(part, "type", text="")
row.prop(psys, "seed")
split = layout.split(percentage=0.65)
if part.type == 'HAIR':
if psys.edited:
split.itemO("particle.edited_clear", text="Free Edit")
split.operator("particle.edited_clear", text="Free Edit")
else:
split.itemL(text="")
split.label(text="")
row = split.row()
row.enabled = particle_panel_enabled(context, psys)
row.itemR(part, "hair_step")
row.prop(part, "hair_step")
if psys.edited:
if psys.global_hair:
layout.itemO("particle.connect_hair")
layout.itemL(text="Hair is disconnected.")
layout.operator("particle.connect_hair")
layout.label(text="Hair is disconnected.")
else:
layout.itemO("particle.disconnect_hair")
layout.itemL(text="")
layout.operator("particle.disconnect_hair")
layout.label(text="")
elif part.type == 'REACTOR':
split.enabled = particle_panel_enabled(context, psys)
split.itemR(psys, "reactor_target_object")
split.itemR(psys, "reactor_target_particle_system", text="Particle System")
split.prop(psys, "reactor_target_object")
split.prop(psys, "reactor_target_particle_system", text="Particle System")
class PARTICLE_PT_emission(ParticleButtonsPanel):
@@ -149,39 +149,39 @@ class PARTICLE_PT_emission(ParticleButtonsPanel):
row = layout.row()
row.active = part.distribution != 'GRID'
row.itemR(part, "amount")
row.prop(part, "amount")
if part.type != 'HAIR':
split = layout.split()
col = split.column(align=True)
col.itemR(part, "start")
col.itemR(part, "end")
col.prop(part, "start")
col.prop(part, "end")
col = split.column(align=True)
col.itemR(part, "lifetime")
col.itemR(part, "random_lifetime", slider=True)
col.prop(part, "lifetime")
col.prop(part, "random_lifetime", slider=True)
layout.row().itemL(text="Emit From:")
layout.row().label(text="Emit From:")
row = layout.row()
row.itemR(part, "emit_from", expand=True)
row.prop(part, "emit_from", expand=True)
row = layout.row()
row.itemR(part, "trand")
row.prop(part, "trand")
if part.distribution != 'GRID':
row.itemR(part, "even_distribution")
row.prop(part, "even_distribution")
if part.emit_from == 'FACE' or part.emit_from == 'VOLUME':
row = layout.row()
row.itemR(part, "distribution", expand=True)
row.prop(part, "distribution", expand=True)
row = layout.row()
if part.distribution == 'JIT':
row.itemR(part, "userjit", text="Particles/Face")
row.itemR(part, "jitter_factor", text="Jittering Amount", slider=True)
row.prop(part, "userjit", text="Particles/Face")
row.prop(part, "jitter_factor", text="Jittering Amount", slider=True)
elif part.distribution == 'GRID':
row.itemR(part, "grid_resolution")
row.prop(part, "grid_resolution")
class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel):
@@ -200,9 +200,9 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel):
#cloth = context.cloth.collision_settings
#self.layout.active = cloth_panel_enabled(context.cloth)
#self.layout.itemR(cloth, "enable_collision", text="")
#self.layout.prop(cloth, "enable_collision", text="")
psys = context.particle_system
self.layout.itemR(psys, "hair_dynamics", text="")
self.layout.prop(psys, "hair_dynamics", text="")
def draw(self, context):
layout = self.layout
@@ -216,22 +216,22 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Material:")
col.label(text="Material:")
sub = col.column(align=True)
sub.itemR(cloth, "pin_stiffness", text="Stiffness")
sub.itemR(cloth, "mass")
sub.itemR(cloth, "bending_stiffness", text="Bending")
sub.itemR(cloth, "internal_friction", slider=True)
sub.prop(cloth, "pin_stiffness", text="Stiffness")
sub.prop(cloth, "mass")
sub.prop(cloth, "bending_stiffness", text="Bending")
sub.prop(cloth, "internal_friction", slider=True)
col = split.column()
col.itemL(text="Damping:")
col.label(text="Damping:")
sub = col.column(align=True)
sub.itemR(cloth, "spring_damping", text="Spring")
sub.itemR(cloth, "air_damping", text="Air")
sub.prop(cloth, "spring_damping", text="Spring")
sub.prop(cloth, "air_damping", text="Air")
col.itemL(text="Quality:")
col.itemR(cloth, "quality", text="Steps", slider=True)
col.label(text="Quality:")
col.prop(cloth, "quality", text="Steps", slider=True)
class PARTICLE_PT_cache(ParticleButtonsPanel):
@@ -277,29 +277,29 @@ class PARTICLE_PT_velocity(ParticleButtonsPanel):
split = layout.split()
sub = split.column()
sub.itemL(text="Emitter Geometry:")
sub.itemR(part, "normal_factor")
sub.label(text="Emitter Geometry:")
sub.prop(part, "normal_factor")
subsub = sub.column(align=True)
subsub.itemR(part, "tangent_factor")
subsub.itemR(part, "tangent_phase", slider=True)
subsub.prop(part, "tangent_factor")
subsub.prop(part, "tangent_phase", slider=True)
sub = split.column()
sub.itemL(text="Emitter Object")
sub.itemR(part, "object_aligned_factor", text="")
sub.label(text="Emitter Object")
sub.prop(part, "object_aligned_factor", text="")
layout.row().itemL(text="Other:")
layout.row().label(text="Other:")
split = layout.split()
sub = split.column()
if part.emit_from == 'PARTICLE':
sub.itemR(part, "particle_factor")
sub.prop(part, "particle_factor")
else:
sub.itemR(part, "object_factor", slider=True)
sub.prop(part, "object_factor", slider=True)
sub = split.column()
sub.itemR(part, "random_factor")
sub.prop(part, "random_factor")
#if part.type=='REACTOR':
# sub.itemR(part, "reactor_factor")
# sub.itemR(part, "reaction_shape", slider=True)
# sub.prop(part, "reactor_factor")
# sub.prop(part, "reaction_shape", slider=True)
class PARTICLE_PT_rotation(ParticleButtonsPanel):
@@ -321,25 +321,25 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel):
layout.enabled = particle_panel_enabled(context, psys)
split = layout.split()
split.itemL(text="Initial Rotation:")
split.itemR(part, "rotation_dynamic")
split.label(text="Initial Rotation:")
split.prop(part, "rotation_dynamic")
split = layout.split()
sub = split.column(align=True)
sub.itemR(part, "rotation_mode", text="")
sub.itemR(part, "random_rotation_factor", slider=True, text="Random")
sub.prop(part, "rotation_mode", text="")
sub.prop(part, "random_rotation_factor", slider=True, text="Random")
sub = split.column(align=True)
sub.itemR(part, "phase_factor", slider=True)
sub.itemR(part, "random_phase_factor", text="Random", slider=True)
sub.prop(part, "phase_factor", slider=True)
sub.prop(part, "random_phase_factor", text="Random", slider=True)
layout.row().itemL(text="Angular Velocity:")
layout.row().itemR(part, "angular_velocity_mode", expand=True)
layout.row().label(text="Angular Velocity:")
layout.row().prop(part, "angular_velocity_mode", expand=True)
split = layout.split()
sub = split.column()
sub.itemR(part, "angular_velocity_factor", text="")
sub.prop(part, "angular_velocity_factor", text="")
class PARTICLE_PT_physics(ParticleButtonsPanel):
@@ -360,29 +360,29 @@ class PARTICLE_PT_physics(ParticleButtonsPanel):
layout.enabled = particle_panel_enabled(context, psys)
row = layout.row()
row.itemR(part, "physics_type", expand=True)
row.prop(part, "physics_type", expand=True)
if part.physics_type != 'NO':
row = layout.row()
col = row.column(align=True)
col.itemR(part, "particle_size")
col.itemR(part, "random_size", slider=True)
col.prop(part, "particle_size")
col.prop(part, "random_size", slider=True)
col = row.column(align=True)
col.itemR(part, "mass")
col.itemR(part, "sizemass", text="Multiply mass with size")
col.prop(part, "mass")
col.prop(part, "sizemass", text="Multiply mass with size")
if part.physics_type == 'NEWTON':
split = layout.split()
sub = split.column()
sub.itemL(text="Forces:")
sub.itemR(part, "brownian_factor")
sub.itemR(part, "drag_factor", slider=True)
sub.itemR(part, "damp_factor", slider=True)
sub.label(text="Forces:")
sub.prop(part, "brownian_factor")
sub.prop(part, "drag_factor", slider=True)
sub.prop(part, "damp_factor", slider=True)
sub = split.column()
sub.itemR(part, "size_deflect")
sub.itemR(part, "die_on_collision")
sub.itemR(part, "integrator")
sub.itemR(part, "time_tweak")
sub.prop(part, "size_deflect")
sub.prop(part, "die_on_collision")
sub.prop(part, "integrator")
sub.prop(part, "time_tweak")
elif part.physics_type == 'KEYED':
split = layout.split()
@@ -391,61 +391,61 @@ class PARTICLE_PT_physics(ParticleButtonsPanel):
row = layout.row()
col = row.column()
col.active = not psys.keyed_timing
col.itemR(part, "keyed_loops", text="Loops")
row.itemR(psys, "keyed_timing", text="Use Timing")
col.prop(part, "keyed_loops", text="Loops")
row.prop(psys, "keyed_timing", text="Use Timing")
layout.itemL(text="Keys:")
layout.label(text="Keys:")
elif part.physics_type == 'BOIDS':
boids = part.boids
row = layout.row()
row.itemR(boids, "allow_flight")
row.itemR(boids, "allow_land")
row.itemR(boids, "allow_climb")
row.prop(boids, "allow_flight")
row.prop(boids, "allow_land")
row.prop(boids, "allow_climb")
split = layout.split()
sub = split.column()
col = sub.column(align=True)
col.active = boids.allow_flight
col.itemR(boids, "air_max_speed")
col.itemR(boids, "air_min_speed", slider=True)
col.itemR(boids, "air_max_acc", slider=True)
col.itemR(boids, "air_max_ave", slider=True)
col.itemR(boids, "air_personal_space")
col.prop(boids, "air_max_speed")
col.prop(boids, "air_min_speed", slider=True)
col.prop(boids, "air_max_acc", slider=True)
col.prop(boids, "air_max_ave", slider=True)
col.prop(boids, "air_personal_space")
row = col.row()
row.active = (boids.allow_land or boids.allow_climb) and boids.allow_flight
row.itemR(boids, "landing_smoothness")
row.prop(boids, "landing_smoothness")
sub = split.column()
col = sub.column(align=True)
col.active = boids.allow_land or boids.allow_climb
col.itemR(boids, "land_max_speed")
col.itemR(boids, "land_jump_speed")
col.itemR(boids, "land_max_acc", slider=True)
col.itemR(boids, "land_max_ave", slider=True)
col.itemR(boids, "land_personal_space")
col.itemR(boids, "land_stick_force")
col.prop(boids, "land_max_speed")
col.prop(boids, "land_jump_speed")
col.prop(boids, "land_max_acc", slider=True)
col.prop(boids, "land_max_ave", slider=True)
col.prop(boids, "land_personal_space")
col.prop(boids, "land_stick_force")
row = layout.row()
col = row.column(align=True)
col.itemL(text="Battle:")
col.itemR(boids, "health")
col.itemR(boids, "strength")
col.itemR(boids, "aggression")
col.itemR(boids, "accuracy")
col.itemR(boids, "range")
col.label(text="Battle:")
col.prop(boids, "health")
col.prop(boids, "strength")
col.prop(boids, "aggression")
col.prop(boids, "accuracy")
col.prop(boids, "range")
col = row.column()
col.itemL(text="Misc:")
col.itemR(boids, "banking", slider=True)
col.itemR(boids, "height", slider=True)
col.label(text="Misc:")
col.prop(boids, "banking", slider=True)
col.prop(boids, "height", slider=True)
if part.physics_type == 'KEYED' or part.physics_type == 'BOIDS':
if part.physics_type == 'BOIDS':
layout.itemL(text="Relations:")
layout.label(text="Relations:")
row = layout.row()
row.template_list(psys, "targets", psys, "active_particle_target_index")
@@ -453,12 +453,12 @@ class PARTICLE_PT_physics(ParticleButtonsPanel):
col = row.column()
sub = col.row()
subsub = sub.column(align=True)
subsub.itemO("particle.new_target", icon='ICON_ZOOMIN', text="")
subsub.itemO("particle.remove_target", icon='ICON_ZOOMOUT', text="")
subsub.operator("particle.new_target", icon='ICON_ZOOMIN', text="")
subsub.operator("particle.remove_target", icon='ICON_ZOOMOUT', text="")
sub = col.row()
subsub = sub.column(align=True)
subsub.itemO("particle.target_move_up", icon='VICON_MOVE_UP', text="")
subsub.itemO("particle.target_move_down", icon='VICON_MOVE_DOWN', text="")
subsub.operator("particle.target_move_up", icon='VICON_MOVE_UP', text="")
subsub.operator("particle.target_move_down", icon='VICON_MOVE_DOWN', text="")
key = psys.active_particle_target
if key:
@@ -467,20 +467,20 @@ class PARTICLE_PT_physics(ParticleButtonsPanel):
col = row.column()
#doesn't work yet
#col.red_alert = key.valid
col.itemR(key, "object", text="")
col.itemR(key, "system", text="System")
col.prop(key, "object", text="")
col.prop(key, "system", text="System")
col = row.column()
col.active = psys.keyed_timing
col.itemR(key, "time")
col.itemR(key, "duration")
col.prop(key, "time")
col.prop(key, "duration")
else:
sub = row.row()
#doesn't work yet
#sub.red_alert = key.valid
sub.itemR(key, "object", text="")
sub.itemR(key, "system", text="System")
sub.prop(key, "object", text="")
sub.prop(key, "system", text="System")
layout.itemR(key, "mode", expand=True)
layout.prop(key, "mode", expand=True)
class PARTICLE_PT_boidbrain(ParticleButtonsPanel):
@@ -508,22 +508,22 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel):
#row.template_list(boids, "states", boids, "active_boid_state_index", compact="True")
#col = row.row()
#sub = col.row(align=True)
#sub.itemO("boid.state_add", icon='ICON_ZOOMIN', text="")
#sub.itemO("boid.state_del", icon='ICON_ZOOMOUT', text="")
#sub.operator("boid.state_add", icon='ICON_ZOOMIN', text="")
#sub.operator("boid.state_del", icon='ICON_ZOOMOUT', text="")
#sub = row.row(align=True)
#sub.itemO("boid.state_move_up", icon='VICON_MOVE_UP', text="")
#sub.itemO("boid.state_move_down", icon='VICON_MOVE_DOWN', text="")
#sub.operator("boid.state_move_up", icon='VICON_MOVE_UP', text="")
#sub.operator("boid.state_move_down", icon='VICON_MOVE_DOWN', text="")
state = boids.active_boid_state
#layout.itemR(state, "name", text="State name")
#layout.prop(state, "name", text="State name")
row = layout.row()
row.itemR(state, "ruleset_type")
row.prop(state, "ruleset_type")
if state.ruleset_type == 'FUZZY':
row.itemR(state, "rule_fuzziness", slider=True)
row.prop(state, "rule_fuzziness", slider=True)
else:
row.itemL(text="")
row.label(text="")
row = layout.row()
row.template_list(state, "rules", state, "active_boid_rule_index")
@@ -531,54 +531,54 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel):
col = row.column()
sub = col.row()
subsub = sub.column(align=True)
subsub.item_menu_enumO("boid.rule_add", "type", icon='ICON_ZOOMIN', text="")
subsub.itemO("boid.rule_del", icon='ICON_ZOOMOUT', text="")
subsub.operator_menu_enum("boid.rule_add", "type", icon='ICON_ZOOMIN', text="")
subsub.operator("boid.rule_del", icon='ICON_ZOOMOUT', text="")
sub = col.row()
subsub = sub.column(align=True)
subsub.itemO("boid.rule_move_up", icon='VICON_MOVE_UP', text="")
subsub.itemO("boid.rule_move_down", icon='VICON_MOVE_DOWN', text="")
subsub.operator("boid.rule_move_up", icon='VICON_MOVE_UP', text="")
subsub.operator("boid.rule_move_down", icon='VICON_MOVE_DOWN', text="")
rule = state.active_boid_rule
if rule:
row = layout.row()
row.itemR(rule, "name", text="")
row.prop(rule, "name", text="")
#somebody make nice icons for boids here please! -jahka
row.itemR(rule, "in_air", icon='VICON_MOVE_UP', text="")
row.itemR(rule, "on_land", icon='VICON_MOVE_DOWN', text="")
row.prop(rule, "in_air", icon='VICON_MOVE_UP', text="")
row.prop(rule, "on_land", icon='VICON_MOVE_DOWN', text="")
row = layout.row()
if rule.type == 'GOAL':
row.itemR(rule, "object")
row.prop(rule, "object")
row = layout.row()
row.itemR(rule, "predict")
row.prop(rule, "predict")
elif rule.type == 'AVOID':
row.itemR(rule, "object")
row.prop(rule, "object")
row = layout.row()
row.itemR(rule, "predict")
row.itemR(rule, "fear_factor")
row.prop(rule, "predict")
row.prop(rule, "fear_factor")
elif rule.type == 'FOLLOW_PATH':
row.itemL(text="Not yet functional.")
row.label(text="Not yet functional.")
elif rule.type == 'AVOID_COLLISION':
row.itemR(rule, "boids")
row.itemR(rule, "deflectors")
row.itemR(rule, "look_ahead")
row.prop(rule, "boids")
row.prop(rule, "deflectors")
row.prop(rule, "look_ahead")
elif rule.type == 'FOLLOW_LEADER':
row.itemR(rule, "object", text="")
row.itemR(rule, "distance")
row.prop(rule, "object", text="")
row.prop(rule, "distance")
row = layout.row()
row.itemR(rule, "line")
row.prop(rule, "line")
sub = row.row()
sub.active = rule.line
sub.itemR(rule, "queue_size")
sub.prop(rule, "queue_size")
elif rule.type == 'AVERAGE_SPEED':
row.itemR(rule, "speed", slider=True)
row.itemR(rule, "wander", slider=True)
row.itemR(rule, "level", slider=True)
row.prop(rule, "speed", slider=True)
row.prop(rule, "wander", slider=True)
row.prop(rule, "level", slider=True)
elif rule.type == 'FIGHT':
row.itemR(rule, "distance")
row.itemR(rule, "flee_distance")
row.prop(rule, "distance")
row.prop(rule, "flee_distance")
class PARTICLE_PT_render(ParticleButtonsPanel):
@@ -599,90 +599,90 @@ class PARTICLE_PT_render(ParticleButtonsPanel):
part = psys.settings
row = layout.row()
row.itemR(part, "material")
row.itemR(psys, "parent")
row.prop(part, "material")
row.prop(psys, "parent")
split = layout.split()
sub = split.column()
sub.itemR(part, "emitter")
sub.itemR(part, "parent")
sub.prop(part, "emitter")
sub.prop(part, "parent")
sub = split.column()
sub.itemR(part, "unborn")
sub.itemR(part, "died")
sub.prop(part, "unborn")
sub.prop(part, "died")
row = layout.row()
row.itemR(part, "ren_as", expand=True)
row.prop(part, "ren_as", expand=True)
split = layout.split()
sub = split.column()
if part.ren_as == 'LINE':
sub.itemR(part, "line_length_tail")
sub.itemR(part, "line_length_head")
sub.prop(part, "line_length_tail")
sub.prop(part, "line_length_head")
sub = split.column()
sub.itemR(part, "velocity_length")
sub.prop(part, "velocity_length")
elif part.ren_as == 'PATH':
if part.type != 'HAIR' and part.physics_type != 'KEYED' and (psys.point_cache.baked is False):
box = layout.box()
box.itemL(text="Baked or keyed particles needed for correct rendering.")
box.label(text="Baked or keyed particles needed for correct rendering.")
return
sub.itemR(part, "render_strand")
sub.prop(part, "render_strand")
subsub = sub.column()
subsub.active = (part.render_strand is False)
subsub.itemR(part, "render_adaptive")
subsub.prop(part, "render_adaptive")
subsub = sub.column()
subsub.active = part.render_adaptive or part.render_strand == True
subsub.itemR(part, "adaptive_angle")
subsub.prop(part, "adaptive_angle")
subsub = sub.column()
subsub.active = (part.render_adaptive is True and part.render_strand is False)
subsub.itemR(part, "adaptive_pix")
sub.itemR(part, "hair_bspline")
sub.itemR(part, "render_step", text="Steps")
subsub.prop(part, "adaptive_pix")
sub.prop(part, "hair_bspline")
sub.prop(part, "render_step", text="Steps")
sub = split.column()
sub.itemL(text="Timing:")
sub.itemR(part, "abs_path_time")
sub.itemR(part, "path_start", text="Start", slider=not part.abs_path_time)
sub.itemR(part, "path_end", text="End", slider=not part.abs_path_time)
sub.itemR(part, "random_length", text="Random", slider=True)
sub.label(text="Timing:")
sub.prop(part, "abs_path_time")
sub.prop(part, "path_start", text="Start", slider=not part.abs_path_time)
sub.prop(part, "path_end", text="End", slider=not part.abs_path_time)
sub.prop(part, "random_length", text="Random", slider=True)
row = layout.row()
col = row.column()
if part.type == 'HAIR' and part.render_strand == True and part.child_type == 'FACES':
layout.itemR(part, "enable_simplify")
layout.prop(part, "enable_simplify")
if part.enable_simplify == True:
row = layout.row()
row.itemR(part, "simplify_refsize")
row.itemR(part, "simplify_rate")
row.itemR(part, "simplify_transition")
row.prop(part, "simplify_refsize")
row.prop(part, "simplify_rate")
row.prop(part, "simplify_transition")
row = layout.row()
row.itemR(part, "viewport")
row.prop(part, "viewport")
sub = row.row()
sub.active = part.viewport == True
sub.itemR(part, "simplify_viewport")
sub.prop(part, "simplify_viewport")
elif part.ren_as == 'OBJECT':
sub.itemR(part, "dupli_object")
sub.itemR(part, "use_global_dupli")
sub.prop(part, "dupli_object")
sub.prop(part, "use_global_dupli")
elif part.ren_as == 'GROUP':
sub.itemR(part, "dupli_group")
sub.prop(part, "dupli_group")
split = layout.split()
sub = split.column()
sub.itemR(part, "whole_group")
sub.prop(part, "whole_group")
subsub = sub.column()
subsub.active = (part.whole_group is False)
subsub.itemR(part, "use_group_count")
subsub.prop(part, "use_group_count")
sub = split.column()
subsub = sub.column()
subsub.active = (part.whole_group is False)
subsub.itemR(part, "use_global_dupli")
subsub.itemR(part, "rand_group")
subsub.prop(part, "use_global_dupli")
subsub.prop(part, "rand_group")
if part.use_group_count and not part.whole_group:
row = layout.row()
@@ -691,61 +691,61 @@ class PARTICLE_PT_render(ParticleButtonsPanel):
col = row.column()
sub = col.row()
subsub = sub.column(align=True)
subsub.itemO("particle.dupliob_copy", icon='ICON_ZOOMIN', text="")
subsub.itemO("particle.dupliob_remove", icon='ICON_ZOOMOUT', text="")
subsub.itemO("particle.dupliob_move_up", icon='VICON_MOVE_UP', text="")
subsub.itemO("particle.dupliob_move_down", icon='VICON_MOVE_DOWN', text="")
subsub.operator("particle.dupliob_copy", icon='ICON_ZOOMIN', text="")
subsub.operator("particle.dupliob_remove", icon='ICON_ZOOMOUT', text="")
subsub.operator("particle.dupliob_move_up", icon='VICON_MOVE_UP', text="")
subsub.operator("particle.dupliob_move_down", icon='VICON_MOVE_DOWN', text="")
weight = part.active_dupliweight
if weight:
row = layout.row()
row.itemR(weight, "count")
row.prop(weight, "count")
elif part.ren_as == 'BILLBOARD':
sub.itemL(text="Align:")
sub.label(text="Align:")
row = layout.row()
row.itemR(part, "billboard_align", expand=True)
row.itemR(part, "billboard_lock", text="Lock")
row.prop(part, "billboard_align", expand=True)
row.prop(part, "billboard_lock", text="Lock")
row = layout.row()
row.itemR(part, "billboard_object")
row.prop(part, "billboard_object")
row = layout.row()
col = row.column(align=True)
col.itemL(text="Tilt:")
col.itemR(part, "billboard_tilt", text="Angle", slider=True)
col.itemR(part, "billboard_random_tilt", slider=True)
col.label(text="Tilt:")
col.prop(part, "billboard_tilt", text="Angle", slider=True)
col.prop(part, "billboard_random_tilt", slider=True)
col = row.column()
col.itemR(part, "billboard_offset")
col.prop(part, "billboard_offset")
row = layout.row()
row.itemR(psys, "billboard_normal_uv")
row.prop(psys, "billboard_normal_uv")
row = layout.row()
row.itemR(psys, "billboard_time_index_uv")
row.prop(psys, "billboard_time_index_uv")
row = layout.row()
row.itemL(text="Split uv's:")
row.itemR(part, "billboard_uv_split", text="Number of splits")
row.label(text="Split uv's:")
row.prop(part, "billboard_uv_split", text="Number of splits")
row = layout.row()
row.itemR(psys, "billboard_split_uv")
row.prop(psys, "billboard_split_uv")
row = layout.row()
row.itemL(text="Animate:")
row.itemR(part, "billboard_animation", expand=True)
row.itemL(text="Offset:")
row.itemR(part, "billboard_split_offset", expand=True)
row.label(text="Animate:")
row.prop(part, "billboard_animation", expand=True)
row.label(text="Offset:")
row.prop(part, "billboard_split_offset", expand=True)
if part.ren_as == 'HALO' or part.ren_as == 'LINE' or part.ren_as == 'BILLBOARD':
row = layout.row()
col = row.column()
col.itemR(part, "trail_count")
col.prop(part, "trail_count")
if part.trail_count > 1:
col.itemR(part, "abs_path_time", text="Length in frames")
col.prop(part, "abs_path_time", text="Length in frames")
col = row.column()
col.itemR(part, "path_end", text="Length", slider=not part.abs_path_time)
col.itemR(part, "random_length", text="Random", slider=True)
col.prop(part, "path_end", text="Length", slider=not part.abs_path_time)
col.prop(part, "random_length", text="Random", slider=True)
else:
col = row.column()
col.itemL(text="")
col.label(text="")
class PARTICLE_PT_draw(ParticleButtonsPanel):
@@ -767,7 +767,7 @@ class PARTICLE_PT_draw(ParticleButtonsPanel):
part = psys.settings
row = layout.row()
row.itemR(part, "draw_as", expand=True)
row.prop(part, "draw_as", expand=True)
if part.draw_as == 'NONE' or (part.ren_as == 'NONE' and part.draw_as == 'RENDER'):
return
@@ -776,34 +776,34 @@ class PARTICLE_PT_draw(ParticleButtonsPanel):
if path and part.type != 'HAIR' and part.physics_type != 'KEYED' and psys.point_cache.baked is False:
box = layout.box()
box.itemL(text="Baked or keyed particles needed for correct drawing.")
box.label(text="Baked or keyed particles needed for correct drawing.")
return
row = layout.row()
row.itemR(part, "display", slider=True)
row.prop(part, "display", slider=True)
if part.draw_as != 'RENDER' or part.ren_as == 'HALO':
row.itemR(part, "draw_size")
row.prop(part, "draw_size")
else:
row.itemL(text="")
row.label(text="")
row = layout.row()
col = row.column()
col.itemR(part, "show_size")
col.itemR(part, "velocity")
col.itemR(part, "num")
col.prop(part, "show_size")
col.prop(part, "velocity")
col.prop(part, "num")
if part.physics_type == 'BOIDS':
col.itemR(part, "draw_health")
col.prop(part, "draw_health")
col = row.column()
col.itemR(part, "material_color", text="Use material color")
col.prop(part, "material_color", text="Use material color")
if (path):
col.itemR(part, "draw_step")
col.prop(part, "draw_step")
else:
sub = col.column()
sub.active = (part.material_color is False)
#sub.itemL(text="color")
#sub.itemL(text="Override material color")
#sub.label(text="color")
#sub.label(text="Override material color")
class PARTICLE_PT_children(ParticleButtonsPanel):
@@ -816,7 +816,7 @@ class PARTICLE_PT_children(ParticleButtonsPanel):
psys = context.particle_system
part = psys.settings
layout.row().itemR(part, "child_type", expand=True)
layout.row().prop(part, "child_type", expand=True)
if part.child_type == 'NONE':
return
@@ -824,63 +824,63 @@ class PARTICLE_PT_children(ParticleButtonsPanel):
row = layout.row()
col = row.column(align=True)
col.itemR(part, "child_nbr", text="Display")
col.itemR(part, "rendered_child_nbr", text="Render")
col.prop(part, "child_nbr", text="Display")
col.prop(part, "rendered_child_nbr", text="Render")
col = row.column(align=True)
if part.child_type == 'FACES':
col.itemR(part, "virtual_parents", slider=True)
col.prop(part, "virtual_parents", slider=True)
else:
col.itemR(part, "child_radius", text="Radius")
col.itemR(part, "child_roundness", text="Roundness", slider=True)
col.prop(part, "child_radius", text="Radius")
col.prop(part, "child_roundness", text="Roundness", slider=True)
col = row.column(align=True)
col.itemR(part, "child_size", text="Size")
col.itemR(part, "child_random_size", text="Random")
col.prop(part, "child_size", text="Size")
col.prop(part, "child_random_size", text="Random")
layout.row().itemL(text="Effects:")
layout.row().label(text="Effects:")
row = layout.row()
col = row.column(align=True)
col.itemR(part, "clump_factor", slider=True)
col.itemR(part, "clumppow", slider=True)
col.prop(part, "clump_factor", slider=True)
col.prop(part, "clumppow", slider=True)
col = row.column(align=True)
col.itemR(part, "rough_endpoint")
col.itemR(part, "rough_end_shape")
col.prop(part, "rough_endpoint")
col.prop(part, "rough_end_shape")
row = layout.row()
col = row.column(align=True)
col.itemR(part, "rough1")
col.itemR(part, "rough1_size")
col.prop(part, "rough1")
col.prop(part, "rough1_size")
col = row.column(align=True)
col.itemR(part, "rough2")
col.itemR(part, "rough2_size")
col.itemR(part, "rough2_thres", slider=True)
col.prop(part, "rough2")
col.prop(part, "rough2_size")
col.prop(part, "rough2_thres", slider=True)
row = layout.row()
col = row.column(align=True)
col.itemR(part, "child_length", slider=True)
col.itemR(part, "child_length_thres", slider=True)
col.prop(part, "child_length", slider=True)
col.prop(part, "child_length_thres", slider=True)
col = row.column(align=True)
col.itemL(text="Space reserved for")
col.itemL(text="hair parting controls")
col.label(text="Space reserved for")
col.label(text="hair parting controls")
layout.row().itemL(text="Kink:")
layout.row().itemR(part, "kink", expand=True)
layout.row().label(text="Kink:")
layout.row().prop(part, "kink", expand=True)
split = layout.split()
col = split.column()
col.itemR(part, "kink_amplitude")
col.itemR(part, "kink_frequency")
col.prop(part, "kink_amplitude")
col.prop(part, "kink_frequency")
col = split.column()
col.itemR(part, "kink_shape", slider=True)
col.prop(part, "kink_shape", slider=True)
class PARTICLE_PT_field_weights(ParticleButtonsPanel):
@@ -892,7 +892,7 @@ class PARTICLE_PT_field_weights(ParticleButtonsPanel):
effector_weights_ui(self, context, part.effector_weights)
if part.type == 'HAIR':
self.layout.itemR(part.effector_weights, "do_growing_hair")
self.layout.prop(part.effector_weights, "do_growing_hair")
class PARTICLE_PT_force_fields(ParticleButtonsPanel):
@@ -904,20 +904,20 @@ class PARTICLE_PT_force_fields(ParticleButtonsPanel):
part = context.particle_system.settings
layout.itemR(part, "self_effect")
layout.prop(part, "self_effect")
split = layout.split(percentage=0.2)
split.itemL(text="Type 1:")
split.itemR(part.force_field_1, "type", text="")
split.label(text="Type 1:")
split.prop(part.force_field_1, "type", text="")
basic_force_field_settings_ui(self, context, part.force_field_1)
basic_force_field_falloff_ui(self, context, part.force_field_1)
if part.force_field_1.type != 'NONE':
layout.itemL(text="")
layout.label(text="")
split = layout.split(percentage=0.2)
split.itemL(text="Type 2:")
split.itemR(part.force_field_2, "type", text="")
split.label(text="Type 2:")
split.prop(part.force_field_2, "type", text="")
basic_force_field_settings_ui(self, context, part.force_field_2)
basic_force_field_falloff_ui(self, context, part.force_field_2)
@@ -933,60 +933,60 @@ class PARTICLE_PT_vertexgroups(ParticleButtonsPanel):
psys = context.particle_system
# part = psys.settings
# layout.itemL(text="Nothing here yet.")
# layout.label(text="Nothing here yet.")
row = layout.row()
row.itemL(text="Vertex Group")
row.itemL(text="Negate")
row.label(text="Vertex Group")
row.label(text="Negate")
row = layout.row()
row.item_pointerR(psys, "vertex_group_density", ob, "vertex_groups", text="Density")
row.itemR(psys, "vertex_group_density_negate", text="")
row.prop_pointer(psys, "vertex_group_density", ob, "vertex_groups", text="Density")
row.prop(psys, "vertex_group_density_negate", text="")
row = layout.row()
row.item_pointerR(psys, "vertex_group_velocity", ob, "vertex_groups", text="Velocity")
row.itemR(psys, "vertex_group_velocity_negate", text="")
row.prop_pointer(psys, "vertex_group_velocity", ob, "vertex_groups", text="Velocity")
row.prop(psys, "vertex_group_velocity_negate", text="")
row = layout.row()
row.item_pointerR(psys, "vertex_group_length", ob, "vertex_groups", text="Length")
row.itemR(psys, "vertex_group_length_negate", text="")
row.prop_pointer(psys, "vertex_group_length", ob, "vertex_groups", text="Length")
row.prop(psys, "vertex_group_length_negate", text="")
row = layout.row()
row.item_pointerR(psys, "vertex_group_clump", ob, "vertex_groups", text="Clump")
row.itemR(psys, "vertex_group_clump_negate", text="")
row.prop_pointer(psys, "vertex_group_clump", ob, "vertex_groups", text="Clump")
row.prop(psys, "vertex_group_clump_negate", text="")
row = layout.row()
row.item_pointerR(psys, "vertex_group_kink", ob, "vertex_groups", text="Kink")
row.itemR(psys, "vertex_group_kink_negate", text="")
row.prop_pointer(psys, "vertex_group_kink", ob, "vertex_groups", text="Kink")
row.prop(psys, "vertex_group_kink_negate", text="")
row = layout.row()
row.item_pointerR(psys, "vertex_group_roughness1", ob, "vertex_groups", text="Roughness 1")
row.itemR(psys, "vertex_group_roughness1_negate", text="")
row.prop_pointer(psys, "vertex_group_roughness1", ob, "vertex_groups", text="Roughness 1")
row.prop(psys, "vertex_group_roughness1_negate", text="")
row = layout.row()
row.item_pointerR(psys, "vertex_group_roughness2", ob, "vertex_groups", text="Roughness 2")
row.itemR(psys, "vertex_group_roughness2_negate", text="")
row.prop_pointer(psys, "vertex_group_roughness2", ob, "vertex_groups", text="Roughness 2")
row.prop(psys, "vertex_group_roughness2_negate", text="")
row = layout.row()
row.item_pointerR(psys, "vertex_group_roughness_end", ob, "vertex_groups", text="Roughness End")
row.itemR(psys, "vertex_group_roughness_end_negate", text="")
row.prop_pointer(psys, "vertex_group_roughness_end", ob, "vertex_groups", text="Roughness End")
row.prop(psys, "vertex_group_roughness_end_negate", text="")
row = layout.row()
row.item_pointerR(psys, "vertex_group_size", ob, "vertex_groups", text="Size")
row.itemR(psys, "vertex_group_size_negate", text="")
row.prop_pointer(psys, "vertex_group_size", ob, "vertex_groups", text="Size")
row.prop(psys, "vertex_group_size_negate", text="")
row = layout.row()
row.item_pointerR(psys, "vertex_group_tangent", ob, "vertex_groups", text="Tangent")
row.itemR(psys, "vertex_group_tangent_negate", text="")
row.prop_pointer(psys, "vertex_group_tangent", ob, "vertex_groups", text="Tangent")
row.prop(psys, "vertex_group_tangent_negate", text="")
row = layout.row()
row.item_pointerR(psys, "vertex_group_rotation", ob, "vertex_groups", text="Rotation")
row.itemR(psys, "vertex_group_rotation_negate", text="")
row.prop_pointer(psys, "vertex_group_rotation", ob, "vertex_groups", text="Rotation")
row.prop(psys, "vertex_group_rotation_negate", text="")
row = layout.row()
row.item_pointerR(psys, "vertex_group_field", ob, "vertex_groups", text="Field")
row.itemR(psys, "vertex_group_field_negate", text="")
row.prop_pointer(psys, "vertex_group_field", ob, "vertex_groups", text="Field")
row.prop(psys, "vertex_group_field_negate", text="")
bpy.types.register(PARTICLE_PT_particles)
bpy.types.register(PARTICLE_PT_hair_dynamics)

View File

@@ -67,14 +67,14 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel):
if md:
# remove modifier + settings
split.set_context_pointer("modifier", md)
split.itemO("object.modifier_remove", text="Remove")
split.operator("object.modifier_remove", text="Remove")
row = split.row(align=True)
row.itemR(md, "render", text="")
row.itemR(md, "realtime", text="")
row.prop(md, "render", text="")
row.prop(md, "realtime", text="")
else:
# add modifier
split.item_enumO("object.modifier_add", "type", 'CLOTH', text="Add")
split.operator_enum("object.modifier_add", "type", 'CLOTH', text="Add")
if wide_ui:
split.column()
@@ -89,44 +89,44 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel):
col = split.column()
col.itemL(text="Presets:")
col.label(text="Presets:")
sub = col.row(align=True).split(percentage=0.75)
sub.itemM("CLOTH_MT_presets", text="Presets")
sub.itemO("cloth.preset_add", text="Add")
sub.menu("CLOTH_MT_presets", text="Presets")
sub.operator("cloth.preset_add", text="Add")
col.itemL(text="Quality:")
col.itemR(cloth, "quality", text="Steps", slider=True)
col.label(text="Quality:")
col.prop(cloth, "quality", text="Steps", slider=True)
col.itemL(text="Material:")
col.itemR(cloth, "mass")
col.itemR(cloth, "structural_stiffness", text="Structural")
col.itemR(cloth, "bending_stiffness", text="Bending")
col.label(text="Material:")
col.prop(cloth, "mass")
col.prop(cloth, "structural_stiffness", text="Structural")
col.prop(cloth, "bending_stiffness", text="Bending")
if wide_ui:
col = split.column()
col.itemL(text="Damping:")
col.itemR(cloth, "spring_damping", text="Spring")
col.itemR(cloth, "air_damping", text="Air")
col.label(text="Damping:")
col.prop(cloth, "spring_damping", text="Spring")
col.prop(cloth, "air_damping", text="Air")
col.itemR(cloth, "pin_cloth", text="Pinning")
col.prop(cloth, "pin_cloth", text="Pinning")
sub = col.column()
sub.active = cloth.pin_cloth
sub.item_pointerR(cloth, "mass_vertex_group", ob, "vertex_groups", text="")
sub.itemR(cloth, "pin_stiffness", text="Stiffness")
sub.prop_pointer(cloth, "mass_vertex_group", ob, "vertex_groups", text="")
sub.prop(cloth, "pin_stiffness", text="Stiffness")
col.itemL(text="Pre roll:")
col.itemR(cloth, "pre_roll", text="Frame")
col.label(text="Pre roll:")
col.prop(cloth, "pre_roll", text="Frame")
# Disabled for now
"""
if cloth.mass_vertex_group:
layout.itemL(text="Goal:")
layout.label(text="Goal:")
col = layout.column_flow()
col.itemR(cloth, "goal_default", text="Default")
col.itemR(cloth, "goal_spring", text="Stiffness")
col.itemR(cloth, "goal_friction", text="Friction")
col.prop(cloth, "goal_default", text="Default")
col.prop(cloth, "goal_spring", text="Stiffness")
col.prop(cloth, "goal_friction", text="Friction")
"""
@@ -153,7 +153,7 @@ class PHYSICS_PT_cloth_collision(PhysicButtonsPanel):
cloth = context.cloth.collision_settings
self.layout.active = cloth_panel_enabled(context.cloth)
self.layout.itemR(cloth, "enable_collision", text="")
self.layout.prop(cloth, "enable_collision", text="")
def draw(self, context):
layout = self.layout
@@ -167,17 +167,17 @@ class PHYSICS_PT_cloth_collision(PhysicButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(cloth, "collision_quality", slider=True, text="Quality")
col.itemR(cloth, "min_distance", slider=True, text="Distance")
col.itemR(cloth, "friction")
col.prop(cloth, "collision_quality", slider=True, text="Quality")
col.prop(cloth, "min_distance", slider=True, text="Distance")
col.prop(cloth, "friction")
if wide_ui:
col = split.column()
col.itemR(cloth, "enable_self_collision", text="Self Collision")
col.prop(cloth, "enable_self_collision", text="Self Collision")
sub = col.column()
sub.active = cloth.enable_self_collision
sub.itemR(cloth, "self_collision_quality", slider=True, text="Quality")
sub.itemR(cloth, "self_min_distance", slider=True, text="Distance")
sub.prop(cloth, "self_collision_quality", slider=True, text="Quality")
sub.prop(cloth, "self_min_distance", slider=True, text="Distance")
class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel):
@@ -191,7 +191,7 @@ class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel):
cloth = context.cloth.settings
self.layout.active = cloth_panel_enabled(context.cloth)
self.layout.itemR(cloth, "stiffness_scaling", text="")
self.layout.prop(cloth, "stiffness_scaling", text="")
def draw(self, context):
layout = self.layout
@@ -206,15 +206,15 @@ class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Structural Stiffness:")
col.item_pointerR(cloth, "structural_stiffness_vertex_group", ob, "vertex_groups", text="")
col.itemR(cloth, "structural_stiffness_max", text="Max")
col.label(text="Structural Stiffness:")
col.prop_pointer(cloth, "structural_stiffness_vertex_group", ob, "vertex_groups", text="")
col.prop(cloth, "structural_stiffness_max", text="Max")
if wide_ui:
col = split.column()
col.itemL(text="Bending Stiffness:")
col.item_pointerR(cloth, "bending_vertex_group", ob, "vertex_groups", text="")
col.itemR(cloth, "bending_stiffness_max", text="Max")
col.label(text="Bending Stiffness:")
col.prop_pointer(cloth, "bending_vertex_group", ob, "vertex_groups", text="")
col.prop(cloth, "bending_stiffness_max", text="Max")
class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel):

View File

@@ -30,64 +30,64 @@ def point_cache_ui(self, context, cache, enabled, particles, smoke):
row = layout.row()
row.template_list(cache, "point_cache_list", cache, "active_point_cache_index", rows=2)
col = row.column(align=True)
col.itemO("ptcache.add_new", icon='ICON_ZOOMIN', text="")
col.itemO("ptcache.remove", icon='ICON_ZOOMOUT', text="")
col.operator("ptcache.add_new", icon='ICON_ZOOMIN', text="")
col.operator("ptcache.remove", icon='ICON_ZOOMOUT', text="")
row = layout.row()
row.itemL(text="File Name:")
row.label(text="File Name:")
if particles:
row.itemR(cache, "external")
row.prop(cache, "external")
if cache.external:
split = layout.split(percentage=0.80)
split.itemR(cache, "name", text="")
split.itemR(cache, "index", text="")
split.prop(cache, "name", text="")
split.prop(cache, "index", text="")
layout.itemL(text="File Path:")
layout.itemR(cache, "filepath", text="")
layout.label(text="File Path:")
layout.prop(cache, "filepath", text="")
layout.itemL(text=cache.info)
layout.label(text=cache.info)
else:
layout.itemR(cache, "name", text="")
layout.prop(cache, "name", text="")
if not particles:
row = layout.row()
row.enabled = enabled
row.itemR(cache, "start_frame")
row.itemR(cache, "end_frame")
row.prop(cache, "start_frame")
row.prop(cache, "end_frame")
row = layout.row()
if cache.baked == True:
row.itemO("ptcache.free_bake", text="Free Bake")
row.operator("ptcache.free_bake", text="Free Bake")
else:
row.item_booleanO("ptcache.bake", "bake", True, text="Bake")
row.operator_boolean("ptcache.bake", "bake", True, text="Bake")
sub = row.row()
sub.enabled = (cache.frames_skipped or cache.outdated) and enabled
sub.itemO("ptcache.bake", "bake", False, text="Calculate to Current Frame")
sub.operator("ptcache.bake", "bake", False, text="Calculate to Current Frame")
row = layout.row()
row.enabled = enabled
row.itemO("ptcache.bake_from_cache", text="Current Cache to Bake")
row.operator("ptcache.bake_from_cache", text="Current Cache to Bake")
if not smoke:
row.itemR(cache, "step")
row.prop(cache, "step")
if not smoke:
row = layout.row()
sub = row.row()
sub.enabled = enabled
sub.itemR(cache, "quick_cache")
row.itemR(cache, "disk_cache")
sub.prop(cache, "quick_cache")
row.prop(cache, "disk_cache")
layout.itemL(text=cache.info)
layout.label(text=cache.info)
layout.itemS()
layout.separator()
row = layout.row()
row.item_booleanO("ptcache.bake_all", "bake", True, text="Bake All Dynamics")
row.itemO("ptcache.free_bake_all", text="Free All Bakes")
layout.itemO("ptcache.bake_all", "bake", False, text="Update All Dynamics to current frame")
row.operator_boolean("ptcache.bake_all", "bake", True, text="Bake All Dynamics")
row.operator("ptcache.free_bake_all", text="Free All Bakes")
layout.operator("ptcache.bake_all", "bake", False, text="Update All Dynamics to current frame")
def effector_weights_ui(self, context, weights):
@@ -95,37 +95,37 @@ def effector_weights_ui(self, context, weights):
wide_ui = context.region.width > narrowui
layout.itemR(weights, "group")
layout.prop(weights, "group")
split = layout.split()
col = split.column()
col.itemR(weights, "gravity", slider=True)
col.prop(weights, "gravity", slider=True)
if wide_ui:
col = split.column()
col.itemR(weights, "all", slider=True)
col.prop(weights, "all", slider=True)
layout.itemS()
layout.separator()
split = layout.split()
col = split.column()
col.itemR(weights, "force", slider=True)
col.itemR(weights, "vortex", slider=True)
col.itemR(weights, "magnetic", slider=True)
col.itemR(weights, "wind", slider=True)
col.itemR(weights, "curveguide", slider=True)
col.itemR(weights, "texture", slider=True)
col.prop(weights, "force", slider=True)
col.prop(weights, "vortex", slider=True)
col.prop(weights, "magnetic", slider=True)
col.prop(weights, "wind", slider=True)
col.prop(weights, "curveguide", slider=True)
col.prop(weights, "texture", slider=True)
if wide_ui:
col = split.column()
col.itemR(weights, "harmonic", slider=True)
col.itemR(weights, "charge", slider=True)
col.itemR(weights, "lennardjones", slider=True)
col.itemR(weights, "turbulence", slider=True)
col.itemR(weights, "drag", slider=True)
col.itemR(weights, "boid", slider=True)
col.prop(weights, "harmonic", slider=True)
col.prop(weights, "charge", slider=True)
col.prop(weights, "lennardjones", slider=True)
col.prop(weights, "turbulence", slider=True)
col.prop(weights, "drag", slider=True)
col.prop(weights, "boid", slider=True)
def basic_force_field_settings_ui(self, context, field):
@@ -141,40 +141,40 @@ def basic_force_field_settings_ui(self, context, field):
col = split.column()
if field.type == 'DRAG':
col.itemR(field, "linear_drag", text="Linear")
col.prop(field, "linear_drag", text="Linear")
else:
col.itemR(field, "strength")
col.prop(field, "strength")
if field.type == 'TURBULENCE':
col.itemR(field, "size")
col.itemR(field, "flow")
col.prop(field, "size")
col.prop(field, "flow")
elif field.type == 'HARMONIC':
col.itemR(field, "harmonic_damping", text="Damping")
col.prop(field, "harmonic_damping", text="Damping")
elif field.type == 'VORTEX' and field.shape != 'POINT':
col.itemR(field, "inflow")
col.prop(field, "inflow")
elif field.type == 'DRAG':
col.itemR(field, "quadratic_drag", text="Quadratic")
col.prop(field, "quadratic_drag", text="Quadratic")
else:
col.itemR(field, "flow")
col.prop(field, "flow")
if wide_ui:
col = split.column()
col.itemR(field, "noise")
col.itemR(field, "seed")
col.prop(field, "noise")
col.prop(field, "seed")
if field.type == 'TURBULENCE':
col.itemR(field, "global_coordinates", text="Global")
col.prop(field, "global_coordinates", text="Global")
split = layout.split()
col = split.column()
col.itemL(text="Effect point:")
col.itemR(field, "do_location")
col.itemR(field, "do_rotation")
col.label(text="Effect point:")
col.prop(field, "do_location")
col.prop(field, "do_rotation")
if wide_ui:
col = split.column()
col.itemL(text="Collision:")
col.itemR(field, "do_absorption")
col.label(text="Collision:")
col.prop(field, "do_absorption")
def basic_force_field_falloff_ui(self, context, field):
@@ -192,18 +192,18 @@ def basic_force_field_falloff_ui(self, context, field):
return
col = split.column()
col.itemR(field, "z_direction", text="")
col.itemR(field, "use_min_distance", text="Use Minimum")
col.itemR(field, "use_max_distance", text="Use Maximum")
col.prop(field, "z_direction", text="")
col.prop(field, "use_min_distance", text="Use Minimum")
col.prop(field, "use_max_distance", text="Use Maximum")
if wide_ui:
col = split.column()
col.itemR(field, "falloff_power", text="Power")
col.prop(field, "falloff_power", text="Power")
sub = col.column()
sub.active = field.use_min_distance
sub.itemR(field, "minimum_distance", text="Distance")
sub.prop(field, "minimum_distance", text="Distance")
sub = col.column()
sub.active = field.use_max_distance
sub.itemR(field, "maximum_distance", text="Distance")
sub.prop(field, "maximum_distance", text="Distance")

View File

@@ -48,19 +48,19 @@ class PHYSICS_PT_field(PhysicButtonsPanel):
if wide_ui:
split = layout.split(percentage=0.2)
split.itemL(text="Type:")
split.label(text="Type:")
else:
split = layout.split()
split.itemR(field, "type", text="")
split.prop(field, "type", text="")
if field.type not in ('NONE', 'GUIDE', 'TEXTURE'):
if wide_ui:
split = layout.split(percentage=0.2)
split.itemL(text="Shape:")
split.label(text="Shape:")
else:
split = layout.split()
split.itemR(field, "shape", text="")
split.prop(field, "shape", text="")
split = layout.split()
@@ -68,104 +68,104 @@ class PHYSICS_PT_field(PhysicButtonsPanel):
return # nothing to draw
elif field.type == 'GUIDE':
col = split.column()
col.itemR(field, "guide_minimum")
col.itemR(field, "guide_free")
col.itemR(field, "falloff_power")
col.itemR(field, "guide_path_add")
col.prop(field, "guide_minimum")
col.prop(field, "guide_free")
col.prop(field, "falloff_power")
col.prop(field, "guide_path_add")
if wide_ui:
col = split.column()
col.itemL(text="Clumping:")
col.itemR(field, "guide_clump_amount")
col.itemR(field, "guide_clump_shape")
col.label(text="Clumping:")
col.prop(field, "guide_clump_amount")
col.prop(field, "guide_clump_shape")
row = layout.row()
row.itemR(field, "use_max_distance")
row.prop(field, "use_max_distance")
sub = row.row()
sub.active = field.use_max_distance
sub.itemR(field, "maximum_distance")
sub.prop(field, "maximum_distance")
layout.itemS()
layout.separator()
layout.itemR(field, "guide_kink_type")
layout.prop(field, "guide_kink_type")
if (field.guide_kink_type != 'NONE'):
layout.itemR(field, "guide_kink_axis")
layout.prop(field, "guide_kink_axis")
split = layout.split()
col = split.column()
col.itemR(field, "guide_kink_frequency")
col.itemR(field, "guide_kink_shape")
col.prop(field, "guide_kink_frequency")
col.prop(field, "guide_kink_shape")
if wide_ui:
col = split.column()
col.itemR(field, "guide_kink_amplitude")
col.prop(field, "guide_kink_amplitude")
elif field.type == 'TEXTURE':
col = split.column()
col.itemR(field, "strength")
col.itemR(field, "texture", text="")
col.itemR(field, "texture_mode", text="")
col.itemR(field, "texture_nabla")
col.prop(field, "strength")
col.prop(field, "texture", text="")
col.prop(field, "texture_mode", text="")
col.prop(field, "texture_nabla")
if wide_ui:
col = split.column()
col.itemR(field, "use_coordinates")
col.itemR(field, "root_coordinates")
col.itemR(field, "force_2d")
col.prop(field, "use_coordinates")
col.prop(field, "root_coordinates")
col.prop(field, "force_2d")
else:
basic_force_field_settings_ui(self, context, field)
if field.type not in ('NONE', 'GUIDE'):
layout.itemL(text="Falloff:")
layout.itemR(field, "falloff_type", expand=True)
layout.label(text="Falloff:")
layout.prop(field, "falloff_type", expand=True)
basic_force_field_falloff_ui(self, context, field)
if field.falloff_type == 'CONE':
layout.itemS()
layout.separator()
split = layout.split(percentage=0.35)
col = split.column()
col.itemL(text="Angular:")
col.itemR(field, "use_radial_min", text="Use Minimum")
col.itemR(field, "use_radial_max", text="Use Maximum")
col.label(text="Angular:")
col.prop(field, "use_radial_min", text="Use Minimum")
col.prop(field, "use_radial_max", text="Use Maximum")
if wide_ui:
col = split.column()
col.itemR(field, "radial_falloff", text="Power")
col.prop(field, "radial_falloff", text="Power")
sub = col.column()
sub.active = field.use_radial_min
sub.itemR(field, "radial_minimum", text="Angle")
sub.prop(field, "radial_minimum", text="Angle")
sub = col.column()
sub.active = field.use_radial_max
sub.itemR(field, "radial_maximum", text="Angle")
sub.prop(field, "radial_maximum", text="Angle")
elif field.falloff_type == 'TUBE':
layout.itemS()
layout.separator()
split = layout.split(percentage=0.35)
col = split.column()
col.itemL(text="Radial:")
col.itemR(field, "use_radial_min", text="Use Minimum")
col.itemR(field, "use_radial_max", text="Use Maximum")
col.label(text="Radial:")
col.prop(field, "use_radial_min", text="Use Minimum")
col.prop(field, "use_radial_max", text="Use Maximum")
if wide_ui:
col = split.column()
col.itemR(field, "radial_falloff", text="Power")
col.prop(field, "radial_falloff", text="Power")
sub = col.column()
sub.active = field.use_radial_min
sub.itemR(field, "radial_minimum", text="Distance")
sub.prop(field, "radial_minimum", text="Distance")
sub = col.column()
sub.active = field.use_radial_max
sub.itemR(field, "radial_maximum", text="Distance")
sub.prop(field, "radial_maximum", text="Distance")
class PHYSICS_PT_collision(PhysicButtonsPanel):
@@ -189,21 +189,21 @@ class PHYSICS_PT_collision(PhysicButtonsPanel):
if md:
# remove modifier + settings
split.set_context_pointer("modifier", md)
split.itemO("object.modifier_remove", text="Remove")
split.operator("object.modifier_remove", text="Remove")
if wide_ui:
col = split.column()
#row = split.row(align=True)
#row.itemR(md, "render", text="")
#row.itemR(md, "realtime", text="")
#row.prop(md, "render", text="")
#row.prop(md, "realtime", text="")
coll = md.settings
else:
# add modifier
split.item_enumO("object.modifier_add", "type", 'COLLISION', text="Add")
split.operator_enum("object.modifier_add", "type", 'COLLISION', text="Add")
if wide_ui:
split.itemL()
split.label()
coll = None
@@ -215,31 +215,31 @@ class PHYSICS_PT_collision(PhysicButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Particle:")
col.itemR(settings, "permeability", slider=True)
col.itemR(settings, "kill_particles")
col.itemL(text="Particle Damping:")
col.label(text="Particle:")
col.prop(settings, "permeability", slider=True)
col.prop(settings, "kill_particles")
col.label(text="Particle Damping:")
sub = col.column(align=True)
sub.itemR(settings, "damping_factor", text="Factor", slider=True)
sub.itemR(settings, "random_damping", text="Random", slider=True)
sub.prop(settings, "damping_factor", text="Factor", slider=True)
sub.prop(settings, "random_damping", text="Random", slider=True)
col.itemL(text="Particle Friction:")
col.label(text="Particle Friction:")
sub = col.column(align=True)
sub.itemR(settings, "friction_factor", text="Factor", slider=True)
sub.itemR(settings, "random_friction", text="Random", slider=True)
sub.prop(settings, "friction_factor", text="Factor", slider=True)
sub.prop(settings, "random_friction", text="Random", slider=True)
if wide_ui:
col = split.column()
col.itemL(text="Soft Body and Cloth:")
col.label(text="Soft Body and Cloth:")
sub = col.column(align=True)
sub.itemR(settings, "outer_thickness", text="Outer", slider=True)
sub.itemR(settings, "inner_thickness", text="Inner", slider=True)
sub.prop(settings, "outer_thickness", text="Outer", slider=True)
sub.prop(settings, "inner_thickness", text="Inner", slider=True)
col.itemL(text="Soft Body Damping:")
col.itemR(settings, "damping", text="Factor", slider=True)
col.label(text="Soft Body Damping:")
col.prop(settings, "damping", text="Factor", slider=True)
col.itemL(text="Force Fields:")
col.itemR(settings, "absorption", text="Absorption")
col.label(text="Force Fields:")
col.prop(settings, "absorption", text="Absorption")
bpy.types.register(PHYSICS_PT_field)
bpy.types.register(PHYSICS_PT_collision)

View File

@@ -48,114 +48,114 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel):
if md:
# remove modifier + settings
split.set_context_pointer("modifier", md)
split.itemO("object.modifier_remove", text="Remove")
split.operator("object.modifier_remove", text="Remove")
row = split.row(align=True)
row.itemR(md, "render", text="")
row.itemR(md, "realtime", text="")
row.prop(md, "render", text="")
row.prop(md, "realtime", text="")
fluid = md.settings
else:
# add modifier
split.item_enumO("object.modifier_add", "type", 'FLUID_SIMULATION', text="Add")
split.operator_enum("object.modifier_add", "type", 'FLUID_SIMULATION', text="Add")
if wide_ui:
split.itemL()
split.label()
fluid = None
if fluid:
if wide_ui:
layout.itemR(fluid, "type")
layout.prop(fluid, "type")
else:
layout.itemR(fluid, "type", text="")
layout.prop(fluid, "type", text="")
if fluid.type == 'DOMAIN':
layout.itemO("fluid.bake", text="Bake Fluid Simulation", icon='ICON_MOD_FLUIDSIM')
layout.operator("fluid.bake", text="Bake Fluid Simulation", icon='ICON_MOD_FLUIDSIM')
split = layout.split()
col = split.column()
col.itemL(text="Resolution:")
col.itemR(fluid, "resolution", text="Final")
col.itemL(text="Render Display:")
col.itemR(fluid, "render_display_mode", text="")
col.label(text="Resolution:")
col.prop(fluid, "resolution", text="Final")
col.label(text="Render Display:")
col.prop(fluid, "render_display_mode", text="")
if wide_ui:
col = split.column()
col.itemL(text="Required Memory: " + fluid.memory_estimate)
col.itemR(fluid, "preview_resolution", text="Preview")
col.itemL(text="Viewport Display:")
col.itemR(fluid, "viewport_display_mode", text="")
col.label(text="Required Memory: " + fluid.memory_estimate)
col.prop(fluid, "preview_resolution", text="Preview")
col.label(text="Viewport Display:")
col.prop(fluid, "viewport_display_mode", text="")
split = layout.split()
col = split.column()
col.itemL(text="Time:")
col.label(text="Time:")
sub = col.column(align=True)
sub.itemR(fluid, "start_time", text="Start")
sub.itemR(fluid, "end_time", text="End")
sub.prop(fluid, "start_time", text="Start")
sub.prop(fluid, "end_time", text="End")
if wide_ui:
col = split.column()
col.itemL()
col.itemR(fluid, "generate_speed_vectors")
col.itemR(fluid, "reverse_frames")
col.label()
col.prop(fluid, "generate_speed_vectors")
col.prop(fluid, "reverse_frames")
layout.itemR(fluid, "path", text="")
layout.prop(fluid, "path", text="")
elif fluid.type == 'FLUID':
split = layout.split()
col = split.column()
col.itemL(text="Volume Initialization:")
col.itemR(fluid, "volume_initialization", text="")
col.itemR(fluid, "export_animated_mesh")
col.label(text="Volume Initialization:")
col.prop(fluid, "volume_initialization", text="")
col.prop(fluid, "export_animated_mesh")
if wide_ui:
col = split.column()
col.itemL(text="Initial Velocity:")
col.itemR(fluid, "initial_velocity", text="")
col.label(text="Initial Velocity:")
col.prop(fluid, "initial_velocity", text="")
elif fluid.type == 'OBSTACLE':
split = layout.split()
col = split.column()
col.itemL(text="Volume Initialization:")
col.itemR(fluid, "volume_initialization", text="")
col.itemR(fluid, "export_animated_mesh")
col.label(text="Volume Initialization:")
col.prop(fluid, "volume_initialization", text="")
col.prop(fluid, "export_animated_mesh")
if wide_ui:
col = split.column()
col.itemL(text="Slip Type:")
col.itemR(fluid, "slip_type", text="")
col.label(text="Slip Type:")
col.prop(fluid, "slip_type", text="")
if fluid.slip_type == 'PARTIALSLIP':
col.itemR(fluid, "partial_slip_factor", slider=True, text="Amount")
col.prop(fluid, "partial_slip_factor", slider=True, text="Amount")
col.itemL(text="Impact:")
col.itemR(fluid, "impact_factor", text="Factor")
col.label(text="Impact:")
col.prop(fluid, "impact_factor", text="Factor")
elif fluid.type == 'INFLOW':
split = layout.split()
col = split.column()
col.itemL(text="Volume Initialization:")
col.itemR(fluid, "volume_initialization", text="")
col.itemR(fluid, "export_animated_mesh")
col.itemR(fluid, "local_coordinates")
col.label(text="Volume Initialization:")
col.prop(fluid, "volume_initialization", text="")
col.prop(fluid, "export_animated_mesh")
col.prop(fluid, "local_coordinates")
if wide_ui:
col = split.column()
col.itemL(text="Inflow Velocity:")
col.itemR(fluid, "inflow_velocity", text="")
col.label(text="Inflow Velocity:")
col.prop(fluid, "inflow_velocity", text="")
elif fluid.type == 'OUTFLOW':
split = layout.split()
col = split.column()
col.itemL(text="Volume Initialization:")
col.itemR(fluid, "volume_initialization", text="")
col.itemR(fluid, "export_animated_mesh")
col.label(text="Volume Initialization:")
col.prop(fluid, "volume_initialization", text="")
col.prop(fluid, "export_animated_mesh")
if wide_ui:
split.column()
@@ -164,48 +164,48 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Influence:")
col.itemR(fluid, "particle_influence", text="Size")
col.itemR(fluid, "alpha_influence", text="Alpha")
col.label(text="Influence:")
col.prop(fluid, "particle_influence", text="Size")
col.prop(fluid, "alpha_influence", text="Alpha")
if wide_ui:
col = split.column()
col.itemL(text="Type:")
col.itemR(fluid, "drops")
col.itemR(fluid, "floats")
col.itemR(fluid, "tracer")
col.label(text="Type:")
col.prop(fluid, "drops")
col.prop(fluid, "floats")
col.prop(fluid, "tracer")
layout.itemR(fluid, "path", text="")
layout.prop(fluid, "path", text="")
elif fluid.type == 'CONTROL':
split = layout.split()
col = split.column()
col.itemL(text="")
col.itemR(fluid, "quality", slider=True)
col.itemR(fluid, "reverse_frames")
col.label(text="")
col.prop(fluid, "quality", slider=True)
col.prop(fluid, "reverse_frames")
if wide_ui:
col = split.column()
col.itemL(text="Time:")
col.label(text="Time:")
sub = col.column(align=True)
sub.itemR(fluid, "start_time", text="Start")
sub.itemR(fluid, "end_time", text="End")
sub.prop(fluid, "start_time", text="Start")
sub.prop(fluid, "end_time", text="End")
split = layout.split()
col = split.column()
col.itemL(text="Attraction Force:")
col.label(text="Attraction Force:")
sub = col.column(align=True)
sub.itemR(fluid, "attraction_strength", text="Strength")
sub.itemR(fluid, "attraction_radius", text="Radius")
sub.prop(fluid, "attraction_strength", text="Strength")
sub.prop(fluid, "attraction_radius", text="Radius")
if wide_ui:
col = split.column()
col.itemL(text="Velocity Force:")
col.label(text="Velocity Force:")
sub = col.column(align=True)
sub.itemR(fluid, "velocity_strength", text="Strength")
sub.itemR(fluid, "velocity_radius", text="Radius")
sub.prop(fluid, "velocity_strength", text="Strength")
sub.prop(fluid, "velocity_radius", text="Radius")
class PHYSICS_PT_domain_gravity(PhysicButtonsPanel):
@@ -225,24 +225,24 @@ class PHYSICS_PT_domain_gravity(PhysicButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Gravity:")
col.itemR(fluid, "gravity", text="")
col.itemL(text="Real World Size:")
col.itemR(fluid, "real_world_size", text="Metres")
col.label(text="Gravity:")
col.prop(fluid, "gravity", text="")
col.label(text="Real World Size:")
col.prop(fluid, "real_world_size", text="Metres")
if wide_ui:
col = split.column()
col.itemL(text="Viscosity Presets:")
col.label(text="Viscosity Presets:")
sub = col.column(align=True)
sub.itemR(fluid, "viscosity_preset", text="")
sub.prop(fluid, "viscosity_preset", text="")
if fluid.viscosity_preset == 'MANUAL':
sub.itemR(fluid, "viscosity_base", text="Base")
sub.itemR(fluid, "viscosity_exponent", text="Exponent", slider=True)
sub.prop(fluid, "viscosity_base", text="Base")
sub.prop(fluid, "viscosity_exponent", text="Exponent", slider=True)
col.itemL(text="Optimization:")
col.itemR(fluid, "grid_levels", slider=True)
col.itemR(fluid, "compressibility", slider=True)
col.label(text="Optimization:")
col.prop(fluid, "grid_levels", slider=True)
col.prop(fluid, "compressibility", slider=True)
class PHYSICS_PT_domain_boundary(PhysicButtonsPanel):
@@ -262,16 +262,16 @@ class PHYSICS_PT_domain_boundary(PhysicButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Slip Type:")
col.itemR(fluid, "slip_type", text="")
col.label(text="Slip Type:")
col.prop(fluid, "slip_type", text="")
if fluid.slip_type == 'PARTIALSLIP':
col.itemR(fluid, "partial_slip_factor", slider=True, text="Amount")
col.prop(fluid, "partial_slip_factor", slider=True, text="Amount")
if wide_ui:
col = split.column()
col.itemL(text="Surface:")
col.itemR(fluid, "surface_smoothing", text="Smoothing")
col.itemR(fluid, "surface_subdivisions", text="Subdivisions")
col.label(text="Surface:")
col.prop(fluid, "surface_smoothing", text="Smoothing")
col.prop(fluid, "surface_subdivisions", text="Subdivisions")
class PHYSICS_PT_domain_particles(PhysicButtonsPanel):
@@ -288,8 +288,8 @@ class PHYSICS_PT_domain_particles(PhysicButtonsPanel):
fluid = context.fluid.settings
col = layout.column(align=True)
col.itemR(fluid, "tracer_particles")
col.itemR(fluid, "generate_particles")
col.prop(fluid, "tracer_particles")
col.prop(fluid, "generate_particles")
bpy.types.register(PHYSICS_PT_fluid)
bpy.types.register(PHYSICS_PT_domain_gravity)

View File

@@ -53,23 +53,23 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel):
if md:
# remove modifier + settings
split.set_context_pointer("modifier", md)
split.itemO("object.modifier_remove", text="Remove")
split.operator("object.modifier_remove", text="Remove")
row = split.row(align=True)
row.itemR(md, "render", text="")
row.itemR(md, "realtime", text="")
row.prop(md, "render", text="")
row.prop(md, "realtime", text="")
else:
# add modifier
split.item_enumO("object.modifier_add", "type", 'SMOKE', text="Add")
split.operator_enum("object.modifier_add", "type", 'SMOKE', text="Add")
if wide_ui:
split.itemL()
split.label()
if md:
if wide_ui:
layout.itemR(md, "smoke_type", expand=True)
layout.prop(md, "smoke_type", expand=True)
else:
layout.itemR(md, "smoke_type", text="")
layout.prop(md, "smoke_type", text="")
if md.smoke_type == 'TYPE_DOMAIN':
@@ -78,19 +78,19 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Resolution:")
col.itemR(domain, "maxres", text="Divisions")
col.label(text="Resolution:")
col.prop(domain, "maxres", text="Divisions")
if wide_ui:
col = split.column()
col.itemL(text="Behavior:")
col.itemR(domain, "alpha")
col.itemR(domain, "beta")
col.itemR(domain, "dissolve_smoke", text="Dissolve")
col.label(text="Behavior:")
col.prop(domain, "alpha")
col.prop(domain, "beta")
col.prop(domain, "dissolve_smoke", text="Dissolve")
sub = col.column()
sub.active = domain.dissolve_smoke
sub.itemR(domain, "dissolve_speed", text="Time")
sub.itemR(domain, "dissolve_smoke_log", text="Slow")
sub.prop(domain, "dissolve_speed", text="Time")
sub.prop(domain, "dissolve_smoke_log", text="Slow")
elif md.smoke_type == 'TYPE_FLOW':
@@ -99,9 +99,9 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(flow, "outflow")
col.itemL(text="Particle System:")
col.item_pointerR(flow, "psys", ob, "particle_systems", text="")
col.prop(flow, "outflow")
col.label(text="Particle System:")
col.prop_pointer(flow, "psys", ob, "particle_systems", text="")
if md.flow_settings.outflow:
if wide_ui:
@@ -109,12 +109,12 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel):
else:
if wide_ui:
col = split.column()
col.itemL(text="Behavior:")
col.itemR(flow, "temperature")
col.itemR(flow, "density")
col.label(text="Behavior:")
col.prop(flow, "temperature")
col.prop(flow, "density")
#elif md.smoke_type == 'TYPE_COLL':
# layout.itemS()
# layout.separator()
class PHYSICS_PT_smoke_groups(PhysicButtonsPanel):
@@ -134,16 +134,16 @@ class PHYSICS_PT_smoke_groups(PhysicButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Flow Group:")
col.itemR(group, "fluid_group", text="")
col.label(text="Flow Group:")
col.prop(group, "fluid_group", text="")
#col.itemL(text="Effector Group:")
#col.itemR(group, "eff_group", text="")
#col.label(text="Effector Group:")
#col.prop(group, "eff_group", text="")
if wide_ui:
col = split.column()
col.itemL(text="Collision Group:")
col.itemR(group, "coll_group", text="")
col.label(text="Collision Group:")
col.prop(group, "coll_group", text="")
class PHYSICS_PT_smoke_cache(PhysicButtonsPanel):
@@ -172,7 +172,7 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel):
def draw_header(self, context):
high = context.smoke.domain_settings
self.layout.itemR(high, "highres", text="")
self.layout.prop(high, "highres", text="")
def draw(self, context):
layout = self.layout
@@ -183,15 +183,15 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Resolution:")
col.itemR(md, "amplify", text="Divisions")
col.itemR(md, "viewhighres")
col.label(text="Resolution:")
col.prop(md, "amplify", text="Divisions")
col.prop(md, "viewhighres")
if wide_ui:
col = split.column()
col.itemL(text="Noise Method:")
col.row().itemR(md, "noise_type", text="")
col.itemR(md, "strength")
col.label(text="Noise Method:")
col.row().prop(md, "noise_type", text="")
col.prop(md, "strength")
class PHYSICS_PT_smoke_cache_highres(PhysicButtonsPanel):

View File

@@ -57,14 +57,14 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel):
if md:
# remove modifier + settings
split.set_context_pointer("modifier", md)
split.itemO("object.modifier_remove", text="Remove")
split.operator("object.modifier_remove", text="Remove")
row = split.row(align=True)
row.itemR(md, "render", text="")
row.itemR(md, "realtime", text="")
row.prop(md, "render", text="")
row.prop(md, "realtime", text="")
else:
# add modifier
split.item_enumO("object.modifier_add", "type", 'SOFT_BODY', text="Add")
split.operator_enum("object.modifier_add", "type", 'SOFT_BODY', text="Add")
if wide_ui:
split.column()
@@ -76,15 +76,15 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel):
split.enabled = softbody_panel_enabled(md)
col = split.column()
col.itemL(text="Object:")
col.itemR(softbody, "friction")
col.itemR(softbody, "mass")
col.item_pointerR(softbody, "mass_vertex_group", ob, "vertex_groups", text="Mass:")
col.label(text="Object:")
col.prop(softbody, "friction")
col.prop(softbody, "mass")
col.prop_pointer(softbody, "mass_vertex_group", ob, "vertex_groups", text="Mass:")
if wide_ui:
col = split.column()
col.itemL(text="Simulation:")
col.itemR(softbody, "speed")
col.label(text="Simulation:")
col.prop(softbody, "speed")
class PHYSICS_PT_softbody_cache(PhysicButtonsPanel):
@@ -110,7 +110,7 @@ class PHYSICS_PT_softbody_goal(PhysicButtonsPanel):
softbody = context.soft_body.settings
self.layout.active = softbody_panel_enabled(context.soft_body)
self.layout.itemR(softbody, "use_goal", text="")
self.layout.prop(softbody, "use_goal", text="")
def draw(self, context):
layout = self.layout
@@ -128,19 +128,19 @@ class PHYSICS_PT_softbody_goal(PhysicButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Goal Strengths:")
col.itemR(softbody, "goal_default", text="Default")
col.label(text="Goal Strengths:")
col.prop(softbody, "goal_default", text="Default")
sub = col.column(align=True)
sub.itemR(softbody, "goal_min", text="Minimum")
sub.itemR(softbody, "goal_max", text="Maximum")
sub.prop(softbody, "goal_min", text="Minimum")
sub.prop(softbody, "goal_max", text="Maximum")
if wide_ui:
col = split.column()
col.itemL(text="Goal Settings:")
col.itemR(softbody, "goal_spring", text="Stiffness")
col.itemR(softbody, "goal_friction", text="Damping")
col.label(text="Goal Settings:")
col.prop(softbody, "goal_spring", text="Stiffness")
col.prop(softbody, "goal_friction", text="Damping")
layout.item_pointerR(softbody, "goal_vertex_group", ob, "vertex_groups", text="Vertex Group")
layout.prop_pointer(softbody, "goal_vertex_group", ob, "vertex_groups", text="Vertex Group")
class PHYSICS_PT_softbody_edge(PhysicButtonsPanel):
@@ -154,7 +154,7 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel):
softbody = context.soft_body.settings
self.layout.active = softbody_panel_enabled(context.soft_body)
self.layout.itemR(softbody, "use_edges", text="")
self.layout.prop(softbody, "use_edges", text="")
def draw(self, context):
layout = self.layout
@@ -169,30 +169,30 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Springs:")
col.itemR(softbody, "pull")
col.itemR(softbody, "push")
col.itemR(softbody, "damp")
col.itemR(softbody, "plastic")
col.itemR(softbody, "bending")
col.itemR(softbody, "spring_length", text="Length")
col.item_pointerR(softbody, "spring_vertex_group", ob, "vertex_groups", text="Springs:")
col.label(text="Springs:")
col.prop(softbody, "pull")
col.prop(softbody, "push")
col.prop(softbody, "damp")
col.prop(softbody, "plastic")
col.prop(softbody, "bending")
col.prop(softbody, "spring_length", text="Length")
col.prop_pointer(softbody, "spring_vertex_group", ob, "vertex_groups", text="Springs:")
if wide_ui:
col = split.column()
col.itemR(softbody, "stiff_quads")
col.prop(softbody, "stiff_quads")
sub = col.column()
sub.active = softbody.stiff_quads
sub.itemR(softbody, "shear")
sub.prop(softbody, "shear")
col.itemR(softbody, "new_aero", text="Aero")
col.prop(softbody, "new_aero", text="Aero")
sub = col.column()
sub.enabled = softbody.new_aero
sub.itemR(softbody, "aero", text="Factor")
sub.prop(softbody, "aero", text="Factor")
col.itemL(text="Collision:")
col.itemR(softbody, "edge_collision", text="Edge")
col.itemR(softbody, "face_collision", text="Face")
col.label(text="Collision:")
col.prop(softbody, "edge_collision", text="Edge")
col.prop(softbody, "face_collision", text="Face")
class PHYSICS_PT_softbody_collision(PhysicButtonsPanel):
@@ -206,7 +206,7 @@ class PHYSICS_PT_softbody_collision(PhysicButtonsPanel):
softbody = context.soft_body.settings
self.layout.active = softbody_panel_enabled(context.soft_body)
self.layout.itemR(softbody, "self_collision", text="")
self.layout.prop(softbody, "self_collision", text="")
def draw(self, context):
layout = self.layout
@@ -217,17 +217,17 @@ class PHYSICS_PT_softbody_collision(PhysicButtonsPanel):
layout.active = softbody.self_collision and softbody_panel_enabled(md)
layout.itemL(text="Collision Type:")
layout.label(text="Collision Type:")
if wide_ui:
layout.itemR(softbody, "collision_type", expand=True)
layout.prop(softbody, "collision_type", expand=True)
else:
layout.itemR(softbody, "collision_type", text="")
layout.prop(softbody, "collision_type", text="")
col = layout.column(align=True)
col.itemL(text="Ball:")
col.itemR(softbody, "ball_size", text="Size")
col.itemR(softbody, "ball_stiff", text="Stiffness")
col.itemR(softbody, "ball_damp", text="Dampening")
col.label(text="Ball:")
col.prop(softbody, "ball_size", text="Size")
col.prop(softbody, "ball_stiff", text="Stiffness")
col.prop(softbody, "ball_damp", text="Dampening")
class PHYSICS_PT_softbody_solver(PhysicButtonsPanel):
@@ -250,20 +250,20 @@ class PHYSICS_PT_softbody_solver(PhysicButtonsPanel):
split = layout.split()
col = split.column(align=True)
col.itemL(text="Step Size:")
col.itemR(softbody, "minstep")
col.itemR(softbody, "maxstep")
col.itemR(softbody, "auto_step", text="Auto-Step")
col.label(text="Step Size:")
col.prop(softbody, "minstep")
col.prop(softbody, "maxstep")
col.prop(softbody, "auto_step", text="Auto-Step")
if wide_ui:
col = split.column()
col.itemR(softbody, "error_limit")
col.itemL(text="Helpers:")
col.itemR(softbody, "choke")
col.itemR(softbody, "fuzzy")
col.prop(softbody, "error_limit")
col.label(text="Helpers:")
col.prop(softbody, "choke")
col.prop(softbody, "fuzzy")
layout.itemL(text="Diagnostics:")
layout.itemR(softbody, "diagnose")
layout.label(text="Diagnostics:")
layout.prop(softbody, "diagnose")
class PHYSICS_PT_softbody_field_weights(PhysicButtonsPanel):

View File

@@ -53,13 +53,13 @@ class RENDER_PT_render(RenderButtonsPanel):
split = layout.split()
col = split.column()
col.itemO("screen.render", text="Image", icon='ICON_RENDER_STILL')
col.operator("screen.render", text="Image", icon='ICON_RENDER_STILL')
if wide_ui:
col = split.column()
col.item_booleanO("screen.render", "animation", True, text="Animation", icon='ICON_RENDER_ANIMATION')
col.operator_boolean("screen.render", "animation", True, text="Animation", icon='ICON_RENDER_ANIMATION')
layout.itemR(rd, "display_mode", text="Display")
layout.prop(rd, "display_mode", text="Display")
class RENDER_PT_layers(RenderButtonsPanel):
@@ -78,86 +78,86 @@ class RENDER_PT_layers(RenderButtonsPanel):
row.template_list(rd, "layers", rd, "active_layer_index", rows=2)
col = row.column(align=True)
col.itemO("scene.render_layer_add", icon='ICON_ZOOMIN', text="")
col.itemO("scene.render_layer_remove", icon='ICON_ZOOMOUT', text="")
col.operator("scene.render_layer_add", icon='ICON_ZOOMIN', text="")
col.operator("scene.render_layer_remove", icon='ICON_ZOOMOUT', text="")
rl = rd.layers[rd.active_layer_index]
if rl:
layout.itemR(rl, "name")
layout.prop(rl, "name")
split = layout.split()
col = split.column()
col.itemR(scene, "visible_layers", text="Scene")
col.prop(scene, "visible_layers", text="Scene")
if wide_ui:
col = split.column()
col.itemR(rl, "visible_layers", text="Layer")
col.prop(rl, "visible_layers", text="Layer")
layout.itemR(rl, "light_override", text="Light")
layout.itemR(rl, "material_override", text="Material")
layout.prop(rl, "light_override", text="Light")
layout.prop(rl, "material_override", text="Material")
layout.itemS()
layout.itemL(text="Include:")
layout.separator()
layout.label(text="Include:")
split = layout.split()
col = split.column()
col.itemR(rl, "zmask")
col.prop(rl, "zmask")
row = col.row()
row.itemR(rl, "zmask_negate", text="Negate")
row.prop(rl, "zmask_negate", text="Negate")
row.active = rl.zmask
col.itemR(rl, "all_z")
col.prop(rl, "all_z")
col = split.column()
col.itemR(rl, "solid")
col.itemR(rl, "halo")
col.itemR(rl, "ztransp")
col.prop(rl, "solid")
col.prop(rl, "halo")
col.prop(rl, "ztransp")
col = split.column()
col.itemR(rl, "sky")
col.itemR(rl, "edge")
col.itemR(rl, "strand")
col.prop(rl, "sky")
col.prop(rl, "edge")
col.prop(rl, "strand")
if rl.zmask:
split = layout.split()
split.itemL(text="Zmask Layers:")
split.column().itemR(rl, "zmask_layers", text="")
split.label(text="Zmask Layers:")
split.column().prop(rl, "zmask_layers", text="")
layout.itemS()
layout.separator()
split = layout.split()
col = split.column()
col.itemL(text="Passes:")
col.itemR(rl, "pass_combined")
col.itemR(rl, "pass_z")
col.itemR(rl, "pass_vector")
col.itemR(rl, "pass_normal")
col.itemR(rl, "pass_uv")
col.itemR(rl, "pass_mist")
col.itemR(rl, "pass_object_index")
col.label(text="Passes:")
col.prop(rl, "pass_combined")
col.prop(rl, "pass_z")
col.prop(rl, "pass_vector")
col.prop(rl, "pass_normal")
col.prop(rl, "pass_uv")
col.prop(rl, "pass_mist")
col.prop(rl, "pass_object_index")
if wide_ui:
col = split.column()
col.itemL()
col.itemR(rl, "pass_color")
col.itemR(rl, "pass_diffuse")
col.label()
col.prop(rl, "pass_color")
col.prop(rl, "pass_diffuse")
row = col.row()
row.itemR(rl, "pass_specular")
row.itemR(rl, "pass_specular_exclude", text="", icon='ICON_X')
row.prop(rl, "pass_specular")
row.prop(rl, "pass_specular_exclude", text="", icon='ICON_X')
row = col.row()
row.itemR(rl, "pass_shadow")
row.itemR(rl, "pass_shadow_exclude", text="", icon='ICON_X')
row.prop(rl, "pass_shadow")
row.prop(rl, "pass_shadow_exclude", text="", icon='ICON_X')
row = col.row()
row.itemR(rl, "pass_ao")
row.itemR(rl, "pass_ao_exclude", text="", icon='ICON_X')
row.prop(rl, "pass_ao")
row.prop(rl, "pass_ao_exclude", text="", icon='ICON_X')
row = col.row()
row.itemR(rl, "pass_reflection")
row.itemR(rl, "pass_reflection_exclude", text="", icon='ICON_X')
row.prop(rl, "pass_reflection")
row.prop(rl, "pass_reflection_exclude", text="", icon='ICON_X')
row = col.row()
row.itemR(rl, "pass_refraction")
row.itemR(rl, "pass_refraction_exclude", text="", icon='ICON_X')
row.prop(rl, "pass_refraction")
row.prop(rl, "pass_refraction_exclude", text="", icon='ICON_X')
class RENDER_PT_shading(RenderButtonsPanel):
@@ -173,16 +173,16 @@ class RENDER_PT_shading(RenderButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(rd, "render_textures", text="Textures")
col.itemR(rd, "render_shadows", text="Shadows")
col.itemR(rd, "render_sss", text="Subsurface Scattering")
col.itemR(rd, "render_envmaps", text="Environment Map")
col.prop(rd, "render_textures", text="Textures")
col.prop(rd, "render_shadows", text="Shadows")
col.prop(rd, "render_sss", text="Subsurface Scattering")
col.prop(rd, "render_envmaps", text="Environment Map")
if wide_ui:
col = split.column()
col.itemR(rd, "render_raytracing", text="Ray Tracing")
col.itemR(rd, "color_management")
col.itemR(rd, "alpha_mode", text="Alpha")
col.prop(rd, "render_raytracing", text="Ray Tracing")
col.prop(rd, "color_management")
col.prop(rd, "alpha_mode", text="Alpha")
class RENDER_PT_performance(RenderButtonsPanel):
@@ -199,34 +199,34 @@ class RENDER_PT_performance(RenderButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Threads:")
col.row().itemR(rd, "threads_mode", expand=True)
col.label(text="Threads:")
col.row().prop(rd, "threads_mode", expand=True)
sub = col.column()
sub.enabled = rd.threads_mode == 'THREADS_FIXED'
sub.itemR(rd, "threads")
sub.prop(rd, "threads")
sub = col.column(align=True)
sub.itemL(text="Tiles:")
sub.itemR(rd, "parts_x", text="X")
sub.itemR(rd, "parts_y", text="Y")
sub.label(text="Tiles:")
sub.prop(rd, "parts_x", text="X")
sub.prop(rd, "parts_y", text="Y")
if wide_ui:
col = split.column()
col.itemL(text="Memory:")
col.label(text="Memory:")
sub = col.column()
sub.itemR(rd, "save_buffers")
sub.prop(rd, "save_buffers")
sub.enabled = not rd.full_sample
sub = col.column()
sub.active = rd.use_compositing
sub.itemR(rd, "free_image_textures")
sub.prop(rd, "free_image_textures")
sub = col.column()
sub.active = rd.render_raytracing
sub.itemL(text="Acceleration structure:")
sub.itemR(rd, "raytrace_structure", text="")
sub.label(text="Acceleration structure:")
sub.prop(rd, "raytrace_structure", text="")
if rd.raytrace_structure == 'OCTREE':
sub.itemR(rd, "octree_resolution", text="Resolution")
sub.prop(rd, "octree_resolution", text="Resolution")
else:
sub.itemR(rd, "use_instances", text="Instances")
sub.itemR(rd, "use_local_coords", text="Local Coordinates")
sub.prop(rd, "use_instances", text="Instances")
sub.prop(rd, "use_local_coords", text="Local Coordinates")
class RENDER_PT_post_processing(RenderButtonsPanel):
@@ -243,34 +243,34 @@ class RENDER_PT_post_processing(RenderButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(rd, "use_compositing")
col.itemR(rd, "use_sequencer")
col.prop(rd, "use_compositing")
col.prop(rd, "use_sequencer")
if wide_ui:
col = split.column()
col.itemR(rd, "dither_intensity", text="Dither", slider=True)
col.prop(rd, "dither_intensity", text="Dither", slider=True)
layout.itemS()
layout.separator()
split = layout.split()
col = split.column()
col.itemR(rd, "fields", text="Fields")
col.prop(rd, "fields", text="Fields")
sub = col.column()
sub.active = rd.fields
sub.row().itemR(rd, "field_order", expand=True)
sub.itemR(rd, "fields_still", text="Still")
sub.row().prop(rd, "field_order", expand=True)
sub.prop(rd, "fields_still", text="Still")
if wide_ui:
col = split.column()
else:
col.itemS()
col.itemR(rd, "edge")
col.separator()
col.prop(rd, "edge")
sub = col.column()
sub.active = rd.edge
sub.itemR(rd, "edge_threshold", text="Threshold", slider=True)
sub.itemR(rd, "edge_color", text="")
sub.prop(rd, "edge_threshold", text="Threshold", slider=True)
sub.prop(rd, "edge_color", text="")
class RENDER_PT_output(RenderButtonsPanel):
@@ -283,66 +283,66 @@ class RENDER_PT_output(RenderButtonsPanel):
rd = context.scene.render_data
wide_ui = context.region.width > narrowui
layout.itemR(rd, "output_path", text="")
layout.prop(rd, "output_path", text="")
split = layout.split()
col = split.column()
col.itemR(rd, "file_format", text="")
col.row().itemR(rd, "color_mode", text="Color", expand=True)
col.prop(rd, "file_format", text="")
col.row().prop(rd, "color_mode", text="Color", expand=True)
if wide_ui:
col = split.column()
col.itemR(rd, "file_extensions")
col.itemR(rd, "use_overwrite")
col.itemR(rd, "use_placeholder")
col.prop(rd, "file_extensions")
col.prop(rd, "use_overwrite")
col.prop(rd, "use_placeholder")
if rd.file_format in ('AVIJPEG', 'JPEG'):
split = layout.split()
split.itemR(rd, "quality", slider=True)
split.prop(rd, "quality", slider=True)
elif rd.file_format == 'OPENEXR':
split = layout.split()
col = split.column()
col.itemL(text="Codec:")
col.itemR(rd, "exr_codec", text="")
col.label(text="Codec:")
col.prop(rd, "exr_codec", text="")
if wide_ui:
subsplit = split.split()
col = subsplit.column()
col.itemR(rd, "exr_half")
col.itemR(rd, "exr_zbuf")
col.prop(rd, "exr_half")
col.prop(rd, "exr_zbuf")
if wide_ui:
col = subsplit.column()
col.itemR(rd, "exr_preview")
col.prop(rd, "exr_preview")
elif rd.file_format == 'JPEG2000':
split = layout.split()
col = split.column()
col.itemL(text="Depth:")
col.row().itemR(rd, "jpeg2k_depth", expand=True)
col.label(text="Depth:")
col.row().prop(rd, "jpeg2k_depth", expand=True)
if wide_ui:
col = split.column()
col.itemR(rd, "jpeg2k_preset", text="")
col.itemR(rd, "jpeg2k_ycc")
col.prop(rd, "jpeg2k_preset", text="")
col.prop(rd, "jpeg2k_ycc")
elif rd.file_format in ('CINEON', 'DPX'):
split = layout.split()
col = split.column()
col.itemR(rd, "cineon_log", text="Convert to Log")
col.prop(rd, "cineon_log", text="Convert to Log")
if wide_ui:
col = split.column(align=True)
col.active = rd.cineon_log
col.itemR(rd, "cineon_black", text="Black")
col.itemR(rd, "cineon_white", text="White")
col.itemR(rd, "cineon_gamma", text="Gamma")
col.prop(rd, "cineon_black", text="Black")
col.prop(rd, "cineon_white", text="White")
col.prop(rd, "cineon_gamma", text="Gamma")
elif rd.file_format == 'TIFF':
split = layout.split()
split.itemR(rd, "tiff_bit")
split.prop(rd, "tiff_bit")
class RENDER_PT_QTencoding(RenderButtonsPanel):
@@ -362,12 +362,12 @@ class RENDER_PT_QTencoding(RenderButtonsPanel):
split = layout.split()
split.itemR(rd, "quicktime_codec_type")
split.prop(rd, "quicktime_codec_type")
split = layout.split()
if rd.file_format == 'QUICKTIME_QTKIT':
split.itemR(rd, "quicktime_codec_spatial_quality", text="Quality", slider=True)
split.prop(rd, "quicktime_codec_spatial_quality", text="Quality", slider=True)
class RENDER_PT_encoding(RenderButtonsPanel):
@@ -388,54 +388,54 @@ class RENDER_PT_encoding(RenderButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(rd, "ffmpeg_format")
col.prop(rd, "ffmpeg_format")
if rd.ffmpeg_format in ('AVI', 'QUICKTIME', 'MKV', 'OGG'):
if wide_ui:
col = split.column()
col.itemR(rd, "ffmpeg_codec")
col.prop(rd, "ffmpeg_codec")
else:
if wide_ui:
split.itemL()
split.label()
split = layout.split()
col = split.column()
col.itemR(rd, "ffmpeg_video_bitrate")
col.prop(rd, "ffmpeg_video_bitrate")
if wide_ui:
col = split.column()
col.itemR(rd, "ffmpeg_gopsize")
col.prop(rd, "ffmpeg_gopsize")
split = layout.split()
col = split.column()
col.itemL(text="Rate:")
col.itemR(rd, "ffmpeg_minrate", text="Minimum")
col.itemR(rd, "ffmpeg_maxrate", text="Maximum")
col.itemR(rd, "ffmpeg_buffersize", text="Buffer")
col.label(text="Rate:")
col.prop(rd, "ffmpeg_minrate", text="Minimum")
col.prop(rd, "ffmpeg_maxrate", text="Maximum")
col.prop(rd, "ffmpeg_buffersize", text="Buffer")
if wide_ui:
col = split.column()
col.itemR(rd, "ffmpeg_autosplit")
col.itemL(text="Mux:")
col.itemR(rd, "ffmpeg_muxrate", text="Rate")
col.itemR(rd, "ffmpeg_packetsize", text="Packet Size")
col.prop(rd, "ffmpeg_autosplit")
col.label(text="Mux:")
col.prop(rd, "ffmpeg_muxrate", text="Rate")
col.prop(rd, "ffmpeg_packetsize", text="Packet Size")
row = layout.row()
row.itemL(text="Audio:")
row.label(text="Audio:")
row = layout.row()
row.itemR(rd, "ffmpeg_audio_codec", text="Codec")
row.prop(rd, "ffmpeg_audio_codec", text="Codec")
split = layout.split()
col = split.column()
col.itemR(rd, "ffmpeg_audio_bitrate")
col.itemR(rd, "ffmpeg_audio_mixrate")
col.prop(rd, "ffmpeg_audio_bitrate")
col.prop(rd, "ffmpeg_audio_mixrate")
if wide_ui:
col = split.column()
col.itemR(rd, "ffmpeg_multiplex_audio")
col.itemR(rd, "ffmpeg_audio_volume", slider=True)
col.prop(rd, "ffmpeg_multiplex_audio")
col.prop(rd, "ffmpeg_audio_volume", slider=True)
class RENDER_PT_antialiasing(RenderButtonsPanel):
@@ -445,7 +445,7 @@ class RENDER_PT_antialiasing(RenderButtonsPanel):
def draw_header(self, context):
rd = context.scene.render_data
self.layout.itemR(rd, "antialiasing", text="")
self.layout.prop(rd, "antialiasing", text="")
def draw(self, context):
layout = self.layout
@@ -457,13 +457,13 @@ class RENDER_PT_antialiasing(RenderButtonsPanel):
split = layout.split()
col = split.column()
col.row().itemR(rd, "antialiasing_samples", expand=True)
col.itemR(rd, "full_sample")
col.row().prop(rd, "antialiasing_samples", expand=True)
col.prop(rd, "full_sample")
if wide_ui:
col = split.column()
col.itemR(rd, "pixel_filter", text="")
col.itemR(rd, "filter_size", text="Size", slider=True)
col.prop(rd, "pixel_filter", text="")
col.prop(rd, "filter_size", text="Size", slider=True)
class RENDER_PT_dimensions(RenderButtonsPanel):
@@ -479,39 +479,39 @@ class RENDER_PT_dimensions(RenderButtonsPanel):
row = layout.row().split()
sub = row.row(align=True).split(percentage=0.75)
sub.itemM("RENDER_MT_presets", text="Presets")
sub.itemO("render.preset_add", text="Add")
sub.menu("RENDER_MT_presets", text="Presets")
sub.operator("render.preset_add", text="Add")
split = layout.split()
col = split.column()
sub = col.column(align=True)
sub.itemL(text="Resolution:")
sub.itemR(rd, "resolution_x", text="X")
sub.itemR(rd, "resolution_y", text="Y")
sub.itemR(rd, "resolution_percentage", text="")
sub.label(text="Resolution:")
sub.prop(rd, "resolution_x", text="X")
sub.prop(rd, "resolution_y", text="Y")
sub.prop(rd, "resolution_percentage", text="")
sub.itemL(text="Aspect Ratio:")
sub.itemR(rd, "pixel_aspect_x", text="X")
sub.itemR(rd, "pixel_aspect_y", text="Y")
sub.label(text="Aspect Ratio:")
sub.prop(rd, "pixel_aspect_x", text="X")
sub.prop(rd, "pixel_aspect_y", text="Y")
row = col.row()
row.itemR(rd, "use_border", text="Border")
row.prop(rd, "use_border", text="Border")
sub = row.row()
sub.active = rd.use_border
sub.itemR(rd, "crop_to_border", text="Crop")
sub.prop(rd, "crop_to_border", text="Crop")
if wide_ui:
col = split.column()
sub = col.column(align=True)
sub.itemL(text="Frame Range:")
sub.itemR(scene, "start_frame", text="Start")
sub.itemR(scene, "end_frame", text="End")
sub.itemR(scene, "frame_step", text="Step")
sub.label(text="Frame Range:")
sub.prop(scene, "start_frame", text="Start")
sub.prop(scene, "end_frame", text="End")
sub.prop(scene, "frame_step", text="Step")
sub.itemL(text="Frame Rate:")
sub.itemR(rd, "fps")
sub.itemR(rd, "fps_base", text="/")
sub.label(text="Frame Rate:")
sub.prop(rd, "fps")
sub.prop(rd, "fps_base", text="/")
class RENDER_PT_stamp(RenderButtonsPanel):
@@ -522,7 +522,7 @@ class RENDER_PT_stamp(RenderButtonsPanel):
def draw_header(self, context):
rd = context.scene.render_data
self.layout.itemR(rd, "render_stamp", text="")
self.layout.prop(rd, "render_stamp", text="")
def draw(self, context):
layout = self.layout
@@ -535,29 +535,29 @@ class RENDER_PT_stamp(RenderButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(rd, "stamp_time", text="Time")
col.itemR(rd, "stamp_date", text="Date")
col.itemR(rd, "stamp_render_time", text="RenderTime")
col.itemR(rd, "stamp_frame", text="Frame")
col.itemR(rd, "stamp_scene", text="Scene")
col.itemR(rd, "stamp_camera", text="Camera")
col.itemR(rd, "stamp_filename", text="Filename")
col.itemR(rd, "stamp_marker", text="Marker")
col.itemR(rd, "stamp_sequence_strip", text="Seq. Strip")
col.prop(rd, "stamp_time", text="Time")
col.prop(rd, "stamp_date", text="Date")
col.prop(rd, "stamp_render_time", text="RenderTime")
col.prop(rd, "stamp_frame", text="Frame")
col.prop(rd, "stamp_scene", text="Scene")
col.prop(rd, "stamp_camera", text="Camera")
col.prop(rd, "stamp_filename", text="Filename")
col.prop(rd, "stamp_marker", text="Marker")
col.prop(rd, "stamp_sequence_strip", text="Seq. Strip")
if wide_ui:
col = split.column()
col.active = rd.render_stamp
col.itemR(rd, "stamp_foreground", slider=True)
col.itemR(rd, "stamp_background", slider=True)
col.itemS()
col.itemR(rd, "stamp_font_size", text="Font Size")
col.prop(rd, "stamp_foreground", slider=True)
col.prop(rd, "stamp_background", slider=True)
col.separator()
col.prop(rd, "stamp_font_size", text="Font Size")
row = layout.split(percentage=0.2)
row.itemR(rd, "stamp_note", text="Note")
row.prop(rd, "stamp_note", text="Note")
sub = row.row()
sub.active = rd.stamp_note
sub.itemR(rd, "stamp_note_text", text="")
sub.prop(rd, "stamp_note_text", text="")
bpy.types.register(RENDER_MT_presets)

View File

@@ -41,11 +41,11 @@ class SCENE_PT_scene(SceneButtonsPanel):
scene = context.scene
if wide_ui:
layout.itemR(scene, "camera")
layout.itemR(scene, "set", text="Background")
layout.prop(scene, "camera")
layout.prop(scene, "set", text="Background")
else:
layout.itemR(scene, "camera", text="")
layout.itemR(scene, "set", text="")
layout.prop(scene, "camera", text="")
layout.prop(scene, "set", text="")
class SCENE_PT_unit(SceneButtonsPanel):
@@ -58,17 +58,17 @@ class SCENE_PT_unit(SceneButtonsPanel):
unit = context.scene.unit_settings
col = layout.column()
col.row().itemR(unit, "system", expand=True)
col.row().prop(unit, "system", expand=True)
split = layout.split()
split.active = (unit.system != 'NONE')
col = split.column()
col.itemR(unit, "scale_length", text="Scale")
col.prop(unit, "scale_length", text="Scale")
if wide_ui:
col = split.column()
col.itemR(unit, "use_separate")
col.prop(unit, "use_separate")
class SCENE_PT_keying_sets(SceneButtonsPanel):
@@ -85,22 +85,22 @@ class SCENE_PT_keying_sets(SceneButtonsPanel):
col.template_list(scene, "keying_sets", scene, "active_keying_set_index", rows=2)
col = row.column(align=True)
col.itemO("anim.keying_set_add", icon='ICON_ZOOMIN', text="")
col.itemO("anim.keying_set_remove", icon='ICON_ZOOMOUT', text="")
col.operator("anim.keying_set_add", icon='ICON_ZOOMIN', text="")
col.operator("anim.keying_set_remove", icon='ICON_ZOOMOUT', text="")
ks = scene.active_keying_set
if ks:
row = layout.row()
col = row.column()
col.itemR(ks, "name")
col.itemR(ks, "absolute")
col.prop(ks, "name")
col.prop(ks, "absolute")
if wide_ui:
col = row.column()
col.itemL(text="Keyframing Settings:")
col.itemR(ks, "insertkey_needed", text="Needed")
col.itemR(ks, "insertkey_visual", text="Visual")
col.label(text="Keyframing Settings:")
col.prop(ks, "insertkey_needed", text="Needed")
col.prop(ks, "insertkey_visual", text="Visual")
class SCENE_PT_keying_set_paths(SceneButtonsPanel):
@@ -117,7 +117,7 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel):
wide_ui = context.region.width > narrowui
row = layout.row()
row.itemL(text="Paths:")
row.label(text="Paths:")
row = layout.row()
@@ -125,13 +125,13 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel):
col.template_list(ks, "paths", ks, "active_path_index", rows=2)
col = row.column(align=True)
col.itemO("anim.keying_set_path_add", icon='ICON_ZOOMIN', text="")
col.itemO("anim.keying_set_path_remove", icon='ICON_ZOOMOUT', text="")
col.operator("anim.keying_set_path_add", icon='ICON_ZOOMIN', text="")
col.operator("anim.keying_set_path_remove", icon='ICON_ZOOMOUT', text="")
ksp = ks.active_path
if ksp:
col = layout.column()
col.itemL(text="Target:")
col.label(text="Target:")
col.template_any_ID(ksp, "id", "id_type")
col.template_path_builder(ksp, "rna_path", ksp.id)
@@ -139,17 +139,17 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel):
row = layout.row()
col = row.column()
col.itemL(text="Array Target:")
col.itemR(ksp, "entire_array")
col.label(text="Array Target:")
col.prop(ksp, "entire_array")
if ksp.entire_array is False:
col.itemR(ksp, "array_index")
col.prop(ksp, "array_index")
if wide_ui:
col = row.column()
col.itemL(text="F-Curve Grouping:")
col.itemR(ksp, "grouping")
col.label(text="F-Curve Grouping:")
col.prop(ksp, "grouping")
if ksp.grouping == 'NAMED':
col.itemR(ksp, "group")
col.prop(ksp, "group")
class SCENE_PT_physics(SceneButtonsPanel):
@@ -157,7 +157,7 @@ class SCENE_PT_physics(SceneButtonsPanel):
COMPAT_ENGINES = set(['BLENDER_RENDER'])
def draw_header(self, context):
self.layout.itemR(context.scene, "use_gravity", text="")
self.layout.prop(context.scene, "use_gravity", text="")
def draw(self, context):
layout = self.layout
@@ -168,9 +168,9 @@ class SCENE_PT_physics(SceneButtonsPanel):
layout.active = scene.use_gravity
if wide_ui:
layout.itemR(scene, "gravity", text="")
layout.prop(scene, "gravity", text="")
else:
layout.column().itemR(scene, "gravity", text="")
layout.column().prop(scene, "gravity", text="")
bpy.types.register(SCENE_PT_scene)
bpy.types.register(SCENE_PT_unit)

View File

@@ -99,8 +99,8 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel):
row.template_list(idblock, "textures", idblock, "active_texture_index", rows=2)
col = row.column(align=True)
col.item_enumO("texture.slot_move", "type", 'UP', text="", icon='ICON_TRIA_UP')
col.item_enumO("texture.slot_move", "type", 'DOWN', text="", icon='ICON_TRIA_DOWN')
col.operator_enum("texture.slot_move", "type", 'UP', text="", icon='ICON_TRIA_UP')
col.operator_enum("texture.slot_move", "type", 'DOWN', text="", icon='ICON_TRIA_DOWN')
if wide_ui:
@@ -118,10 +118,10 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel):
context.weight_paint_object or
context.texture_paint_object):
split.itemR(space, "brush_texture", text="Brush", toggle=True)
split.prop(space, "brush_texture", text="Brush", toggle=True)
if tex:
layout.itemR(tex, "use_nodes")
layout.prop(tex, "use_nodes")
split = layout.split(percentage=0.2)
@@ -129,15 +129,15 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel):
slot = context.texture_slot
if slot:
split.itemL(text="Output:")
split.itemR(slot, "output_node", text="")
split.label(text="Output:")
split.prop(slot, "output_node", text="")
else:
if wide_ui:
split.itemL(text="Type:")
split.itemR(tex, "type", text="")
split.label(text="Type:")
split.prop(tex, "type", text="")
else:
layout.itemR(tex, "type", text="")
layout.prop(tex, "type", text="")
class TEXTURE_PT_colors(TextureButtonsPanel):
@@ -150,24 +150,24 @@ class TEXTURE_PT_colors(TextureButtonsPanel):
tex = context.texture
wide_ui = context.region.width > narrowui
layout.itemR(tex, "use_color_ramp", text="Ramp")
layout.prop(tex, "use_color_ramp", text="Ramp")
if tex.use_color_ramp:
layout.template_color_ramp(tex, "color_ramp", expand=True)
split = layout.split()
col = split.column()
col.itemL(text="RGB Multiply:")
col.label(text="RGB Multiply:")
sub = col.column(align=True)
sub.itemR(tex, "factor_red", text="R")
sub.itemR(tex, "factor_green", text="G")
sub.itemR(tex, "factor_blue", text="B")
sub.prop(tex, "factor_red", text="R")
sub.prop(tex, "factor_green", text="G")
sub.prop(tex, "factor_blue", text="B")
if wide_ui:
col = split.column()
col.itemL(text="Adjust:")
col.itemR(tex, "brightness")
col.itemR(tex, "contrast")
col.label(text="Adjust:")
col.prop(tex, "brightness")
col.prop(tex, "contrast")
# Texture Slot Panels #
@@ -194,74 +194,74 @@ class TEXTURE_PT_mapping(TextureSlotPanel):
if type(idblock) != bpy.types.Brush:
split = layout.split(percentage=0.3)
col = split.column()
col.itemL(text="Coordinates:")
col.label(text="Coordinates:")
col = split.column()
col.itemR(tex, "texture_coordinates", text="")
col.prop(tex, "texture_coordinates", text="")
if tex.texture_coordinates == 'ORCO':
"""
ob = context.object
if ob and ob.type == 'MESH':
split = layout.split(percentage=0.3)
split.itemL(text="Mesh:")
split.itemR(ob.data, "texco_mesh", text="")
split.label(text="Mesh:")
split.prop(ob.data, "texco_mesh", text="")
"""
elif tex.texture_coordinates == 'UV':
split = layout.split(percentage=0.3)
split.itemL(text="Layer:")
split.label(text="Layer:")
ob = context.object
if ob and ob.type == 'MESH':
split.item_pointerR(tex, "uv_layer", ob.data, "uv_textures", text="")
split.prop_pointer(tex, "uv_layer", ob.data, "uv_textures", text="")
else:
split.itemR(tex, "uv_layer", text="")
split.prop(tex, "uv_layer", text="")
elif tex.texture_coordinates == 'OBJECT':
split = layout.split(percentage=0.3)
split.itemL(text="Object:")
split.itemR(tex, "object", text="")
split.label(text="Object:")
split.prop(tex, "object", text="")
if type(idblock) == bpy.types.Brush:
layout.itemR(tex, "map_mode", expand=True)
layout.prop(tex, "map_mode", expand=True)
row = layout.row()
row.active = tex.map_mode in ('FIXED', 'TILED')
row.itemR(tex, "angle")
row.prop(tex, "angle")
row = layout.row()
row.active = tex.map_mode in ('TILED', '3D')
row.column().itemR(tex, "size")
row.column().prop(tex, "size")
else:
if type(idblock) == bpy.types.Material:
split = layout.split(percentage=0.3)
split.itemL(text="Projection:")
split.itemR(tex, "mapping", text="")
split.label(text="Projection:")
split.prop(tex, "mapping", text="")
split = layout.split()
col = split.column()
if tex.texture_coordinates in ('ORCO', 'UV'):
col.itemR(tex, "from_dupli")
col.prop(tex, "from_dupli")
elif tex.texture_coordinates == 'OBJECT':
col.itemR(tex, "from_original")
col.prop(tex, "from_original")
elif wide_ui:
col.itemL()
col.label()
if wide_ui:
col = split.column()
row = col.row()
row.itemR(tex, "x_mapping", text="")
row.itemR(tex, "y_mapping", text="")
row.itemR(tex, "z_mapping", text="")
row.prop(tex, "x_mapping", text="")
row.prop(tex, "y_mapping", text="")
row.prop(tex, "z_mapping", text="")
# any non brush
split = layout.split()
col = split.column()
col.itemR(tex, "offset")
col.prop(tex, "offset")
if wide_ui:
col = split.column()
col.itemR(tex, "size")
col.prop(tex, "size")
class TEXTURE_PT_influence(TextureSlotPanel):
@@ -282,43 +282,43 @@ class TEXTURE_PT_influence(TextureSlotPanel):
def factor_but(layout, active, toggle, factor, name):
row = layout.row(align=True)
row.itemR(tex, toggle, text="")
row.prop(tex, toggle, text="")
sub = row.row()
sub.active = active
sub.itemR(tex, factor, text=name, slider=True)
sub.prop(tex, factor, text=name, slider=True)
if type(idblock) == bpy.types.Material:
if idblock.type in ('SURFACE', 'HALO', 'WIRE'):
split = layout.split()
col = split.column()
col.itemL(text="Diffuse:")
col.label(text="Diffuse:")
factor_but(col, tex.map_diffuse, "map_diffuse", "diffuse_factor", "Intensity")
factor_but(col, tex.map_colordiff, "map_colordiff", "colordiff_factor", "Color")
factor_but(col, tex.map_alpha, "map_alpha", "alpha_factor", "Alpha")
factor_but(col, tex.map_translucency, "map_translucency", "translucency_factor", "Translucency")
col.itemL(text="Specular:")
col.label(text="Specular:")
factor_but(col, tex.map_specular, "map_specular", "specular_factor", "Intensity")
factor_but(col, tex.map_colorspec, "map_colorspec", "colorspec_factor", "Color")
factor_but(col, tex.map_hardness, "map_hardness", "hardness_factor", "Hardness")
if wide_ui:
col = split.column()
col.itemL(text="Shading:")
col.label(text="Shading:")
factor_but(col, tex.map_ambient, "map_ambient", "ambient_factor", "Ambient")
factor_but(col, tex.map_emit, "map_emit", "emit_factor", "Emit")
factor_but(col, tex.map_mirror, "map_mirror", "mirror_factor", "Mirror")
factor_but(col, tex.map_raymir, "map_raymir", "raymir_factor", "Ray Mirror")
col.itemL(text="Geometry:")
col.label(text="Geometry:")
factor_but(col, tex.map_normal, "map_normal", "normal_factor", "Normal")
factor_but(col, tex.map_warp, "map_warp", "warp_factor", "Warp")
factor_but(col, tex.map_displacement, "map_displacement", "displacement_factor", "Displace")
#sub = col.column()
#sub.active = tex.map_translucency or tex.map_emit or tex.map_alpha or tex.map_raymir or tex.map_hardness or tex.map_ambient or tex.map_specularity or tex.map_reflection or tex.map_mirror
#sub.itemR(tex, "default_value", text="Amount", slider=True)
#sub.prop(tex, "default_value", text="Amount", slider=True)
elif idblock.type == 'VOLUME':
split = layout.split()
@@ -330,7 +330,7 @@ class TEXTURE_PT_influence(TextureSlotPanel):
if wide_ui:
col = split.column()
col.itemL(text=" ")
col.label(text=" ")
factor_but(col, tex.map_alpha, "map_coloremission", "coloremission_factor", "Emission Color")
factor_but(col, tex.map_colortransmission, "map_colortransmission", "colortransmission_factor", "Transmission Color")
factor_but(col, tex.map_colorreflection, "map_colorreflection", "colorreflection_factor", "Reflection Color")
@@ -357,24 +357,24 @@ class TEXTURE_PT_influence(TextureSlotPanel):
factor_but(col, tex.map_zenith_up, "map_zenith_up", "zenith_up_factor", "Zenith Up")
factor_but(col, tex.map_zenith_down, "map_zenith_down", "zenith_down_factor", "Zenith Down")
layout.itemS()
layout.separator()
split = layout.split()
col = split.column()
col.itemR(tex, "blend_type", text="Blend")
col.itemR(tex, "rgb_to_intensity")
col.prop(tex, "blend_type", text="Blend")
col.prop(tex, "rgb_to_intensity")
sub = col.column()
sub.active = tex.rgb_to_intensity
sub.itemR(tex, "color", text="")
sub.prop(tex, "color", text="")
if wide_ui:
col = split.column()
col.itemR(tex, "negate", text="Negative")
col.itemR(tex, "stencil")
col.prop(tex, "negate", text="Negative")
col.prop(tex, "stencil")
if type(idblock) in (bpy.types.Material, bpy.types.World):
col.itemR(tex, "default_value", text="DVar", slider=True)
col.prop(tex, "default_value", text="DVar", slider=True)
# Texture Type Panels #
@@ -396,23 +396,23 @@ class TEXTURE_PT_clouds(TextureTypePanel):
tex = context.texture
wide_ui = context.region.width > narrowui
layout.itemR(tex, "stype", expand=True)
layout.itemL(text="Noise:")
layout.itemR(tex, "noise_type", text="Type", expand=True)
layout.prop(tex, "stype", expand=True)
layout.label(text="Noise:")
layout.prop(tex, "noise_type", text="Type", expand=True)
if wide_ui:
layout.itemR(tex, "noise_basis", text="Basis")
layout.prop(tex, "noise_basis", text="Basis")
else:
layout.itemR(tex, "noise_basis", text="")
layout.prop(tex, "noise_basis", text="")
split = layout.split()
col = split.column()
col.itemR(tex, "noise_size", text="Size")
col.itemR(tex, "noise_depth", text="Depth")
col.prop(tex, "noise_size", text="Size")
col.prop(tex, "noise_depth", text="Depth")
if wide_ui:
col = split.column()
col.itemR(tex, "nabla", text="Nabla")
col.prop(tex, "nabla", text="Nabla")
class TEXTURE_PT_wood(TextureTypePanel):
@@ -425,30 +425,30 @@ class TEXTURE_PT_wood(TextureTypePanel):
tex = context.texture
wide_ui = context.region.width > narrowui
layout.itemR(tex, "noisebasis2", expand=True)
layout.prop(tex, "noisebasis2", expand=True)
if wide_ui:
layout.itemR(tex, "stype", expand=True)
layout.prop(tex, "stype", expand=True)
else:
layout.itemR(tex, "stype", text="")
layout.prop(tex, "stype", text="")
col = layout.column()
col.active = tex.stype in ('RINGNOISE', 'BANDNOISE')
col.itemL(text="Noise:")
col.row().itemR(tex, "noise_type", text="Type", expand=True)
col.label(text="Noise:")
col.row().prop(tex, "noise_type", text="Type", expand=True)
if wide_ui:
layout.itemR(tex, "noise_basis", text="Basis")
layout.prop(tex, "noise_basis", text="Basis")
else:
layout.itemR(tex, "noise_basis", text="")
layout.prop(tex, "noise_basis", text="")
split = layout.split()
split.active = tex.stype in ('RINGNOISE', 'BANDNOISE')
col = split.column()
col.itemR(tex, "noise_size", text="Size")
col.itemR(tex, "turbulence")
col.prop(tex, "noise_size", text="Size")
col.prop(tex, "turbulence")
col = split.column()
col.itemR(tex, "nabla")
col.prop(tex, "nabla")
class TEXTURE_PT_marble(TextureTypePanel):
@@ -461,25 +461,25 @@ class TEXTURE_PT_marble(TextureTypePanel):
tex = context.texture
wide_ui = context.region.width > narrowui
layout.itemR(tex, "stype", expand=True)
layout.itemR(tex, "noisebasis2", expand=True)
layout.itemL(text="Noise:")
layout.itemR(tex, "noise_type", text="Type", expand=True)
layout.prop(tex, "stype", expand=True)
layout.prop(tex, "noisebasis2", expand=True)
layout.label(text="Noise:")
layout.prop(tex, "noise_type", text="Type", expand=True)
if wide_ui:
layout.itemR(tex, "noise_basis", text="Basis")
layout.prop(tex, "noise_basis", text="Basis")
else:
layout.itemR(tex, "noise_basis", text="")
layout.prop(tex, "noise_basis", text="")
split = layout.split()
col = split.column()
col.itemR(tex, "noise_size", text="Size")
col.itemR(tex, "noise_depth", text="Depth")
col.prop(tex, "noise_size", text="Size")
col.prop(tex, "noise_depth", text="Depth")
if wide_ui:
col = split.column()
col.itemR(tex, "turbulence")
col.itemR(tex, "nabla")
col.prop(tex, "turbulence")
col.prop(tex, "nabla")
class TEXTURE_PT_magic(TextureTypePanel):
@@ -495,11 +495,11 @@ class TEXTURE_PT_magic(TextureTypePanel):
split = layout.split()
col = split.column()
col.itemR(tex, "noise_depth", text="Depth")
col.prop(tex, "noise_depth", text="Depth")
if wide_ui:
col = split.column()
col.itemR(tex, "turbulence")
col.prop(tex, "turbulence")
class TEXTURE_PT_blend(TextureTypePanel):
@@ -513,14 +513,14 @@ class TEXTURE_PT_blend(TextureTypePanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(tex, "progression")
layout.prop(tex, "progression")
else:
layout.itemR(tex, "progression", text="")
layout.prop(tex, "progression", text="")
sub = layout.row()
sub.active = (tex.progression in ('LINEAR', 'QUADRATIC', 'EASING', 'RADIAL'))
sub.itemR(tex, "flip_axis", expand=True)
sub.prop(tex, "flip_axis", expand=True)
class TEXTURE_PT_stucci(TextureTypePanel):
@@ -533,22 +533,22 @@ class TEXTURE_PT_stucci(TextureTypePanel):
tex = context.texture
wide_ui = context.region.width > narrowui
layout.itemR(tex, "stype", expand=True)
layout.itemL(text="Noise:")
layout.itemR(tex, "noise_type", text="Type", expand=True)
layout.prop(tex, "stype", expand=True)
layout.label(text="Noise:")
layout.prop(tex, "noise_type", text="Type", expand=True)
if wide_ui:
layout.itemR(tex, "noise_basis", text="Basis")
layout.prop(tex, "noise_basis", text="Basis")
else:
layout.itemR(tex, "noise_basis", text="")
layout.prop(tex, "noise_basis", text="")
split = layout.split()
col = split.column()
col.itemR(tex, "noise_size", text="Size")
col.prop(tex, "noise_size", text="Size")
if wide_ui:
col = split.column()
col.itemR(tex, "turbulence")
col.prop(tex, "turbulence")
class TEXTURE_PT_image(TextureTypePanel):
@@ -578,38 +578,38 @@ class TEXTURE_PT_image_sampling(TextureTypePanel):
split = layout.split()
col = split.column()
col.itemL(text="Alpha:")
col.itemR(tex, "use_alpha", text="Use")
col.itemR(tex, "calculate_alpha", text="Calculate")
col.itemR(tex, "invert_alpha", text="Invert")
col.itemS()
col.itemR(tex, "flip_axis", text="Flip X/Y Axis")
col.label(text="Alpha:")
col.prop(tex, "use_alpha", text="Use")
col.prop(tex, "calculate_alpha", text="Calculate")
col.prop(tex, "invert_alpha", text="Invert")
col.separator()
col.prop(tex, "flip_axis", text="Flip X/Y Axis")
if wide_ui:
col = split.column()
else:
col.itemS()
col.itemR(tex, "normal_map")
col.separator()
col.prop(tex, "normal_map")
row = col.row()
row.active = tex.normal_map
row.itemR(tex, "normal_space", text="")
row.prop(tex, "normal_space", text="")
col.itemL(text="Filter:")
col.itemR(tex, "filter", text="")
col.itemR(tex, "filter_size")
col.itemR(tex, "filter_size_minimum")
col.itemR(tex, "mipmap")
col.label(text="Filter:")
col.prop(tex, "filter", text="")
col.prop(tex, "filter_size")
col.prop(tex, "filter_size_minimum")
col.prop(tex, "mipmap")
row = col.row()
row.active = tex.mipmap
row.itemR(tex, "mipmap_gauss")
row.prop(tex, "mipmap_gauss")
col.itemR(tex, "interpolation")
col.prop(tex, "interpolation")
if tex.mipmap and tex.filter != 'DEFAULT':
if tex.filter == 'FELINE':
col.itemR(tex, "filter_probes", text="Probes")
col.prop(tex, "filter_probes", text="Probes")
else:
col.itemR(tex, "filter_eccentricity", text="Eccentricity")
col.prop(tex, "filter_eccentricity", text="Eccentricity")
class TEXTURE_PT_image_mapping(TextureTypePanel):
@@ -624,50 +624,50 @@ class TEXTURE_PT_image_mapping(TextureTypePanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(tex, "extension")
layout.prop(tex, "extension")
else:
layout.itemR(tex, "extension", text="")
layout.prop(tex, "extension", text="")
split = layout.split()
if tex.extension == 'REPEAT':
col = split.column(align=True)
col.itemL(text="Repeat:")
col.itemR(tex, "repeat_x", text="X")
col.itemR(tex, "repeat_y", text="Y")
col.label(text="Repeat:")
col.prop(tex, "repeat_x", text="X")
col.prop(tex, "repeat_y", text="Y")
if wide_ui:
col = split.column(align=True)
col.itemL(text="Mirror:")
col.itemR(tex, "mirror_x", text="X")
col.itemR(tex, "mirror_y", text="Y")
layout.itemS()
col.label(text="Mirror:")
col.prop(tex, "mirror_x", text="X")
col.prop(tex, "mirror_y", text="Y")
layout.separator()
elif tex.extension == 'CHECKER':
col = split.column(align=True)
row = col.row()
row.itemR(tex, "checker_even", text="Even")
row.itemR(tex, "checker_odd", text="Odd")
row.prop(tex, "checker_even", text="Even")
row.prop(tex, "checker_odd", text="Odd")
if wide_ui:
col = split.column()
col.itemR(tex, "checker_distance", text="Distance")
col.prop(tex, "checker_distance", text="Distance")
layout.itemS()
layout.separator()
split = layout.split()
col = split.column(align=True)
#col.itemR(tex, "crop_rectangle")
col.itemL(text="Crop Minimum:")
col.itemR(tex, "crop_min_x", text="X")
col.itemR(tex, "crop_min_y", text="Y")
#col.prop(tex, "crop_rectangle")
col.label(text="Crop Minimum:")
col.prop(tex, "crop_min_x", text="X")
col.prop(tex, "crop_min_y", text="Y")
if wide_ui:
col = split.column(align=True)
col.itemL(text="Crop Maximum:")
col.itemR(tex, "crop_max_x", text="X")
col.itemR(tex, "crop_max_y", text="Y")
col.label(text="Crop Maximum:")
col.prop(tex, "crop_max_x", text="X")
col.prop(tex, "crop_max_y", text="Y")
class TEXTURE_PT_plugin(TextureTypePanel):
@@ -679,7 +679,7 @@ class TEXTURE_PT_plugin(TextureTypePanel):
# tex = context.texture
layout.itemL(text="Nothing yet")
layout.label(text="Nothing yet")
class TEXTURE_PT_envmap(TextureTypePanel):
@@ -691,7 +691,7 @@ class TEXTURE_PT_envmap(TextureTypePanel):
# tex = context.texture
layout.itemL(text="Nothing yet")
layout.label(text="Nothing yet")
class TEXTURE_PT_musgrave(TextureTypePanel):
@@ -705,40 +705,40 @@ class TEXTURE_PT_musgrave(TextureTypePanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(tex, "musgrave_type")
layout.prop(tex, "musgrave_type")
else:
layout.itemR(tex, "musgrave_type", text="")
layout.prop(tex, "musgrave_type", text="")
split = layout.split()
col = split.column()
col.itemR(tex, "highest_dimension", text="Dimension")
col.itemR(tex, "lacunarity")
col.itemR(tex, "octaves")
col.prop(tex, "highest_dimension", text="Dimension")
col.prop(tex, "lacunarity")
col.prop(tex, "octaves")
if wide_ui:
col = split.column()
if (tex.musgrave_type in ('HETERO_TERRAIN', 'RIDGED_MULTIFRACTAL', 'HYBRID_MULTIFRACTAL')):
col.itemR(tex, "offset")
col.prop(tex, "offset")
if (tex.musgrave_type in ('RIDGED_MULTIFRACTAL', 'HYBRID_MULTIFRACTAL')):
col.itemR(tex, "gain")
col.itemR(tex, "noise_intensity", text="Intensity")
col.prop(tex, "gain")
col.prop(tex, "noise_intensity", text="Intensity")
layout.itemL(text="Noise:")
layout.label(text="Noise:")
if wide_ui:
layout.itemR(tex, "noise_basis", text="Basis")
layout.prop(tex, "noise_basis", text="Basis")
else:
layout.itemR(tex, "noise_basis", text="")
layout.prop(tex, "noise_basis", text="")
split = layout.split()
col = split.column()
col.itemR(tex, "noise_size", text="Size")
col.prop(tex, "noise_size", text="Size")
if wide_ui:
col = split.column()
col.itemR(tex, "nabla")
col.prop(tex, "nabla")
class TEXTURE_PT_voronoi(TextureTypePanel):
@@ -754,34 +754,34 @@ class TEXTURE_PT_voronoi(TextureTypePanel):
split = layout.split()
col = split.column()
col.itemL(text="Distance Metric:")
col.itemR(tex, "distance_metric", text="")
col.label(text="Distance Metric:")
col.prop(tex, "distance_metric", text="")
sub = col.column()
sub.active = tex.distance_metric == 'MINKOVSKY'
sub.itemR(tex, "minkovsky_exponent", text="Exponent")
col.itemL(text="Coloring:")
col.itemR(tex, "coloring", text="")
col.itemR(tex, "noise_intensity", text="Intensity")
sub.prop(tex, "minkovsky_exponent", text="Exponent")
col.label(text="Coloring:")
col.prop(tex, "coloring", text="")
col.prop(tex, "noise_intensity", text="Intensity")
if wide_ui:
col = split.column()
sub = col.column(align=True)
sub.itemL(text="Feature Weights:")
sub.itemR(tex, "weight_1", text="1", slider=True)
sub.itemR(tex, "weight_2", text="2", slider=True)
sub.itemR(tex, "weight_3", text="3", slider=True)
sub.itemR(tex, "weight_4", text="4", slider=True)
sub.label(text="Feature Weights:")
sub.prop(tex, "weight_1", text="1", slider=True)
sub.prop(tex, "weight_2", text="2", slider=True)
sub.prop(tex, "weight_3", text="3", slider=True)
sub.prop(tex, "weight_4", text="4", slider=True)
layout.itemL(text="Noise:")
layout.label(text="Noise:")
split = layout.split()
col = split.column()
col.itemR(tex, "noise_size", text="Size")
col.prop(tex, "noise_size", text="Size")
if wide_ui:
col = split.column()
col.itemR(tex, "nabla")
col.prop(tex, "nabla")
class TEXTURE_PT_distortednoise(TextureTypePanel):
@@ -795,21 +795,21 @@ class TEXTURE_PT_distortednoise(TextureTypePanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(tex, "noise_distortion")
layout.itemR(tex, "noise_basis", text="Basis")
layout.prop(tex, "noise_distortion")
layout.prop(tex, "noise_basis", text="Basis")
else:
layout.itemR(tex, "noise_distortion", text="")
layout.itemR(tex, "noise_basis", text="")
layout.prop(tex, "noise_distortion", text="")
layout.prop(tex, "noise_basis", text="")
split = layout.split()
col = split.column()
col.itemR(tex, "distortion", text="Distortion")
col.itemR(tex, "noise_size", text="Size")
col.prop(tex, "distortion", text="Distortion")
col.prop(tex, "noise_size", text="Size")
if wide_ui:
col = split.column()
col.itemR(tex, "nabla")
col.prop(tex, "nabla")
class TEXTURE_PT_voxeldata(TextureButtonsPanel):
@@ -825,22 +825,22 @@ class TEXTURE_PT_voxeldata(TextureButtonsPanel):
tex = context.texture
vd = tex.voxeldata
layout.itemR(vd, "file_format")
layout.prop(vd, "file_format")
if vd.file_format in ['BLENDER_VOXEL', 'RAW_8BIT']:
layout.itemR(vd, "source_path")
layout.prop(vd, "source_path")
if vd.file_format == 'RAW_8BIT':
layout.itemR(vd, "resolution")
layout.prop(vd, "resolution")
elif vd.file_format == 'SMOKE':
layout.itemR(vd, "domain_object")
layout.prop(vd, "domain_object")
layout.itemR(vd, "still")
layout.prop(vd, "still")
row = layout.row()
row.active = vd.still
row.itemR(vd, "still_frame_number")
row.prop(vd, "still_frame_number")
layout.itemR(vd, "interpolation")
layout.itemR(vd, "extension")
layout.itemR(vd, "intensity")
layout.prop(vd, "interpolation")
layout.prop(vd, "extension")
layout.prop(vd, "intensity")
class TEXTURE_PT_pointdensity(TextureButtonsPanel):
@@ -858,47 +858,47 @@ class TEXTURE_PT_pointdensity(TextureButtonsPanel):
wide_ui = context.region.width > narrowui
if wide_ui:
layout.itemR(pd, "point_source", expand=True)
layout.prop(pd, "point_source", expand=True)
else:
layout.itemR(pd, "point_source", text="")
layout.prop(pd, "point_source", text="")
split = layout.split()
col = split.column()
if pd.point_source == 'PARTICLE_SYSTEM':
col.itemL(text="Object:")
col.itemR(pd, "object", text="")
col.label(text="Object:")
col.prop(pd, "object", text="")
sub = col.column()
sub.enabled = bool(pd.object)
if pd.object:
sub.itemL(text="System:")
sub.item_pointerR(pd, "particle_system", pd.object, "particle_systems", text="")
sub.itemL(text="Cache:")
sub.itemR(pd, "particle_cache", text="")
sub.label(text="System:")
sub.prop_pointer(pd, "particle_system", pd.object, "particle_systems", text="")
sub.label(text="Cache:")
sub.prop(pd, "particle_cache", text="")
else:
col.itemL(text="Object:")
col.itemR(pd, "object", text="")
col.itemL(text="Cache:")
col.itemR(pd, "vertices_cache", text="")
col.label(text="Object:")
col.prop(pd, "object", text="")
col.label(text="Cache:")
col.prop(pd, "vertices_cache", text="")
col.itemS()
col.separator()
col.itemL(text="Color Source:")
col.itemR(pd, "color_source", text="")
col.label(text="Color Source:")
col.prop(pd, "color_source", text="")
if pd.color_source in ('PARTICLE_SPEED', 'PARTICLE_VELOCITY'):
col.itemR(pd, "speed_scale")
col.prop(pd, "speed_scale")
if pd.color_source in ('PARTICLE_SPEED', 'PARTICLE_AGE'):
layout.template_color_ramp(pd, "color_ramp", expand=True)
if wide_ui:
col = split.column()
col.itemL()
col.itemR(pd, "radius")
col.itemL(text="Falloff:")
col.itemR(pd, "falloff", text="")
col.label()
col.prop(pd, "radius")
col.label(text="Falloff:")
col.prop(pd, "falloff", text="")
if pd.falloff == 'SOFT':
col.itemR(pd, "falloff_softness")
col.prop(pd, "falloff_softness")
class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel):
@@ -914,7 +914,7 @@ class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel):
tex = context.texture
pd = tex.pointdensity
layout.itemR(pd, "turbulence", text="")
layout.prop(pd, "turbulence", text="")
def draw(self, context):
layout = self.layout
@@ -927,17 +927,17 @@ class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel):
split = layout.split()
col = split.column()
col.itemL(text="Influence:")
col.itemR(pd, "turbulence_influence", text="")
col.itemL(text="Noise Basis:")
col.itemR(pd, "noise_basis", text="")
col.label(text="Influence:")
col.prop(pd, "turbulence_influence", text="")
col.label(text="Noise Basis:")
col.prop(pd, "noise_basis", text="")
if wide_ui:
col = split.column()
col.itemL()
col.itemR(pd, "turbulence_size")
col.itemR(pd, "turbulence_depth")
col.itemR(pd, "turbulence_strength")
col.label()
col.prop(pd, "turbulence_size")
col.prop(pd, "turbulence_depth")
col.prop(pd, "turbulence_strength")
bpy.types.register(TEXTURE_PT_context_texture)
bpy.types.register(TEXTURE_PT_preview)

View File

@@ -80,21 +80,21 @@ class WORLD_PT_world(WorldButtonsPanel):
if wide_ui:
row = layout.row()
row.itemR(world, "paper_sky")
row.itemR(world, "blend_sky")
row.itemR(world, "real_sky")
row.prop(world, "paper_sky")
row.prop(world, "blend_sky")
row.prop(world, "real_sky")
else:
col = layout.column()
col.itemR(world, "paper_sky")
col.itemR(world, "blend_sky")
col.itemR(world, "real_sky")
col.prop(world, "paper_sky")
col.prop(world, "blend_sky")
col.prop(world, "real_sky")
row = layout.row()
row.column().itemR(world, "horizon_color")
row.column().prop(world, "horizon_color")
col = row.column()
col.itemR(world, "zenith_color")
col.prop(world, "zenith_color")
col.active = world.blend_sky
row.column().itemR(world, "ambient_color")
row.column().prop(world, "ambient_color")
class WORLD_PT_mist(WorldButtonsPanel):
@@ -104,7 +104,7 @@ class WORLD_PT_mist(WorldButtonsPanel):
def draw_header(self, context):
world = context.world
self.layout.itemR(world.mist, "enabled", text="")
self.layout.prop(world.mist, "enabled", text="")
def draw(self, context):
layout = self.layout
@@ -116,15 +116,15 @@ class WORLD_PT_mist(WorldButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(world.mist, "intensity", slider=True)
col.itemR(world.mist, "start")
col.prop(world.mist, "intensity", slider=True)
col.prop(world.mist, "start")
if wide_ui:
col = split.column()
col.itemR(world.mist, "depth")
col.itemR(world.mist, "height")
col.prop(world.mist, "depth")
col.prop(world.mist, "height")
layout.itemR(world.mist, "falloff")
layout.prop(world.mist, "falloff")
class WORLD_PT_stars(WorldButtonsPanel):
@@ -134,7 +134,7 @@ class WORLD_PT_stars(WorldButtonsPanel):
def draw_header(self, context):
world = context.world
self.layout.itemR(world.stars, "enabled", text="")
self.layout.prop(world.stars, "enabled", text="")
def draw(self, context):
layout = self.layout
@@ -146,13 +146,13 @@ class WORLD_PT_stars(WorldButtonsPanel):
split = layout.split()
col = split.column()
col.itemR(world.stars, "size")
col.itemR(world.stars, "color_randomization", text="Colors")
col.prop(world.stars, "size")
col.prop(world.stars, "color_randomization", text="Colors")
if wide_ui:
col = split.column()
col.itemR(world.stars, "min_distance", text="Min. Dist")
col.itemR(world.stars, "average_separation", text="Separation")
col.prop(world.stars, "min_distance", text="Min. Dist")
col.prop(world.stars, "average_separation", text="Separation")
class WORLD_PT_ambient_occlusion(WorldButtonsPanel):
@@ -162,7 +162,7 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel):
def draw_header(self, context):
world = context.world
self.layout.itemR(world.ambient_occlusion, "enabled", text="")
self.layout.prop(world.ambient_occlusion, "enabled", text="")
def draw(self, context):
layout = self.layout
@@ -171,58 +171,58 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel):
layout.active = ao.enabled
layout.itemR(ao, "gather_method", expand=True)
layout.prop(ao, "gather_method", expand=True)
split = layout.split()
col = split.column()
col.itemL(text="Attenuation:")
col.label(text="Attenuation:")
if ao.gather_method == 'RAYTRACE':
col.itemR(ao, "distance")
col.itemR(ao, "falloff")
col.prop(ao, "distance")
col.prop(ao, "falloff")
sub = col.row()
sub.active = ao.falloff
sub.itemR(ao, "falloff_strength", text="Strength")
sub.prop(ao, "falloff_strength", text="Strength")
if ao.gather_method == 'RAYTRACE':
if wide_ui:
col = split.column()
col.itemL(text="Sampling:")
col.itemR(ao, "sample_method", text="")
col.label(text="Sampling:")
col.prop(ao, "sample_method", text="")
sub = col.column()
sub.itemR(ao, "samples")
sub.prop(ao, "samples")
if ao.sample_method == 'ADAPTIVE_QMC':
sub.itemR(ao, "threshold")
sub.itemR(ao, "adapt_to_speed", slider=True)
sub.prop(ao, "threshold")
sub.prop(ao, "adapt_to_speed", slider=True)
elif ao.sample_method == 'CONSTANT_JITTERED':
sub.itemR(ao, "bias")
sub.prop(ao, "bias")
if ao.gather_method == 'APPROXIMATE':
if wide_ui:
col = split.column()
col.itemL(text="Sampling:")
col.itemR(ao, "passes")
col.itemR(ao, "error_tolerance", text="Error")
col.itemR(ao, "pixel_cache")
col.itemR(ao, "correction")
col.label(text="Sampling:")
col.prop(ao, "passes")
col.prop(ao, "error_tolerance", text="Error")
col.prop(ao, "pixel_cache")
col.prop(ao, "correction")
col = layout.column()
col.itemL(text="Influence:")
col.label(text="Influence:")
col.row().itemR(ao, "blend_mode", expand=True)
col.row().prop(ao, "blend_mode", expand=True)
split = layout.split()
col = split.column()
col.itemR(ao, "energy")
col.prop(ao, "energy")
if wide_ui:
col = split.column()
col.itemR(ao, "color")
col.prop(ao, "color")
bpy.types.register(WORLD_PT_context_world)
bpy.types.register(WORLD_PT_preview)

View File

@@ -34,11 +34,11 @@ class Buttons_HT_header(bpy.types.Header):
if context.area.show_menus:
sub = row.row(align=True)
sub.itemM("Buttons_MT_view", text="View")
sub.menu("Buttons_MT_view", text="View")
row = layout.row()
row.itemR(so, "buttons_context", expand=True, text="")
row.itemR(scene, "current_frame")
row.prop(so, "buttons_context", expand=True, text="")
row.prop(scene, "current_frame")
class Buttons_MT_view(bpy.types.Menu):
@@ -49,7 +49,7 @@ class Buttons_MT_view(bpy.types.Menu):
so = context.space_data
col = layout.column()
col.itemR(so, "panel_alignment", expand=True)
col.prop(so, "panel_alignment", expand=True)
bpy.types.register(Buttons_HT_header)
bpy.types.register(Buttons_MT_view)

View File

@@ -36,27 +36,27 @@ class CONSOLE_HT_header(bpy.types.Header):
sub = row.row(align=True)
if sc.console_type == 'REPORT':
sub.itemM("CONSOLE_MT_report")
sub.menu("CONSOLE_MT_report")
else:
sub.itemM("CONSOLE_MT_console")
sub.menu("CONSOLE_MT_console")
layout.itemS()
layout.itemR(sc, "console_type", expand=True)
layout.separator()
layout.prop(sc, "console_type", expand=True)
if sc.console_type == 'REPORT':
row = layout.row(align=True)
row.itemR(sc, "show_report_debug", text="Debug")
row.itemR(sc, "show_report_info", text="Info")
row.itemR(sc, "show_report_operator", text="Operators")
row.itemR(sc, "show_report_warn", text="Warnings")
row.itemR(sc, "show_report_error", text="Errors")
row.prop(sc, "show_report_debug", text="Debug")
row.prop(sc, "show_report_info", text="Info")
row.prop(sc, "show_report_operator", text="Operators")
row.prop(sc, "show_report_warn", text="Warnings")
row.prop(sc, "show_report_error", text="Errors")
row = layout.row()
row.enabled = sc.show_report_operator
row.itemO("console.report_replay")
row.operator("console.report_replay")
else:
row = layout.row(align=True)
row.itemO("console.autocomplete", text="Autocomplete")
row.operator("console.autocomplete", text="Autocomplete")
class CONSOLE_MT_console(bpy.types.Menu):
@@ -65,10 +65,10 @@ class CONSOLE_MT_console(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.column()
layout.itemO("console.clear")
layout.itemO("console.copy")
layout.itemO("console.paste")
layout.itemM("CONSOLE_MT_language")
layout.operator("console.clear")
layout.operator("console.copy")
layout.operator("console.paste")
layout.menu("CONSOLE_MT_language")
class CONSOLE_MT_report(bpy.types.Menu):
@@ -77,10 +77,10 @@ class CONSOLE_MT_report(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.column()
layout.itemO("console.select_all_toggle")
layout.itemO("console.select_border")
layout.itemO("console.report_delete")
layout.itemO("console.report_copy")
layout.operator("console.select_all_toggle")
layout.operator("console.select_border")
layout.operator("console.report_delete")
layout.operator("console.report_copy")
class CONSOLE_MT_language(bpy.types.Menu):
@@ -101,7 +101,7 @@ class CONSOLE_MT_language(bpy.types.Menu):
languages.sort()
for language in languages:
layout.item_stringO("console.language", "language", language, text=language[0].upper() + language[1:])
layout.operator_string("console.language", "language", language, text=language[0].upper() + language[1:])
def add_scrollback(text, text_type):

View File

@@ -32,36 +32,36 @@ class FILEBROWSER_HT_header(bpy.types.Header):
layout.template_header(menus=False)
row = layout.row()
row.itemS()
row.separator()
row = layout.row(align=True)
row.itemO("file.previous", text="", icon='ICON_BACK')
row.itemO("file.next", text="", icon='ICON_FORWARD')
row.itemO("file.parent", text="", icon='ICON_FILE_PARENT')
row.itemO("file.refresh", text="", icon='ICON_FILE_REFRESH')
row.operator("file.previous", text="", icon='ICON_BACK')
row.operator("file.next", text="", icon='ICON_FORWARD')
row.operator("file.parent", text="", icon='ICON_FILE_PARENT')
row.operator("file.refresh", text="", icon='ICON_FILE_REFRESH')
row = layout.row()
row.itemS()
row.separator()
row = layout.row(align=True)
row.itemO("file.directory_new", text="", icon='ICON_NEWFOLDER')
row.operator("file.directory_new", text="", icon='ICON_NEWFOLDER')
layout.itemR(params, "display", expand=True, text="")
layout.itemR(params, "sort", expand=True, text="")
layout.prop(params, "display", expand=True, text="")
layout.prop(params, "sort", expand=True, text="")
layout.itemR(params, "hide_dot", text="Hide Invisible")
layout.itemR(params, "do_filter", text="", icon='ICON_FILTER')
layout.prop(params, "hide_dot", text="Hide Invisible")
layout.prop(params, "do_filter", text="", icon='ICON_FILTER')
row = layout.row(align=True)
row.active = params.do_filter
row.itemR(params, "filter_folder", text="")
row.itemR(params, "filter_blender", text="")
row.itemR(params, "filter_image", text="")
row.itemR(params, "filter_movie", text="")
row.itemR(params, "filter_script", text="")
row.itemR(params, "filter_font", text="")
row.itemR(params, "filter_sound", text="")
row.itemR(params, "filter_text", text="")
row.prop(params, "filter_folder", text="")
row.prop(params, "filter_blender", text="")
row.prop(params, "filter_image", text="")
row.prop(params, "filter_movie", text="")
row.prop(params, "filter_script", text="")
row.prop(params, "filter_font", text="")
row.prop(params, "filter_sound", text="")
row.prop(params, "filter_text", text="")
bpy.types.register(FILEBROWSER_HT_header)

View File

@@ -34,34 +34,34 @@ class IMAGE_MT_view(bpy.types.Menu):
show_uvedit = sima.show_uvedit
layout.itemO("image.properties", icon='ICON_MENU_PANEL')
layout.operator("image.properties", icon='ICON_MENU_PANEL')
layout.itemS()
layout.separator()
layout.itemR(sima, "update_automatically")
layout.prop(sima, "update_automatically")
if show_uvedit:
layout.itemR(settings, "uv_local_view") # Numpad /
layout.prop(settings, "uv_local_view") # Numpad /
layout.itemS()
layout.separator()
layout.itemO("image.view_zoom_in")
layout.itemO("image.view_zoom_out")
layout.operator("image.view_zoom_in")
layout.operator("image.view_zoom_out")
layout.itemS()
layout.separator()
ratios = [[1, 8], [1, 4], [1, 2], [1, 1], [2, 1], [4, 1], [8, 1]]
for a, b in ratios:
text = "Zoom %d:%d" % (a, b)
layout.item_floatO("image.view_zoom_ratio", "ratio", a / b, text=text)
layout.operator_float("image.view_zoom_ratio", "ratio", a / b, text=text)
layout.itemS()
layout.separator()
if show_uvedit:
layout.itemO("image.view_selected")
layout.operator("image.view_selected")
layout.itemO("image.view_all")
layout.itemO("screen.screen_full_area")
layout.operator("image.view_all")
layout.operator("screen.screen_full_area")
class IMAGE_MT_select(bpy.types.Menu):
@@ -70,19 +70,19 @@ class IMAGE_MT_select(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("uv.select_border")
layout.item_booleanO("uv.select_border", "pinned", True)
layout.operator("uv.select_border")
layout.operator_boolean("uv.select_border", "pinned", True)
layout.itemS()
layout.separator()
layout.itemO("uv.select_all_toggle")
layout.itemO("uv.select_inverse")
layout.itemO("uv.unlink_selection")
layout.operator("uv.select_all_toggle")
layout.operator("uv.select_inverse")
layout.operator("uv.unlink_selection")
layout.itemS()
layout.separator()
layout.itemO("uv.select_pinned")
layout.itemO("uv.select_linked")
layout.operator("uv.select_pinned")
layout.operator("uv.select_linked")
class IMAGE_MT_image(bpy.types.Menu):
@@ -94,39 +94,39 @@ class IMAGE_MT_image(bpy.types.Menu):
sima = context.space_data
ima = sima.image
layout.itemO("image.new")
layout.itemO("image.open")
layout.operator("image.new")
layout.operator("image.open")
show_render = sima.show_render
if ima:
if not show_render:
layout.itemO("image.replace")
layout.itemO("image.reload")
layout.operator("image.replace")
layout.operator("image.reload")
layout.itemO("image.save")
layout.itemO("image.save_as")
layout.operator("image.save")
layout.operator("image.save_as")
if ima.source == 'SEQUENCE':
layout.itemO("image.save_sequence")
layout.operator("image.save_sequence")
if not show_render:
layout.itemS()
layout.separator()
if ima.packed_file:
layout.itemO("image.unpack")
layout.operator("image.unpack")
else:
layout.itemO("image.pack")
layout.operator("image.pack")
# only for dirty && specific image types, perhaps
# this could be done in operator poll too
if ima.dirty:
if ima.source in ('FILE', 'GENERATED') and ima.type != 'MULTILAYER':
layout.item_booleanO("image.pack", "as_png", True, text="Pack As PNG")
layout.operator_boolean("image.pack", "as_png", True, text="Pack As PNG")
layout.itemS()
layout.separator()
layout.itemR(sima, "image_painting")
layout.prop(sima, "image_painting")
class IMAGE_MT_uvs_showhide(bpy.types.Menu):
@@ -135,9 +135,9 @@ class IMAGE_MT_uvs_showhide(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("uv.reveal")
layout.itemO("uv.hide")
layout.item_booleanO("uv.hide", "unselected", True)
layout.operator("uv.reveal")
layout.operator("uv.hide")
layout.operator_boolean("uv.hide", "unselected", True)
class IMAGE_MT_uvs_transform(bpy.types.Menu):
@@ -146,9 +146,9 @@ class IMAGE_MT_uvs_transform(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("tfm.translate")
layout.itemO("tfm.rotate")
layout.itemO("tfm.resize")
layout.operator("tfm.translate")
layout.operator("tfm.rotate")
layout.operator("tfm.resize")
class IMAGE_MT_uvs_mirror(bpy.types.Menu):
@@ -158,10 +158,10 @@ class IMAGE_MT_uvs_mirror(bpy.types.Menu):
layout = self.layout
layout.operator_context = 'EXEC_REGION_WIN'
props = layout.itemO("tfm.mirror", text="X Axis", properties=True)
props = layout.operator("tfm.mirror", text="X Axis", properties=True)
props.constraint_axis[0] = True
props = layout.itemO("tfm.mirror", text="Y Axis", properties=True)
props = layout.operator("tfm.mirror", text="Y Axis", properties=True)
props.constraint_axis[1] = True
@@ -171,8 +171,8 @@ class IMAGE_MT_uvs_weldalign(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("uv.weld") # W, 1
layout.items_enumO("uv.align", "axis") # W, 2/3/4
layout.operator("uv.weld") # W, 1
layout.operator_enums("uv.align", "axis") # W, 2/3/4
class IMAGE_MT_uvs(bpy.types.Menu):
@@ -185,37 +185,37 @@ class IMAGE_MT_uvs(bpy.types.Menu):
uv = sima.uv_editor
settings = context.tool_settings
layout.itemR(uv, "snap_to_pixels")
layout.itemR(uv, "constrain_to_image_bounds")
layout.prop(uv, "snap_to_pixels")
layout.prop(uv, "constrain_to_image_bounds")
layout.itemS()
layout.separator()
layout.itemR(uv, "live_unwrap")
layout.itemO("uv.unwrap")
layout.item_booleanO("uv.pin", "clear", True, text="Unpin")
layout.itemO("uv.pin")
layout.prop(uv, "live_unwrap")
layout.operator("uv.unwrap")
layout.operator_boolean("uv.pin", "clear", True, text="Unpin")
layout.operator("uv.pin")
layout.itemS()
layout.separator()
layout.itemO("uv.pack_islands")
layout.itemO("uv.average_islands_scale")
layout.itemO("uv.minimize_stretch")
layout.itemO("uv.stitch")
layout.operator("uv.pack_islands")
layout.operator("uv.average_islands_scale")
layout.operator("uv.minimize_stretch")
layout.operator("uv.stitch")
layout.itemS()
layout.separator()
layout.itemM("IMAGE_MT_uvs_transform")
layout.itemM("IMAGE_MT_uvs_mirror")
layout.itemM("IMAGE_MT_uvs_weldalign")
layout.menu("IMAGE_MT_uvs_transform")
layout.menu("IMAGE_MT_uvs_mirror")
layout.menu("IMAGE_MT_uvs_weldalign")
layout.itemS()
layout.separator()
layout.item_menu_enumR(settings, "proportional_editing")
layout.item_menu_enumR(settings, "proportional_editing_falloff")
layout.prop_menu_enum(settings, "proportional_editing")
layout.prop_menu_enum(settings, "proportional_editing_falloff")
layout.itemS()
layout.separator()
layout.itemM("IMAGE_MT_uvs_showhide")
layout.menu("IMAGE_MT_uvs_showhide")
class IMAGE_HT_header(bpy.types.Header):
@@ -239,18 +239,18 @@ class IMAGE_HT_header(bpy.types.Header):
# menus
if context.area.show_menus:
sub = row.row(align=True)
sub.itemM("IMAGE_MT_view")
sub.menu("IMAGE_MT_view")
if show_uvedit:
sub.itemM("IMAGE_MT_select")
sub.menu("IMAGE_MT_select")
if ima and ima.dirty:
sub.itemM("IMAGE_MT_image", text="Image*")
sub.menu("IMAGE_MT_image", text="Image*")
else:
sub.itemM("IMAGE_MT_image", text="Image")
sub.menu("IMAGE_MT_image", text="Image")
if show_uvedit:
sub.itemM("IMAGE_MT_uvs")
sub.menu("IMAGE_MT_uvs")
layout.template_ID(sima, "image", new="image.new")
@@ -258,42 +258,42 @@ class IMAGE_HT_header(bpy.types.Header):
if show_uvedit:
uvedit = sima.uv_editor
layout.itemR(uvedit, "pivot", text="", icon_only=True)
layout.itemR(settings, "uv_sync_selection", text="")
layout.prop(uvedit, "pivot", text="", icon_only=True)
layout.prop(settings, "uv_sync_selection", text="")
if settings.uv_sync_selection:
layout.itemR(settings, "mesh_selection_mode", text="", expand=True)
layout.prop(settings, "mesh_selection_mode", text="", expand=True)
else:
layout.itemR(settings, "uv_selection_mode", text="", expand=True)
layout.itemR(uvedit, "sticky_selection_mode", text="", icon_only=True)
layout.prop(settings, "uv_selection_mode", text="", expand=True)
layout.prop(uvedit, "sticky_selection_mode", text="", icon_only=True)
row = layout.row(align=True)
row.itemR(settings, "snap", text="")
row.prop(settings, "snap", text="")
if settings.snap:
row.itemR(settings, "snap_mode", text="")
row.prop(settings, "snap_mode", text="")
# mesh = context.edit_object.data
# row.item_pointerR(mesh, "active_uv_layer", mesh, "uv_textures")
# row.prop_pointer(mesh, "active_uv_layer", mesh, "uv_textures")
if ima:
# layers
layout.template_image_layers(ima, iuser)
# painting
layout.itemR(sima, "image_painting", text="")
layout.prop(sima, "image_painting", text="")
# draw options
row = layout.row(align=True)
row.itemR(sima, "draw_channels", text="", expand=True)
row.prop(sima, "draw_channels", text="", expand=True)
row = layout.row(align=True)
if ima.type == 'COMPOSITE':
row.itemO("image.record_composite", icon='ICON_REC')
row.operator("image.record_composite", icon='ICON_REC')
if ima.type == 'COMPOSITE' and ima.source in ('MOVIE', 'SEQUENCE'):
row.itemO("image.play_composite", icon='ICON_PLAY')
row.operator("image.play_composite", icon='ICON_PLAY')
if show_uvedit or sima.image_painting:
layout.itemR(sima, "update_automatically", text="")
layout.prop(sima, "update_automatically", text="")
class IMAGE_PT_image_properties(bpy.types.Panel):
@@ -337,27 +337,27 @@ class IMAGE_PT_game_properties(bpy.types.Panel):
col = split.column()
sub = col.column(align=True)
sub.itemR(ima, "animated")
sub.prop(ima, "animated")
subsub = sub.column()
subsub.active = ima.animated
subsub.itemR(ima, "animation_start", text="Start")
subsub.itemR(ima, "animation_end", text="End")
subsub.itemR(ima, "animation_speed", text="Speed")
subsub.prop(ima, "animation_start", text="Start")
subsub.prop(ima, "animation_end", text="End")
subsub.prop(ima, "animation_speed", text="Speed")
col.itemR(ima, "tiles")
col.prop(ima, "tiles")
sub = col.column(align=True)
sub.active = ima.tiles or ima.animated
sub.itemR(ima, "tiles_x", text="X")
sub.itemR(ima, "tiles_y", text="Y")
sub.prop(ima, "tiles_x", text="X")
sub.prop(ima, "tiles_y", text="Y")
if wide_ui:
col = split.column()
col.itemL(text="Clamp:")
col.itemR(ima, "clamp_x", text="X")
col.itemR(ima, "clamp_y", text="Y")
col.itemS()
col.itemR(ima, "mapping", expand=True)
col.label(text="Clamp:")
col.prop(ima, "clamp_x", text="X")
col.prop(ima, "clamp_y", text="Y")
col.separator()
col.prop(ima, "mapping", expand=True)
class IMAGE_PT_view_properties(bpy.types.Panel):
@@ -382,41 +382,41 @@ class IMAGE_PT_view_properties(bpy.types.Panel):
col = split.column()
if ima:
col.itemR(ima, "display_aspect", text="Aspect Ratio")
col.prop(ima, "display_aspect", text="Aspect Ratio")
if wide_ui:
col = split.column()
col.itemL(text="Coordinates:")
col.itemR(sima, "draw_repeated", text="Repeat")
col.label(text="Coordinates:")
col.prop(sima, "draw_repeated", text="Repeat")
if show_uvedit:
col.itemR(uvedit, "normalized_coordinates", text="Normalized")
col.prop(uvedit, "normalized_coordinates", text="Normalized")
elif show_uvedit:
col.itemL(text="Coordinates:")
col.itemR(uvedit, "normalized_coordinates", text="Normalized")
col.label(text="Coordinates:")
col.prop(uvedit, "normalized_coordinates", text="Normalized")
if show_uvedit:
col = layout.column()
col.itemL(text="UVs:")
col.label(text="UVs:")
row = col.row()
if wide_ui:
row.itemR(uvedit, "edge_draw_type", expand=True)
row.prop(uvedit, "edge_draw_type", expand=True)
else:
row.itemR(uvedit, "edge_draw_type", text="")
row.prop(uvedit, "edge_draw_type", text="")
split = layout.split()
col = split.column()
col.itemR(uvedit, "draw_smooth_edges", text="Smooth")
col.itemR(uvedit, "draw_modified_edges", text="Modified")
#col.itemR(uvedit, "draw_edges")
#col.itemR(uvedit, "draw_faces")
col.prop(uvedit, "draw_smooth_edges", text="Smooth")
col.prop(uvedit, "draw_modified_edges", text="Modified")
#col.prop(uvedit, "draw_edges")
#col.prop(uvedit, "draw_faces")
if wide_ui:
col = split.column()
col.itemR(uvedit, "draw_stretch", text="Stretch")
col.prop(uvedit, "draw_stretch", text="Stretch")
sub = col.column()
sub.active = uvedit.draw_stretch
sub.row().itemR(uvedit, "draw_stretch_type", expand=True)
sub.row().prop(uvedit, "draw_stretch_type", expand=True)
class IMAGE_PT_paint(bpy.types.Panel):
@@ -452,21 +452,21 @@ class IMAGE_PT_paint(bpy.types.Panel):
if brush:
col = layout.column()
col.itemR(brush, "color", text="")
col.prop(brush, "color", text="")
row = col.row(align=True)
row.itemR(brush, "size", slider=True)
row.itemR(brush, "use_size_pressure", toggle=True, text="")
row.prop(brush, "size", slider=True)
row.prop(brush, "use_size_pressure", toggle=True, text="")
row = col.row(align=True)
row.itemR(brush, "strength", slider=True)
row.itemR(brush, "use_strength_pressure", toggle=True, text="")
row.prop(brush, "strength", slider=True)
row.prop(brush, "use_strength_pressure", toggle=True, text="")
row = col.row(align=True)
row.itemR(brush, "jitter", slider=True)
row.itemR(brush, "use_jitter_pressure", toggle=True, text="")
row.prop(brush, "jitter", slider=True)
row.prop(brush, "use_jitter_pressure", toggle=True, text="")
col.itemR(brush, "blend", text="Blend")
col.prop(brush, "blend", text="Blend")
class IMAGE_PT_paint_stroke(bpy.types.Panel):
@@ -486,16 +486,16 @@ class IMAGE_PT_paint_stroke(bpy.types.Panel):
settings = context.tool_settings.image_paint
brush = settings.brush
layout.itemR(brush, "use_airbrush")
layout.prop(brush, "use_airbrush")
col = layout.column()
col.active = brush.use_airbrush
col.itemR(brush, "rate", slider=True)
col.prop(brush, "rate", slider=True)
layout.itemR(brush, "use_space")
layout.prop(brush, "use_space")
row = layout.row(align=True)
row.active = brush.use_space
row.itemR(brush, "spacing", text="Distance", slider=True)
row.itemR(brush, "use_spacing_pressure", toggle=True, text="")
row.prop(brush, "spacing", text="Distance", slider=True)
row.prop(brush, "use_spacing_pressure", toggle=True, text="")
class IMAGE_PT_paint_curve(bpy.types.Panel):
@@ -516,7 +516,7 @@ class IMAGE_PT_paint_curve(bpy.types.Panel):
brush = settings.brush
layout.template_curve_mapping(brush, "curve")
layout.item_menu_enumO("brush.curve_preset", property="shape")
layout.operator_menu_enum("brush.curve_preset", property="shape")
bpy.types.register(IMAGE_MT_view)
bpy.types.register(IMAGE_MT_select)

View File

@@ -37,30 +37,30 @@ class INFO_HT_header(bpy.types.Header):
if context.area.show_menus:
sub = row.row(align=True)
sub.itemM("INFO_MT_file")
sub.itemM("INFO_MT_add")
sub.menu("INFO_MT_file")
sub.menu("INFO_MT_add")
if rd.use_game_engine:
sub.itemM("INFO_MT_game")
sub.menu("INFO_MT_game")
else:
sub.itemM("INFO_MT_render")
sub.itemM("INFO_MT_help")
sub.menu("INFO_MT_render")
sub.menu("INFO_MT_help")
layout.template_ID(context.window, "screen", new="screen.new", unlink="screen.delete")
layout.template_ID(context.screen, "scene", new="scene.new", unlink="scene.delete")
layout.itemS()
layout.separator()
if rd.multiple_engines:
layout.itemR(rd, "engine", text="")
layout.prop(rd, "engine", text="")
layout.itemS()
layout.separator()
layout.template_operator_search()
layout.template_running_jobs()
layout.itemL(text=scene.statistics())
layout.label(text=scene.statistics())
layout.itemO("wm.window_fullscreen_toggle", icon='ICON_FULLSCREEN_ENTER', text="")
layout.operator("wm.window_fullscreen_toggle", icon='ICON_FULLSCREEN_ENTER', text="")
class INFO_MT_file(bpy.types.Menu):
@@ -70,38 +70,38 @@ class INFO_MT_file(bpy.types.Menu):
layout = self.layout
layout.operator_context = 'EXEC_AREA'
layout.itemO("wm.read_homefile", text="New", icon='ICON_NEW')
layout.operator("wm.read_homefile", text="New", icon='ICON_NEW')
layout.operator_context = 'INVOKE_AREA'
layout.itemO("wm.open_mainfile", text="Open...", icon='ICON_FILE_FOLDER')
layout.item_menu_enumO("wm.open_recentfile", "file", text="Open Recent")
layout.itemO("wm.recover_last_session")
layout.itemO("wm.recover_auto_save", text="Recover Auto Save...")
layout.operator("wm.open_mainfile", text="Open...", icon='ICON_FILE_FOLDER')
layout.operator_menu_enum("wm.open_recentfile", "file", text="Open Recent")
layout.operator("wm.recover_last_session")
layout.operator("wm.recover_auto_save", text="Recover Auto Save...")
layout.itemS()
layout.separator()
layout.operator_context = 'EXEC_AREA'
layout.itemO("wm.save_mainfile", text="Save", icon='ICON_FILE_TICK')
layout.operator("wm.save_mainfile", text="Save", icon='ICON_FILE_TICK')
layout.operator_context = 'INVOKE_AREA'
layout.itemO("wm.save_as_mainfile", text="Save As...")
layout.itemO("screen.userpref_show", text="User Preferences...", icon='ICON_PREFERENCES')
layout.operator("wm.save_as_mainfile", text="Save As...")
layout.operator("screen.userpref_show", text="User Preferences...", icon='ICON_PREFERENCES')
layout.itemS()
layout.separator()
layout.operator_context = 'INVOKE_AREA'
layout.itemO("wm.link_append", text="Link")
layout.item_booleanO("wm.link_append", "link", False, text="Append")
layout.itemS()
layout.operator("wm.link_append", text="Link")
layout.operator_boolean("wm.link_append", "link", False, text="Append")
layout.separator()
layout.itemM("INFO_MT_file_import")
layout.itemM("INFO_MT_file_export")
layout.menu("INFO_MT_file_import")
layout.menu("INFO_MT_file_export")
layout.itemS()
layout.separator()
layout.itemM("INFO_MT_file_external_data")
layout.menu("INFO_MT_file_external_data")
layout.itemS()
layout.separator()
layout.operator_context = 'EXEC_AREA'
layout.itemO("wm.exit_blender", text="Quit", icon='ICON_QUIT')
layout.operator("wm.exit_blender", text="Quit", icon='ICON_QUIT')
# test for expanding menus
'''
@@ -111,7 +111,7 @@ class INFO_MT_file_more(INFO_MT_file):
def draw(self, context):
layout = self.layout
layout.itemO("wm.read_homefile", text="TESTING ")
layout.operator("wm.read_homefile", text="TESTING ")
dynamic_menu.setup(INFO_MT_file_more)
'''
@@ -123,7 +123,7 @@ class INFO_MT_file_import(dynamic_menu.DynMenu):
def draw(self, context):
if "collada_import" in dir(bpy.ops.wm):
self.layout.itemO("wm.collada_import", text="COLLADA (.dae)...")
self.layout.operator("wm.collada_import", text="COLLADA (.dae)...")
class INFO_MT_file_export(dynamic_menu.DynMenu):
@@ -132,7 +132,7 @@ class INFO_MT_file_export(dynamic_menu.DynMenu):
def draw(self, context):
if "collada_export" in dir(bpy.ops.wm):
self.layout.itemO("wm.collada_export", text="COLLADA (.dae)...")
self.layout.operator("wm.collada_export", text="COLLADA (.dae)...")
class INFO_MT_file_external_data(bpy.types.Menu):
@@ -141,15 +141,15 @@ class INFO_MT_file_external_data(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("file.pack_all", text="Pack into .blend file")
layout.itemO("file.unpack_all", text="Unpack into Files...")
layout.operator("file.pack_all", text="Pack into .blend file")
layout.operator("file.unpack_all", text="Unpack into Files...")
layout.itemS()
layout.separator()
layout.itemO("file.make_paths_relative")
layout.itemO("file.make_paths_absolute")
layout.itemO("file.report_missing_files")
layout.itemO("file.find_missing_files")
layout.operator("file.make_paths_relative")
layout.operator("file.make_paths_absolute")
layout.operator("file.report_missing_files")
layout.operator("file.find_missing_files")
class INFO_MT_mesh_add(dynamic_menu.DynMenu):
@@ -159,16 +159,16 @@ class INFO_MT_mesh_add(dynamic_menu.DynMenu):
def draw(self, context):
layout = self.layout
layout.operator_context = 'INVOKE_REGION_WIN'
layout.itemO("mesh.primitive_plane_add", icon='ICON_MESH_PLANE', text="Plane")
layout.itemO("mesh.primitive_cube_add", icon='ICON_MESH_CUBE', text="Cube")
layout.itemO("mesh.primitive_circle_add", icon='ICON_MESH_CIRCLE', text="Circle")
layout.itemO("mesh.primitive_uv_sphere_add", icon='ICON_MESH_UVSPHERE', text="UV Sphere")
layout.itemO("mesh.primitive_ico_sphere_add", icon='ICON_MESH_ICOSPHERE', text="Icosphere")
layout.itemO("mesh.primitive_tube_add", icon='ICON_MESH_TUBE', text="Tube")
layout.itemO("mesh.primitive_cone_add", icon='ICON_MESH_CONE', text="Cone")
layout.itemS()
layout.itemO("mesh.primitive_grid_add", icon='ICON_MESH_GRID', text="Grid")
layout.itemO("mesh.primitive_monkey_add", icon='ICON_MESH_MONKEY', text="Monkey")
layout.operator("mesh.primitive_plane_add", icon='ICON_MESH_PLANE', text="Plane")
layout.operator("mesh.primitive_cube_add", icon='ICON_MESH_CUBE', text="Cube")
layout.operator("mesh.primitive_circle_add", icon='ICON_MESH_CIRCLE', text="Circle")
layout.operator("mesh.primitive_uv_sphere_add", icon='ICON_MESH_UVSPHERE', text="UV Sphere")
layout.operator("mesh.primitive_ico_sphere_add", icon='ICON_MESH_ICOSPHERE', text="Icosphere")
layout.operator("mesh.primitive_tube_add", icon='ICON_MESH_TUBE', text="Tube")
layout.operator("mesh.primitive_cone_add", icon='ICON_MESH_CONE', text="Cone")
layout.separator()
layout.operator("mesh.primitive_grid_add", icon='ICON_MESH_GRID', text="Grid")
layout.operator("mesh.primitive_monkey_add", icon='ICON_MESH_MONKEY', text="Monkey")
class INFO_MT_add(bpy.types.Menu):
@@ -179,37 +179,37 @@ class INFO_MT_add(bpy.types.Menu):
layout.operator_context = 'EXEC_SCREEN'
# layout.item_menu_enumO("object.mesh_add", "type", text="Mesh", icon='ICON_OUTLINER_OB_MESH')
layout.itemM("INFO_MT_mesh_add", icon='ICON_OUTLINER_OB_MESH')
# layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='ICON_OUTLINER_OB_MESH')
layout.menu("INFO_MT_mesh_add", icon='ICON_OUTLINER_OB_MESH')
layout.item_menu_enumO("object.curve_add", "type", text="Curve", icon='ICON_OUTLINER_OB_CURVE')
layout.item_menu_enumO("object.surface_add", "type", text="Surface", icon='ICON_OUTLINER_OB_SURFACE')
layout.item_menu_enumO("object.metaball_add", "type", 'META', text="Metaball", icon='ICON_OUTLINER_OB_META')
layout.itemO("object.text_add", text="Text", icon='ICON_OUTLINER_OB_FONT')
layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='ICON_OUTLINER_OB_CURVE')
layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='ICON_OUTLINER_OB_SURFACE')
layout.operator_menu_enum("object.metaball_add", "type", 'META', text="Metaball", icon='ICON_OUTLINER_OB_META')
layout.operator("object.text_add", text="Text", icon='ICON_OUTLINER_OB_FONT')
layout.itemS()
layout.separator()
layout.operator_context = 'INVOKE_SCREEN'
layout.itemO("object.armature_add", text="Armature", icon='ICON_OUTLINER_OB_ARMATURE')
layout.item_enumO("object.add", "type", 'LATTICE', icon='ICON_OUTLINER_OB_LATTICE')
layout.item_enumO("object.add", "type", 'EMPTY', icon='ICON_OUTLINER_OB_EMPTY')
layout.operator("object.armature_add", text="Armature", icon='ICON_OUTLINER_OB_ARMATURE')
layout.operator_enum("object.add", "type", 'LATTICE', icon='ICON_OUTLINER_OB_LATTICE')
layout.operator_enum("object.add", "type", 'EMPTY', icon='ICON_OUTLINER_OB_EMPTY')
layout.itemS()
layout.separator()
layout.item_enumO("object.add", "type", 'CAMERA', icon='ICON_OUTLINER_OB_CAMERA')
layout.operator_enum("object.add", "type", 'CAMERA', icon='ICON_OUTLINER_OB_CAMERA')
layout.operator_context = 'EXEC_SCREEN'
layout.item_menu_enumO("object.lamp_add", "type", 'LAMP', text="Lamp", icon='ICON_OUTLINER_OB_LAMP')
layout.operator_menu_enum("object.lamp_add", "type", 'LAMP', text="Lamp", icon='ICON_OUTLINER_OB_LAMP')
layout.itemS()
layout.separator()
layout.item_menu_enumO("object.effector_add", "type", 'EMPTY', text="Force Field", icon='ICON_OUTLINER_OB_EMPTY')
layout.operator_menu_enum("object.effector_add", "type", 'EMPTY', text="Force Field", icon='ICON_OUTLINER_OB_EMPTY')
layout.itemS()
layout.separator()
layout.item_menu_enumO("object.group_instance_add", "type", text="Group Instance", icon='ICON_OUTLINER_OB_EMPTY')
layout.operator_menu_enum("object.group_instance_add", "type", text="Group Instance", icon='ICON_OUTLINER_OB_EMPTY')
class INFO_MT_game(bpy.types.Menu):
@@ -220,14 +220,14 @@ class INFO_MT_game(bpy.types.Menu):
gs = context.scene.game_data
layout.itemO("view3d.game_start")
layout.operator("view3d.game_start")
layout.itemS()
layout.separator()
layout.itemR(gs, "show_debug_properties")
layout.itemR(gs, "show_framerate_profile")
layout.itemR(gs, "show_physics_visualization")
layout.itemR(gs, "deprecation_warnings")
layout.prop(gs, "show_debug_properties")
layout.prop(gs, "show_framerate_profile")
layout.prop(gs, "show_physics_visualization")
layout.prop(gs, "deprecation_warnings")
class INFO_MT_render(bpy.types.Menu):
@@ -238,17 +238,17 @@ class INFO_MT_render(bpy.types.Menu):
# rd = context.scene.render_data
layout.itemO("screen.render", text="Render Image", icon='ICON_RENDER_STILL')
layout.item_booleanO("screen.render", "animation", True, text="Render Animation", icon='ICON_RENDER_ANIMATION')
layout.operator("screen.render", text="Render Image", icon='ICON_RENDER_STILL')
layout.operator_boolean("screen.render", "animation", True, text="Render Animation", icon='ICON_RENDER_ANIMATION')
layout.itemS()
layout.separator()
layout.itemO("screen.opengl_render", text="OpenGL Render Image")
layout.item_booleanO("screen.opengl_render", "animation", True, text="OpenGL Render Animation")
layout.operator("screen.opengl_render", text="OpenGL Render Image")
layout.operator_boolean("screen.opengl_render", "animation", True, text="OpenGL Render Animation")
layout.itemS()
layout.separator()
layout.itemO("screen.render_view_show")
layout.operator("screen.render_view_show")
class INFO_MT_help(bpy.types.Menu):
@@ -257,19 +257,19 @@ class INFO_MT_help(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("help.manual", icon='ICON_HELP')
layout.itemO("help.release_logs", icon='ICON_URL')
layout.operator("help.manual", icon='ICON_HELP')
layout.operator("help.release_logs", icon='ICON_URL')
layout.itemS()
layout.separator()
layout.itemO("help.blender_website", icon='ICON_URL')
layout.itemO("help.blender_eshop", icon='ICON_URL')
layout.itemO("help.developer_community", icon='ICON_URL')
layout.itemO("help.user_community", icon='ICON_URL')
layout.itemS()
layout.itemO("help.report_bug", icon='ICON_URL')
layout.itemS()
layout.itemO("help.operator_cheat_sheet")
layout.operator("help.blender_website", icon='ICON_URL')
layout.operator("help.blender_eshop", icon='ICON_URL')
layout.operator("help.developer_community", icon='ICON_URL')
layout.operator("help.user_community", icon='ICON_URL')
layout.separator()
layout.operator("help.report_bug", icon='ICON_URL')
layout.separator()
layout.operator("help.operator_cheat_sheet")
bpy.types.register(INFO_HT_header)
bpy.types.register(INFO_MT_file)

View File

@@ -35,15 +35,15 @@ class LOGIC_PT_properties(bpy.types.Panel):
ob = context.active_object
game = ob.game
layout.itemO("object.game_property_new", text="Add Game Property")
layout.operator("object.game_property_new", text="Add Game Property")
for i, prop in enumerate(game.properties):
row = layout.row(align=True)
row.itemR(prop, "name", text="")
row.itemR(prop, "type", text="")
row.itemR(prop, "value", text="", toggle=True) # we dont care about the type. rna will display correctly
row.itemR(prop, "debug", text="", toggle=True, icon='ICON_INFO')
row.item_intO("object.game_property_remove", "index", i, text="", icon='ICON_X')
row.prop(prop, "name", text="")
row.prop(prop, "type", text="")
row.prop(prop, "value", text="", toggle=True) # we dont care about the type. rna will display correctly
row.prop(prop, "debug", text="", toggle=True, icon='ICON_INFO')
row.operator_int("object.game_property_remove", "index", i, text="", icon='ICON_X')
bpy.types.register(LOGIC_PT_properties)

View File

@@ -33,13 +33,13 @@ class NODE_HT_header(bpy.types.Header):
if context.area.show_menus:
sub = row.row(align=True)
sub.itemM("NODE_MT_view")
sub.itemM("NODE_MT_select")
sub.itemM("NODE_MT_add")
sub.itemM("NODE_MT_node")
sub.menu("NODE_MT_view")
sub.menu("NODE_MT_select")
sub.menu("NODE_MT_add")
sub.menu("NODE_MT_node")
row = layout.row()
row.itemR(snode, "tree_type", text="", expand=True)
row.prop(snode, "tree_type", text="", expand=True)
if snode.tree_type == 'MATERIAL':
ob = snode.id_from
@@ -47,24 +47,24 @@ class NODE_HT_header(bpy.types.Header):
if ob:
layout.template_ID(ob, "active_material", new="material.new")
if snode_id:
layout.itemR(snode_id, "use_nodes")
layout.prop(snode_id, "use_nodes")
elif snode.tree_type == 'TEXTURE':
row.itemR(snode, "texture_type", text="", expand=True)
row.prop(snode, "texture_type", text="", expand=True)
snode_id = snode.id
id_from = snode.id_from
if id_from:
layout.template_ID(id_from, "active_texture", new="texture.new")
if snode_id:
layout.itemR(snode_id, "use_nodes")
layout.prop(snode_id, "use_nodes")
elif snode.tree_type == 'COMPOSITING':
snode_id = snode.id
layout.itemR(snode_id, "use_nodes")
layout.itemR(snode_id.render_data, "free_unused_nodes", text="Free Unused")
layout.itemR(snode, "backdrop")
layout.prop(snode_id, "use_nodes")
layout.prop(snode_id.render_data, "free_unused_nodes", text="Free Unused")
layout.prop(snode, "backdrop")
class NODE_MT_view(bpy.types.Menu):
@@ -73,16 +73,16 @@ class NODE_MT_view(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("node.properties", icon='ICON_MENU_PANEL')
layout.itemS()
layout.operator("node.properties", icon='ICON_MENU_PANEL')
layout.separator()
layout.itemO("view2d.zoom_in")
layout.itemO("view2d.zoom_out")
layout.operator("view2d.zoom_in")
layout.operator("view2d.zoom_out")
layout.itemS()
layout.separator()
layout.itemO("node.view_all")
layout.itemO("screen.screen_full_area")
layout.operator("node.view_all")
layout.operator("screen.screen_full_area")
class NODE_MT_select(bpy.types.Menu):
@@ -91,12 +91,12 @@ class NODE_MT_select(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("node.select_border")
layout.operator("node.select_border")
layout.itemS()
layout.itemO("node.select_all")
layout.itemO("node.select_linked_from")
layout.itemO("node.select_linked_to")
layout.separator()
layout.operator("node.select_all")
layout.operator("node.select_linked_from")
layout.operator("node.select_linked_to")
class NODE_MT_node(bpy.types.Menu):
@@ -105,34 +105,34 @@ class NODE_MT_node(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("tfm.translate")
layout.itemO("tfm.rotate")
layout.itemO("tfm.resize")
layout.operator("tfm.translate")
layout.operator("tfm.rotate")
layout.operator("tfm.resize")
layout.itemS()
layout.separator()
layout.itemO("node.duplicate_move")
layout.itemO("node.delete")
layout.operator("node.duplicate_move")
layout.operator("node.delete")
layout.itemS()
layout.itemO("node.link_make")
layout.separator()
layout.operator("node.link_make")
layout.itemS()
layout.itemO("node.group_edit")
layout.itemO("node.group_ungroup")
layout.itemO("node.group_make")
layout.separator()
layout.operator("node.group_edit")
layout.operator("node.group_ungroup")
layout.operator("node.group_make")
layout.itemS()
layout.separator()
layout.itemO("node.hide")
layout.itemO("node.mute")
layout.operator("node.hide")
layout.operator("node.mute")
# XXX
# layout.itemO("node.rename")
# layout.operator("node.rename")
layout.itemS()
layout.separator()
layout.itemO("node.show_cyclic_dependencies")
layout.operator("node.show_cyclic_dependencies")
bpy.types.register(NODE_HT_header)
bpy.types.register(NODE_MT_view)

View File

@@ -35,29 +35,29 @@ class OUTLINER_HT_header(bpy.types.Header):
if context.area.show_menus:
sub = row.row(align=True)
sub.itemM("OUTLINER_MT_view")
sub.menu("OUTLINER_MT_view")
if space.display_mode == 'DATABLOCKS':
sub.itemM("OUTLINER_MT_edit_datablocks")
sub.menu("OUTLINER_MT_edit_datablocks")
layout.itemR(space, "display_mode", text="")
layout.prop(space, "display_mode", text="")
layout.itemS()
layout.separator()
if space.display_mode == 'DATABLOCKS':
row = layout.row(align=True)
row.itemO("outliner.keyingset_add_selected", icon='ICON_ZOOMIN', text="")
row.itemO("outliner.keyingset_remove_selected", icon='ICON_ZOOMOUT', text="")
row.operator("outliner.keyingset_add_selected", icon='ICON_ZOOMIN', text="")
row.operator("outliner.keyingset_remove_selected", icon='ICON_ZOOMOUT', text="")
if ks:
row = layout.row(align=False)
row.item_pointerR(scene, "active_keying_set", scene, "keying_sets", text="")
row.prop_pointer(scene, "active_keying_set", scene, "keying_sets", text="")
row = layout.row(align=True)
row.itemO("anim.insert_keyframe", text="", icon='ICON_KEY_HLT')
row.itemO("anim.delete_keyframe", text="", icon='ICON_KEY_DEHLT')
row.operator("anim.insert_keyframe", text="", icon='ICON_KEY_HLT')
row.operator("anim.delete_keyframe", text="", icon='ICON_KEY_DEHLT')
else:
row = layout.row(align=False)
row.itemL(text="No Keying Set active")
row.label(text="No Keying Set active")
class OUTLINER_MT_view(bpy.types.Menu):
@@ -70,12 +70,12 @@ class OUTLINER_MT_view(bpy.types.Menu):
col = layout.column()
if space.display_mode not in ('DATABLOCKS', 'USER_PREFERENCES', 'KEYMAPS'):
col.itemR(space, "show_restriction_columns")
col.itemS()
col.itemO("outliner.show_active")
col.prop(space, "show_restriction_columns")
col.separator()
col.operator("outliner.show_active")
col.itemO("outliner.show_one_level")
col.itemO("outliner.show_hierarchy")
col.operator("outliner.show_one_level")
col.operator("outliner.show_hierarchy")
class OUTLINER_MT_edit_datablocks(bpy.types.Menu):
@@ -86,13 +86,13 @@ class OUTLINER_MT_edit_datablocks(bpy.types.Menu):
col = layout.column()
col.itemO("outliner.keyingset_add_selected")
col.itemO("outliner.keyingset_remove_selected")
col.operator("outliner.keyingset_add_selected")
col.operator("outliner.keyingset_remove_selected")
col.itemS()
col.separator()
col.itemO("outliner.drivers_add_selected")
col.itemO("outliner.drivers_delete_selected")
col.operator("outliner.drivers_add_selected")
col.operator("outliner.drivers_delete_selected")
bpy.types.register(OUTLINER_HT_header)
bpy.types.register(OUTLINER_MT_view)

View File

@@ -40,23 +40,23 @@ class SEQUENCER_HT_header(bpy.types.Header):
if context.area.show_menus:
sub = row.row(align=True)
sub.itemM("SEQUENCER_MT_view")
sub.menu("SEQUENCER_MT_view")
row.itemS()
row.separator()
if st.display_mode == 'SEQUENCER':
sub.itemM("SEQUENCER_MT_select")
sub.itemM("SEQUENCER_MT_marker")
sub.itemM("SEQUENCER_MT_add")
sub.itemM("SEQUENCER_MT_strip")
sub.menu("SEQUENCER_MT_select")
sub.menu("SEQUENCER_MT_marker")
sub.menu("SEQUENCER_MT_add")
sub.menu("SEQUENCER_MT_strip")
layout.itemR(st, "display_mode", text="")
layout.prop(st, "display_mode", text="")
if st.display_mode == 'SEQUENCER':
layout.itemS()
layout.itemO("sequencer.refresh_all")
layout.separator()
layout.operator("sequencer.refresh_all")
else:
layout.itemR(st, "display_channel", text="Channel")
layout.prop(st, "display_channel", text="Channel")
class SEQUENCER_MT_view(bpy.types.Menu):
@@ -97,11 +97,11 @@ class SEQUENCER_MT_view(bpy.types.Menu):
menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
"""
layout.itemS()
layout.itemO("sequencer.view_all")
layout.itemO("sequencer.view_selected")
layout.itemS()
layout.itemO("screen.screen_full_area", text="Toggle Full Screen")
layout.separator()
layout.operator("sequencer.view_all")
layout.operator("sequencer.view_selected")
layout.separator()
layout.operator("screen.screen_full_area", text="Toggle Full Screen")
"""
@@ -114,12 +114,12 @@ class SEQUENCER_MT_view(bpy.types.Menu):
uiDefMenuSep(block);
"""
layout.itemR(st, "draw_frames")
layout.itemR(st, "show_cframe_indicator")
layout.prop(st, "draw_frames")
layout.prop(st, "show_cframe_indicator")
if st.display_mode == 'IMAGE':
layout.itemR(st, "draw_safe_margin")
layout.prop(st, "draw_safe_margin")
if st.display_mode == 'WAVEFORM':
layout.itemR(st, "separate_color_preview")
layout.prop(st, "separate_color_preview")
"""
if(!sa->full) uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Maximize Window|Ctrl UpArrow", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0,0, "");
@@ -135,16 +135,16 @@ class SEQUENCER_MT_select(bpy.types.Menu):
layout = self.layout
layout.column()
layout.item_enumO("sequencer.select_active_side", "side", 'LEFT', text="Strips to the Left")
layout.item_enumO("sequencer.select_active_side", "side", 'RIGHT', text="Strips to the Right")
layout.itemS()
layout.item_enumO("sequencer.select_handles", "side", 'BOTH', text="Surrounding Handles")
layout.item_enumO("sequencer.select_handles", "side", 'LEFT', text="Left Handle")
layout.item_enumO("sequencer.select_handles", "side", 'RIGHT', text="Right Handle")
layout.itemS()
layout.itemO("sequencer.select_linked")
layout.itemO("sequencer.select_all_toggle")
layout.itemO("sequencer.select_inverse")
layout.operator_enum("sequencer.select_active_side", "side", 'LEFT', text="Strips to the Left")
layout.operator_enum("sequencer.select_active_side", "side", 'RIGHT', text="Strips to the Right")
layout.separator()
layout.operator_enum("sequencer.select_handles", "side", 'BOTH', text="Surrounding Handles")
layout.operator_enum("sequencer.select_handles", "side", 'LEFT', text="Left Handle")
layout.operator_enum("sequencer.select_handles", "side", 'RIGHT', text="Right Handle")
layout.separator()
layout.operator("sequencer.select_linked")
layout.operator("sequencer.select_all_toggle")
layout.operator("sequencer.select_inverse")
class SEQUENCER_MT_marker(bpy.types.Menu):
@@ -154,14 +154,14 @@ class SEQUENCER_MT_marker(bpy.types.Menu):
layout = self.layout
layout.column()
layout.itemO("marker.add", text="Add Marker")
layout.itemO("marker.duplicate", text="Duplicate Marker")
layout.itemO("marker.move", text="Grab/Move Marker")
layout.itemO("marker.delete", text="Delete Marker")
layout.itemS()
layout.itemL(text="ToDo: Name Marker")
layout.operator("marker.add", text="Add Marker")
layout.operator("marker.duplicate", text="Duplicate Marker")
layout.operator("marker.move", text="Grab/Move Marker")
layout.operator("marker.delete", text="Delete Marker")
layout.separator()
layout.label(text="ToDo: Name Marker")
#layout.itemO("sequencer.sound_strip_add", text="Transform Markers") # toggle, will be rna - (sseq->flag & SEQ_MARKER_TRANS)
#layout.operator("sequencer.sound_strip_add", text="Transform Markers") # toggle, will be rna - (sseq->flag & SEQ_MARKER_TRANS)
class SEQUENCER_MT_add(bpy.types.Menu):
@@ -172,12 +172,12 @@ class SEQUENCER_MT_add(bpy.types.Menu):
layout.operator_context = 'INVOKE_REGION_WIN'
layout.column()
layout.itemO("sequencer.scene_strip_add", text="Scene")
layout.itemO("sequencer.movie_strip_add", text="Movie")
layout.itemO("sequencer.image_strip_add", text="Image")
layout.itemO("sequencer.sound_strip_add", text="Sound")
layout.operator("sequencer.scene_strip_add", text="Scene")
layout.operator("sequencer.movie_strip_add", text="Movie")
layout.operator("sequencer.image_strip_add", text="Image")
layout.operator("sequencer.sound_strip_add", text="Sound")
layout.itemM("SEQUENCER_MT_add_effect")
layout.menu("SEQUENCER_MT_add_effect")
class SEQUENCER_MT_add_effect(bpy.types.Menu):
@@ -188,19 +188,19 @@ class SEQUENCER_MT_add_effect(bpy.types.Menu):
layout.operator_context = 'INVOKE_REGION_WIN'
layout.column()
layout.item_enumO("sequencer.effect_strip_add", 'type', 'ADD')
layout.item_enumO("sequencer.effect_strip_add", 'type', 'SUBTRACT')
layout.item_enumO("sequencer.effect_strip_add", 'type', 'ALPHA_OVER')
layout.item_enumO("sequencer.effect_strip_add", 'type', 'ALPHA_UNDER')
layout.item_enumO("sequencer.effect_strip_add", 'type', 'GAMMA_CROSS')
layout.item_enumO("sequencer.effect_strip_add", 'type', 'MULTIPLY')
layout.item_enumO("sequencer.effect_strip_add", 'type', 'OVER_DROP')
layout.item_enumO("sequencer.effect_strip_add", 'type', 'PLUGIN')
layout.item_enumO("sequencer.effect_strip_add", 'type', 'WIPE')
layout.item_enumO("sequencer.effect_strip_add", 'type', 'GLOW')
layout.item_enumO("sequencer.effect_strip_add", 'type', 'TRANSFORM')
layout.item_enumO("sequencer.effect_strip_add", 'type', 'COLOR')
layout.item_enumO("sequencer.effect_strip_add", 'type', 'SPEED')
layout.operator_enum("sequencer.effect_strip_add", 'type', 'ADD')
layout.operator_enum("sequencer.effect_strip_add", 'type', 'SUBTRACT')
layout.operator_enum("sequencer.effect_strip_add", 'type', 'ALPHA_OVER')
layout.operator_enum("sequencer.effect_strip_add", 'type', 'ALPHA_UNDER')
layout.operator_enum("sequencer.effect_strip_add", 'type', 'GAMMA_CROSS')
layout.operator_enum("sequencer.effect_strip_add", 'type', 'MULTIPLY')
layout.operator_enum("sequencer.effect_strip_add", 'type', 'OVER_DROP')
layout.operator_enum("sequencer.effect_strip_add", 'type', 'PLUGIN')
layout.operator_enum("sequencer.effect_strip_add", 'type', 'WIPE')
layout.operator_enum("sequencer.effect_strip_add", 'type', 'GLOW')
layout.operator_enum("sequencer.effect_strip_add", 'type', 'TRANSFORM')
layout.operator_enum("sequencer.effect_strip_add", 'type', 'COLOR')
layout.operator_enum("sequencer.effect_strip_add", 'type', 'SPEED')
class SEQUENCER_MT_strip(bpy.types.Menu):
@@ -212,18 +212,18 @@ class SEQUENCER_MT_strip(bpy.types.Menu):
layout.operator_context = 'INVOKE_REGION_WIN'
layout.column()
layout.item_enumO("tfm.transform", "mode", 'TRANSLATION', text="Grab/Move")
layout.item_enumO("tfm.transform", "mode", 'TIME_EXTEND', text="Grab/Extend from frame")
layout.operator_enum("tfm.transform", "mode", 'TRANSLATION', text="Grab/Move")
layout.operator_enum("tfm.transform", "mode", 'TIME_EXTEND', text="Grab/Extend from frame")
# uiItemO(layout, NULL, 0, "sequencer.strip_snap"); // TODO - add this operator
layout.itemS()
layout.separator()
layout.item_enumO("sequencer.cut", "type", 'HARD', text="Cut (hard) at frame")
layout.item_enumO("sequencer.cut", "type", 'SOFT', text="Cut (soft) at frame")
layout.itemO("sequencer.images_separate")
layout.itemS()
layout.operator_enum("sequencer.cut", "type", 'HARD', text="Cut (hard) at frame")
layout.operator_enum("sequencer.cut", "type", 'SOFT', text="Cut (soft) at frame")
layout.operator("sequencer.images_separate")
layout.separator()
layout.itemO("sequencer.duplicate")
layout.itemO("sequencer.delete")
layout.operator("sequencer.duplicate")
layout.operator("sequencer.delete")
strip = act_strip(context)
@@ -231,45 +231,45 @@ class SEQUENCER_MT_strip(bpy.types.Menu):
stype = strip.type
if stype == 'EFFECT':
layout.itemS()
layout.itemO("sequencer.effect_change")
layout.itemO("sequencer.effect_reassign_inputs")
layout.separator()
layout.operator("sequencer.effect_change")
layout.operator("sequencer.effect_reassign_inputs")
elif stype == 'IMAGE':
layout.itemS()
layout.itemO("sequencer.image_change")
layout.itemO("sequencer.rendersize")
layout.separator()
layout.operator("sequencer.image_change")
layout.operator("sequencer.rendersize")
elif stype == 'SCENE':
layout.itemS()
layout.itemO("sequencer.scene_change", text="Change Scene")
layout.separator()
layout.operator("sequencer.scene_change", text="Change Scene")
elif stype == 'MOVIE':
layout.itemS()
layout.itemO("sequencer.movie_change")
layout.itemO("sequencer.rendersize")
layout.separator()
layout.operator("sequencer.movie_change")
layout.operator("sequencer.rendersize")
layout.itemS()
layout.separator()
layout.itemO("sequencer.meta_make")
layout.itemO("sequencer.meta_separate")
layout.operator("sequencer.meta_make")
layout.operator("sequencer.meta_separate")
#if (ed && (ed->metastack.first || (ed->act_seq && ed->act_seq->type == SEQ_META))) {
# uiItemS(layout);
# uiItemO(layout, NULL, 0, "sequencer.meta_toggle");
#}
layout.itemS()
layout.itemO("sequencer.reload")
layout.itemS()
layout.itemO("sequencer.lock")
layout.itemO("sequencer.unlock")
layout.itemO("sequencer.mute")
layout.itemO("sequencer.unmute")
layout.separator()
layout.operator("sequencer.reload")
layout.separator()
layout.operator("sequencer.lock")
layout.operator("sequencer.unlock")
layout.operator("sequencer.mute")
layout.operator("sequencer.unmute")
layout.item_booleanO("sequencer.mute", "unselected", 1, text="Mute Deselected Strips")
layout.operator_boolean("sequencer.mute", "unselected", 1, text="Mute Deselected Strips")
layout.itemO("sequencer.snap")
layout.operator("sequencer.snap")
layout.itemO("sequencer.swap_right")
layout.itemO("sequencer.swap_left")
layout.operator("sequencer.swap_right")
layout.operator("sequencer.swap_left")
class SequencerButtonsPanel(bpy.types.Panel):
@@ -297,47 +297,47 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel):
strip = act_strip(context)
split = layout.split(percentage=0.3)
split.itemL(text="Name:")
split.itemR(strip, "name", text="")
split.label(text="Name:")
split.prop(strip, "name", text="")
split = layout.split(percentage=0.3)
split.itemL(text="Type:")
split.itemR(strip, "type", text="")
split.label(text="Type:")
split.prop(strip, "type", text="")
split = layout.split(percentage=0.3)
split.itemL(text="Blend:")
split.itemR(strip, "blend_mode", text="")
split.label(text="Blend:")
split.prop(strip, "blend_mode", text="")
row = layout.row()
if strip.mute == True:
row.itemR(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_ON', text="")
row.prop(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_ON', text="")
elif strip.mute is False:
row.itemR(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_OFF', text="")
row.prop(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_OFF', text="")
sub = row.row()
sub.active = (not strip.mute)
sub.itemR(strip, "blend_opacity", text="Opacity", slider=True)
sub.prop(strip, "blend_opacity", text="Opacity", slider=True)
row = layout.row()
row.itemR(strip, "lock")
row.itemR(strip, "frame_locked", text="Frame Lock")
row.prop(strip, "lock")
row.prop(strip, "frame_locked", text="Frame Lock")
col = layout.column()
col.enabled = not strip.lock
col.itemR(strip, "channel")
col.itemR(strip, "start_frame")
col.itemR(strip, "length")
col.prop(strip, "channel")
col.prop(strip, "start_frame")
col.prop(strip, "length")
col = layout.column(align=True)
col.itemL(text="Offset:")
col.itemR(strip, "start_offset", text="Start")
col.itemR(strip, "end_offset", text="End")
col.label(text="Offset:")
col.prop(strip, "start_offset", text="Start")
col.prop(strip, "end_offset", text="End")
col = layout.column(align=True)
col.itemL(text="Still:")
col.itemR(strip, "start_still", text="Start")
col.itemR(strip, "end_still", text="End")
col.label(text="Still:")
col.prop(strip, "start_still", text="Start")
col.prop(strip, "end_still", text="End")
class SEQUENCER_PT_effect(SequencerButtonsPanel):
@@ -359,79 +359,79 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel):
strip = act_strip(context)
if strip.type == 'COLOR':
layout.itemR(strip, "color")
layout.prop(strip, "color")
elif strip.type == 'WIPE':
col = layout.column()
col.itemR(strip, "transition_type")
col.itemL(text="Direction:")
col.row().itemR(strip, "direction", expand=True)
col.prop(strip, "transition_type")
col.label(text="Direction:")
col.row().prop(strip, "direction", expand=True)
col = layout.column()
col.itemR(strip, "blur_width", slider=True)
col.prop(strip, "blur_width", slider=True)
if strip.transition_type in ('SINGLE', 'DOUBLE'):
col.itemR(strip, "angle")
col.prop(strip, "angle")
elif strip.type == 'GLOW':
flow = layout.column_flow()
flow.itemR(strip, "threshold", slider=True)
flow.itemR(strip, "clamp", slider=True)
flow.itemR(strip, "boost_factor")
flow.itemR(strip, "blur_distance")
flow.prop(strip, "threshold", slider=True)
flow.prop(strip, "clamp", slider=True)
flow.prop(strip, "boost_factor")
flow.prop(strip, "blur_distance")
row = layout.row()
row.itemR(strip, "quality", slider=True)
row.itemR(strip, "only_boost")
row.prop(strip, "quality", slider=True)
row.prop(strip, "only_boost")
elif strip.type == 'SPEED':
layout.itemR(strip, "global_speed")
layout.prop(strip, "global_speed")
flow = layout.column_flow()
flow.itemR(strip, "curve_velocity")
flow.itemR(strip, "curve_compress_y")
flow.itemR(strip, "frame_blending")
flow.prop(strip, "curve_velocity")
flow.prop(strip, "curve_compress_y")
flow.prop(strip, "frame_blending")
elif strip.type == 'TRANSFORM':
col = layout.column()
col.itemR(strip, "interpolation")
col.itemR(strip, "translation_unit")
col.prop(strip, "interpolation")
col.prop(strip, "translation_unit")
col = layout.column(align=True)
col.itemL(text="Position X:")
col.itemR(strip, "translate_start_x", text="Start")
col.itemR(strip, "translate_end_x", text="End")
col.label(text="Position X:")
col.prop(strip, "translate_start_x", text="Start")
col.prop(strip, "translate_end_x", text="End")
col = layout.column(align=True)
col.itemL(text="Position Y:")
col.itemR(strip, "translate_start_y", text="Start")
col.itemR(strip, "translate_end_y", text="End")
col.label(text="Position Y:")
col.prop(strip, "translate_start_y", text="Start")
col.prop(strip, "translate_end_y", text="End")
layout.itemS()
layout.separator()
col = layout.column(align=True)
col.itemL(text="Scale X:")
col.itemR(strip, "scale_start_x", text="Start")
col.itemR(strip, "scale_end_x", text="End")
col.label(text="Scale X:")
col.prop(strip, "scale_start_x", text="Start")
col.prop(strip, "scale_end_x", text="End")
col = layout.column(align=True)
col.itemL(text="Scale Y:")
col.itemR(strip, "scale_start_y", text="Start")
col.itemR(strip, "scale_end_y", text="End")
col.label(text="Scale Y:")
col.prop(strip, "scale_start_y", text="Start")
col.prop(strip, "scale_end_y", text="End")
layout.itemS()
layout.separator()
col = layout.column(align=True)
col.itemL(text="Rotation:")
col.itemR(strip, "rotation_start", text="Start")
col.itemR(strip, "rotation_end", text="End")
col.label(text="Rotation:")
col.prop(strip, "rotation_start", text="Start")
col.prop(strip, "rotation_end", text="End")
col = layout.column(align=True)
if strip.type == 'SPEED':
col.itemR(strip, "speed_fader", text="Speed fader")
col.prop(strip, "speed_fader", text="Speed fader")
else:
col.itemR(strip, "effect_fader", text="Effect fader")
col.prop(strip, "effect_fader", text="Effect fader")
class SEQUENCER_PT_input(SequencerButtonsPanel):
@@ -454,9 +454,9 @@ class SEQUENCER_PT_input(SequencerButtonsPanel):
split = layout.split(percentage=0.2)
col = split.column()
col.itemL(text="Path:")
col.label(text="Path:")
col = split.column()
col.itemR(strip, "directory", text="")
col.prop(strip, "directory", text="")
# Current element for the filename
@@ -464,30 +464,30 @@ class SEQUENCER_PT_input(SequencerButtonsPanel):
if elem:
split = layout.split(percentage=0.2)
col = split.column()
col.itemL(text="File:")
col.label(text="File:")
col = split.column()
col.itemR(elem, "filename", text="") # strip.elements[0] could be a fallback
col.prop(elem, "filename", text="") # strip.elements[0] could be a fallback
layout.itemR(strip, "use_translation", text="Image Offset:")
layout.prop(strip, "use_translation", text="Image Offset:")
if strip.transform:
col = layout.column(align=True)
col.active = strip.use_translation
col.itemR(strip.transform, "offset_x", text="X")
col.itemR(strip.transform, "offset_y", text="Y")
col.prop(strip.transform, "offset_x", text="X")
col.prop(strip.transform, "offset_y", text="Y")
layout.itemR(strip, "use_crop", text="Image Crop:")
layout.prop(strip, "use_crop", text="Image Crop:")
if strip.crop:
col = layout.column(align=True)
col.active = strip.use_crop
col.itemR(strip.crop, "top")
col.itemR(strip.crop, "left")
col.itemR(strip.crop, "bottom")
col.itemR(strip.crop, "right")
col.prop(strip.crop, "top")
col.prop(strip.crop, "left")
col.prop(strip.crop, "bottom")
col.prop(strip.crop, "right")
col = layout.column(align=True)
col.itemL(text="Trim Duration:")
col.itemR(strip, "animation_start_offset", text="Start")
col.itemR(strip, "animation_end_offset", text="End")
col.label(text="Trim Duration:")
col.prop(strip, "animation_start_offset", text="Start")
col.prop(strip, "animation_end_offset", text="End")
class SEQUENCER_PT_sound(SequencerButtonsPanel):
@@ -510,18 +510,18 @@ class SEQUENCER_PT_sound(SequencerButtonsPanel):
layout.template_ID(strip, "sound", open="sound.open")
layout.itemS()
layout.itemR(strip.sound, "filename", text="")
layout.separator()
layout.prop(strip.sound, "filename", text="")
row = layout.row()
if strip.sound.packed_file:
row.itemO("sound.unpack", icon='ICON_PACKAGE', text="Unpack")
row.operator("sound.unpack", icon='ICON_PACKAGE', text="Unpack")
else:
row.itemO("sound.pack", icon='ICON_UGLYPACKAGE', text="Pack")
row.operator("sound.pack", icon='ICON_UGLYPACKAGE', text="Pack")
row.itemR(strip.sound, "caching")
row.prop(strip.sound, "caching")
layout.itemR(strip, "volume")
layout.prop(strip, "volume")
class SEQUENCER_PT_scene(SequencerButtonsPanel):
@@ -564,35 +564,35 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel):
strip = act_strip(context)
col = layout.column()
col.itemL(text="Video:")
col.itemR(strip, "strobe")
col.itemR(strip, "de_interlace")
col.label(text="Video:")
col.prop(strip, "strobe")
col.prop(strip, "de_interlace")
col = layout.column()
col.itemL(text="Colors:")
col.itemR(strip, "multiply_colors", text="Multiply")
col.itemR(strip, "premultiply")
col.itemR(strip, "convert_float")
col.label(text="Colors:")
col.prop(strip, "multiply_colors", text="Multiply")
col.prop(strip, "premultiply")
col.prop(strip, "convert_float")
col = layout.column()
col.itemL(text="Flip:")
col.itemR(strip, "flip_x", text="X")
col.itemR(strip, "flip_y", text="Y")
col.itemR(strip, "reverse_frames", text="Backwards")
col.label(text="Flip:")
col.prop(strip, "flip_x", text="X")
col.prop(strip, "flip_y", text="Y")
col.prop(strip, "reverse_frames", text="Backwards")
layout.itemR(strip, "use_color_balance")
layout.prop(strip, "use_color_balance")
if strip.color_balance: # TODO - need to add this somehow
row = layout.row()
row.active = strip.use_color_balance
col = row.column()
col.itemR(strip.color_balance, "lift")
col.itemR(strip.color_balance, "inverse_lift", text="Inverse")
col.prop(strip.color_balance, "lift")
col.prop(strip.color_balance, "inverse_lift", text="Inverse")
col = row.column()
col.itemR(strip.color_balance, "gamma")
col.itemR(strip.color_balance, "inverse_gamma", text="Inverse")
col.prop(strip.color_balance, "gamma")
col.prop(strip.color_balance, "inverse_gamma", text="Inverse")
col = row.column()
col.itemR(strip.color_balance, "gain")
col.itemR(strip.color_balance, "inverse_gain", text="Inverse")
col.prop(strip.color_balance, "gain")
col.prop(strip.color_balance, "inverse_gain", text="Inverse")
class SEQUENCER_PT_proxy(SequencerButtonsPanel):
@@ -611,7 +611,7 @@ class SEQUENCER_PT_proxy(SequencerButtonsPanel):
def draw_header(self, context):
strip = act_strip(context)
self.layout.itemR(strip, "use_proxy", text="")
self.layout.prop(strip, "use_proxy", text="")
def draw(self, context):
layout = self.layout
@@ -619,10 +619,10 @@ class SEQUENCER_PT_proxy(SequencerButtonsPanel):
strip = act_strip(context)
flow = layout.column_flow()
flow.itemR(strip, "proxy_custom_directory")
flow.prop(strip, "proxy_custom_directory")
if strip.proxy: # TODO - need to add this somehow
flow.itemR(strip.proxy, "directory")
flow.itemR(strip.proxy, "file")
flow.prop(strip.proxy, "directory")
flow.prop(strip.proxy, "file")
class SEQUENCER_PT_view(SequencerButtonsPanel_Output):
@@ -634,8 +634,8 @@ class SEQUENCER_PT_view(SequencerButtonsPanel_Output):
st = context.space_data
col = layout.column()
col.itemR(st, "draw_overexposed") # text="Zebra"
col.itemR(st, "draw_safe_margin")
col.prop(st, "draw_overexposed") # text="Zebra"
col.prop(st, "draw_safe_margin")
bpy.types.register(SEQUENCER_HT_header) # header/menu classes
bpy.types.register(SEQUENCER_MT_view)

View File

@@ -34,39 +34,39 @@ class TEXT_HT_header(bpy.types.Header):
if context.area.show_menus:
sub = row.row(align=True)
sub.itemM("TEXT_MT_text")
sub.menu("TEXT_MT_text")
if text:
sub.itemM("TEXT_MT_edit")
sub.itemM("TEXT_MT_format")
sub.menu("TEXT_MT_edit")
sub.menu("TEXT_MT_format")
if text and text.modified:
row = layout.row()
# row.color(redalert)
row.itemO("text.resolve_conflict", text="", icon='ICON_HELP')
row.operator("text.resolve_conflict", text="", icon='ICON_HELP')
layout.template_ID(st, "text", new="text.new", unlink="text.unlink")
row = layout.row(align=True)
row.itemR(st, "line_numbers", text="")
row.itemR(st, "word_wrap", text="")
row.itemR(st, "syntax_highlight", text="")
row.prop(st, "line_numbers", text="")
row.prop(st, "word_wrap", text="")
row.prop(st, "syntax_highlight", text="")
if text:
row = layout.row()
row.itemO("text.run_script")
row.itemR(text, "use_module")
row.operator("text.run_script")
row.prop(text, "use_module")
row = layout.row()
if text.filename != "":
if text.dirty:
row.itemL(text="File: *%s (unsaved)" % text.filename)
row.label(text="File: *%s (unsaved)" % text.filename)
else:
row.itemL(text="File: %s" % text.filename)
row.label(text="File: %s" % text.filename)
else:
if text.library:
row.itemL(text="Text: External")
row.label(text="Text: External")
else:
row.itemL(text="Text: Internal")
row.label(text="Text: Internal")
class TEXT_PT_properties(bpy.types.Panel):
@@ -80,14 +80,14 @@ class TEXT_PT_properties(bpy.types.Panel):
st = context.space_data
flow = layout.column_flow()
flow.itemR(st, "line_numbers")
flow.itemR(st, "word_wrap")
flow.itemR(st, "syntax_highlight")
flow.itemR(st, "live_edit")
flow.prop(st, "line_numbers")
flow.prop(st, "word_wrap")
flow.prop(st, "syntax_highlight")
flow.prop(st, "live_edit")
flow = layout.column_flow()
flow.itemR(st, "font_size")
flow.itemR(st, "tab_width")
flow.prop(st, "font_size")
flow.prop(st, "tab_width")
class TEXT_PT_find(bpy.types.Panel):
@@ -103,24 +103,24 @@ class TEXT_PT_find(bpy.types.Panel):
# find
col = layout.column(align=True)
row = col.row()
row.itemR(st, "find_text", text="")
row.itemO("text.find_set_selected", text="", icon='ICON_TEXT')
col.itemO("text.find")
row.prop(st, "find_text", text="")
row.operator("text.find_set_selected", text="", icon='ICON_TEXT')
col.operator("text.find")
# replace
col = layout.column(align=True)
row = col.row()
row.itemR(st, "replace_text", text="")
row.itemO("text.replace_set_selected", text="", icon='ICON_TEXT')
col.itemO("text.replace")
row.prop(st, "replace_text", text="")
row.operator("text.replace_set_selected", text="", icon='ICON_TEXT')
col.operator("text.replace")
# mark
layout.itemO("text.mark_all")
layout.operator("text.mark_all")
# settings
row = layout.row()
row.itemR(st, "find_wrap", text="Wrap")
row.itemR(st, "find_all", text="All")
row.prop(st, "find_wrap", text="Wrap")
row.prop(st, "find_all", text="All")
class TEXT_MT_text(bpy.types.Menu):
@@ -133,32 +133,32 @@ class TEXT_MT_text(bpy.types.Menu):
text = st.text
layout.column()
layout.itemO("text.new")
layout.itemO("text.open")
layout.operator("text.new")
layout.operator("text.open")
if text:
layout.itemO("text.reload")
layout.operator("text.reload")
layout.column()
layout.itemO("text.save")
layout.itemO("text.save_as")
layout.operator("text.save")
layout.operator("text.save_as")
if text.filename != "":
layout.itemO("text.make_internal")
layout.operator("text.make_internal")
layout.column()
layout.itemO("text.run_script")
layout.operator("text.run_script")
#ifndef DISABLE_PYTHON
# XXX if(BPY_is_pyconstraint(text))
# XXX uiMenuItemO(head, 0, "text.refresh_pyconstraints");
#endif
layout.itemS()
layout.separator()
layout.itemO("text.properties", icon='ICON_MENU_PANEL')
layout.operator("text.properties", icon='ICON_MENU_PANEL')
layout.itemM("TEXT_MT_templates")
layout.menu("TEXT_MT_templates")
class TEXT_MT_templates(bpy.types.Menu):
@@ -178,8 +178,8 @@ class TEXT_MT_edit_view(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.item_enumO("text.move", "type", 'FILE_TOP', text="Top of File")
layout.item_enumO("text.move", "type", 'FILE_BOTTOM', text="Bottom of File")
layout.operator_enum("text.move", "type", 'FILE_TOP', text="Top of File")
layout.operator_enum("text.move", "type", 'FILE_BOTTOM', text="Bottom of File")
class TEXT_MT_edit_select(bpy.types.Menu):
@@ -188,8 +188,8 @@ class TEXT_MT_edit_select(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("text.select_all")
layout.itemO("text.select_line")
layout.operator("text.select_all")
layout.operator("text.select_line")
class TEXT_MT_edit_markers(bpy.types.Menu):
@@ -198,9 +198,9 @@ class TEXT_MT_edit_markers(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("text.markers_clear")
layout.itemO("text.next_marker")
layout.itemO("text.previous_marker")
layout.operator("text.markers_clear")
layout.operator("text.next_marker")
layout.operator("text.previous_marker")
class TEXT_MT_format(bpy.types.Menu):
@@ -209,17 +209,17 @@ class TEXT_MT_format(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("text.indent")
layout.itemO("text.unindent")
layout.operator("text.indent")
layout.operator("text.unindent")
layout.itemS()
layout.separator()
layout.itemO("text.comment")
layout.itemO("text.uncomment")
layout.operator("text.comment")
layout.operator("text.uncomment")
layout.itemS()
layout.separator()
layout.item_menu_enumO("text.convert_whitespace", "type")
layout.operator_menu_enum("text.convert_whitespace", "type")
class TEXT_MT_edit_to3d(bpy.types.Menu):
@@ -228,8 +228,8 @@ class TEXT_MT_edit_to3d(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.item_booleanO("text.to_3d_object", "split_lines", False, text="One Object")
layout.item_booleanO("text.to_3d_object", "split_lines", True, text="One Object Per Line")
layout.operator_boolean("text.to_3d_object", "split_lines", False, text="One Object")
layout.operator_boolean("text.to_3d_object", "split_lines", True, text="One Object Per Line")
class TEXT_MT_edit(bpy.types.Menu):
@@ -241,29 +241,29 @@ class TEXT_MT_edit(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("ed.undo")
layout.itemO("ed.redo")
layout.operator("ed.undo")
layout.operator("ed.redo")
layout.itemS()
layout.separator()
layout.itemO("text.cut")
layout.itemO("text.copy")
layout.itemO("text.paste")
layout.operator("text.cut")
layout.operator("text.copy")
layout.operator("text.paste")
layout.itemS()
layout.separator()
layout.itemM("TEXT_MT_edit_view")
layout.itemM("TEXT_MT_edit_select")
layout.itemM("TEXT_MT_edit_markers")
layout.menu("TEXT_MT_edit_view")
layout.menu("TEXT_MT_edit_select")
layout.menu("TEXT_MT_edit_markers")
layout.itemS()
layout.separator()
layout.itemO("text.jump")
layout.itemO("text.properties", text="Find...")
layout.operator("text.jump")
layout.operator("text.properties", text="Find...")
layout.itemS()
layout.separator()
layout.itemM("TEXT_MT_edit_to3d")
layout.menu("TEXT_MT_edit_to3d")
bpy.types.register(TEXT_HT_header)
bpy.types.register(TEXT_PT_properties)

View File

@@ -35,51 +35,51 @@ class TIME_HT_header(bpy.types.Header):
if context.area.show_menus:
sub = row.row(align=True)
sub.itemM("TIME_MT_view")
sub.itemM("TIME_MT_frame")
sub.itemM("TIME_MT_playback")
sub.menu("TIME_MT_view")
sub.menu("TIME_MT_frame")
sub.menu("TIME_MT_playback")
layout.itemR(scene, "use_preview_range", text="PR")
layout.prop(scene, "use_preview_range", text="PR")
row = layout.row(align=True)
if not scene.use_preview_range:
row.itemR(scene, "start_frame", text="Start")
row.itemR(scene, "end_frame", text="End")
row.prop(scene, "start_frame", text="Start")
row.prop(scene, "end_frame", text="End")
else:
row.itemR(scene, "preview_range_start_frame", text="Start")
row.itemR(scene, "preview_range_end_frame", text="End")
row.prop(scene, "preview_range_start_frame", text="Start")
row.prop(scene, "preview_range_end_frame", text="End")
layout.itemR(scene, "current_frame", text="")
layout.prop(scene, "current_frame", text="")
layout.itemS()
layout.separator()
row = layout.row(align=True)
row.item_booleanO("screen.frame_jump", "end", False, text="", icon='ICON_REW')
row.item_booleanO("screen.keyframe_jump", "next", False, text="", icon='ICON_PREV_KEYFRAME')
row.operator_boolean("screen.frame_jump", "end", False, text="", icon='ICON_REW')
row.operator_boolean("screen.keyframe_jump", "next", False, text="", icon='ICON_PREV_KEYFRAME')
if not screen.animation_playing:
row.item_booleanO("screen.animation_play", "reverse", True, text="", icon='ICON_PLAY_REVERSE')
row.itemO("screen.animation_play", text="", icon='ICON_PLAY')
row.operator_boolean("screen.animation_play", "reverse", True, text="", icon='ICON_PLAY_REVERSE')
row.operator("screen.animation_play", text="", icon='ICON_PLAY')
else:
sub = row.row()
sub.scale_x = 2.0
sub.itemO("screen.animation_play", text="", icon='ICON_PAUSE')
row.item_booleanO("screen.keyframe_jump", "next", True, text="", icon='ICON_NEXT_KEYFRAME')
row.item_booleanO("screen.frame_jump", "end", True, text="", icon='ICON_FF')
sub.operator("screen.animation_play", text="", icon='ICON_PAUSE')
row.operator_boolean("screen.keyframe_jump", "next", True, text="", icon='ICON_NEXT_KEYFRAME')
row.operator_boolean("screen.frame_jump", "end", True, text="", icon='ICON_FF')
row = layout.row(align=True)
row.itemR(tools, "enable_auto_key", text="", toggle=True, icon='ICON_REC')
row.prop(tools, "enable_auto_key", text="", toggle=True, icon='ICON_REC')
if screen.animation_playing and tools.enable_auto_key:
subsub = row.row()
subsub.itemR(tools, "record_with_nla", toggle=True)
subsub.prop(tools, "record_with_nla", toggle=True)
layout.itemR(scene, "sync_audio", text="", toggle=True, icon='ICON_SPEAKER')
layout.prop(scene, "sync_audio", text="", toggle=True, icon='ICON_SPEAKER')
layout.itemS()
layout.separator()
row = layout.row(align=True)
row.item_pointerR(scene, "active_keying_set", scene, "keying_sets", text="")
row.itemO("anim.insert_keyframe", text="", icon='ICON_KEY_HLT')
row.itemO("anim.delete_keyframe", text="", icon='ICON_KEY_DEHLT')
row.prop_pointer(scene, "active_keying_set", scene, "keying_sets", text="")
row.operator("anim.insert_keyframe", text="", icon='ICON_KEY_HLT')
row.operator("anim.delete_keyframe", text="", icon='ICON_KEY_DEHLT')
class TIME_MT_view(bpy.types.Menu):
@@ -90,11 +90,11 @@ class TIME_MT_view(bpy.types.Menu):
st = context.space_data
layout.itemO("anim.time_toggle")
layout.operator("anim.time_toggle")
layout.itemS()
layout.separator()
layout.itemR(st, "only_selected")
layout.prop(st, "only_selected")
class TIME_MT_frame(bpy.types.Menu):
@@ -104,22 +104,22 @@ class TIME_MT_frame(bpy.types.Menu):
layout = self.layout
# tools = context.tool_settings
layout.itemO("marker.add", text="Add Marker")
layout.itemO("marker.duplicate", text="Duplicate Marker")
layout.itemO("marker.move", text="Grab/Move Marker")
layout.itemO("marker.delete", text="Delete Marker")
layout.itemL(text="ToDo: Name Marker")
layout.operator("marker.add", text="Add Marker")
layout.operator("marker.duplicate", text="Duplicate Marker")
layout.operator("marker.move", text="Grab/Move Marker")
layout.operator("marker.delete", text="Delete Marker")
layout.label(text="ToDo: Name Marker")
layout.itemS()
layout.separator()
layout.itemO("time.start_frame_set")
layout.itemO("time.end_frame_set")
layout.operator("time.start_frame_set")
layout.operator("time.end_frame_set")
layout.itemS()
layout.separator()
sub = layout.row()
#sub.active = tools.enable_auto_key
sub.itemM("TIME_MT_autokey")
sub.menu("TIME_MT_autokey")
class TIME_MT_playback(bpy.types.Menu):
@@ -131,23 +131,23 @@ class TIME_MT_playback(bpy.types.Menu):
st = context.space_data
scene = context.scene
layout.itemR(st, "play_top_left")
layout.itemR(st, "play_all_3d")
layout.itemR(st, "play_anim")
layout.itemR(st, "play_buttons")
layout.itemR(st, "play_image")
layout.itemR(st, "play_sequencer")
layout.itemR(st, "play_nodes")
layout.prop(st, "play_top_left")
layout.prop(st, "play_all_3d")
layout.prop(st, "play_anim")
layout.prop(st, "play_buttons")
layout.prop(st, "play_image")
layout.prop(st, "play_sequencer")
layout.prop(st, "play_nodes")
layout.itemS()
layout.separator()
layout.itemR(st, "continue_physics")
layout.prop(st, "continue_physics")
layout.itemS()
layout.separator()
layout.itemR(scene, "sync_audio", icon='ICON_SPEAKER')
layout.itemR(scene, "mute_audio")
layout.itemR(scene, "scrub_audio")
layout.prop(scene, "sync_audio", icon='ICON_SPEAKER')
layout.prop(scene, "mute_audio")
layout.prop(scene, "scrub_audio")
class TIME_MT_autokey(bpy.types.Menu):

View File

@@ -30,11 +30,11 @@ class USERPREF_HT_header(bpy.types.Header):
userpref = context.user_preferences
layout.operator_context = 'EXEC_AREA'
layout.itemO("wm.save_homefile", text="Save As Default")
layout.operator("wm.save_homefile", text="Save As Default")
if userpref.active_section == 'INPUT':
layout.operator_context = 'INVOKE_DEFAULT'
layout.item_stringO("wm.keyconfig_export", "path", "keymap.py", "Export Key Configuration...")
layout.operator_string("wm.keyconfig_export", "path", "keymap.py", "Export Key Configuration...")
class USERPREF_MT_view(bpy.types.Menu):
@@ -55,7 +55,7 @@ class USERPREF_PT_tabs(bpy.types.Panel):
userpref = context.user_preferences
layout.itemR(userpref, "active_section", expand=True)
layout.prop(userpref, "active_section", expand=True)
class USERPREF_PT_interface(bpy.types.Panel):
@@ -80,68 +80,68 @@ class USERPREF_PT_interface(bpy.types.Panel):
sub = col.split(percentage=0.85)
sub1 = sub.column()
sub1.itemL(text="Display:")
sub1.itemR(view, "tooltips")
sub1.itemR(view, "display_object_info", text="Object Info")
sub1.itemR(view, "use_large_cursors")
sub1.itemR(view, "show_view_name", text="View Name")
sub1.itemR(view, "show_playback_fps", text="Playback FPS")
sub1.itemR(view, "global_scene")
sub1.itemR(view, "pin_floating_panels")
sub1.itemR(view, "object_center_size")
sub1.itemS()
sub1.itemS()
sub1.itemS()
sub1.itemR(view, "show_mini_axis", text="Display Mini Axis")
sub1.label(text="Display:")
sub1.prop(view, "tooltips")
sub1.prop(view, "display_object_info", text="Object Info")
sub1.prop(view, "use_large_cursors")
sub1.prop(view, "show_view_name", text="View Name")
sub1.prop(view, "show_playback_fps", text="Playback FPS")
sub1.prop(view, "global_scene")
sub1.prop(view, "pin_floating_panels")
sub1.prop(view, "object_center_size")
sub1.separator()
sub1.separator()
sub1.separator()
sub1.prop(view, "show_mini_axis", text="Display Mini Axis")
sub2 = sub1.column()
sub2.enabled = view.show_mini_axis
sub2.itemR(view, "mini_axis_size", text="Size")
sub2.itemR(view, "mini_axis_brightness", text="Brightness")
sub2.prop(view, "mini_axis_size", text="Size")
sub2.prop(view, "mini_axis_brightness", text="Brightness")
col = split.column()
sub = col.split(percentage=0.85)
sub1 = sub.column()
sub1.itemL(text="View Manipulation:")
sub1.itemR(view, "auto_depth")
sub1.itemR(view, "global_pivot")
sub1.itemR(view, "zoom_to_mouse")
sub1.itemR(view, "rotate_around_selection")
sub1.itemS()
sub1.label(text="View Manipulation:")
sub1.prop(view, "auto_depth")
sub1.prop(view, "global_pivot")
sub1.prop(view, "zoom_to_mouse")
sub1.prop(view, "rotate_around_selection")
sub1.separator()
sub1.itemR(view, "auto_perspective")
sub1.itemR(view, "smooth_view")
sub1.itemR(view, "rotation_angle")
sub1.prop(view, "auto_perspective")
sub1.prop(view, "smooth_view")
sub1.prop(view, "rotation_angle")
col = split.column()
sub = col.split(percentage=0.85)
sub1 = sub.column()
#Toolbox doesn't exist yet
# sub1.itemL(text="Toolbox:")
# sub1.itemR(view, "use_column_layout")
# sub1.itemL(text="Open Toolbox Delay:")
# sub1.itemR(view, "open_left_mouse_delay", text="Hold LMB")
# sub1.itemR(view, "open_right_mouse_delay", text="Hold RMB")
# sub1.label(text="Toolbox:")
# sub1.prop(view, "use_column_layout")
# sub1.label(text="Open Toolbox Delay:")
# sub1.prop(view, "open_left_mouse_delay", text="Hold LMB")
# sub1.prop(view, "open_right_mouse_delay", text="Hold RMB")
#manipulator
sub1.itemR(view, "use_manipulator")
sub1.prop(view, "use_manipulator")
sub2 = sub1.column()
sub2.enabled = view.use_manipulator
sub2.itemR(view, "manipulator_size", text="Size")
sub2.itemR(view, "manipulator_handle_size", text="Handle Size")
sub2.itemR(view, "manipulator_hotspot", text="Hotspot")
sub2.prop(view, "manipulator_size", text="Size")
sub2.prop(view, "manipulator_handle_size", text="Handle Size")
sub2.prop(view, "manipulator_hotspot", text="Hotspot")
sub1.itemS()
sub1.itemS()
sub1.itemS()
sub1.separator()
sub1.separator()
sub1.separator()
sub1.itemL(text="Menus:")
sub1.itemR(view, "open_mouse_over")
sub1.itemL(text="Menu Open Delay:")
sub1.itemR(view, "open_toplevel_delay", text="Top Level")
sub1.itemR(view, "open_sublevel_delay", text="Sub Level")
sub1.label(text="Menus:")
sub1.prop(view, "open_mouse_over")
sub1.label(text="Menu Open Delay:")
sub1.prop(view, "open_toplevel_delay", text="Top Level")
sub1.prop(view, "open_sublevel_delay", text="Sub Level")
class USERPREF_PT_edit(bpy.types.Panel):
@@ -166,87 +166,87 @@ class USERPREF_PT_edit(bpy.types.Panel):
sub = col.split(percentage=0.85)
sub1 = sub.column()
sub1.itemL(text="Link Materials To:")
sub1.row().itemR(edit, "material_link", expand=True)
sub1.itemS()
sub1.itemS()
sub1.itemS()
sub1.itemL(text="New Objects:")
sub1.itemR(edit, "enter_edit_mode")
sub1.itemL(text="Align To:")
sub1.row().itemR(edit, "object_align", expand=True)
sub1.itemS()
sub1.itemS()
sub1.itemS()
sub1.label(text="Link Materials To:")
sub1.row().prop(edit, "material_link", expand=True)
sub1.separator()
sub1.separator()
sub1.separator()
sub1.label(text="New Objects:")
sub1.prop(edit, "enter_edit_mode")
sub1.label(text="Align To:")
sub1.row().prop(edit, "object_align", expand=True)
sub1.separator()
sub1.separator()
sub1.separator()
sub1.itemL(text="Undo:")
sub1.itemR(edit, "global_undo")
sub1.itemR(edit, "undo_steps", text="Steps")
sub1.itemR(edit, "undo_memory_limit", text="Memory Limit")
sub1.label(text="Undo:")
sub1.prop(edit, "global_undo")
sub1.prop(edit, "undo_steps", text="Steps")
sub1.prop(edit, "undo_memory_limit", text="Memory Limit")
col = split.column()
sub = col.split(percentage=0.85)
sub1 = sub.column()
sub1.itemL(text="Snap:")
sub1.itemR(edit, "snap_translate", text="Translate")
sub1.itemR(edit, "snap_rotate", text="Rotate")
sub1.itemR(edit, "snap_scale", text="Scale")
sub1.itemS()
sub1.itemS()
sub1.itemS()
sub1.itemL(text="Grease Pencil:")
sub1.itemR(edit, "grease_pencil_manhattan_distance", text="Manhattan Distance")
sub1.itemR(edit, "grease_pencil_euclidean_distance", text="Euclidean Distance")
# sub1.itemR(edit, "grease_pencil_simplify_stroke", text="Simplify Stroke")
sub1.itemR(edit, "grease_pencil_eraser_radius", text="Eraser Radius")
sub1.itemR(edit, "grease_pencil_smooth_stroke", text="Smooth Stroke")
sub1.label(text="Snap:")
sub1.prop(edit, "snap_translate", text="Translate")
sub1.prop(edit, "snap_rotate", text="Rotate")
sub1.prop(edit, "snap_scale", text="Scale")
sub1.separator()
sub1.separator()
sub1.separator()
sub1.label(text="Grease Pencil:")
sub1.prop(edit, "grease_pencil_manhattan_distance", text="Manhattan Distance")
sub1.prop(edit, "grease_pencil_euclidean_distance", text="Euclidean Distance")
# sub1.prop(edit, "grease_pencil_simplify_stroke", text="Simplify Stroke")
sub1.prop(edit, "grease_pencil_eraser_radius", text="Eraser Radius")
sub1.prop(edit, "grease_pencil_smooth_stroke", text="Smooth Stroke")
col = split.column()
sub = col.split(percentage=0.85)
sub1 = sub.column()
sub1.itemL(text="Keyframing:")
sub1.itemR(edit, "use_visual_keying")
sub1.itemR(edit, "keyframe_insert_needed", text="Only Insert Needed")
sub1.itemS()
sub1.itemL(text="New F-Curve Defaults:")
sub1.itemR(edit, "new_interpolation_type", text="Interpolation")
sub1.itemS()
sub1.itemR(edit, "auto_keying_enable", text="Auto Keyframing:")
sub1.label(text="Keyframing:")
sub1.prop(edit, "use_visual_keying")
sub1.prop(edit, "keyframe_insert_needed", text="Only Insert Needed")
sub1.separator()
sub1.label(text="New F-Curve Defaults:")
sub1.prop(edit, "new_interpolation_type", text="Interpolation")
sub1.separator()
sub1.prop(edit, "auto_keying_enable", text="Auto Keyframing:")
sub2 = sub1.column()
sub2.active = edit.auto_keying_enable
sub2.itemR(edit, "auto_keyframe_insert_keyingset", text="Only Insert for Keying Set")
sub2.itemR(edit, "auto_keyframe_insert_available", text="Only Insert Available")
sub2.prop(edit, "auto_keyframe_insert_keyingset", text="Only Insert for Keying Set")
sub2.prop(edit, "auto_keyframe_insert_available", text="Only Insert Available")
sub1.itemS()
sub1.itemS()
sub1.itemS()
sub1.separator()
sub1.separator()
sub1.separator()
sub1.itemL(text="Transform:")
sub1.itemR(edit, "drag_immediately")
sub1.label(text="Transform:")
sub1.prop(edit, "drag_immediately")
sub1.itemS()
sub1.itemS()
sub1.itemS()
sub1.separator()
sub1.separator()
sub1.separator()
col = split.column()
sub = col.split(percentage=0.85)
sub1 = sub.column()
sub1.itemL(text="Duplicate Data:")
sub1.itemR(edit, "duplicate_mesh", text="Mesh")
sub1.itemR(edit, "duplicate_surface", text="Surface")
sub1.itemR(edit, "duplicate_curve", text="Curve")
sub1.itemR(edit, "duplicate_text", text="Text")
sub1.itemR(edit, "duplicate_metaball", text="Metaball")
sub1.itemR(edit, "duplicate_armature", text="Armature")
sub1.itemR(edit, "duplicate_lamp", text="Lamp")
sub1.itemR(edit, "duplicate_material", text="Material")
sub1.itemR(edit, "duplicate_texture", text="Texture")
sub1.itemR(edit, "duplicate_ipo", text="F-Curve")
sub1.itemR(edit, "duplicate_action", text="Action")
sub1.itemR(edit, "duplicate_particle", text="Particle")
sub1.label(text="Duplicate Data:")
sub1.prop(edit, "duplicate_mesh", text="Mesh")
sub1.prop(edit, "duplicate_surface", text="Surface")
sub1.prop(edit, "duplicate_curve", text="Curve")
sub1.prop(edit, "duplicate_text", text="Text")
sub1.prop(edit, "duplicate_metaball", text="Metaball")
sub1.prop(edit, "duplicate_armature", text="Armature")
sub1.prop(edit, "duplicate_lamp", text="Lamp")
sub1.prop(edit, "duplicate_material", text="Material")
sub1.prop(edit, "duplicate_texture", text="Texture")
sub1.prop(edit, "duplicate_ipo", text="F-Curve")
sub1.prop(edit, "duplicate_action", text="Action")
sub1.prop(edit, "duplicate_particle", text="Particle")
class USERPREF_PT_system(bpy.types.Panel):
@@ -271,74 +271,74 @@ class USERPREF_PT_system(bpy.types.Panel):
sub = col.split(percentage=0.9)
sub1 = sub.column()
sub1.itemL(text="General:")
sub1.itemR(system, "dpi")
sub1.itemR(system, "frame_server_port")
sub1.itemR(system, "scrollback", text="Console Scrollback")
sub1.itemR(system, "auto_run_python_scripts")
sub1.label(text="General:")
sub1.prop(system, "dpi")
sub1.prop(system, "frame_server_port")
sub1.prop(system, "scrollback", text="Console Scrollback")
sub1.prop(system, "auto_run_python_scripts")
sub1.itemS()
sub1.itemS()
sub1.itemS()
sub1.separator()
sub1.separator()
sub1.separator()
sub1.itemL(text="Sound:")
sub1.row().itemR(system, "audio_device", expand=True)
sub1.label(text="Sound:")
sub1.row().prop(system, "audio_device", expand=True)
sub2 = sub1.column()
sub2.active = system.audio_device != 'NONE'
sub2.itemR(system, "enable_all_codecs")
sub2.itemR(system, "game_sound")
sub2.itemR(system, "audio_channels", text="Channels")
sub2.itemR(system, "audio_mixing_buffer", text="Mixing Buffer")
sub2.itemR(system, "audio_sample_rate", text="Sample Rate")
sub2.itemR(system, "audio_sample_format", text="Sample Format")
sub2.prop(system, "enable_all_codecs")
sub2.prop(system, "game_sound")
sub2.prop(system, "audio_channels", text="Channels")
sub2.prop(system, "audio_mixing_buffer", text="Mixing Buffer")
sub2.prop(system, "audio_sample_rate", text="Sample Rate")
sub2.prop(system, "audio_sample_format", text="Sample Format")
col = split.column()
sub = col.split(percentage=0.9)
sub1 = sub .column()
sub1.itemL(text="Weight Colors:")
sub1.itemR(system, "use_weight_color_range", text="Use Custom Range")
sub1.label(text="Weight Colors:")
sub1.prop(system, "use_weight_color_range", text="Use Custom Range")
sub2 = sub1.column()
sub2.active = system.use_weight_color_range
sub2.template_color_ramp(system, "weight_color_range", expand=True)
sub1.itemS()
sub1.itemS()
sub1.itemS()
sub1.separator()
sub1.separator()
sub1.separator()
sub1.itemR(system, "language")
sub1.itemL(text="Translate:")
sub1.itemR(system, "translate_tooltips", text="Tooltips")
sub1.itemR(system, "translate_buttons", text="Labels")
sub1.itemR(system, "translate_toolbox", text="Toolbox")
sub1.prop(system, "language")
sub1.label(text="Translate:")
sub1.prop(system, "translate_tooltips", text="Tooltips")
sub1.prop(system, "translate_buttons", text="Labels")
sub1.prop(system, "translate_toolbox", text="Toolbox")
sub1.itemS()
sub1.separator()
sub1.itemR(system, "use_textured_fonts")
sub1.prop(system, "use_textured_fonts")
col = split.column()
sub = col.split(percentage=0.9)
sub1 = sub.column()
sub1.itemL(text="OpenGL:")
sub1.itemR(system, "clip_alpha", slider=True)
sub1.itemR(system, "use_mipmaps")
sub1.itemR(system, "use_vbos")
sub1.itemL(text="Window Draw Method:")
sub1.row().itemR(system, "window_draw_method", expand=True)
sub1.itemL(text="Textures:")
sub1.itemR(system, "gl_texture_limit", text="Limit Size")
sub1.itemR(system, "texture_time_out", text="Time Out")
sub1.itemR(system, "texture_collection_rate", text="Collection Rate")
sub1.label(text="OpenGL:")
sub1.prop(system, "clip_alpha", slider=True)
sub1.prop(system, "use_mipmaps")
sub1.prop(system, "use_vbos")
sub1.label(text="Window Draw Method:")
sub1.row().prop(system, "window_draw_method", expand=True)
sub1.label(text="Textures:")
sub1.prop(system, "gl_texture_limit", text="Limit Size")
sub1.prop(system, "texture_time_out", text="Time Out")
sub1.prop(system, "texture_collection_rate", text="Collection Rate")
sub1.itemS()
sub1.itemS()
sub1.itemS()
sub1.separator()
sub1.separator()
sub1.separator()
sub1.itemL(text="Sequencer:")
sub1.itemR(system, "prefetch_frames")
sub1.itemR(system, "memory_cache_limit")
sub1.label(text="Sequencer:")
sub1.prop(system, "prefetch_frames")
sub1.prop(system, "memory_cache_limit")
class USERPREF_PT_theme(bpy.types.Panel):
@@ -359,9 +359,9 @@ class USERPREF_PT_theme(bpy.types.Panel):
split = layout.split(percentage=0.33)
split.itemR(theme, "active_theme", text="")
split.prop(theme, "active_theme", text="")
layout.itemS()
layout.separator()
split = layout.split()
@@ -369,634 +369,634 @@ class USERPREF_PT_theme(bpy.types.Panel):
v3d = theme.view_3d
col = split.column()
col.itemR(v3d, "back")
col.itemR(v3d, "button")
col.itemR(v3d, "button_title")
col.itemR(v3d, "button_text")
col.itemR(v3d, "header")
col.prop(v3d, "back")
col.prop(v3d, "button")
col.prop(v3d, "button_title")
col.prop(v3d, "button_text")
col.prop(v3d, "header")
col = split.column()
col.itemR(v3d, "grid")
col.itemR(v3d, "wire")
col.itemR(v3d, "lamp", slider=True)
col.itemR(v3d, "editmesh_active", slider=True)
col.prop(v3d, "grid")
col.prop(v3d, "wire")
col.prop(v3d, "lamp", slider=True)
col.prop(v3d, "editmesh_active", slider=True)
col = split.column()
col.itemR(v3d, "object_selected")
col.itemR(v3d, "object_active")
col.itemR(v3d, "object_grouped")
col.itemR(v3d, "object_grouped_active")
col.itemR(v3d, "transform")
col.prop(v3d, "object_selected")
col.prop(v3d, "object_active")
col.prop(v3d, "object_grouped")
col.prop(v3d, "object_grouped_active")
col.prop(v3d, "transform")
col = split.column()
col.itemR(v3d, "vertex")
col.itemR(v3d, "face", slider=True)
col.itemR(v3d, "normal")
col.itemR(v3d, "bone_solid")
col.itemR(v3d, "bone_pose")
col.prop(v3d, "vertex")
col.prop(v3d, "face", slider=True)
col.prop(v3d, "normal")
col.prop(v3d, "bone_solid")
col.prop(v3d, "bone_pose")
# col.itemR(v3d, "edge") Doesn't seem to work
# col.prop(v3d, "edge") Doesn't seem to work
elif theme.active_theme == 'USER_INTERFACE':
ui = theme.user_interface.wcol_regular
layout.itemL(text="Regular:")
layout.label(text="Regular:")
sub = layout.row()
sub1 = sub.column()
sub1.itemR(ui, "outline")
sub1.itemR(ui, "item", slider=True)
sub1.prop(ui, "outline")
sub1.prop(ui, "item", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "inner", slider=True)
sub1.itemR(ui, "inner_sel", slider=True)
sub1.prop(ui, "inner", slider=True)
sub1.prop(ui, "inner_sel", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "text")
sub1.itemR(ui, "text_sel")
sub1.prop(ui, "text")
sub1.prop(ui, "text_sel")
sub1 = sub.column()
sub1.itemR(ui, "shaded")
sub1.prop(ui, "shaded")
sub2 = sub1.column(align=True)
sub2.active = ui.shaded
sub2.itemR(ui, "shadetop")
sub2.itemR(ui, "shadedown")
layout.itemS()
sub2.prop(ui, "shadetop")
sub2.prop(ui, "shadedown")
layout.separator()
ui = theme.user_interface.wcol_tool
layout.itemL(text="Tool:")
layout.label(text="Tool:")
sub = layout.row()
sub1 = sub.column()
sub1.itemR(ui, "outline")
sub1.itemR(ui, "item", slider=True)
sub1.prop(ui, "outline")
sub1.prop(ui, "item", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "inner", slider=True)
sub1.itemR(ui, "inner_sel", slider=True)
sub1.prop(ui, "inner", slider=True)
sub1.prop(ui, "inner_sel", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "text")
sub1.itemR(ui, "text_sel")
sub1.prop(ui, "text")
sub1.prop(ui, "text_sel")
sub1 = sub.column()
sub1.itemR(ui, "shaded")
sub1.prop(ui, "shaded")
sub2 = sub1.column(align=True)
sub2.active = ui.shaded
sub2.itemR(ui, "shadetop")
sub2.itemR(ui, "shadedown")
sub2.prop(ui, "shadetop")
sub2.prop(ui, "shadedown")
ui = theme.user_interface.wcol_radio
layout.itemL(text="Radio Buttons:")
layout.label(text="Radio Buttons:")
sub = layout.row()
sub1 = sub.column()
sub1.itemR(ui, "outline")
sub1.itemR(ui, "item", slider=True)
sub1.prop(ui, "outline")
sub1.prop(ui, "item", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "inner", slider=True)
sub1.itemR(ui, "inner_sel", slider=True)
sub1.prop(ui, "inner", slider=True)
sub1.prop(ui, "inner_sel", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "text")
sub1.itemR(ui, "text_sel")
sub1.prop(ui, "text")
sub1.prop(ui, "text_sel")
sub1 = sub.column()
sub1.itemR(ui, "shaded")
sub1.prop(ui, "shaded")
sub2 = sub1.column(align=True)
sub2.active = ui.shaded
sub2.itemR(ui, "shadetop")
sub2.itemR(ui, "shadedown")
sub2.prop(ui, "shadetop")
sub2.prop(ui, "shadedown")
ui = theme.user_interface.wcol_text
layout.itemL(text="Text:")
layout.label(text="Text:")
sub = layout.row()
sub1 = sub.column()
sub1.itemR(ui, "outline")
sub1.itemR(ui, "item", slider=True)
sub1.prop(ui, "outline")
sub1.prop(ui, "item", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "inner", slider=True)
sub1.itemR(ui, "inner_sel", slider=True)
sub1.prop(ui, "inner", slider=True)
sub1.prop(ui, "inner_sel", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "text")
sub1.itemR(ui, "text_sel")
sub1.prop(ui, "text")
sub1.prop(ui, "text_sel")
sub1 = sub.column()
sub1.itemR(ui, "shaded")
sub1.prop(ui, "shaded")
sub2 = sub1.column(align=True)
sub2.active = ui.shaded
sub2.itemR(ui, "shadetop")
sub2.itemR(ui, "shadedown")
sub2.prop(ui, "shadetop")
sub2.prop(ui, "shadedown")
ui = theme.user_interface.wcol_option
layout.itemL(text="Option:")
layout.label(text="Option:")
sub = layout.row()
sub1 = sub.column()
sub1.itemR(ui, "outline")
sub1.itemR(ui, "item", slider=True)
sub1.prop(ui, "outline")
sub1.prop(ui, "item", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "inner", slider=True)
sub1.itemR(ui, "inner_sel", slider=True)
sub1.prop(ui, "inner", slider=True)
sub1.prop(ui, "inner_sel", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "text")
sub1.itemR(ui, "text_sel")
sub1.prop(ui, "text")
sub1.prop(ui, "text_sel")
sub1 = sub.column()
sub1.itemR(ui, "shaded")
sub1.prop(ui, "shaded")
sub2 = sub1.column(align=True)
sub2.active = ui.shaded
sub2.itemR(ui, "shadetop")
sub2.itemR(ui, "shadedown")
sub2.prop(ui, "shadetop")
sub2.prop(ui, "shadedown")
ui = theme.user_interface.wcol_toggle
layout.itemL(text="Toggle:")
layout.label(text="Toggle:")
sub = layout.row()
sub1 = sub.column()
sub1.itemR(ui, "outline")
sub1.itemR(ui, "item", slider=True)
sub1.prop(ui, "outline")
sub1.prop(ui, "item", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "inner", slider=True)
sub1.itemR(ui, "inner_sel", slider=True)
sub1.prop(ui, "inner", slider=True)
sub1.prop(ui, "inner_sel", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "text")
sub1.itemR(ui, "text_sel")
sub1.prop(ui, "text")
sub1.prop(ui, "text_sel")
sub1 = sub.column()
sub1.itemR(ui, "shaded")
sub1.prop(ui, "shaded")
sub2 = sub1.column(align=True)
sub2.active = ui.shaded
sub2.itemR(ui, "shadetop")
sub2.itemR(ui, "shadedown")
sub2.prop(ui, "shadetop")
sub2.prop(ui, "shadedown")
ui = theme.user_interface.wcol_num
layout.itemL(text="Number Field:")
layout.label(text="Number Field:")
sub = layout.row()
sub1 = sub.column()
sub1.itemR(ui, "outline")
sub1.itemR(ui, "item", slider=True)
sub1.prop(ui, "outline")
sub1.prop(ui, "item", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "inner", slider=True)
sub1.itemR(ui, "inner_sel", slider=True)
sub1.prop(ui, "inner", slider=True)
sub1.prop(ui, "inner_sel", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "text")
sub1.itemR(ui, "text_sel")
sub1.prop(ui, "text")
sub1.prop(ui, "text_sel")
sub1 = sub.column()
sub1.itemR(ui, "shaded")
sub1.prop(ui, "shaded")
sub2 = sub1.column(align=True)
sub2.active = ui.shaded
sub2.itemR(ui, "shadetop")
sub2.itemR(ui, "shadedown")
sub2.prop(ui, "shadetop")
sub2.prop(ui, "shadedown")
ui = theme.user_interface.wcol_numslider
layout.itemL(text="Value Slider:")
layout.label(text="Value Slider:")
sub = layout.row()
sub1 = sub.column()
sub1.itemR(ui, "outline")
sub1.itemR(ui, "item", slider=True)
sub1.prop(ui, "outline")
sub1.prop(ui, "item", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "inner", slider=True)
sub1.itemR(ui, "inner_sel", slider=True)
sub1.prop(ui, "inner", slider=True)
sub1.prop(ui, "inner_sel", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "text")
sub1.itemR(ui, "text_sel")
sub1.prop(ui, "text")
sub1.prop(ui, "text_sel")
sub1 = sub.column()
sub1.itemR(ui, "shaded")
sub1.prop(ui, "shaded")
sub2 = sub1.column(align=True)
sub2.active = ui.shaded
sub2.itemR(ui, "shadetop")
sub2.itemR(ui, "shadedown")
sub2.prop(ui, "shadetop")
sub2.prop(ui, "shadedown")
ui = theme.user_interface.wcol_box
layout.itemL(text="Box:")
layout.label(text="Box:")
sub = layout.row()
sub1 = sub.column()
sub1.itemR(ui, "outline")
sub1.itemR(ui, "item", slider=True)
sub1.prop(ui, "outline")
sub1.prop(ui, "item", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "inner", slider=True)
sub1.itemR(ui, "inner_sel", slider=True)
sub1.prop(ui, "inner", slider=True)
sub1.prop(ui, "inner_sel", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "text")
sub1.itemR(ui, "text_sel")
sub1.prop(ui, "text")
sub1.prop(ui, "text_sel")
sub1 = sub.column()
sub1.itemR(ui, "shaded")
sub1.prop(ui, "shaded")
sub2 = sub1.column(align=True)
sub2.active = ui.shaded
sub2.itemR(ui, "shadetop")
sub2.itemR(ui, "shadedown")
sub2.prop(ui, "shadetop")
sub2.prop(ui, "shadedown")
ui = theme.user_interface.wcol_menu
layout.itemL(text="Menu:")
layout.label(text="Menu:")
sub = layout.row()
sub1 = sub.column()
sub1.itemR(ui, "outline")
sub1.itemR(ui, "item", slider=True)
sub1.prop(ui, "outline")
sub1.prop(ui, "item", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "inner", slider=True)
sub1.itemR(ui, "inner_sel", slider=True)
sub1.prop(ui, "inner", slider=True)
sub1.prop(ui, "inner_sel", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "text")
sub1.itemR(ui, "text_sel")
sub1.prop(ui, "text")
sub1.prop(ui, "text_sel")
sub1 = sub.column()
sub1.itemR(ui, "shaded")
sub1.prop(ui, "shaded")
sub2 = sub1.column(align=True)
sub2.active = ui.shaded
sub2.itemR(ui, "shadetop")
sub2.itemR(ui, "shadedown")
sub2.prop(ui, "shadetop")
sub2.prop(ui, "shadedown")
ui = theme.user_interface.wcol_pulldown
layout.itemL(text="Pulldown:")
layout.label(text="Pulldown:")
sub = layout.row()
sub1 = sub.column()
sub1.itemR(ui, "outline")
sub1.itemR(ui, "item", slider=True)
sub1.prop(ui, "outline")
sub1.prop(ui, "item", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "inner", slider=True)
sub1.itemR(ui, "inner_sel", slider=True)
sub1.prop(ui, "inner", slider=True)
sub1.prop(ui, "inner_sel", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "text")
sub1.itemR(ui, "text_sel")
sub1.prop(ui, "text")
sub1.prop(ui, "text_sel")
sub1 = sub.column()
sub1.itemR(ui, "shaded")
sub1.prop(ui, "shaded")
sub2 = sub1.column(align=True)
sub2.active = ui.shaded
sub2.itemR(ui, "shadetop")
sub2.itemR(ui, "shadedown")
sub2.prop(ui, "shadetop")
sub2.prop(ui, "shadedown")
ui = theme.user_interface.wcol_menu_back
layout.itemL(text="Menu Back:")
layout.label(text="Menu Back:")
sub = layout.row()
sub1 = sub.column()
sub1.itemR(ui, "outline")
sub1.itemR(ui, "item", slider=True)
sub1.prop(ui, "outline")
sub1.prop(ui, "item", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "inner", slider=True)
sub1.itemR(ui, "inner_sel", slider=True)
sub1.prop(ui, "inner", slider=True)
sub1.prop(ui, "inner_sel", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "text")
sub1.itemR(ui, "text_sel")
sub1.prop(ui, "text")
sub1.prop(ui, "text_sel")
sub1 = sub.column()
sub1.itemR(ui, "shaded")
sub1.prop(ui, "shaded")
sub2 = sub1.column(align=True)
sub2.active = ui.shaded
sub2.itemR(ui, "shadetop")
sub2.itemR(ui, "shadedown")
sub2.prop(ui, "shadetop")
sub2.prop(ui, "shadedown")
ui = theme.user_interface.wcol_menu_item
layout.itemL(text="Menu Item:")
layout.label(text="Menu Item:")
sub = layout.row()
sub1 = sub.column()
sub1.itemR(ui, "outline")
sub1.itemR(ui, "item", slider=True)
sub1.prop(ui, "outline")
sub1.prop(ui, "item", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "inner", slider=True)
sub1.itemR(ui, "inner_sel", slider=True)
sub1.prop(ui, "inner", slider=True)
sub1.prop(ui, "inner_sel", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "text")
sub1.itemR(ui, "text_sel")
sub1.prop(ui, "text")
sub1.prop(ui, "text_sel")
sub1 = sub.column()
sub1.itemR(ui, "shaded")
sub1.prop(ui, "shaded")
sub2 = sub1.column(align=True)
sub2.active = ui.shaded
sub2.itemR(ui, "shadetop")
sub2.itemR(ui, "shadedown")
sub2.prop(ui, "shadetop")
sub2.prop(ui, "shadedown")
ui = theme.user_interface.wcol_scroll
layout.itemL(text="Scroll Bar:")
layout.label(text="Scroll Bar:")
sub = layout.row()
sub1 = sub.column()
sub1.itemR(ui, "outline")
sub1.itemR(ui, "item", slider=True)
sub1.prop(ui, "outline")
sub1.prop(ui, "item", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "inner", slider=True)
sub1.itemR(ui, "inner_sel", slider=True)
sub1.prop(ui, "inner", slider=True)
sub1.prop(ui, "inner_sel", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "text")
sub1.itemR(ui, "text_sel")
sub1.prop(ui, "text")
sub1.prop(ui, "text_sel")
sub1 = sub.column()
sub1.itemR(ui, "shaded")
sub1.prop(ui, "shaded")
sub2 = sub1.column(align=True)
sub2.active = ui.shaded
sub2.itemR(ui, "shadetop")
sub2.itemR(ui, "shadedown")
sub2.prop(ui, "shadetop")
sub2.prop(ui, "shadedown")
ui = theme.user_interface.wcol_list_item
layout.itemL(text="List Item:")
layout.label(text="List Item:")
sub = layout.row()
sub1 = sub.column()
sub1.itemR(ui, "outline")
sub1.itemR(ui, "item", slider=True)
sub1.prop(ui, "outline")
sub1.prop(ui, "item", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "inner", slider=True)
sub1.itemR(ui, "inner_sel", slider=True)
sub1.prop(ui, "inner", slider=True)
sub1.prop(ui, "inner_sel", slider=True)
sub1 = sub.column()
sub1.itemR(ui, "text")
sub1.itemR(ui, "text_sel")
sub1.prop(ui, "text")
sub1.prop(ui, "text_sel")
sub1 = sub.column()
sub1.itemR(ui, "shaded")
sub1.prop(ui, "shaded")
sub2 = sub1.column(align=True)
sub2.active = ui.shaded
sub2.itemR(ui, "shadetop")
sub2.itemR(ui, "shadedown")
sub2.prop(ui, "shadetop")
sub2.prop(ui, "shadedown")
ui = theme.user_interface.wcol_state
layout.itemL(text="State:")
layout.label(text="State:")
sub = layout.row()
sub1 = sub.column()
sub1.itemR(ui, "inner_anim")
sub1.itemR(ui, "inner_anim_sel")
sub1.prop(ui, "inner_anim")
sub1.prop(ui, "inner_anim_sel")
sub1 = sub.column()
sub1.itemR(ui, "inner_driven")
sub1.itemR(ui, "inner_driven_sel")
sub1.prop(ui, "inner_driven")
sub1.prop(ui, "inner_driven_sel")
sub1 = sub.column()
sub1.itemR(ui, "inner_key")
sub1.itemR(ui, "inner_key_sel")
sub1.prop(ui, "inner_key")
sub1.prop(ui, "inner_key_sel")
sub1 = sub.column()
sub1.itemR(ui, "blend")
sub1.prop(ui, "blend")
ui = theme.user_interface
layout.itemS()
layout.separator()
sub = layout.row()
sub.itemR(ui, "icon_file")
sub.prop(ui, "icon_file")
layout.itemS()
layout.itemS()
layout.separator()
layout.separator()
elif theme.active_theme == 'GRAPH_EDITOR':
graph = theme.graph_editor
col = split.column()
col.itemR(graph, "back")
col.itemR(graph, "button")
col.itemR(graph, "button_title")
col.itemR(graph, "button_text")
col.prop(graph, "back")
col.prop(graph, "button")
col.prop(graph, "button_title")
col.prop(graph, "button_text")
col = split.column()
col.itemR(graph, "header")
col.itemR(graph, "grid")
col.itemR(graph, "list")
col.itemR(graph, "channel_group")
col.prop(graph, "header")
col.prop(graph, "grid")
col.prop(graph, "list")
col.prop(graph, "channel_group")
col = split.column()
col.itemR(graph, "active_channels_group")
col.itemR(graph, "dopesheet_channel")
col.itemR(graph, "dopesheet_subchannel")
col.itemR(graph, "vertex")
col.prop(graph, "active_channels_group")
col.prop(graph, "dopesheet_channel")
col.prop(graph, "dopesheet_subchannel")
col.prop(graph, "vertex")
col = split.column()
col.itemR(graph, "current_frame")
col.itemR(graph, "handle_vertex")
col.itemR(graph, "handle_vertex_select")
col.itemS()
col.itemR(graph, "handle_vertex_size")
col.prop(graph, "current_frame")
col.prop(graph, "handle_vertex")
col.prop(graph, "handle_vertex_select")
col.separator()
col.prop(graph, "handle_vertex_size")
elif theme.active_theme == 'FILE_BROWSER':
file_browse = theme.file_browser
col = split.column()
col.itemR(file_browse, "back")
col.itemR(file_browse, "text")
col.itemR(file_browse, "text_hi")
col.prop(file_browse, "back")
col.prop(file_browse, "text")
col.prop(file_browse, "text_hi")
col = split.column()
col.itemR(file_browse, "header")
col.itemR(file_browse, "list")
col.prop(file_browse, "header")
col.prop(file_browse, "list")
col = split.column()
col.itemR(file_browse, "selected_file")
col.itemR(file_browse, "tiles")
col.prop(file_browse, "selected_file")
col.prop(file_browse, "tiles")
col = split.column()
col.itemR(file_browse, "active_file")
col.itemR(file_browse, "active_file_text")
col.prop(file_browse, "active_file")
col.prop(file_browse, "active_file_text")
elif theme.active_theme == 'NLA_EDITOR':
nla = theme.nla_editor
col = split.column()
col.itemR(nla, "back")
col.itemR(nla, "button")
col.itemR(nla, "button_title")
col.prop(nla, "back")
col.prop(nla, "button")
col.prop(nla, "button_title")
col = split.column()
col.itemR(nla, "button_text")
col.itemR(nla, "text")
col.itemR(nla, "header")
col.prop(nla, "button_text")
col.prop(nla, "text")
col.prop(nla, "header")
col = split.column()
col.itemR(nla, "grid")
col.itemR(nla, "bars")
col.itemR(nla, "bars_selected")
col.prop(nla, "grid")
col.prop(nla, "bars")
col.prop(nla, "bars_selected")
col = split.column()
col.itemR(nla, "strips")
col.itemR(nla, "strips_selected")
col.itemR(nla, "current_frame")
col.prop(nla, "strips")
col.prop(nla, "strips_selected")
col.prop(nla, "current_frame")
elif theme.active_theme == 'DOPESHEET_EDITOR':
dope = theme.dopesheet_editor
col = split.column()
col.itemR(dope, "back")
col.itemR(dope, "list")
col.itemR(dope, "text")
col.itemR(dope, "header")
col.prop(dope, "back")
col.prop(dope, "list")
col.prop(dope, "text")
col.prop(dope, "header")
col = split.column()
col.itemR(dope, "grid")
col.itemR(dope, "channels")
col.itemR(dope, "channels_selected")
col.itemR(dope, "channel_group")
col.prop(dope, "grid")
col.prop(dope, "channels")
col.prop(dope, "channels_selected")
col.prop(dope, "channel_group")
col = split.column()
col.itemR(dope, "active_channels_group")
col.itemR(dope, "long_key")
col.itemR(dope, "long_key_selected")
col.prop(dope, "active_channels_group")
col.prop(dope, "long_key")
col.prop(dope, "long_key_selected")
col = split.column()
col.itemR(dope, "current_frame")
col.itemR(dope, "dopesheet_channel")
col.itemR(dope, "dopesheet_subchannel")
col.prop(dope, "current_frame")
col.prop(dope, "dopesheet_channel")
col.prop(dope, "dopesheet_subchannel")
elif theme.active_theme == 'IMAGE_EDITOR':
image = theme.image_editor
col = split.column()
col.itemR(image, "back")
col.itemR(image, "button")
col.prop(image, "back")
col.prop(image, "button")
col = split.column()
col.itemR(image, "button_title")
col.itemR(image, "button_text")
col.prop(image, "button_title")
col.prop(image, "button_text")
col = split.column()
col.itemR(image, "header")
col.prop(image, "header")
col = split.column()
col.itemR(image, "editmesh_active", slider=True)
col.prop(image, "editmesh_active", slider=True)
elif theme.active_theme == 'SEQUENCE_EDITOR':
seq = theme.sequence_editor
col = split.column()
col.itemR(seq, "back")
col.itemR(seq, "button")
col.itemR(seq, "button_title")
col.itemR(seq, "button_text")
col.itemR(seq, "text")
col.prop(seq, "back")
col.prop(seq, "button")
col.prop(seq, "button_title")
col.prop(seq, "button_text")
col.prop(seq, "text")
col = split.column()
col.itemR(seq, "header")
col.itemR(seq, "grid")
col.itemR(seq, "movie_strip")
col.itemR(seq, "image_strip")
col.itemR(seq, "scene_strip")
col.prop(seq, "header")
col.prop(seq, "grid")
col.prop(seq, "movie_strip")
col.prop(seq, "image_strip")
col.prop(seq, "scene_strip")
col = split.column()
col.itemR(seq, "audio_strip")
col.itemR(seq, "effect_strip")
col.itemR(seq, "plugin_strip")
col.itemR(seq, "transition_strip")
col.prop(seq, "audio_strip")
col.prop(seq, "effect_strip")
col.prop(seq, "plugin_strip")
col.prop(seq, "transition_strip")
col = split.column()
col.itemR(seq, "meta_strip")
col.itemR(seq, "current_frame")
col.itemR(seq, "keyframe")
col.itemR(seq, "draw_action")
col.prop(seq, "meta_strip")
col.prop(seq, "current_frame")
col.prop(seq, "keyframe")
col.prop(seq, "draw_action")
elif theme.active_theme == 'PROPERTIES':
prop = theme.properties
col = split.column()
col.itemR(prop, "back")
col.prop(prop, "back")
col = split.column()
col.itemR(prop, "title")
col.prop(prop, "title")
col = split.column()
col.itemR(prop, "text")
col.prop(prop, "text")
col = split.column()
col.itemR(prop, "header")
col.prop(prop, "header")
elif theme.active_theme == 'TEXT_EDITOR':
text = theme.text_editor
col = split.column()
col.itemR(text, "back")
col.itemR(text, "button")
col.itemR(text, "button_title")
col.itemR(text, "button_text")
col.prop(text, "back")
col.prop(text, "button")
col.prop(text, "button_title")
col.prop(text, "button_text")
col = split.column()
col.itemR(text, "text")
col.itemR(text, "text_hi")
col.itemR(text, "header")
col.itemR(text, "line_numbers_background")
col.prop(text, "text")
col.prop(text, "text_hi")
col.prop(text, "header")
col.prop(text, "line_numbers_background")
col = split.column()
col.itemR(text, "selected_text")
col.itemR(text, "cursor")
col.itemR(text, "syntax_builtin")
col.itemR(text, "syntax_special")
col.prop(text, "selected_text")
col.prop(text, "cursor")
col.prop(text, "syntax_builtin")
col.prop(text, "syntax_special")
col = split.column()
col.itemR(text, "syntax_comment")
col.itemR(text, "syntax_string")
col.itemR(text, "syntax_numbers")
col.prop(text, "syntax_comment")
col.prop(text, "syntax_string")
col.prop(text, "syntax_numbers")
elif theme.active_theme == 'TIMELINE':
time = theme.timeline
col = split.column()
col.itemR(time, "back")
col.itemR(time, "text")
col.prop(time, "back")
col.prop(time, "text")
col = split.column()
col.itemR(time, "header")
col.prop(time, "header")
col = split.column()
col.itemR(time, "grid")
col.prop(time, "grid")
col = split.column()
col.itemR(time, "current_frame")
col.prop(time, "current_frame")
elif theme.active_theme == 'NODE_EDITOR':
node = theme.node_editor
col = split.column()
col.itemR(node, "back")
col.itemR(node, "button")
col.itemR(node, "button_title")
col.itemR(node, "button_text")
col.prop(node, "back")
col.prop(node, "button")
col.prop(node, "button_title")
col.prop(node, "button_text")
col = split.column()
col.itemR(node, "text")
col.itemR(node, "text_hi")
col.itemR(node, "header")
col.itemR(node, "wires")
col.prop(node, "text")
col.prop(node, "text_hi")
col.prop(node, "header")
col.prop(node, "wires")
col = split.column()
col.itemR(node, "wire_select")
col.itemR(node, "selected_text")
col.itemR(node, "node_backdrop", slider=True)
col.itemR(node, "in_out_node")
col.prop(node, "wire_select")
col.prop(node, "selected_text")
col.prop(node, "node_backdrop", slider=True)
col.prop(node, "in_out_node")
col = split.column()
col.itemR(node, "converter_node")
col.itemR(node, "operator_node")
col.itemR(node, "group_node")
col.prop(node, "converter_node")
col.prop(node, "operator_node")
col.prop(node, "group_node")
elif theme.active_theme == 'LOGIC_EDITOR':
logic = theme.logic_editor
col = split.column()
col.itemR(logic, "back")
col.itemR(logic, "button")
col.prop(logic, "back")
col.prop(logic, "button")
col = split.column()
col.itemR(logic, "button_title")
col.itemR(logic, "button_text")
col.prop(logic, "button_title")
col.prop(logic, "button_text")
col = split.column()
col.itemR(logic, "text")
col.itemR(logic, "header")
col.prop(logic, "text")
col.prop(logic, "header")
col = split.column()
col.itemR(logic, "panel")
col.prop(logic, "panel")
elif theme.active_theme == 'OUTLINER':
out = theme.outliner
col = split.column()
col.itemR(out, "back")
col.prop(out, "back")
col = split.column()
col.itemR(out, "text")
col.prop(out, "text")
col = split.column()
col.itemR(out, "text_hi")
col.prop(out, "text_hi")
col = split.column()
col.itemR(out, "header")
col.prop(out, "header")
elif theme.active_theme == 'INFO':
info = theme.info
col = split.column()
col.itemR(info, "back")
col.prop(info, "back")
col = split.column()
col.itemR(info, "header")
col.prop(info, "header")
col = split.column()
col.itemR(info, "header_text")
col.prop(info, "header_text")
col = split.column()
@@ -1004,16 +1004,16 @@ class USERPREF_PT_theme(bpy.types.Panel):
prefs = theme.user_preferences
col = split.column()
col.itemR(prefs, "back")
col.prop(prefs, "back")
col = split.column()
col.itemR(prefs, "text")
col.prop(prefs, "text")
col = split.column()
col.itemR(prefs, "header")
col.prop(prefs, "header")
col = split.column()
col.itemR(prefs, "header_text")
col.prop(prefs, "header_text")
class USERPREF_PT_file(bpy.types.Panel):
@@ -1035,53 +1035,53 @@ class USERPREF_PT_file(bpy.types.Panel):
split = layout.split(percentage=0.6)
col = split.column()
col.itemL(text="File Paths:")
col.label(text="File Paths:")
sub = col.split(percentage=0.3)
sub.itemL(text="Fonts:")
sub.itemR(paths, "fonts_directory", text="")
sub.label(text="Fonts:")
sub.prop(paths, "fonts_directory", text="")
sub = col.split(percentage=0.3)
sub.itemL(text="Textures:")
sub.itemR(paths, "textures_directory", text="")
sub.label(text="Textures:")
sub.prop(paths, "textures_directory", text="")
sub = col.split(percentage=0.3)
sub.itemL(text="Texture Plugins:")
sub.itemR(paths, "texture_plugin_directory", text="")
sub.label(text="Texture Plugins:")
sub.prop(paths, "texture_plugin_directory", text="")
sub = col.split(percentage=0.3)
sub.itemL(text="Sequence Plugins:")
sub.itemR(paths, "sequence_plugin_directory", text="")
sub.label(text="Sequence Plugins:")
sub.prop(paths, "sequence_plugin_directory", text="")
sub = col.split(percentage=0.3)
sub.itemL(text="Render Output:")
sub.itemR(paths, "render_output_directory", text="")
sub.label(text="Render Output:")
sub.prop(paths, "render_output_directory", text="")
sub = col.split(percentage=0.3)
sub.itemL(text="Scripts:")
sub.itemR(paths, "python_scripts_directory", text="")
sub.label(text="Scripts:")
sub.prop(paths, "python_scripts_directory", text="")
sub = col.split(percentage=0.3)
sub.itemL(text="Sounds:")
sub.itemR(paths, "sounds_directory", text="")
sub.label(text="Sounds:")
sub.prop(paths, "sounds_directory", text="")
sub = col.split(percentage=0.3)
sub.itemL(text="Temp:")
sub.itemR(paths, "temporary_directory", text="")
sub.label(text="Temp:")
sub.prop(paths, "temporary_directory", text="")
col = split.column()
sub = col.split(percentage=0.2)
sub.column() # sub1, unused
sub2 = sub.column()
sub2.itemL(text="Save & Load:")
sub2.itemR(paths, "use_relative_paths")
sub2.itemR(paths, "compress_file")
sub2.itemR(paths, "load_ui")
sub2.itemR(paths, "filter_file_extensions")
sub2.itemR(paths, "hide_dot_files_datablocks")
sub2.itemS()
sub2.itemS()
sub2.itemL(text="Auto Save:")
sub2.itemR(paths, "save_version")
sub2.itemR(paths, "recent_files")
sub2.itemR(paths, "save_preview_images")
sub2.itemR(paths, "auto_save_temporary_files")
sub2.label(text="Save & Load:")
sub2.prop(paths, "use_relative_paths")
sub2.prop(paths, "compress_file")
sub2.prop(paths, "load_ui")
sub2.prop(paths, "filter_file_extensions")
sub2.prop(paths, "hide_dot_files_datablocks")
sub2.separator()
sub2.separator()
sub2.label(text="Auto Save:")
sub2.prop(paths, "save_version")
sub2.prop(paths, "recent_files")
sub2.prop(paths, "save_preview_images")
sub2.prop(paths, "auto_save_temporary_files")
sub3 = sub2.column()
sub3.enabled = paths.auto_save_temporary_files
sub3.itemR(paths, "auto_save_time", text="Timer (mins)")
sub3.prop(paths, "auto_save_time", text="Timer (mins)")
class USERPREF_PT_input(bpy.types.Panel):
@@ -1110,52 +1110,52 @@ class USERPREF_PT_input(bpy.types.Panel):
col = row.column()
sub = col.column()
sub.itemL(text="Configuration:")
sub.item_pointerR(wm, "active_keyconfig", wm, "keyconfigs", text="")
sub.label(text="Configuration:")
sub.prop_pointer(wm, "active_keyconfig", wm, "keyconfigs", text="")
col.itemS()
col.separator()
sub = col.column()
sub.itemL(text="Mouse:")
sub.label(text="Mouse:")
sub1 = sub.column()
sub1.enabled = (inputs.select_mouse == 'RIGHT')
sub1.itemR(inputs, "emulate_3_button_mouse")
sub.itemR(inputs, "continuous_mouse")
sub1.prop(inputs, "emulate_3_button_mouse")
sub.prop(inputs, "continuous_mouse")
sub.itemL(text="Select With:")
sub.row().itemR(inputs, "select_mouse", expand=True)
sub.itemL(text="Middle Mouse:")
sub.row().itemR(inputs, "middle_mouse", expand=True)
sub.label(text="Select With:")
sub.row().prop(inputs, "select_mouse", expand=True)
sub.label(text="Middle Mouse:")
sub.row().prop(inputs, "middle_mouse", expand=True)
sub.itemS()
sub.separator()
sub.itemR(inputs, "emulate_numpad")
sub.prop(inputs, "emulate_numpad")
sub.itemS()
sub.separator()
sub.itemL(text="Orbit Style:")
sub.row().itemR(inputs, "view_rotation", expand=True)
sub.label(text="Orbit Style:")
sub.row().prop(inputs, "view_rotation", expand=True)
sub.itemL(text="Zoom Style:")
sub.row().itemR(inputs, "viewport_zoom_style", expand=True)
sub.label(text="Zoom Style:")
sub.row().prop(inputs, "viewport_zoom_style", expand=True)
#sub.itemR(inputs, "use_middle_mouse_paste")
#sub.prop(inputs, "use_middle_mouse_paste")
#col.itemS()
#col.separator()
#sub = col.column()
#sub.itemL(text="Mouse Wheel:")
#sub.itemR(view, "wheel_invert_zoom", text="Invert Zoom")
#sub.itemR(view, "wheel_scroll_lines", text="Scroll Lines")
#sub.label(text="Mouse Wheel:")
#sub.prop(view, "wheel_invert_zoom", text="Invert Zoom")
#sub.prop(view, "wheel_scroll_lines", text="Scroll Lines")
col.itemS()
col.separator()
sub = col.column()
sub.itemL(text="NDOF Device:")
sub.itemR(inputs, "ndof_pan_speed", text="Pan Speed")
sub.itemR(inputs, "ndof_rotate_speed", text="Orbit Speed")
sub.label(text="NDOF Device:")
sub.prop(inputs, "ndof_pan_speed", text="Pan Speed")
sub.prop(inputs, "ndof_rotate_speed", text="Orbit Speed")
row.itemS()
row.separator()
# Keymap Settings
col = split.column()
@@ -1165,17 +1165,17 @@ class USERPREF_PT_input(bpy.types.Panel):
km = wm.active_keymap
subsplit = col.split()
subsplit.item_pointerR(wm, "active_keymap", defkc, "keymaps", text="Map:")
subsplit.prop_pointer(wm, "active_keymap", defkc, "keymaps", text="Map:")
if km.user_defined:
row = subsplit.row()
row.itemO("WM_OT_keymap_restore", text="Restore")
row.item_booleanO("WM_OT_keymap_restore", "all", True, text="Restore All")
row.operator("WM_OT_keymap_restore", text="Restore")
row.operator_boolean("WM_OT_keymap_restore", "all", True, text="Restore All")
else:
row = subsplit.row()
row.itemO("WM_OT_keymap_edit", text="Edit")
row.itemL()
row.operator("WM_OT_keymap_edit", text="Edit")
row.label()
col.itemS()
col.separator()
for kmi in km.items:
subcol = col.column()
@@ -1184,66 +1184,66 @@ class USERPREF_PT_input(bpy.types.Panel):
row = subcol.row()
if kmi.expanded:
row.itemR(kmi, "expanded", text="", icon='ICON_TRIA_DOWN')
row.prop(kmi, "expanded", text="", icon='ICON_TRIA_DOWN')
else:
row.itemR(kmi, "expanded", text="", icon='ICON_TRIA_RIGHT')
row.prop(kmi, "expanded", text="", icon='ICON_TRIA_RIGHT')
itemrow = row.row()
itemrow.enabled = km.user_defined
if kmi.active:
itemrow.itemR(kmi, "active", text="", icon='ICON_CHECKBOX_HLT')
itemrow.prop(kmi, "active", text="", icon='ICON_CHECKBOX_HLT')
else:
itemrow.itemR(kmi, "active", text="", icon='ICON_CHECKBOX_DEHLT')
itemrow.prop(kmi, "active", text="", icon='ICON_CHECKBOX_DEHLT')
itemcol = itemrow.column()
itemcol.active = kmi.active
row = itemcol.row()
if km.modal:
row.itemR(kmi, "propvalue", text="")
row.prop(kmi, "propvalue", text="")
else:
row.itemR(kmi, "idname", text="")
row.prop(kmi, "idname", text="")
sub = row.row()
sub.scale_x = 0.6
sub.itemR(kmi, "map_type", text="")
sub.prop(kmi, "map_type", text="")
sub = row.row(align=True)
if kmi.map_type == 'KEYBOARD':
sub.itemR(kmi, "type", text="", full_event=True)
sub.prop(kmi, "type", text="", full_event=True)
elif kmi.map_type == 'MOUSE':
sub.itemR(kmi, "type", text="", full_event=True)
sub.prop(kmi, "type", text="", full_event=True)
elif kmi.map_type == 'TWEAK':
sub.scale_x = 0.5
sub.itemR(kmi, "type", text="")
sub.itemR(kmi, "value", text="")
sub.prop(kmi, "type", text="")
sub.prop(kmi, "value", text="")
elif kmi.map_type == 'TIMER':
sub.itemR(kmi, "type", text="")
sub.prop(kmi, "type", text="")
else:
sub.itemL()
sub.label()
if kmi.expanded:
if kmi.map_type not in ('TEXTINPUT', 'TIMER'):
sub = itemcol.row(align=True)
if kmi.map_type == 'KEYBOARD':
sub.itemR(kmi, "type", text="", event=True)
sub.itemR(kmi, "value", text="")
sub.prop(kmi, "type", text="", event=True)
sub.prop(kmi, "value", text="")
elif kmi.map_type == 'MOUSE':
sub.itemR(kmi, "type", text="")
sub.itemR(kmi, "value", text="")
sub.prop(kmi, "type", text="")
sub.prop(kmi, "value", text="")
else:
sub.itemL()
sub.itemL()
sub.label()
sub.label()
subrow = sub.row()
subrow.scale_x = 0.75
subrow.itemR(kmi, "any")
subrow.itemR(kmi, "shift")
subrow.itemR(kmi, "ctrl")
subrow.itemR(kmi, "alt")
subrow.itemR(kmi, "oskey", text="Cmd")
sub.itemR(kmi, "key_modifier", text="", event=True)
subrow.prop(kmi, "any")
subrow.prop(kmi, "shift")
subrow.prop(kmi, "ctrl")
subrow.prop(kmi, "alt")
subrow.prop(kmi, "oskey", text="Cmd")
sub.prop(kmi, "key_modifier", text="", event=True)
flow = itemcol.column_flow(columns=2)
props = kmi.properties
@@ -1251,15 +1251,15 @@ class USERPREF_PT_input(bpy.types.Panel):
if props is not None:
for pname in dir(props):
if not props.is_property_hidden(pname):
flow.itemR(props, pname)
flow.prop(props, pname)
itemcol.itemS()
itemcol.separator()
itemrow.itemO("wm.keyitem_remove", text="", icon='ICON_ZOOMOUT')
itemrow.operator("wm.keyitem_remove", text="", icon='ICON_ZOOMOUT')
itemrow = col.row()
itemrow.itemL()
itemrow.itemO("wm.keyitem_add", text="", icon='ICON_ZOOMIN')
itemrow.label()
itemrow.operator("wm.keyitem_add", text="", icon='ICON_ZOOMIN')
itemrow.enabled = km.user_defined
bpy.types.register(USERPREF_HT_header)

View File

@@ -39,19 +39,19 @@ class VIEW3D_HT_header(bpy.types.Header):
if context.area.show_menus:
sub = row.row(align=True)
sub.itemM("VIEW3D_MT_view")
sub.menu("VIEW3D_MT_view")
# Select Menu
if mode_string not in ('EDIT_TEXT', 'SCULPT', 'PAINT_WEIGHT', 'PAINT_VERTEX', 'PAINT_TEXTURE'):
sub.itemM("VIEW3D_MT_select_%s" % mode_string.lower())
sub.menu("VIEW3D_MT_select_%s" % mode_string.lower())
if edit_object:
sub.itemM("VIEW3D_MT_edit_%s" % edit_object.type.lower())
sub.menu("VIEW3D_MT_edit_%s" % edit_object.type.lower())
elif object:
if mode_string not in ['PAINT_WEIGHT', 'PAINT_TEXTURE']:
sub.itemM("VIEW3D_MT_%s" % mode_string.lower())
sub.menu("VIEW3D_MT_%s" % mode_string.lower())
else:
sub.itemM("VIEW3D_MT_object")
sub.menu("VIEW3D_MT_object")
layout.template_header_3D()
@@ -67,9 +67,9 @@ class VIEW3D_MT_showhide(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("%s.reveal" % self._operator_name, text="Show Hidden")
layout.itemO("%s.hide" % self._operator_name, text="Hide Selected")
layout.item_booleanO("%s.hide" % self._operator_name, "unselected", True, text="Hide Unselected")
layout.operator("%s.reveal" % self._operator_name, text="Show Hidden")
layout.operator("%s.hide" % self._operator_name, text="Hide Selected")
layout.operator_boolean("%s.hide" % self._operator_name, "unselected", True, text="Hide Unselected")
class VIEW3D_MT_transform(bpy.types.Menu):
@@ -79,32 +79,32 @@ class VIEW3D_MT_transform(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("tfm.translate", text="Grab/Move")
layout.operator("tfm.translate", text="Grab/Move")
# TODO: sub-menu for grab per axis
layout.itemO("tfm.rotate", text="Rotate")
layout.operator("tfm.rotate", text="Rotate")
# TODO: sub-menu for rot per axis
layout.itemO("tfm.resize", text="Scale")
layout.operator("tfm.resize", text="Scale")
# TODO: sub-menu for scale per axis
layout.itemS()
layout.separator()
layout.itemO("tfm.tosphere", text="To Sphere")
layout.itemO("tfm.shear", text="Shear")
layout.itemO("tfm.warp", text="Warp")
layout.item_enumO("tfm.transform", "mode", 'PUSHPULL', text="Push/Pull")
layout.operator("tfm.tosphere", text="To Sphere")
layout.operator("tfm.shear", text="Shear")
layout.operator("tfm.warp", text="Warp")
layout.operator_enum("tfm.transform", "mode", 'PUSHPULL', text="Push/Pull")
if context.edit_object and context.edit_object.type == 'ARMATURE':
layout.itemO("armature.align")
layout.operator("armature.align")
else:
layout.operator_context = 'EXEC_AREA'
layout.item_enumO("tfm.transform", "mode", 'ALIGN', text="Align to Transform Orientation") # XXX see alignmenu() in edit.c of b2.4x to get this working
layout.operator_enum("tfm.transform", "mode", 'ALIGN', text="Align to Transform Orientation") # XXX see alignmenu() in edit.c of b2.4x to get this working
layout.itemS()
layout.separator()
layout.operator_context = 'EXEC_AREA'
layout.item_enumO("object.center_set", "type", 'CENTER')
layout.item_enumO("object.center_set", "type", 'CENTERNEW')
layout.item_enumO("object.center_set", "type", 'CENTERCURSOR')
layout.operator_enum("object.center_set", "type", 'CENTER')
layout.operator_enum("object.center_set", "type", 'CENTERNEW')
layout.operator_enum("object.center_set", "type", 'CENTERCURSOR')
class VIEW3D_MT_mirror(bpy.types.Menu):
bl_label = "Mirror"
@@ -112,32 +112,32 @@ class VIEW3D_MT_mirror(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("tfm.mirror", text="Interactive Mirror")
layout.operator("tfm.mirror", text="Interactive Mirror")
layout.itemS()
layout.separator()
layout.operator_context = 'EXEC_AREA'
props = layout.itemO("tfm.mirror", properties=True, text="X Global")
props = layout.operator("tfm.mirror", properties=True, text="X Global")
props.constraint_axis = (True, False, False)
props.constraint_orientation = 'GLOBAL'
props = layout.itemO("tfm.mirror", properties=True, text="Y Global")
props = layout.operator("tfm.mirror", properties=True, text="Y Global")
props.constraint_axis = (False, True, False)
props.constraint_orientation = 'GLOBAL'
props = layout.itemO("tfm.mirror", properties=True, text="Z Global")
props = layout.operator("tfm.mirror", properties=True, text="Z Global")
props.constraint_axis = (False, False, True)
props.constraint_orientation = 'GLOBAL'
if context.edit_object:
layout.itemS()
layout.separator()
props = layout.itemO("tfm.mirror", properties=True, text="X Local")
props = layout.operator("tfm.mirror", properties=True, text="X Local")
props.constraint_axis = (True, False, False)
props.constraint_orientation = 'LOCAL'
props = layout.itemO("tfm.mirror", properties=True, text="Y Local")
props = layout.operator("tfm.mirror", properties=True, text="Y Local")
props.constraint_axis = (False, True, False)
props.constraint_orientation = 'LOCAL'
props = layout.itemO("tfm.mirror", properties=True, text="Z Local")
props = layout.operator("tfm.mirror", properties=True, text="Z Local")
props.constraint_axis = (False, False, True)
props.constraint_orientation = 'LOCAL'
@@ -147,15 +147,15 @@ class VIEW3D_MT_snap(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("view3d.snap_selected_to_grid", text="Selection to Grid")
layout.itemO("view3d.snap_selected_to_cursor", text="Selection to Cursor")
layout.itemO("view3d.snap_selected_to_center", text="Selection to Center")
layout.operator("view3d.snap_selected_to_grid", text="Selection to Grid")
layout.operator("view3d.snap_selected_to_cursor", text="Selection to Cursor")
layout.operator("view3d.snap_selected_to_center", text="Selection to Center")
layout.itemS()
layout.separator()
layout.itemO("view3d.snap_cursor_to_selected", text="Cursor to Selected")
layout.itemO("view3d.snap_cursor_to_grid", text="Cursor to Grid")
layout.itemO("view3d.snap_cursor_to_active", text="Cursor to Active")
layout.operator("view3d.snap_cursor_to_selected", text="Cursor to Selected")
layout.operator("view3d.snap_cursor_to_grid", text="Cursor to Grid")
layout.operator("view3d.snap_cursor_to_active", text="Cursor to Active")
class VIEW3D_MT_uv_map(dynamic_menu.DynMenu):
@@ -164,15 +164,15 @@ class VIEW3D_MT_uv_map(dynamic_menu.DynMenu):
def draw(self, context):
layout = self.layout
layout.itemO("uv.unwrap")
layout.itemO("uv.cube_project")
layout.itemO("uv.cylinder_project")
layout.itemO("uv.sphere_project")
layout.itemO("uv.project_from_view")
layout.operator("uv.unwrap")
layout.operator("uv.cube_project")
layout.operator("uv.cylinder_project")
layout.operator("uv.sphere_project")
layout.operator("uv.project_from_view")
layout.itemS()
layout.separator()
layout.itemO("uv.reset")
layout.operator("uv.reset")
# ********** View menus **********
@@ -183,52 +183,52 @@ class VIEW3D_MT_view(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("view3d.properties", icon='ICON_MENU_PANEL')
layout.itemO("view3d.toolbar", icon='ICON_MENU_PANEL')
layout.operator("view3d.properties", icon='ICON_MENU_PANEL')
layout.operator("view3d.toolbar", icon='ICON_MENU_PANEL')
layout.itemS()
layout.separator()
layout.item_enumO("view3d.viewnumpad", "type", 'CAMERA')
layout.item_enumO("view3d.viewnumpad", "type", 'TOP')
layout.item_enumO("view3d.viewnumpad", "type", 'FRONT')
layout.item_enumO("view3d.viewnumpad", "type", 'RIGHT')
layout.operator_enum("view3d.viewnumpad", "type", 'CAMERA')
layout.operator_enum("view3d.viewnumpad", "type", 'TOP')
layout.operator_enum("view3d.viewnumpad", "type", 'FRONT')
layout.operator_enum("view3d.viewnumpad", "type", 'RIGHT')
layout.itemM("VIEW3D_MT_view_cameras", text="Cameras")
layout.menu("VIEW3D_MT_view_cameras", text="Cameras")
layout.itemS()
layout.separator()
layout.itemO("view3d.view_persportho")
layout.operator("view3d.view_persportho")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_view_navigation")
layout.itemM("VIEW3D_MT_view_align")
layout.menu("VIEW3D_MT_view_navigation")
layout.menu("VIEW3D_MT_view_align")
layout.itemS()
layout.separator()
layout.operator_context = 'INVOKE_REGION_WIN'
layout.itemO("view3d.clip_border", text="Clipping Border...")
layout.itemO("view3d.zoom_border", text="Zoom Border...")
layout.operator("view3d.clip_border", text="Clipping Border...")
layout.operator("view3d.zoom_border", text="Zoom Border...")
layout.itemS()
layout.separator()
layout.item_intO("view3d.layers", "nr", 0, text="Show All Layers")
layout.operator_int("view3d.layers", "nr", 0, text="Show All Layers")
layout.itemS()
layout.separator()
layout.itemO("view3d.localview", text="View Global/Local")
layout.itemO("view3d.view_center")
layout.itemO("view3d.view_all")
layout.operator("view3d.localview", text="View Global/Local")
layout.operator("view3d.view_center")
layout.operator("view3d.view_all")
layout.itemS()
layout.separator()
layout.itemO("screen.region_foursplit", text="Toggle Quad View")
layout.itemO("screen.screen_full_area", text="Toggle Full Screen")
layout.operator("screen.region_foursplit", text="Toggle Quad View")
layout.operator("screen.screen_full_area", text="Toggle Full Screen")
layout.itemS()
layout.separator()
layout.itemO("screen.animation_play", text="Playback Animation", icon='ICON_PLAY')
layout.operator("screen.animation_play", text="Playback Animation", icon='ICON_PLAY')
class VIEW3D_MT_view_navigation(bpy.types.Menu):
@@ -237,20 +237,20 @@ class VIEW3D_MT_view_navigation(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.items_enumO("view3d.view_orbit", "type")
layout.operator_enums("view3d.view_orbit", "type")
layout.itemS()
layout.separator()
layout.items_enumO("view3d.view_pan", "type")
layout.operator_enums("view3d.view_pan", "type")
layout.itemS()
layout.separator()
layout.item_floatO("view3d.zoom", "delta", 1.0, text="Zoom In")
layout.item_floatO("view3d.zoom", "delta", -1.0, text="Zoom Out")
layout.operator_float("view3d.zoom", "delta", 1.0, text="Zoom In")
layout.operator_float("view3d.zoom", "delta", -1.0, text="Zoom Out")
layout.itemS()
layout.separator()
layout.itemO("view3d.fly")
layout.operator("view3d.fly")
class VIEW3D_MT_view_align(bpy.types.Menu):
@@ -259,14 +259,14 @@ class VIEW3D_MT_view_align(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemM("VIEW3D_MT_view_align_selected")
layout.menu("VIEW3D_MT_view_align_selected")
layout.itemS()
layout.separator()
layout.item_booleanO("view3d.view_all", "center", True, text="Center Cursor and View All")
layout.itemO("view3d.camera_to_view", text="Align Active Camera to View")
layout.itemO("view3d.view_center")
layout.itemO("view3d.view_center_cursor")
layout.operator_boolean("view3d.view_all", "center", True, text="Center Cursor and View All")
layout.operator("view3d.camera_to_view", text="Align Active Camera to View")
layout.operator("view3d.view_center")
layout.operator("view3d.view_center_cursor")
class VIEW3D_MT_view_align_selected(bpy.types.Menu):
@@ -275,22 +275,22 @@ class VIEW3D_MT_view_align_selected(bpy.types.Menu):
def draw(self, context):
layout = self.layout
props = layout.itemO("view3d.viewnumpad", properties=True, text="Top")
props = layout.operator("view3d.viewnumpad", properties=True, text="Top")
props.align_active = True
props.type = 'TOP'
props = layout.itemO("view3d.viewnumpad", properties=True, text="Bottom")
props = layout.operator("view3d.viewnumpad", properties=True, text="Bottom")
props.align_active = True
props.type = 'BOTTOM'
props = layout.itemO("view3d.viewnumpad", properties=True, text="Front")
props = layout.operator("view3d.viewnumpad", properties=True, text="Front")
props.align_active = True
props.type = 'FRONT'
props = layout.itemO("view3d.viewnumpad", properties=True, text="Back")
props = layout.operator("view3d.viewnumpad", properties=True, text="Back")
props.align_active = True
props.type = 'BACK'
props = layout.itemO("view3d.viewnumpad", properties=True, text="Right")
props = layout.operator("view3d.viewnumpad", properties=True, text="Right")
props.align_active = True
props.type = 'RIGHT'
props = layout.itemO("view3d.viewnumpad", properties=True, text="Left")
props = layout.operator("view3d.viewnumpad", properties=True, text="Left")
props.align_active = True
props.type = 'LEFT'
@@ -301,8 +301,8 @@ class VIEW3D_MT_view_cameras(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("view3d.object_as_camera")
layout.item_enumO("view3d.viewnumpad", "type", 'CAMERA', text="Active Camera")
layout.operator("view3d.object_as_camera")
layout.operator_enum("view3d.viewnumpad", "type", 'CAMERA', text="Active Camera")
# ********** Select menus, suffix from context.mode **********
@@ -313,23 +313,23 @@ class VIEW3D_MT_select_object(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("view3d.select_border")
layout.itemO("view3d.select_circle")
layout.operator("view3d.select_border")
layout.operator("view3d.select_circle")
layout.itemS()
layout.separator()
layout.itemO("object.select_all_toggle", text="Select/Deselect All")
layout.itemO("object.select_inverse", text="Inverse")
layout.itemO("object.select_random", text="Random")
layout.itemO("object.select_mirror", text="Mirror")
layout.itemO("object.select_by_layer", text="Select All by Layer")
layout.item_menu_enumO("object.select_by_type", "type", "", text="Select All by Type...")
layout.operator("object.select_all_toggle", text="Select/Deselect All")
layout.operator("object.select_inverse", text="Inverse")
layout.operator("object.select_random", text="Random")
layout.operator("object.select_mirror", text="Mirror")
layout.operator("object.select_by_layer", text="Select All by Layer")
layout.operator_menu_enum("object.select_by_type", "type", "", text="Select All by Type...")
layout.itemS()
layout.separator()
layout.item_menu_enumO("object.select_grouped", "type", text="Grouped")
layout.item_menu_enumO("object.select_linked", "type", text="Linked")
layout.itemO("object.select_pattern", text="Select Pattern...")
layout.operator_menu_enum("object.select_grouped", "type", text="Grouped")
layout.operator_menu_enum("object.select_linked", "type", text="Linked")
layout.operator("object.select_pattern", text="Select Pattern...")
class VIEW3D_MT_select_pose(bpy.types.Menu):
@@ -338,27 +338,27 @@ class VIEW3D_MT_select_pose(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("view3d.select_border")
layout.operator("view3d.select_border")
layout.itemS()
layout.separator()
layout.itemO("pose.select_all_toggle", text="Select/Deselect All")
layout.itemO("pose.select_inverse", text="Inverse")
layout.itemO("pose.select_constraint_target", text="Constraint Target")
layout.itemO("pose.select_linked", text="Linked")
layout.operator("pose.select_all_toggle", text="Select/Deselect All")
layout.operator("pose.select_inverse", text="Inverse")
layout.operator("pose.select_constraint_target", text="Constraint Target")
layout.operator("pose.select_linked", text="Linked")
layout.itemS()
layout.separator()
layout.item_enumO("pose.select_hierarchy", "direction", 'PARENT')
layout.item_enumO("pose.select_hierarchy", "direction", 'CHILD')
layout.operator_enum("pose.select_hierarchy", "direction", 'PARENT')
layout.operator_enum("pose.select_hierarchy", "direction", 'CHILD')
layout.itemS()
layout.separator()
props = layout.itemO("pose.select_hierarchy", properties=True, text="Extend Parent")
props = layout.operator("pose.select_hierarchy", properties=True, text="Extend Parent")
props.extend = True
props.direction = 'PARENT'
props = layout.itemO("pose.select_hierarchy", properties=True, text="Extend Child")
props = layout.operator("pose.select_hierarchy", properties=True, text="Extend Child")
props.extend = True
props.direction = 'CHILD'
@@ -369,23 +369,23 @@ class VIEW3D_MT_select_particle(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("view3d.select_border")
layout.operator("view3d.select_border")
layout.itemS()
layout.separator()
layout.itemO("particle.select_all_toggle", text="Select/Deselect All")
layout.itemO("particle.select_linked")
layout.itemO("particle.select_inverse")
layout.operator("particle.select_all_toggle", text="Select/Deselect All")
layout.operator("particle.select_linked")
layout.operator("particle.select_inverse")
layout.itemS()
layout.separator()
layout.itemO("particle.select_more")
layout.itemO("particle.select_less")
layout.operator("particle.select_more")
layout.operator("particle.select_less")
layout.itemS()
layout.separator()
layout.itemO("particle.select_first", text="Roots")
layout.itemO("particle.select_last", text="Tips")
layout.operator("particle.select_first", text="Roots")
layout.operator("particle.select_last", text="Tips")
class VIEW3D_MT_select_edit_mesh(bpy.types.Menu):
@@ -394,47 +394,47 @@ class VIEW3D_MT_select_edit_mesh(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("view3d.select_border")
layout.itemO("view3d.select_circle")
layout.operator("view3d.select_border")
layout.operator("view3d.select_circle")
layout.itemS()
layout.separator()
layout.itemO("mesh.select_all_toggle", text="Select/Deselect All")
layout.itemO("mesh.select_inverse", text="Inverse")
layout.operator("mesh.select_all_toggle", text="Select/Deselect All")
layout.operator("mesh.select_inverse", text="Inverse")
layout.itemS()
layout.separator()
layout.itemO("mesh.select_random", text="Random...")
layout.itemO("mesh.edges_select_sharp", text="Sharp Edges")
layout.itemO("mesh.faces_select_linked_flat", text="Linked Flat Faces")
layout.itemO("mesh.faces_select_interior", text="Interior Faces")
layout.itemO("mesh.select_axis", text="Side of Active")
layout.operator("mesh.select_random", text="Random...")
layout.operator("mesh.edges_select_sharp", text="Sharp Edges")
layout.operator("mesh.faces_select_linked_flat", text="Linked Flat Faces")
layout.operator("mesh.faces_select_interior", text="Interior Faces")
layout.operator("mesh.select_axis", text="Side of Active")
layout.itemS()
layout.separator()
layout.item_enumO("mesh.select_by_number_vertices", "type", 'TRIANGLES', text="Triangles")
layout.item_enumO("mesh.select_by_number_vertices", "type", 'QUADS', text="Quads")
layout.item_enumO("mesh.select_by_number_vertices", "type", 'OTHER', text="Loose Verts/Edges")
layout.itemO("mesh.select_similar", text="Similar...")
layout.operator_enum("mesh.select_by_number_vertices", "type", 'TRIANGLES', text="Triangles")
layout.operator_enum("mesh.select_by_number_vertices", "type", 'QUADS', text="Quads")
layout.operator_enum("mesh.select_by_number_vertices", "type", 'OTHER', text="Loose Verts/Edges")
layout.operator("mesh.select_similar", text="Similar...")
layout.itemS()
layout.separator()
layout.itemO("mesh.select_less", text="Less")
layout.itemO("mesh.select_more", text="More")
layout.operator("mesh.select_less", text="Less")
layout.operator("mesh.select_more", text="More")
layout.itemS()
layout.separator()
layout.itemO("mesh.select_mirror", text="Mirror")
layout.operator("mesh.select_mirror", text="Mirror")
layout.itemO("mesh.select_linked", text="Linked")
layout.itemO("mesh.select_vertex_path", text="Vertex Path")
layout.itemO("mesh.loop_multi_select", text="Edge Loop")
layout.item_booleanO("mesh.loop_multi_select", "ring", True, text="Edge Ring")
layout.operator("mesh.select_linked", text="Linked")
layout.operator("mesh.select_vertex_path", text="Vertex Path")
layout.operator("mesh.loop_multi_select", text="Edge Loop")
layout.operator_boolean("mesh.loop_multi_select", "ring", True, text="Edge Ring")
layout.itemS()
layout.separator()
layout.itemO("mesh.loop_to_region")
layout.itemO("mesh.region_to_loop")
layout.operator("mesh.loop_to_region")
layout.operator("mesh.region_to_loop")
class VIEW3D_MT_select_edit_curve(bpy.types.Menu):
@@ -443,27 +443,27 @@ class VIEW3D_MT_select_edit_curve(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("view3d.select_border")
layout.itemO("view3d.select_circle")
layout.operator("view3d.select_border")
layout.operator("view3d.select_circle")
layout.itemS()
layout.separator()
layout.itemO("curve.select_all_toggle", text="Select/Deselect All")
layout.itemO("curve.select_inverse")
layout.itemO("curve.select_random")
layout.itemO("curve.select_every_nth")
layout.operator("curve.select_all_toggle", text="Select/Deselect All")
layout.operator("curve.select_inverse")
layout.operator("curve.select_random")
layout.operator("curve.select_every_nth")
layout.itemS()
layout.separator()
layout.itemO("curve.de_select_first")
layout.itemO("curve.de_select_last")
layout.itemO("curve.select_next")
layout.itemO("curve.select_previous")
layout.operator("curve.de_select_first")
layout.operator("curve.de_select_last")
layout.operator("curve.select_next")
layout.operator("curve.select_previous")
layout.itemS()
layout.separator()
layout.itemO("curve.select_more")
layout.itemO("curve.select_less")
layout.operator("curve.select_more")
layout.operator("curve.select_less")
class VIEW3D_MT_select_edit_surface(bpy.types.Menu):
@@ -472,24 +472,24 @@ class VIEW3D_MT_select_edit_surface(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("view3d.select_border")
layout.itemO("view3d.select_circle")
layout.operator("view3d.select_border")
layout.operator("view3d.select_circle")
layout.itemS()
layout.separator()
layout.itemO("curve.select_all_toggle", text="Select/Deselect All")
layout.itemO("curve.select_inverse")
layout.itemO("curve.select_random")
layout.itemO("curve.select_every_nth")
layout.operator("curve.select_all_toggle", text="Select/Deselect All")
layout.operator("curve.select_inverse")
layout.operator("curve.select_random")
layout.operator("curve.select_every_nth")
layout.itemS()
layout.separator()
layout.itemO("curve.select_row")
layout.operator("curve.select_row")
layout.itemS()
layout.separator()
layout.itemO("curve.select_more")
layout.itemO("curve.select_less")
layout.operator("curve.select_more")
layout.operator("curve.select_less")
class VIEW3D_MT_select_edit_metaball(bpy.types.Menu):
@@ -498,16 +498,16 @@ class VIEW3D_MT_select_edit_metaball(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("view3d.select_border")
layout.operator("view3d.select_border")
layout.itemS()
layout.separator()
layout.itemO("mball.select_deselect_all_metaelems")
layout.itemO("mball.select_inverse_metaelems")
layout.operator("mball.select_deselect_all_metaelems")
layout.operator("mball.select_inverse_metaelems")
layout.itemS()
layout.separator()
layout.itemO("mball.select_random_metaelems")
layout.operator("mball.select_random_metaelems")
class VIEW3D_MT_select_edit_lattice(bpy.types.Menu):
@@ -516,11 +516,11 @@ class VIEW3D_MT_select_edit_lattice(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("view3d.select_border")
layout.operator("view3d.select_border")
layout.itemS()
layout.separator()
layout.itemO("lattice.select_all_toggle", text="Select/Deselect All")
layout.operator("lattice.select_all_toggle", text="Select/Deselect All")
class VIEW3D_MT_select_edit_armature(bpy.types.Menu):
@@ -529,26 +529,26 @@ class VIEW3D_MT_select_edit_armature(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("view3d.select_border")
layout.operator("view3d.select_border")
layout.itemS()
layout.separator()
layout.itemO("armature.select_all_toggle", text="Select/Deselect All")
layout.itemO("armature.select_inverse", text="Inverse")
layout.operator("armature.select_all_toggle", text="Select/Deselect All")
layout.operator("armature.select_inverse", text="Inverse")
layout.itemS()
layout.separator()
layout.item_enumO("armature.select_hierarchy", "direction", 'PARENT', text="Parent")
layout.item_enumO("armature.select_hierarchy", "direction", 'CHILD', text="Child")
layout.operator_enum("armature.select_hierarchy", "direction", 'PARENT', text="Parent")
layout.operator_enum("armature.select_hierarchy", "direction", 'CHILD', text="Child")
layout.itemS()
layout.separator()
props = layout.itemO("armature.select_hierarchy", properties=True, text="Extend Parent")
props = layout.operator("armature.select_hierarchy", properties=True, text="Extend Parent")
props.extend = True
props.direction = 'PARENT'
props = layout.itemO("armature.select_hierarchy", properties=True, text="Extend Child")
props = layout.operator("armature.select_hierarchy", properties=True, text="Extend Child")
props.extend = True
props.direction = 'CHILD'
@@ -572,45 +572,45 @@ class VIEW3D_MT_object(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemM("VIEW3D_MT_transform")
layout.itemM("VIEW3D_MT_mirror")
layout.itemM("VIEW3D_MT_object_clear")
layout.itemM("VIEW3D_MT_object_apply")
layout.itemM("VIEW3D_MT_snap")
layout.menu("VIEW3D_MT_transform")
layout.menu("VIEW3D_MT_mirror")
layout.menu("VIEW3D_MT_object_clear")
layout.menu("VIEW3D_MT_object_apply")
layout.menu("VIEW3D_MT_snap")
layout.itemS()
layout.separator()
layout.itemO("anim.insert_keyframe_menu", text="Insert Keyframe...")
layout.itemO("anim.delete_keyframe_v3d", text="Delete Keyframe...")
layout.operator("anim.insert_keyframe_menu", text="Insert Keyframe...")
layout.operator("anim.delete_keyframe_v3d", text="Delete Keyframe...")
layout.itemS()
layout.separator()
layout.itemO("object.duplicate_move")
layout.item_booleanO("object.duplicate", "linked", True, text="Duplicate Linked")
layout.itemO("object.delete", text="Delete...")
layout.itemO("object.proxy_make", text="Make Proxy...")
layout.itemM("VIEW3D_MT_make_links", text="Make Links...")
layout.item_menu_enumO("object.make_local", "type", text="Make Local...")
layout.itemM("VIEW3D_MT_make_single_user")
layout.itemM("VIEW3D_MT_make_links")
layout.operator("object.duplicate_move")
layout.operator_boolean("object.duplicate", "linked", True, text="Duplicate Linked")
layout.operator("object.delete", text="Delete...")
layout.operator("object.proxy_make", text="Make Proxy...")
layout.menu("VIEW3D_MT_make_links", text="Make Links...")
layout.operator_menu_enum("object.make_local", "type", text="Make Local...")
layout.menu("VIEW3D_MT_make_single_user")
layout.menu("VIEW3D_MT_make_links")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_object_parent")
layout.itemM("VIEW3D_MT_object_track")
layout.itemM("VIEW3D_MT_object_group")
layout.itemM("VIEW3D_MT_object_constraints")
layout.menu("VIEW3D_MT_object_parent")
layout.menu("VIEW3D_MT_object_track")
layout.menu("VIEW3D_MT_object_group")
layout.menu("VIEW3D_MT_object_constraints")
layout.itemS()
layout.separator()
layout.itemO("object.join")
layout.operator("object.join")
layout.itemS()
layout.separator()
layout.itemO("object.move_to_layer", text="Move to Layer...")
layout.itemM("VIEW3D_MT_object_showhide")
layout.operator("object.move_to_layer", text="Move to Layer...")
layout.menu("VIEW3D_MT_object_showhide")
layout.item_menu_enumO("object.convert", "target")
layout.operator_menu_enum("object.convert", "target")
class VIEW3D_MT_object_clear(bpy.types.Menu):
@@ -619,10 +619,10 @@ class VIEW3D_MT_object_clear(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("object.location_clear", text="Location")
layout.itemO("object.rotation_clear", text="Rotation")
layout.itemO("object.scale_clear", text="Scale")
layout.itemO("object.origin_clear", text="Origin")
layout.operator("object.location_clear", text="Location")
layout.operator("object.rotation_clear", text="Rotation")
layout.operator("object.scale_clear", text="Scale")
layout.operator("object.origin_clear", text="Origin")
class VIEW3D_MT_object_apply(bpy.types.Menu):
@@ -631,12 +631,12 @@ class VIEW3D_MT_object_apply(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("object.location_apply", text="Location")
layout.itemO("object.rotation_apply", text="Rotation")
layout.itemO("object.scale_apply", text="Scale")
layout.itemS()
layout.itemO("object.visual_transform_apply", text="Visual Transform")
layout.itemO("object.duplicates_make_real")
layout.operator("object.location_apply", text="Location")
layout.operator("object.rotation_apply", text="Rotation")
layout.operator("object.scale_apply", text="Scale")
layout.separator()
layout.operator("object.visual_transform_apply", text="Visual Transform")
layout.operator("object.duplicates_make_real")
class VIEW3D_MT_object_parent(bpy.types.Menu):
@@ -645,8 +645,8 @@ class VIEW3D_MT_object_parent(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("object.parent_set", text="Set")
layout.itemO("object.parent_clear", text="Clear")
layout.operator("object.parent_set", text="Set")
layout.operator("object.parent_clear", text="Clear")
class VIEW3D_MT_object_track(bpy.types.Menu):
@@ -655,8 +655,8 @@ class VIEW3D_MT_object_track(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("object.track_set", text="Set")
layout.itemO("object.track_clear", text="Clear")
layout.operator("object.track_set", text="Set")
layout.operator("object.track_clear", text="Clear")
class VIEW3D_MT_object_group(bpy.types.Menu):
@@ -665,13 +665,13 @@ class VIEW3D_MT_object_group(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("group.create")
layout.itemO("group.objects_remove")
layout.operator("group.create")
layout.operator("group.objects_remove")
layout.itemS()
layout.separator()
layout.itemO("group.objects_add_active")
layout.itemO("group.objects_remove_active")
layout.operator("group.objects_add_active")
layout.operator("group.objects_remove_active")
class VIEW3D_MT_object_constraints(bpy.types.Menu):
@@ -680,8 +680,8 @@ class VIEW3D_MT_object_constraints(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("object.constraint_add_with_targets")
layout.itemO("object.constraints_clear")
layout.operator("object.constraint_add_with_targets")
layout.operator("object.constraints_clear")
class VIEW3D_MT_object_showhide(bpy.types.Menu):
@@ -690,9 +690,9 @@ class VIEW3D_MT_object_showhide(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("object.restrictview_clear", text="Show Hidden")
layout.itemO("object.restrictview_set", text="Hide Selected")
layout.item_booleanO("object.restrictview_set", "unselected", True, text="Hide Unselected")
layout.operator("object.restrictview_clear", text="Show Hidden")
layout.operator("object.restrictview_set", text="Hide Selected")
layout.operator_boolean("object.restrictview_set", "unselected", True, text="Hide Unselected")
class VIEW3D_MT_make_single_user(bpy.types.Menu):
@@ -701,19 +701,19 @@ class VIEW3D_MT_make_single_user(bpy.types.Menu):
def draw(self, context):
layout = self.layout
props = layout.itemO("object.make_single_user", properties=True, text="Object")
props = layout.operator("object.make_single_user", properties=True, text="Object")
props.object = True
props = layout.itemO("object.make_single_user", properties=True, text="Object & ObData")
props = layout.operator("object.make_single_user", properties=True, text="Object & ObData")
props.object = props.obdata = True
props = layout.itemO("object.make_single_user", properties=True, text="Object & ObData & Materials+Tex")
props = layout.operator("object.make_single_user", properties=True, text="Object & ObData & Materials+Tex")
props.object = props.obdata = props.material = props.texture = True
props = layout.itemO("object.make_single_user", properties=True, text="Materials+Tex")
props = layout.operator("object.make_single_user", properties=True, text="Materials+Tex")
props.material = props.texture = True
props = layout.itemO("object.make_single_user", properties=True, text="Animation")
props = layout.operator("object.make_single_user", properties=True, text="Animation")
props.animation = True
@@ -723,9 +723,9 @@ class VIEW3D_MT_make_links(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.item_menu_enumO("object.make_links_scene", "type", text="Objects to Scene...")
layout.operator_menu_enum("object.make_links_scene", "type", text="Objects to Scene...")
layout.items_enumO("object.make_links_data", property="type") # inline
layout.operator_enums("object.make_links_data", property="type") # inline
# ********** Vertex paint menu **********
@@ -737,8 +737,8 @@ class VIEW3D_MT_paint_vertex(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("paint.vertex_color_set")
props = layout.itemO("paint.vertex_color_set", text="Set Selected Vertex Colors", properties=True)
layout.operator("paint.vertex_color_set")
props = layout.operator("paint.vertex_color_set", text="Set Selected Vertex Colors", properties=True)
props.selected = True
@@ -748,17 +748,17 @@ class VIEW3D_MT_hook(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.operator_context = 'EXEC_AREA'
layout.itemO("object.hook_add_newob")
layout.itemO("object.hook_add_selob")
layout.operator("object.hook_add_newob")
layout.operator("object.hook_add_selob")
if [mod.type == 'HOOK' for mod in context.active_object.modifiers]:
layout.itemS()
layout.item_menu_enumO("object.hook_assign", "modifier")
layout.item_menu_enumO("object.hook_remove", "modifier")
layout.itemS()
layout.item_menu_enumO("object.hook_select", "modifier")
layout.item_menu_enumO("object.hook_reset", "modifier")
layout.item_menu_enumO("object.hook_recenter", "modifier")
layout.separator()
layout.operator_menu_enum("object.hook_assign", "modifier")
layout.operator_menu_enum("object.hook_remove", "modifier")
layout.separator()
layout.operator_menu_enum("object.hook_select", "modifier")
layout.operator_menu_enum("object.hook_reset", "modifier")
layout.operator_menu_enum("object.hook_recenter", "modifier")
class VIEW3D_MT_vertex_group(bpy.types.Menu):
@@ -767,21 +767,21 @@ class VIEW3D_MT_vertex_group(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.operator_context = 'EXEC_AREA'
layout.item_booleanO("object.vertex_group_assign", "new", True, text="Assign to New Group")
layout.operator_boolean("object.vertex_group_assign", "new", True, text="Assign to New Group")
ob = context.active_object
if ob.mode == 'EDIT':
if ob.vertex_groups and ob.active_vertex_group:
layout.itemS()
layout.itemO("object.vertex_group_assign", text="Assign to Active Group")
layout.itemO("object.vertex_group_remove_from", text="Remove from Active Group")
layout.item_booleanO("object.vertex_group_remove_from", "all", True, text="Remove from All")
layout.itemS()
layout.separator()
layout.operator("object.vertex_group_assign", text="Assign to Active Group")
layout.operator("object.vertex_group_remove_from", text="Remove from Active Group")
layout.operator_boolean("object.vertex_group_remove_from", "all", True, text="Remove from All")
layout.separator()
if ob.vertex_groups and ob.active_vertex_group:
layout.item_menu_enumO("object.vertex_group_set_active", "group", text="Set Active Group")
layout.itemO("object.vertex_group_remove", text="Remove Active Group")
layout.item_booleanO("object.vertex_group_remove", "all", True, text="Remove All Groups")
layout.operator_menu_enum("object.vertex_group_set_active", "group", text="Set Active Group")
layout.operator("object.vertex_group_remove", text="Remove Active Group")
layout.operator_boolean("object.vertex_group_remove", "all", True, text="Remove All Groups")
# ********** Sculpt menu **********
@@ -796,31 +796,31 @@ class VIEW3D_MT_sculpt(bpy.types.Menu):
sculpt = context.tool_settings.sculpt
brush = context.tool_settings.sculpt.brush
layout.itemR(sculpt, "symmetry_x")
layout.itemR(sculpt, "symmetry_y")
layout.itemR(sculpt, "symmetry_z")
layout.itemS()
layout.itemR(sculpt, "lock_x")
layout.itemR(sculpt, "lock_y")
layout.itemR(sculpt, "lock_z")
layout.itemS()
layout.item_menu_enumO("brush.curve_preset", property="shape")
layout.itemS()
layout.prop(sculpt, "symmetry_x")
layout.prop(sculpt, "symmetry_y")
layout.prop(sculpt, "symmetry_z")
layout.separator()
layout.prop(sculpt, "lock_x")
layout.prop(sculpt, "lock_y")
layout.prop(sculpt, "lock_z")
layout.separator()
layout.operator_menu_enum("brush.curve_preset", property="shape")
layout.separator()
sculpt_tool = brush.sculpt_tool
if sculpt_tool != 'GRAB':
layout.itemR(brush, "use_airbrush")
layout.prop(brush, "use_airbrush")
if sculpt_tool != 'LAYER':
layout.itemR(brush, "use_anchor")
layout.prop(brush, "use_anchor")
if sculpt_tool in ('DRAW', 'PINCH', 'INFLATE', 'LAYER', 'CLAY'):
layout.itemR(brush, "flip_direction")
layout.prop(brush, "flip_direction")
if sculpt_tool == 'LAYER':
layout.itemR(brush, "use_persistent")
layout.itemO("sculpt.set_persistent_base")
layout.prop(brush, "use_persistent")
layout.operator("sculpt.set_persistent_base")
# ********** Particle menu **********
@@ -833,21 +833,21 @@ class VIEW3D_MT_particle(bpy.types.Menu):
particle_edit = context.tool_settings.particle_edit
layout.itemO("particle.mirror")
layout.operator("particle.mirror")
layout.itemS()
layout.separator()
layout.itemO("particle.remove_doubles")
layout.itemO("particle.delete")
layout.operator("particle.remove_doubles")
layout.operator("particle.delete")
if particle_edit.selection_mode == 'POINT':
layout.itemO("particle.subdivide")
layout.operator("particle.subdivide")
layout.itemO("particle.rekey")
layout.operator("particle.rekey")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_particle_showhide")
layout.menu("VIEW3D_MT_particle_showhide")
class VIEW3D_MT_particle_showhide(VIEW3D_MT_showhide):
@@ -864,59 +864,59 @@ class VIEW3D_MT_pose(bpy.types.Menu):
arm = context.active_object.data
layout.itemM("VIEW3D_MT_transform")
layout.itemM("VIEW3D_MT_snap")
layout.menu("VIEW3D_MT_transform")
layout.menu("VIEW3D_MT_snap")
if arm.drawtype in ('BBONE', 'ENVELOPE'):
layout.item_enumO("tfm.transform", "mode", 'BONESIZE', text="Scale Envelope Distance")
layout.operator_enum("tfm.transform", "mode", 'BONESIZE', text="Scale Envelope Distance")
layout.itemM("VIEW3D_MT_pose_transform")
layout.menu("VIEW3D_MT_pose_transform")
layout.itemS()
layout.separator()
layout.itemO("anim.insert_keyframe_menu", text="Insert Keyframe...")
layout.itemO("anim.delete_keyframe_v3d", text="Delete Keyframe...")
layout.operator("anim.insert_keyframe_menu", text="Insert Keyframe...")
layout.operator("anim.delete_keyframe_v3d", text="Delete Keyframe...")
layout.itemS()
layout.separator()
layout.itemO("pose.apply")
layout.itemO("pose.relax")
layout.operator("pose.apply")
layout.operator("pose.relax")
layout.itemS()
layout.separator()
layout.itemO("pose.copy")
layout.itemO("pose.paste")
layout.item_booleanO("pose.paste", "flipped", True, text="Paste X-Flipped Pose")
layout.operator("pose.copy")
layout.operator("pose.paste")
layout.operator_boolean("pose.paste", "flipped", True, text="Paste X-Flipped Pose")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_pose_pose")
layout.itemM("VIEW3D_MT_pose_motion")
layout.itemM("VIEW3D_MT_pose_group")
layout.menu("VIEW3D_MT_pose_pose")
layout.menu("VIEW3D_MT_pose_motion")
layout.menu("VIEW3D_MT_pose_group")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_pose_ik")
layout.itemM("VIEW3D_MT_pose_constraints")
layout.menu("VIEW3D_MT_pose_ik")
layout.menu("VIEW3D_MT_pose_constraints")
layout.itemS()
layout.separator()
layout.operator_context = 'EXEC_AREA'
layout.item_enumO("pose.autoside_names", "axis", 'XAXIS', text="AutoName Left/Right")
layout.item_enumO("pose.autoside_names", "axis", 'YAXIS', text="AutoName Front/Back")
layout.item_enumO("pose.autoside_names", "axis", 'ZAXIS', text="AutoName Top/Bottom")
layout.operator_enum("pose.autoside_names", "axis", 'XAXIS', text="AutoName Left/Right")
layout.operator_enum("pose.autoside_names", "axis", 'YAXIS', text="AutoName Front/Back")
layout.operator_enum("pose.autoside_names", "axis", 'ZAXIS', text="AutoName Top/Bottom")
layout.itemO("pose.flip_names")
layout.operator("pose.flip_names")
layout.itemS()
layout.separator()
layout.operator_context = 'INVOKE_AREA'
layout.itemO("pose.armature_layers", text="Change Armature Layers...")
layout.itemO("pose.bone_layers", text="Change Bone Layers...")
layout.operator("pose.armature_layers", text="Change Armature Layers...")
layout.operator("pose.bone_layers", text="Change Bone Layers...")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_pose_showhide")
layout.item_menu_enumO("pose.flags_set", 'mode', text="Bone Settings")
layout.menu("VIEW3D_MT_pose_showhide")
layout.operator_menu_enum("pose.flags_set", 'mode', text="Bone Settings")
class VIEW3D_MT_pose_transform(bpy.types.Menu):
@@ -925,13 +925,13 @@ class VIEW3D_MT_pose_transform(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemL(text="User Transform")
layout.label(text="User Transform")
layout.itemO("pose.loc_clear", text="Location")
layout.itemO("pose.rot_clear", text="Rotation")
layout.itemO("pose.scale_clear", text="Scale")
layout.operator("pose.loc_clear", text="Location")
layout.operator("pose.rot_clear", text="Rotation")
layout.operator("pose.scale_clear", text="Scale")
layout.itemL(text="Origin")
layout.label(text="Origin")
class VIEW3D_MT_pose_pose(bpy.types.Menu):
@@ -940,13 +940,13 @@ class VIEW3D_MT_pose_pose(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("poselib.browse_interactive", text="Browse Poses...")
layout.operator("poselib.browse_interactive", text="Browse Poses...")
layout.itemS()
layout.separator()
layout.itemO("poselib.pose_add", text="Add Pose...")
layout.itemO("poselib.pose_rename", text="Rename Pose...")
layout.itemO("poselib.pose_remove", text="Remove Pose...")
layout.operator("poselib.pose_add", text="Add Pose...")
layout.operator("poselib.pose_rename", text="Rename Pose...")
layout.operator("poselib.pose_remove", text="Remove Pose...")
class VIEW3D_MT_pose_motion(bpy.types.Menu):
@@ -955,8 +955,8 @@ class VIEW3D_MT_pose_motion(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("pose.paths_calculate", text="Calculate")
layout.itemO("pose.paths_clear", text="Clear")
layout.operator("pose.paths_calculate", text="Calculate")
layout.operator("pose.paths_clear", text="Clear")
class VIEW3D_MT_pose_group(bpy.types.Menu):
@@ -964,13 +964,13 @@ class VIEW3D_MT_pose_group(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("pose.group_add")
layout.itemO("pose.group_remove")
layout.operator("pose.group_add")
layout.operator("pose.group_remove")
layout.itemS()
layout.separator()
layout.itemO("pose.group_assign")
layout.itemO("pose.group_unassign")
layout.operator("pose.group_assign")
layout.operator("pose.group_unassign")
class VIEW3D_MT_pose_ik(bpy.types.Menu):
@@ -979,8 +979,8 @@ class VIEW3D_MT_pose_ik(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("pose.ik_add")
layout.itemO("pose.ik_clear")
layout.operator("pose.ik_add")
layout.operator("pose.ik_clear")
class VIEW3D_MT_pose_constraints(bpy.types.Menu):
@@ -989,8 +989,8 @@ class VIEW3D_MT_pose_constraints(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("pose.constraint_add_with_targets", text="Add (With Targets)...")
layout.itemO("pose.constraints_clear")
layout.operator("pose.constraint_add_with_targets", text="Add (With Targets)...")
layout.operator("pose.constraints_clear")
class VIEW3D_MT_pose_showhide(VIEW3D_MT_showhide):
@@ -1007,41 +1007,41 @@ class VIEW3D_MT_edit_mesh(bpy.types.Menu):
settings = context.tool_settings
layout.itemO("ed.undo")
layout.itemO("ed.redo")
layout.operator("ed.undo")
layout.operator("ed.redo")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_transform")
layout.itemM("VIEW3D_MT_mirror")
layout.itemM("VIEW3D_MT_snap")
layout.menu("VIEW3D_MT_transform")
layout.menu("VIEW3D_MT_mirror")
layout.menu("VIEW3D_MT_snap")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_uv_map", text="UV Unwrap...")
layout.menu("VIEW3D_MT_uv_map", text="UV Unwrap...")
layout.itemS()
layout.separator()
layout.itemO("mesh.extrude_move")
layout.itemO("mesh.duplicate_move")
layout.itemO("mesh.delete", text="Delete...")
layout.operator("mesh.extrude_move")
layout.operator("mesh.duplicate_move")
layout.operator("mesh.delete", text="Delete...")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_edit_mesh_vertices")
layout.itemM("VIEW3D_MT_edit_mesh_edges")
layout.itemM("VIEW3D_MT_edit_mesh_faces")
layout.itemM("VIEW3D_MT_edit_mesh_normals")
layout.menu("VIEW3D_MT_edit_mesh_vertices")
layout.menu("VIEW3D_MT_edit_mesh_edges")
layout.menu("VIEW3D_MT_edit_mesh_faces")
layout.menu("VIEW3D_MT_edit_mesh_normals")
layout.itemS()
layout.separator()
layout.itemR(settings, "automerge_editing")
layout.item_menu_enumR(settings, "proportional_editing")
layout.item_menu_enumR(settings, "proportional_editing_falloff")
layout.prop(settings, "automerge_editing")
layout.prop_menu_enum(settings, "proportional_editing")
layout.prop_menu_enum(settings, "proportional_editing_falloff")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_edit_mesh_showhide")
layout.menu("VIEW3D_MT_edit_mesh_showhide")
class VIEW3D_MT_edit_mesh_specials(bpy.types.Menu):
@@ -1052,21 +1052,21 @@ class VIEW3D_MT_edit_mesh_specials(bpy.types.Menu):
layout.operator_context = 'INVOKE_REGION_WIN'
layout.itemO("mesh.subdivide", text="Subdivide")
layout.item_floatO("mesh.subdivide", "smoothness", 1.0, text="Subdivide Smooth")
layout.itemO("mesh.merge", text="Merge...")
layout.itemO("mesh.remove_doubles")
layout.itemO("mesh.hide", text="Hide")
layout.itemO("mesh.reveal", text="Reveal")
layout.itemO("mesh.select_inverse")
layout.itemO("mesh.flip_normals")
layout.itemO("mesh.vertices_smooth", text="Smooth")
# layout.itemO("mesh.bevel", text="Bevel")
layout.itemO("mesh.faces_shade_smooth")
layout.itemO("mesh.faces_shade_flat")
layout.itemO("mesh.blend_from_shape")
layout.itemO("mesh.shape_propagate_to_all")
layout.itemO("mesh.select_vertex_path")
layout.operator("mesh.subdivide", text="Subdivide")
layout.operator_float("mesh.subdivide", "smoothness", 1.0, text="Subdivide Smooth")
layout.operator("mesh.merge", text="Merge...")
layout.operator("mesh.remove_doubles")
layout.operator("mesh.hide", text="Hide")
layout.operator("mesh.reveal", text="Reveal")
layout.operator("mesh.select_inverse")
layout.operator("mesh.flip_normals")
layout.operator("mesh.vertices_smooth", text="Smooth")
# layout.operator("mesh.bevel", text="Bevel")
layout.operator("mesh.faces_shade_smooth")
layout.operator("mesh.faces_shade_flat")
layout.operator("mesh.blend_from_shape")
layout.operator("mesh.shape_propagate_to_all")
layout.operator("mesh.select_vertex_path")
class VIEW3D_MT_edit_mesh_vertices(bpy.types.Menu):
@@ -1076,27 +1076,27 @@ class VIEW3D_MT_edit_mesh_vertices(bpy.types.Menu):
layout = self.layout
layout.operator_context = 'INVOKE_REGION_WIN'
layout.itemO("mesh.merge")
layout.itemO("mesh.rip")
layout.itemO("mesh.split")
layout.itemO("mesh.separate")
layout.operator("mesh.merge")
layout.operator("mesh.rip")
layout.operator("mesh.split")
layout.operator("mesh.separate")
layout.itemS()
layout.separator()
layout.itemO("mesh.vertices_smooth")
layout.itemO("mesh.remove_doubles")
layout.operator("mesh.vertices_smooth")
layout.operator("mesh.remove_doubles")
layout.itemO("mesh.select_vertex_path")
layout.operator("mesh.select_vertex_path")
layout.itemO("mesh.blend_from_shape")
layout.operator("mesh.blend_from_shape")
layout.itemO("object.vertex_group_blend")
layout.itemO("mesh.shape_propagate_to_all")
layout.operator("object.vertex_group_blend")
layout.operator("mesh.shape_propagate_to_all")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_vertex_group")
layout.itemM("VIEW3D_MT_hook")
layout.menu("VIEW3D_MT_vertex_group")
layout.menu("VIEW3D_MT_hook")
class VIEW3D_MT_edit_mesh_edges(bpy.types.Menu):
@@ -1106,36 +1106,36 @@ class VIEW3D_MT_edit_mesh_edges(bpy.types.Menu):
layout = self.layout
layout.operator_context = 'INVOKE_REGION_WIN'
layout.itemO("mesh.edge_face_add")
layout.itemO("mesh.subdivide")
layout.operator("mesh.edge_face_add")
layout.operator("mesh.subdivide")
layout.itemS()
layout.separator()
layout.itemO("mesh.mark_seam")
layout.item_booleanO("mesh.mark_seam", "clear", True, text="Clear Seam")
layout.operator("mesh.mark_seam")
layout.operator_boolean("mesh.mark_seam", "clear", True, text="Clear Seam")
layout.itemS()
layout.separator()
layout.itemO("mesh.mark_sharp")
layout.item_booleanO("mesh.mark_sharp", "clear", True, text="Clear Sharp")
layout.operator("mesh.mark_sharp")
layout.operator_boolean("mesh.mark_sharp", "clear", True, text="Clear Sharp")
layout.itemS()
layout.separator()
layout.item_enumO("mesh.edge_rotate", "direction", 'CW', text="Rotate Edge CW")
layout.item_enumO("mesh.edge_rotate", "direction", 'CCW', text="Rotate Edge CCW")
layout.operator_enum("mesh.edge_rotate", "direction", 'CW', text="Rotate Edge CW")
layout.operator_enum("mesh.edge_rotate", "direction", 'CCW', text="Rotate Edge CCW")
layout.itemS()
layout.separator()
layout.itemO("TFM_OT_edge_slide", text="Edge Slide")
layout.itemO("mesh.loop_multi_select", text="Edge Loop")
layout.operator("TFM_OT_edge_slide", text="Edge Slide")
layout.operator("mesh.loop_multi_select", text="Edge Loop")
# uiItemO(layout, "Loopcut", 0, "mesh.loop_cut"); // CutEdgeloop(em, 1);
# uiItemO(layout, "Edge Slide", 0, "mesh.edge_slide"); // EdgeSlide(em, 0,0.0);
layout.item_booleanO("mesh.loop_multi_select", "ring", True, text="Edge Ring")
layout.operator_boolean("mesh.loop_multi_select", "ring", True, text="Edge Ring")
layout.itemO("mesh.loop_to_region")
layout.itemO("mesh.region_to_loop")
layout.operator("mesh.loop_to_region")
layout.operator("mesh.region_to_loop")
class VIEW3D_MT_edit_mesh_faces(dynamic_menu.DynMenu):
@@ -1146,36 +1146,36 @@ class VIEW3D_MT_edit_mesh_faces(dynamic_menu.DynMenu):
layout = self.layout
layout.operator_context = 'INVOKE_REGION_WIN'
# layout.itemO("mesh.bevel")
# layout.itemO("mesh.bevel")
layout.itemO("mesh.edge_face_add")
layout.itemO("mesh.fill")
layout.itemO("mesh.beauty_fill")
# layout.operator("mesh.bevel")
# layout.operator("mesh.bevel")
layout.operator("mesh.edge_face_add")
layout.operator("mesh.fill")
layout.operator("mesh.beauty_fill")
layout.itemS()
layout.separator()
layout.itemO("mesh.quads_convert_to_tris")
layout.itemO("mesh.tris_convert_to_quads")
layout.itemO("mesh.edge_flip")
layout.operator("mesh.quads_convert_to_tris")
layout.operator("mesh.tris_convert_to_quads")
layout.operator("mesh.edge_flip")
layout.itemS()
layout.separator()
layout.itemO("mesh.faces_shade_smooth")
layout.itemO("mesh.faces_shade_flat")
layout.operator("mesh.faces_shade_smooth")
layout.operator("mesh.faces_shade_flat")
layout.itemS()
layout.separator()
# uiItemO(layout, NULL, 0, "mesh.face_mode"); // mesh_set_face_flags(em, 1);
# uiItemBooleanO(layout, NULL, 0, "mesh.face_mode", "clear", 1); // mesh_set_face_flags(em, 0);
layout.item_enumO("mesh.edge_rotate", "direction", 'CW', text="Rotate Edge CW")
layout.operator_enum("mesh.edge_rotate", "direction", 'CW', text="Rotate Edge CW")
layout.itemS()
layout.separator()
layout.item_menu_enumO("mesh.uvs_rotate", "direction")
layout.item_menu_enumO("mesh.uvs_mirror", "axis")
layout.item_menu_enumO("mesh.colors_rotate", "direction")
layout.item_menu_enumO("mesh.colors_mirror", "axis")
layout.operator_menu_enum("mesh.uvs_rotate", "direction")
layout.operator_menu_enum("mesh.uvs_mirror", "axis")
layout.operator_menu_enum("mesh.colors_rotate", "direction")
layout.operator_menu_enum("mesh.colors_mirror", "axis")
class VIEW3D_MT_edit_mesh_normals(bpy.types.Menu):
@@ -1184,12 +1184,12 @@ class VIEW3D_MT_edit_mesh_normals(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("mesh.normals_make_consistent", text="Recalculate Outside")
layout.item_booleanO("mesh.normals_make_consistent", "inside", True, text="Recalculate Inside")
layout.operator("mesh.normals_make_consistent", text="Recalculate Outside")
layout.operator_boolean("mesh.normals_make_consistent", "inside", True, text="Recalculate Inside")
layout.itemS()
layout.separator()
layout.itemO("mesh.flip_normals")
layout.operator("mesh.flip_normals")
class VIEW3D_MT_edit_mesh_showhide(VIEW3D_MT_showhide):
@@ -1204,32 +1204,32 @@ def draw_curve(self, context):
settings = context.tool_settings
layout.itemM("VIEW3D_MT_transform")
layout.itemM("VIEW3D_MT_mirror")
layout.itemM("VIEW3D_MT_snap")
layout.menu("VIEW3D_MT_transform")
layout.menu("VIEW3D_MT_mirror")
layout.menu("VIEW3D_MT_snap")
layout.itemS()
layout.separator()
layout.itemO("curve.extrude")
layout.itemO("curve.duplicate")
layout.itemO("curve.separate")
layout.itemO("curve.make_segment")
layout.itemO("curve.cyclic_toggle")
layout.itemO("curve.delete", text="Delete...")
layout.operator("curve.extrude")
layout.operator("curve.duplicate")
layout.operator("curve.separate")
layout.operator("curve.make_segment")
layout.operator("curve.cyclic_toggle")
layout.operator("curve.delete", text="Delete...")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_edit_curve_ctrlpoints")
layout.itemM("VIEW3D_MT_edit_curve_segments")
layout.menu("VIEW3D_MT_edit_curve_ctrlpoints")
layout.menu("VIEW3D_MT_edit_curve_segments")
layout.itemS()
layout.separator()
layout.item_menu_enumR(settings, "proportional_editing")
layout.item_menu_enumR(settings, "proportional_editing_falloff")
layout.prop_menu_enum(settings, "proportional_editing")
layout.prop_menu_enum(settings, "proportional_editing_falloff")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_edit_curve_showhide")
layout.menu("VIEW3D_MT_edit_curve_showhide")
class VIEW3D_MT_edit_curve(bpy.types.Menu):
@@ -1247,17 +1247,17 @@ class VIEW3D_MT_edit_curve_ctrlpoints(bpy.types.Menu):
edit_object = context.edit_object
if edit_object.type == 'CURVE':
layout.item_enumO("tfm.transform", "mode", 'TILT')
layout.itemO("curve.tilt_clear")
layout.itemO("curve.separate")
layout.operator_enum("tfm.transform", "mode", 'TILT')
layout.operator("curve.tilt_clear")
layout.operator("curve.separate")
layout.itemS()
layout.separator()
layout.item_menu_enumO("curve.handle_type_set", "type")
layout.operator_menu_enum("curve.handle_type_set", "type")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_hook")
layout.menu("VIEW3D_MT_hook")
class VIEW3D_MT_edit_curve_segments(bpy.types.Menu):
@@ -1266,8 +1266,8 @@ class VIEW3D_MT_edit_curve_segments(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("curve.subdivide")
layout.itemO("curve.switch_direction")
layout.operator("curve.subdivide")
layout.operator("curve.switch_direction")
class VIEW3D_MT_edit_curve_showhide(VIEW3D_MT_showhide):
@@ -1286,11 +1286,11 @@ class VIEW3D_MT_edit_text(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("font.file_paste")
layout.operator("font.file_paste")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_edit_text_chars")
layout.menu("VIEW3D_MT_edit_text_chars")
class VIEW3D_MT_edit_text_chars(bpy.types.Menu):
@@ -1299,32 +1299,32 @@ class VIEW3D_MT_edit_text_chars(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.item_stringO("font.text_insert", "text", b'\xC2\xA9'.decode(), text="Copyright|Alt C")
layout.item_stringO("font.text_insert", "text", b'\xC2\xAE'.decode(), text="Registered Trademark|Alt R")
layout.operator_string("font.text_insert", "text", b'\xC2\xA9'.decode(), text="Copyright|Alt C")
layout.operator_string("font.text_insert", "text", b'\xC2\xAE'.decode(), text="Registered Trademark|Alt R")
layout.itemS()
layout.separator()
layout.item_stringO("font.text_insert", "text", b'\xC2\xB0'.decode(), text="Degree Sign|Alt G")
layout.item_stringO("font.text_insert", "text", b'\xC3\x97'.decode(), text="Multiplication Sign|Alt x")
layout.item_stringO("font.text_insert", "text", b'\xC2\x8A'.decode(), text="Circle|Alt .")
layout.item_stringO("font.text_insert", "text", b'\xC2\xB9'.decode(), text="Superscript 1|Alt 1")
layout.item_stringO("font.text_insert", "text", b'\xC2\xB2'.decode(), text="Superscript 2|Alt 2")
layout.item_stringO("font.text_insert", "text", b'\xC2\xB3'.decode(), text="Superscript 3|Alt 3")
layout.item_stringO("font.text_insert", "text", b'\xC2\xBB'.decode(), text="Double >>|Alt >")
layout.item_stringO("font.text_insert", "text", b'\xC2\xAB'.decode(), text="Double <<|Alt <")
layout.item_stringO("font.text_insert", "text", b'\xE2\x80\xB0'.decode(), text="Promillage|Alt %")
layout.operator_string("font.text_insert", "text", b'\xC2\xB0'.decode(), text="Degree Sign|Alt G")
layout.operator_string("font.text_insert", "text", b'\xC3\x97'.decode(), text="Multiplication Sign|Alt x")
layout.operator_string("font.text_insert", "text", b'\xC2\x8A'.decode(), text="Circle|Alt .")
layout.operator_string("font.text_insert", "text", b'\xC2\xB9'.decode(), text="Superscript 1|Alt 1")
layout.operator_string("font.text_insert", "text", b'\xC2\xB2'.decode(), text="Superscript 2|Alt 2")
layout.operator_string("font.text_insert", "text", b'\xC2\xB3'.decode(), text="Superscript 3|Alt 3")
layout.operator_string("font.text_insert", "text", b'\xC2\xBB'.decode(), text="Double >>|Alt >")
layout.operator_string("font.text_insert", "text", b'\xC2\xAB'.decode(), text="Double <<|Alt <")
layout.operator_string("font.text_insert", "text", b'\xE2\x80\xB0'.decode(), text="Promillage|Alt %")
layout.itemS()
layout.separator()
layout.item_stringO("font.text_insert", "text", b'\xC2\xA4'.decode(), text="Dutch Florin|Alt F")
layout.item_stringO("font.text_insert", "text", b'\xC2\xA3'.decode(), text="British Pound|Alt L")
layout.item_stringO("font.text_insert", "text", b'\xC2\xA5'.decode(), text="Japanese Yen|Alt Y")
layout.operator_string("font.text_insert", "text", b'\xC2\xA4'.decode(), text="Dutch Florin|Alt F")
layout.operator_string("font.text_insert", "text", b'\xC2\xA3'.decode(), text="British Pound|Alt L")
layout.operator_string("font.text_insert", "text", b'\xC2\xA5'.decode(), text="Japanese Yen|Alt Y")
layout.itemS()
layout.separator()
layout.item_stringO("font.text_insert", "text", b'\xC3\x9F'.decode(), text="German S|Alt S")
layout.item_stringO("font.text_insert", "text", b'\xC2\xBF'.decode(), text="Spanish Question Mark|Alt ?")
layout.item_stringO("font.text_insert", "text", b'\xC2\xA1'.decode(), text="Spanish Exclamation Mark|Alt !")
layout.operator_string("font.text_insert", "text", b'\xC3\x9F'.decode(), text="German S|Alt S")
layout.operator_string("font.text_insert", "text", b'\xC2\xBF'.decode(), text="Spanish Question Mark|Alt ?")
layout.operator_string("font.text_insert", "text", b'\xC2\xA1'.decode(), text="Spanish Exclamation Mark|Alt !")
class VIEW3D_MT_edit_meta(bpy.types.Menu):
@@ -1335,28 +1335,28 @@ class VIEW3D_MT_edit_meta(bpy.types.Menu):
settings = context.tool_settings
layout.itemO("ed.undo")
layout.itemO("ed.redo")
layout.operator("ed.undo")
layout.operator("ed.redo")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_transform")
layout.itemM("VIEW3D_MT_mirror")
layout.itemM("VIEW3D_MT_snap")
layout.menu("VIEW3D_MT_transform")
layout.menu("VIEW3D_MT_mirror")
layout.menu("VIEW3D_MT_snap")
layout.itemS()
layout.separator()
layout.itemO("mball.delete_metaelems", text="Delete...")
layout.itemO("mball.duplicate_metaelems")
layout.operator("mball.delete_metaelems", text="Delete...")
layout.operator("mball.duplicate_metaelems")
layout.itemS()
layout.separator()
layout.item_menu_enumR(settings, "proportional_editing")
layout.item_menu_enumR(settings, "proportional_editing_falloff")
layout.prop_menu_enum(settings, "proportional_editing")
layout.prop_menu_enum(settings, "proportional_editing_falloff")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_edit_meta_showhide")
layout.menu("VIEW3D_MT_edit_meta_showhide")
class VIEW3D_MT_edit_meta_showhide(bpy.types.Menu):
@@ -1365,9 +1365,9 @@ class VIEW3D_MT_edit_meta_showhide(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("mball.reveal_metaelems", text="Show Hidden")
layout.itemO("mball.hide_metaelems", text="Hide Selected")
layout.item_booleanO("mball.hide_metaelems", "unselected", True, text="Hide Unselected")
layout.operator("mball.reveal_metaelems", text="Show Hidden")
layout.operator("mball.hide_metaelems", text="Hide Selected")
layout.operator_boolean("mball.hide_metaelems", "unselected", True, text="Hide Unselected")
class VIEW3D_MT_edit_lattice(bpy.types.Menu):
@@ -1378,18 +1378,18 @@ class VIEW3D_MT_edit_lattice(bpy.types.Menu):
settings = context.tool_settings
layout.itemM("VIEW3D_MT_transform")
layout.itemM("VIEW3D_MT_mirror")
layout.itemM("VIEW3D_MT_snap")
layout.menu("VIEW3D_MT_transform")
layout.menu("VIEW3D_MT_mirror")
layout.menu("VIEW3D_MT_snap")
layout.itemS()
layout.separator()
layout.itemO("lattice.make_regular")
layout.operator("lattice.make_regular")
layout.itemS()
layout.separator()
layout.item_menu_enumR(settings, "proportional_editing")
layout.item_menu_enumR(settings, "proportional_editing_falloff")
layout.prop_menu_enum(settings, "proportional_editing")
layout.prop_menu_enum(settings, "proportional_editing_falloff")
class VIEW3D_MT_edit_armature(bpy.types.Menu):
@@ -1401,55 +1401,55 @@ class VIEW3D_MT_edit_armature(bpy.types.Menu):
edit_object = context.edit_object
arm = edit_object.data
layout.itemM("VIEW3D_MT_transform")
layout.itemM("VIEW3D_MT_mirror")
layout.itemM("VIEW3D_MT_snap")
layout.itemM("VIEW3D_MT_edit_armature_roll")
layout.menu("VIEW3D_MT_transform")
layout.menu("VIEW3D_MT_mirror")
layout.menu("VIEW3D_MT_snap")
layout.menu("VIEW3D_MT_edit_armature_roll")
if arm.drawtype == 'ENVELOPE':
layout.item_enumO("tfm.transform", "mode", 'BONESIZE', text="Scale Envelope Distance")
layout.operator_enum("tfm.transform", "mode", 'BONESIZE', text="Scale Envelope Distance")
else:
layout.item_enumO("tfm.transform", "mode", 'BONESIZE', text="Scale B-Bone Width")
layout.operator_enum("tfm.transform", "mode", 'BONESIZE', text="Scale B-Bone Width")
layout.itemS()
layout.separator()
layout.itemO("armature.extrude_move")
layout.operator("armature.extrude_move")
if arm.x_axis_mirror:
layout.itemO("armature.extrude_forked")
layout.operator("armature.extrude_forked")
layout.itemO("armature.duplicate_move")
layout.itemO("armature.merge")
layout.itemO("armature.fill")
layout.itemO("armature.delete")
layout.itemO("armature.separate")
layout.operator("armature.duplicate_move")
layout.operator("armature.merge")
layout.operator("armature.fill")
layout.operator("armature.delete")
layout.operator("armature.separate")
layout.itemS()
layout.separator()
layout.itemO("armature.subdivide_multi", text="Subdivide")
layout.itemO("armature.switch_direction", text="Switch Direction")
layout.operator("armature.subdivide_multi", text="Subdivide")
layout.operator("armature.switch_direction", text="Switch Direction")
layout.itemS()
layout.separator()
layout.operator_context = 'EXEC_AREA'
layout.item_enumO("armature.autoside_names", "type", 'XAXIS', text="AutoName Left/Right")
layout.item_enumO("armature.autoside_names", "type", 'YAXIS', text="AutoName Front/Back")
layout.item_enumO("armature.autoside_names", "type", 'ZAXIS', text="AutoName Top/Bottom")
layout.itemO("armature.flip_names")
layout.operator_enum("armature.autoside_names", "type", 'XAXIS', text="AutoName Left/Right")
layout.operator_enum("armature.autoside_names", "type", 'YAXIS', text="AutoName Front/Back")
layout.operator_enum("armature.autoside_names", "type", 'ZAXIS', text="AutoName Top/Bottom")
layout.operator("armature.flip_names")
layout.itemS()
layout.separator()
layout.operator_context = 'INVOKE_DEFAULT'
layout.itemO("armature.armature_layers")
layout.itemO("armature.bone_layers")
layout.operator("armature.armature_layers")
layout.operator("armature.bone_layers")
layout.itemS()
layout.separator()
layout.itemM("VIEW3D_MT_edit_armature_parent")
layout.menu("VIEW3D_MT_edit_armature_parent")
layout.itemS()
layout.separator()
layout.item_menu_enumO("armature.flags_set", "mode", text="Bone Settings")
layout.operator_menu_enum("armature.flags_set", "mode", text="Bone Settings")
class VIEW3D_MT_armature_specials(bpy.types.Menu):
@@ -1460,16 +1460,16 @@ class VIEW3D_MT_armature_specials(bpy.types.Menu):
layout.operator_context = 'INVOKE_REGION_WIN'
layout.itemO("armature.subdivide_multi", text="Subdivide")
layout.itemO("armature.switch_direction", text="Switch Direction")
layout.operator("armature.subdivide_multi", text="Subdivide")
layout.operator("armature.switch_direction", text="Switch Direction")
layout.itemS()
layout.separator()
layout.operator_context = 'EXEC_REGION_WIN'
layout.item_enumO("armature.autoside_names", "type", 'XAXIS', text="AutoName Left/Right")
layout.item_enumO("armature.autoside_names", "type", 'YAXIS', text="AutoName Front/Back")
layout.item_enumO("armature.autoside_names", "type", 'ZAXIS', text="AutoName Top/Bottom")
layout.itemO("armature.flip_names", text="Flip Names")
layout.operator_enum("armature.autoside_names", "type", 'XAXIS', text="AutoName Left/Right")
layout.operator_enum("armature.autoside_names", "type", 'YAXIS', text="AutoName Front/Back")
layout.operator_enum("armature.autoside_names", "type", 'ZAXIS', text="AutoName Top/Bottom")
layout.operator("armature.flip_names", text="Flip Names")
class VIEW3D_MT_edit_armature_parent(bpy.types.Menu):
@@ -1478,8 +1478,8 @@ class VIEW3D_MT_edit_armature_parent(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.itemO("armature.parent_set", text="Make")
layout.itemO("armature.parent_clear", text="Clear")
layout.operator("armature.parent_set", text="Make")
layout.operator("armature.parent_clear", text="Clear")
class VIEW3D_MT_edit_armature_roll(bpy.types.Menu):
@@ -1488,12 +1488,12 @@ class VIEW3D_MT_edit_armature_roll(bpy.types.Menu):
def draw(self, context):
layout = self.layout
layout.item_enumO("armature.calculate_roll", "type", 'GLOBALUP', text="Clear Roll (Z-Axis Up)")
layout.item_enumO("armature.calculate_roll", "type", 'CURSOR', text="Roll to Cursor")
layout.operator_enum("armature.calculate_roll", "type", 'GLOBALUP', text="Clear Roll (Z-Axis Up)")
layout.operator_enum("armature.calculate_roll", "type", 'CURSOR', text="Roll to Cursor")
layout.itemS()
layout.separator()
layout.item_enumO("tfm.transform", "mode", 'BONE_ROLL', text="Set Roll")
layout.operator_enum("tfm.transform", "mode", 'BONE_ROLL', text="Set Roll")
# ********** Panel **********
@@ -1514,22 +1514,22 @@ class VIEW3D_PT_3dview_properties(bpy.types.Panel):
scene = context.scene
col = layout.column()
col.itemL(text="Camera:")
col.itemR(view, "camera", text="")
col.itemR(view, "lens")
col.label(text="Camera:")
col.prop(view, "camera", text="")
col.prop(view, "lens")
col = layout.column(align=True)
col.itemL(text="Clip:")
col.itemR(view, "clip_start", text="Start")
col.itemR(view, "clip_end", text="End")
col.label(text="Clip:")
col.prop(view, "clip_start", text="Start")
col.prop(view, "clip_end", text="End")
col = layout.column(align=True)
col.itemL(text="Grid:")
col.itemR(view, "grid_lines", text="Lines")
col.itemR(view, "grid_spacing", text="Spacing")
col.itemR(view, "grid_subdivisions", text="Subdivisions")
col.label(text="Grid:")
col.prop(view, "grid_lines", text="Lines")
col.prop(view, "grid_spacing", text="Spacing")
col.prop(view, "grid_subdivisions", text="Subdivisions")
layout.column().itemR(scene, "cursor_location", text="3D Cursor:")
layout.column().prop(scene, "cursor_location", text="3D Cursor:")
class VIEW3D_PT_3dview_name(bpy.types.Panel):
@@ -1545,15 +1545,15 @@ class VIEW3D_PT_3dview_name(bpy.types.Panel):
ob = context.active_object
row = layout.row()
row.itemL(text="", icon='ICON_OBJECT_DATA')
row.itemR(ob, "name", text="")
row.label(text="", icon='ICON_OBJECT_DATA')
row.prop(ob, "name", text="")
if ob.type == 'ARMATURE' and ob.mode in ('EDIT', 'POSE'):
bone = context.active_bone
if bone:
row = layout.row()
row.itemL(text="", icon='ICON_BONE_DATA')
row.itemR(bone, "name", text="")
row.label(text="", icon='ICON_BONE_DATA')
row.prop(bone, "name", text="")
class VIEW3D_PT_3dview_display(bpy.types.Panel):
@@ -1574,30 +1574,30 @@ class VIEW3D_PT_3dview_display(bpy.types.Panel):
ob = context.object
col = layout.column()
col.itemR(view, "display_floor", text="Grid Floor")
col.itemR(view, "display_x_axis", text="X Axis")
col.itemR(view, "display_y_axis", text="Y Axis")
col.itemR(view, "display_z_axis", text="Z Axis")
col.itemR(view, "outline_selected")
col.itemR(view, "all_object_centers")
col.itemR(view, "relationship_lines")
col.prop(view, "display_floor", text="Grid Floor")
col.prop(view, "display_x_axis", text="X Axis")
col.prop(view, "display_y_axis", text="Y Axis")
col.prop(view, "display_z_axis", text="Z Axis")
col.prop(view, "outline_selected")
col.prop(view, "all_object_centers")
col.prop(view, "relationship_lines")
if ob and ob.type == 'MESH':
mesh = ob.data
col.itemR(mesh, "all_edges")
col.prop(mesh, "all_edges")
col = layout.column()
col.itemL(text="Shading:")
col.itemR(gs, "material_mode", text="")
col.itemR(view, "textured_solid")
col.label(text="Shading:")
col.prop(gs, "material_mode", text="")
col.prop(view, "textured_solid")
# XXX - the Quad View options don't work yet
# layout.itemS()
# layout.separator()
#
# layout.itemO("screen.region_foursplit", text="Toggle Quad View")
# layout.operator("screen.region_foursplit", text="Toggle Quad View")
# col = layout.column()
# col.itemR(view, "lock_rotation")
# col.itemR(view, "box_preview")
# col.itemR(view, "box_clip")
# col.prop(view, "lock_rotation")
# col.prop(view, "box_preview")
# col.prop(view, "box_clip")
class VIEW3D_PT_3dview_meshdisplay(bpy.types.Panel):
@@ -1615,25 +1615,25 @@ class VIEW3D_PT_3dview_meshdisplay(bpy.types.Panel):
mesh = context.active_object.data
col = layout.column()
col.itemL(text="Overlays:")
col.itemR(mesh, "draw_edges", text="Edges")
col.itemR(mesh, "draw_faces", text="Faces")
col.itemR(mesh, "draw_creases", text="Creases")
col.itemR(mesh, "draw_bevel_weights", text="Bevel Weights")
col.itemR(mesh, "draw_seams", text="Seams")
col.itemR(mesh, "draw_sharp", text="Sharp")
col.label(text="Overlays:")
col.prop(mesh, "draw_edges", text="Edges")
col.prop(mesh, "draw_faces", text="Faces")
col.prop(mesh, "draw_creases", text="Creases")
col.prop(mesh, "draw_bevel_weights", text="Bevel Weights")
col.prop(mesh, "draw_seams", text="Seams")
col.prop(mesh, "draw_sharp", text="Sharp")
col.itemS()
col.itemL(text="Normals:")
col.itemR(mesh, "draw_normals", text="Face")
col.itemR(mesh, "draw_vertex_normals", text="Vertex")
col.itemR(context.scene.tool_settings, "normal_size", text="Normal Size")
col.separator()
col.label(text="Normals:")
col.prop(mesh, "draw_normals", text="Face")
col.prop(mesh, "draw_vertex_normals", text="Vertex")
col.prop(context.scene.tool_settings, "normal_size", text="Normal Size")
col.itemS()
col.itemL(text="Numerics:")
col.itemR(mesh, "draw_edge_lenght")
col.itemR(mesh, "draw_edge_angle")
col.itemR(mesh, "draw_face_area")
col.separator()
col.label(text="Numerics:")
col.prop(mesh, "draw_edge_lenght")
col.prop(mesh, "draw_edge_angle")
col.prop(mesh, "draw_face_area")
class VIEW3D_PT_3dview_curvedisplay(bpy.types.Panel):
@@ -1651,10 +1651,10 @@ class VIEW3D_PT_3dview_curvedisplay(bpy.types.Panel):
curve = context.active_object.data
col = layout.column()
col.itemL(text="Overlays:")
col.itemR(curve, "draw_handles", text="Handles")
col.itemR(curve, "draw_normals", text="Normals")
col.itemR(context.scene.tool_settings, "normal_size", text="Normal Size")
col.label(text="Overlays:")
col.prop(curve, "draw_handles", text="Handles")
col.prop(curve, "draw_normals", text="Normals")
col.prop(context.scene.tool_settings, "normal_size", text="Normal Size")
class VIEW3D_PT_background_image(bpy.types.Panel):
@@ -1672,7 +1672,7 @@ class VIEW3D_PT_background_image(bpy.types.Panel):
layout = self.layout
view = context.space_data
layout.itemR(view, "display_background_image", text="")
layout.prop(view, "display_background_image", text="")
def draw(self, context):
layout = self.layout
@@ -1684,16 +1684,16 @@ class VIEW3D_PT_background_image(bpy.types.Panel):
layout.active = view.display_background_image
col = layout.column()
col.itemR(bg, "image", text="")
#col.itemR(bg, "image_user")
col.itemR(bg, "size")
col.itemR(bg, "transparency", slider=True)
col.prop(bg, "image", text="")
#col.prop(bg, "image_user")
col.prop(bg, "size")
col.prop(bg, "transparency", slider=True)
col = layout.column(align=True)
col.itemL(text="Offset:")
col.itemR(bg, "offset_x", text="X")
col.itemR(bg, "offset_y", text="Y")
col.label(text="Offset:")
col.prop(bg, "offset_x", text="X")
col.prop(bg, "offset_y", text="Y")
class VIEW3D_PT_transform_orientations(bpy.types.Panel):
@@ -1713,14 +1713,14 @@ class VIEW3D_PT_transform_orientations(bpy.types.Panel):
col = layout.column()
col.itemR(view, "transform_orientation")
col.itemO("tfm.create_orientation", text="Create")
col.prop(view, "transform_orientation")
col.operator("tfm.create_orientation", text="Create")
orientation = view.current_orientation
if orientation:
col.itemR(orientation, "name")
col.itemO("tfm.delete_orientation", text="Delete")
col.prop(orientation, "name")
col.operator("tfm.delete_orientation", text="Delete")
class VIEW3D_PT_etch_a_ton(bpy.types.Panel):
@@ -1738,7 +1738,7 @@ class VIEW3D_PT_etch_a_ton(bpy.types.Panel):
layout = self.layout
toolsettings = context.scene.tool_settings
layout.itemR(toolsettings, "bone_sketching", text="")
layout.prop(toolsettings, "bone_sketching", text="")
def draw(self, context):
layout = self.layout
@@ -1746,23 +1746,23 @@ class VIEW3D_PT_etch_a_ton(bpy.types.Panel):
col = layout.column()
col.itemR(toolsettings, "etch_quick")
col.itemR(toolsettings, "etch_overdraw")
col.prop(toolsettings, "etch_quick")
col.prop(toolsettings, "etch_overdraw")
col.itemR(toolsettings, "etch_convert_mode")
col.prop(toolsettings, "etch_convert_mode")
if toolsettings.etch_convert_mode == 'LENGTH':
col.itemR(toolsettings, "etch_length_limit")
col.prop(toolsettings, "etch_length_limit")
elif toolsettings.etch_convert_mode == 'ADAPTIVE':
col.itemR(toolsettings, "etch_adaptive_limit")
col.prop(toolsettings, "etch_adaptive_limit")
elif toolsettings.etch_convert_mode == 'FIXED':
col.itemR(toolsettings, "etch_subdivision_number")
col.prop(toolsettings, "etch_subdivision_number")
elif toolsettings.etch_convert_mode == 'RETARGET':
col.itemR(toolsettings, "etch_template")
col.itemR(toolsettings, "etch_roll_mode")
col.itemR(toolsettings, "etch_autoname")
col.itemR(toolsettings, "etch_number")
col.itemR(toolsettings, "etch_side")
col.prop(toolsettings, "etch_template")
col.prop(toolsettings, "etch_roll_mode")
col.prop(toolsettings, "etch_autoname")
col.prop(toolsettings, "etch_number")
col.prop(toolsettings, "etch_side")
class VIEW3D_PT_context_properties(bpy.types.Panel):

View File

@@ -36,41 +36,41 @@ class VIEW3D_PT_tools_objectmode(View3DPanel):
layout = self.layout
col = layout.column(align=True)
col.itemL(text="Transform:")
col.itemO("tfm.translate")
col.itemO("tfm.rotate")
col.itemO("tfm.resize", text="Scale")
col.label(text="Transform:")
col.operator("tfm.translate")
col.operator("tfm.rotate")
col.operator("tfm.resize", text="Scale")
col = layout.column(align=True)
col.itemL(text="Object:")
col.itemO("object.duplicate_move")
col.itemO("object.delete")
col.itemO("object.join")
col.label(text="Object:")
col.operator("object.duplicate_move")
col.operator("object.delete")
col.operator("object.join")
active_object = context.active_object
if active_object and active_object.type == 'MESH':
col = layout.column(align=True)
col.itemL(text="Shading:")
col.itemO("object.shade_smooth", text="Smooth")
col.itemO("object.shade_flat", text="Flat")
col.label(text="Shading:")
col.operator("object.shade_smooth", text="Smooth")
col.operator("object.shade_flat", text="Flat")
col = layout.column(align=True)
col.itemL(text="Keyframes:")
col.itemO("anim.insert_keyframe_menu", text="Insert")
col.itemO("anim.delete_keyframe_v3d", text="Remove")
col.label(text="Keyframes:")
col.operator("anim.insert_keyframe_menu", text="Insert")
col.operator("anim.delete_keyframe_v3d", text="Remove")
col = layout.column(align=True)
col.itemL(text="Repeat:")
col.itemO("screen.repeat_last")
col.itemO("screen.repeat_history", text="History...")
col.label(text="Repeat:")
col.operator("screen.repeat_last")
col.operator("screen.repeat_history", text="History...")
col = layout.column(align=True)
col.itemL(text="Grease Pencil:")
col.label(text="Grease Pencil:")
row = col.row()
row.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw")
row.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line")
row.item_enumO("gpencil.draw", "mode", 'ERASER', text="Erase")
row.operator_enum("gpencil.draw", "mode", 'DRAW', text="Draw")
row.operator_enum("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line")
row.operator_enum("gpencil.draw", "mode", 'ERASER', text="Erase")
# ********** default tools for editmode_mesh ****************
@@ -83,63 +83,63 @@ class VIEW3D_PT_tools_meshedit(View3DPanel):
layout = self.layout
col = layout.column(align=True)
col.itemL(text="Transform:")
col.itemO("tfm.translate")
col.itemO("tfm.rotate")
col.itemO("tfm.resize", text="Scale")
col.itemO("tfm.shrink_fatten", text="Along Normal")
col.label(text="Transform:")
col.operator("tfm.translate")
col.operator("tfm.rotate")
col.operator("tfm.resize", text="Scale")
col.operator("tfm.shrink_fatten", text="Along Normal")
col = layout.column(align=True)
col.itemL(text="Deform:")
col.itemO("tfm.edge_slide")
col.itemO("mesh.rip_move")
col.itemO("mesh.vertices_smooth")
col.label(text="Deform:")
col.operator("tfm.edge_slide")
col.operator("mesh.rip_move")
col.operator("mesh.vertices_smooth")
col = layout.column(align=True)
col.itemL(text="Add:")
col.itemO("mesh.extrude_move")
col.itemO("mesh.subdivide")
col.itemO("mesh.loopcut")
col.itemO("mesh.duplicate_move")
col.itemO("mesh.spin")
col.itemO("mesh.screw")
col.label(text="Add:")
col.operator("mesh.extrude_move")
col.operator("mesh.subdivide")
col.operator("mesh.loopcut")
col.operator("mesh.duplicate_move")
col.operator("mesh.spin")
col.operator("mesh.screw")
col = layout.column(align=True)
col.itemL(text="Remove:")
col.itemO("mesh.delete")
col.itemO("mesh.merge")
col.itemO("mesh.remove_doubles")
col.label(text="Remove:")
col.operator("mesh.delete")
col.operator("mesh.merge")
col.operator("mesh.remove_doubles")
col = layout.column(align=True)
col.itemL(text="Normals:")
col.itemO("mesh.normals_make_consistent", text="Recalculate")
col.itemO("mesh.flip_normals", text="Flip Direction")
col.label(text="Normals:")
col.operator("mesh.normals_make_consistent", text="Recalculate")
col.operator("mesh.flip_normals", text="Flip Direction")
col = layout.column(align=True)
col.itemL(text="UV Mapping:")
col.item_stringO("wm.call_menu", "name", "VIEW3D_MT_uv_map", text="Unwrap")
col.itemO("mesh.mark_seam")
col.item_booleanO("mesh.mark_seam", "clear", True, text="Clear Seam")
col.label(text="UV Mapping:")
col.operator_string("wm.call_menu", "name", "VIEW3D_MT_uv_map", text="Unwrap")
col.operator("mesh.mark_seam")
col.operator_boolean("mesh.mark_seam", "clear", True, text="Clear Seam")
col = layout.column(align=True)
col.itemL(text="Shading:")
col.itemO("mesh.faces_shade_smooth", text="Smooth")
col.itemO("mesh.faces_shade_flat", text="Flat")
col.label(text="Shading:")
col.operator("mesh.faces_shade_smooth", text="Smooth")
col.operator("mesh.faces_shade_flat", text="Flat")
col = layout.column(align=True)
col.itemL(text="Repeat:")
col.itemO("screen.repeat_last")
col.itemO("screen.repeat_history", text="History...")
col.label(text="Repeat:")
col.operator("screen.repeat_last")
col.operator("screen.repeat_history", text="History...")
col = layout.column(align=True)
col.itemL(text="Grease Pencil:")
col.label(text="Grease Pencil:")
row = col.row()
row.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw")
row.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line")
row.item_enumO("gpencil.draw", "mode", 'ERASER', text="Erase")
row.operator_enum("gpencil.draw", "mode", 'DRAW', text="Draw")
row.operator_enum("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line")
row.operator_enum("gpencil.draw", "mode", 'ERASER', text="Erase")
class VIEW3D_PT_tools_meshedit_options(View3DPanel):
@@ -154,7 +154,7 @@ class VIEW3D_PT_tools_meshedit_options(View3DPanel):
if ob:
mesh = context.active_object.data
col = layout.column(align=True)
col.itemR(mesh, "use_mirror_x")
col.prop(mesh, "use_mirror_x")
# ********** default tools for editmode_curve ****************
@@ -167,48 +167,48 @@ class VIEW3D_PT_tools_curveedit(View3DPanel):
layout = self.layout
col = layout.column(align=True)
col.itemL(text="Transform:")
col.itemO("tfm.translate")
col.itemO("tfm.rotate")
col.itemO("tfm.resize", text="Scale")
col.label(text="Transform:")
col.operator("tfm.translate")
col.operator("tfm.rotate")
col.operator("tfm.resize", text="Scale")
col = layout.column(align=True)
col.item_enumO("tfm.transform", "mode", 'TILT')
col.item_enumO("tfm.transform", "mode", 'CURVE_SHRINKFATTEN')
col.operator_enum("tfm.transform", "mode", 'TILT')
col.operator_enum("tfm.transform", "mode", 'CURVE_SHRINKFATTEN')
col = layout.column(align=True)
col.itemL(text="Curve:")
col.itemO("curve.duplicate")
col.itemO("curve.delete")
col.itemO("curve.cyclic_toggle")
col.itemO("curve.switch_direction")
col.itemO("curve.spline_type_set")
col.label(text="Curve:")
col.operator("curve.duplicate")
col.operator("curve.delete")
col.operator("curve.cyclic_toggle")
col.operator("curve.switch_direction")
col.operator("curve.spline_type_set")
col = layout.column(align=True)
col.itemL(text="Handles:")
col.label(text="Handles:")
row = col.row()
row.item_enumO("curve.handle_type_set", "type", 'AUTOMATIC', text="Auto")
row.item_enumO("curve.handle_type_set", "type", 'VECTOR')
row.operator_enum("curve.handle_type_set", "type", 'AUTOMATIC', text="Auto")
row.operator_enum("curve.handle_type_set", "type", 'VECTOR')
row = col.row()
row.item_enumO("curve.handle_type_set", "type", 'ALIGN')
row.item_enumO("curve.handle_type_set", "type", 'FREE_ALIGN', text="Free")
row.operator_enum("curve.handle_type_set", "type", 'ALIGN')
row.operator_enum("curve.handle_type_set", "type", 'FREE_ALIGN', text="Free")
col = layout.column(align=True)
col.itemL(text="Modeling:")
col.itemO("curve.extrude")
col.itemO("curve.subdivide")
col.label(text="Modeling:")
col.operator("curve.extrude")
col.operator("curve.subdivide")
col = layout.column(align=True)
col.itemL(text="Repeat:")
col.itemO("screen.repeat_last")
col.itemO("screen.repeat_history", text="History...")
col.label(text="Repeat:")
col.operator("screen.repeat_last")
col.operator("screen.repeat_history", text="History...")
col = layout.column(align=True)
col.itemL(text="Grease Pencil:")
col.label(text="Grease Pencil:")
row = col.row()
row.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw")
row.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line")
row.item_enumO("gpencil.draw", "mode", 'ERASER', text="Erase")
row.operator_enum("gpencil.draw", "mode", 'DRAW', text="Draw")
row.operator_enum("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line")
row.operator_enum("gpencil.draw", "mode", 'ERASER', text="Erase")
# ********** default tools for editmode_surface ****************
@@ -221,34 +221,34 @@ class VIEW3D_PT_tools_surfaceedit(View3DPanel):
layout = self.layout
col = layout.column(align=True)
col.itemL(text="Transform:")
col.itemO("tfm.translate")
col.itemO("tfm.rotate")
col.itemO("tfm.resize", text="Scale")
col.label(text="Transform:")
col.operator("tfm.translate")
col.operator("tfm.rotate")
col.operator("tfm.resize", text="Scale")
col = layout.column(align=True)
col.itemL(text="Curve:")
col.itemO("curve.duplicate")
col.itemO("curve.delete")
col.itemO("curve.cyclic_toggle")
col.itemO("curve.switch_direction")
col.label(text="Curve:")
col.operator("curve.duplicate")
col.operator("curve.delete")
col.operator("curve.cyclic_toggle")
col.operator("curve.switch_direction")
col = layout.column(align=True)
col.itemL(text="Modeling:")
col.itemO("curve.extrude")
col.itemO("curve.subdivide")
col.label(text="Modeling:")
col.operator("curve.extrude")
col.operator("curve.subdivide")
col = layout.column(align=True)
col.itemL(text="Repeat:")
col.itemO("screen.repeat_last")
col.itemO("screen.repeat_history", text="History...")
col.label(text="Repeat:")
col.operator("screen.repeat_last")
col.operator("screen.repeat_history", text="History...")
col = layout.column(align=True)
col.itemL(text="Grease Pencil:")
col.label(text="Grease Pencil:")
row = col.row()
row.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw")
row.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line")
row.item_enumO("gpencil.draw", "mode", 'ERASER', text="Erase")
row.operator_enum("gpencil.draw", "mode", 'DRAW', text="Draw")
row.operator_enum("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line")
row.operator_enum("gpencil.draw", "mode", 'ERASER', text="Erase")
# ********** default tools for editmode_text ****************
@@ -261,26 +261,26 @@ class VIEW3D_PT_tools_textedit(View3DPanel):
layout = self.layout
col = layout.column(align=True)
col.itemL(text="Text Edit:")
col.itemO("font.text_copy", text="Copy")
col.itemO("font.text_cut", text="Cut")
col.itemO("font.text_paste", text="Paste")
col.label(text="Text Edit:")
col.operator("font.text_copy", text="Copy")
col.operator("font.text_cut", text="Cut")
col.operator("font.text_paste", text="Paste")
col = layout.column(align=True)
col.itemL(text="Set Case:")
col.item_enumO("font.case_set", "case", 'UPPER', text="To Upper")
col.item_enumO("font.case_set", "case", 'LOWER', text="To Lower")
col.label(text="Set Case:")
col.operator_enum("font.case_set", "case", 'UPPER', text="To Upper")
col.operator_enum("font.case_set", "case", 'LOWER', text="To Lower")
col = layout.column(align=True)
col.itemL(text="Style:")
col.item_enumO("font.style_toggle", "style", 'BOLD')
col.item_enumO("font.style_toggle", "style", 'ITALIC')
col.item_enumO("font.style_toggle", "style", 'UNDERLINE')
col.label(text="Style:")
col.operator_enum("font.style_toggle", "style", 'BOLD')
col.operator_enum("font.style_toggle", "style", 'ITALIC')
col.operator_enum("font.style_toggle", "style", 'UNDERLINE')
col = layout.column(align=True)
col.itemL(text="Repeat:")
col.itemO("screen.repeat_last")
col.itemO("screen.repeat_history", text="History...")
col.label(text="Repeat:")
col.operator("screen.repeat_last")
col.operator("screen.repeat_history", text="History...")
# ********** default tools for editmode_armature ****************
@@ -294,33 +294,33 @@ class VIEW3D_PT_tools_armatureedit(View3DPanel):
layout = self.layout
col = layout.column(align=True)
col.itemL(text="Transform:")
col.itemO("tfm.translate")
col.itemO("tfm.rotate")
col.itemO("tfm.resize", text="Scale")
col.label(text="Transform:")
col.operator("tfm.translate")
col.operator("tfm.rotate")
col.operator("tfm.resize", text="Scale")
col = layout.column(align=True)
col.itemL(text="Bones:")
col.itemO("armature.bone_primitive_add", text="Add")
col.itemO("armature.duplicate_move", text="Duplicate")
col.itemO("armature.delete", text="Delete")
col.label(text="Bones:")
col.operator("armature.bone_primitive_add", text="Add")
col.operator("armature.duplicate_move", text="Duplicate")
col.operator("armature.delete", text="Delete")
col = layout.column(align=True)
col.itemL(text="Modeling:")
col.itemO("armature.extrude_move")
col.itemO("armature.subdivide_multi", text="Subdivide")
col.label(text="Modeling:")
col.operator("armature.extrude_move")
col.operator("armature.subdivide_multi", text="Subdivide")
col = layout.column(align=True)
col.itemL(text="Repeat:")
col.itemO("screen.repeat_last")
col.itemO("screen.repeat_history", text="History...")
col.label(text="Repeat:")
col.operator("screen.repeat_last")
col.operator("screen.repeat_history", text="History...")
col = layout.column(align=True)
col.itemL(text="Grease Pencil:")
col.label(text="Grease Pencil:")
row = col.row()
row.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw")
row.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line")
row.item_enumO("gpencil.draw", "mode", 'ERASER', text="Erase")
row.operator_enum("gpencil.draw", "mode", 'DRAW', text="Draw")
row.operator_enum("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line")
row.operator_enum("gpencil.draw", "mode", 'ERASER', text="Erase")
class VIEW3D_PT_tools_armatureedit_options(View3DPanel):
@@ -333,7 +333,7 @@ class VIEW3D_PT_tools_armatureedit_options(View3DPanel):
arm = context.active_object.data
col = layout.column(align=True)
col.itemR(arm, "x_axis_mirror")
col.prop(arm, "x_axis_mirror")
# ********** default tools for editmode_mball ****************
@@ -346,22 +346,22 @@ class VIEW3D_PT_tools_mballedit(View3DPanel):
layout = self.layout
col = layout.column(align=True)
col.itemL(text="Transform:")
col.itemO("tfm.translate")
col.itemO("tfm.rotate")
col.itemO("tfm.resize", text="Scale")
col.label(text="Transform:")
col.operator("tfm.translate")
col.operator("tfm.rotate")
col.operator("tfm.resize", text="Scale")
col = layout.column(align=True)
col.itemL(text="Repeat:")
col.itemO("screen.repeat_last")
col.itemO("screen.repeat_history", text="History...")
col.label(text="Repeat:")
col.operator("screen.repeat_last")
col.operator("screen.repeat_history", text="History...")
col = layout.column(align=True)
col.itemL(text="Grease Pencil:")
col.label(text="Grease Pencil:")
row = col.row()
row.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw")
row.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line")
row.item_enumO("gpencil.draw", "mode", 'ERASER', text="Erase")
row.operator_enum("gpencil.draw", "mode", 'DRAW', text="Draw")
row.operator_enum("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line")
row.operator_enum("gpencil.draw", "mode", 'ERASER', text="Erase")
# ********** default tools for editmode_lattice ****************
@@ -374,25 +374,25 @@ class VIEW3D_PT_tools_latticeedit(View3DPanel):
layout = self.layout
col = layout.column(align=True)
col.itemL(text="Transform:")
col.itemO("tfm.translate")
col.itemO("tfm.rotate")
col.itemO("tfm.resize", text="Scale")
col.label(text="Transform:")
col.operator("tfm.translate")
col.operator("tfm.rotate")
col.operator("tfm.resize", text="Scale")
col = layout.column(align=True)
col.itemO("lattice.make_regular")
col.operator("lattice.make_regular")
col = layout.column(align=True)
col.itemL(text="Repeat:")
col.itemO("screen.repeat_last")
col.itemO("screen.repeat_history", text="History...")
col.label(text="Repeat:")
col.operator("screen.repeat_last")
col.operator("screen.repeat_history", text="History...")
col = layout.column(align=True)
col.itemL(text="Grease Pencil:")
col.label(text="Grease Pencil:")
row = col.row()
row.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw")
row.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line")
row.item_enumO("gpencil.draw", "mode", 'ERASER', text="Erase")
row.operator_enum("gpencil.draw", "mode", 'DRAW', text="Draw")
row.operator_enum("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line")
row.operator_enum("gpencil.draw", "mode", 'ERASER', text="Erase")
# ********** default tools for posemode ****************
@@ -406,44 +406,44 @@ class VIEW3D_PT_tools_posemode(View3DPanel):
layout = self.layout
col = layout.column(align=True)
col.itemL(text="Transform:")
col.itemO("tfm.translate")
col.itemO("tfm.rotate")
col.itemO("tfm.resize", text="Scale")
col.label(text="Transform:")
col.operator("tfm.translate")
col.operator("tfm.rotate")
col.operator("tfm.resize", text="Scale")
col = layout.column(align=True)
col.itemL(text="In-Between:")
col.label(text="In-Between:")
row = col.row()
row.itemO("pose.push", text="Push")
row.itemO("pose.relax", text="Relax")
col.itemO("pose.breakdown", text="Breakdowner")
row.operator("pose.push", text="Push")
row.operator("pose.relax", text="Relax")
col.operator("pose.breakdown", text="Breakdowner")
col = layout.column(align=True)
col.itemL(text="Pose:")
col.label(text="Pose:")
row = col.row()
row.itemO("pose.copy", text="Copy")
row.itemO("pose.paste", text="Paste")
row.operator("pose.copy", text="Copy")
row.operator("pose.paste", text="Paste")
col = layout.column(align=True)
col.itemO("poselib.pose_add", text="Add To Library")
col.operator("poselib.pose_add", text="Add To Library")
col = layout.column(align=True)
col.itemL(text="Keyframes:")
col.label(text="Keyframes:")
col.itemO("anim.insert_keyframe_menu", text="Insert")
col.itemO("anim.delete_keyframe_v3d", text="Remove")
col.operator("anim.insert_keyframe_menu", text="Insert")
col.operator("anim.delete_keyframe_v3d", text="Remove")
col = layout.column(align=True)
col.itemL(text="Repeat:")
col.itemO("screen.repeat_last")
col.itemO("screen.repeat_history", text="History...")
col.label(text="Repeat:")
col.operator("screen.repeat_last")
col.operator("screen.repeat_history", text="History...")
col = layout.column(align=True)
col.itemL(text="Grease Pencil:")
col.label(text="Grease Pencil:")
row = col.row()
row.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw")
row.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line")
row.item_enumO("gpencil.draw", "mode", 'ERASER', text="Erase")
row.operator_enum("gpencil.draw", "mode", 'DRAW', text="Draw")
row.operator_enum("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Line")
row.operator_enum("gpencil.draw", "mode", 'ERASER', text="Erase")
class VIEW3D_PT_tools_posemode_options(View3DPanel):
@@ -456,8 +456,8 @@ class VIEW3D_PT_tools_posemode_options(View3DPanel):
arm = context.active_object.data
col = layout.column(align=True)
col.itemR(arm, "x_axis_mirror")
col.itemR(arm, "auto_ik")
col.prop(arm, "x_axis_mirror")
col.prop(arm, "auto_ik")
# ********** default tools for paint modes ****************
@@ -507,55 +507,55 @@ class VIEW3D_PT_tools_brush(PaintPanel):
# XXX This needs a check if psys is editable.
if context.particle_edit_object:
# XXX Select Particle System
layout.column().itemR(settings, "tool", expand=True)
layout.column().prop(settings, "tool", expand=True)
if settings.tool != 'NONE':
col = layout.column()
col.itemR(brush, "size", slider=True)
col.itemR(brush, "strength", slider=True)
col.prop(brush, "size", slider=True)
col.prop(brush, "strength", slider=True)
if settings.tool == 'ADD':
col = layout.column()
col.itemR(settings, "add_interpolate")
col.prop(settings, "add_interpolate")
sub = col.column(align=True)
sub.active = settings.add_interpolate
sub.itemR(brush, "steps", slider=True)
sub.itemR(settings, "add_keys", slider=True)
sub.prop(brush, "steps", slider=True)
sub.prop(settings, "add_keys", slider=True)
elif settings.tool == 'LENGTH':
layout.itemR(brush, "length_mode", expand=True)
layout.prop(brush, "length_mode", expand=True)
elif settings.tool == 'PUFF':
layout.itemR(brush, "puff_mode", expand=True)
layout.prop(brush, "puff_mode", expand=True)
# Sculpt Mode #
elif context.sculpt_object and brush:
col = layout.column()
col.itemS()
col.itemR(brush, "sculpt_tool", expand=True)
col.itemS()
col.separator()
col.prop(brush, "sculpt_tool", expand=True)
col.separator()
row = col.row(align=True)
row.itemR(brush, "size", slider=True)
row.itemR(brush, "use_size_pressure", toggle=True, text="")
row.prop(brush, "size", slider=True)
row.prop(brush, "use_size_pressure", toggle=True, text="")
if brush.sculpt_tool != 'GRAB':
row = col.row(align=True)
row.itemR(brush, "strength", slider=True)
row.itemR(brush, "use_strength_pressure", text="")
row.prop(brush, "strength", slider=True)
row.prop(brush, "use_strength_pressure", text="")
# XXX - TODO
#row = col.row(align=True)
#row.itemR(brush, "jitter", slider=True)
#row.itemR(brush, "use_jitter_pressure", toggle=True, text="")
#row.prop(brush, "jitter", slider=True)
#row.prop(brush, "use_jitter_pressure", toggle=True, text="")
col = layout.column()
if brush.sculpt_tool in ('DRAW', 'PINCH', 'INFLATE', 'LAYER', 'CLAY'):
col.row().itemR(brush, "direction", expand=True)
col.row().prop(brush, "direction", expand=True)
if brush.sculpt_tool == 'LAYER':
col.itemR(brush, "use_persistent")
col.itemO("sculpt.set_persistent_base")
col.prop(brush, "use_persistent")
col.operator("sculpt.set_persistent_base")
# Texture Paint Mode #
@@ -567,59 +567,59 @@ class VIEW3D_PT_tools_brush(PaintPanel):
col.item_enumR(settings, "tool", 'SMEAR')
col = layout.column()
col.itemR(brush, "color", text="")
col.prop(brush, "color", text="")
row = col.row(align=True)
row.itemR(brush, "size", slider=True)
row.itemR(brush, "use_size_pressure", toggle=True, text="")
row.prop(brush, "size", slider=True)
row.prop(brush, "use_size_pressure", toggle=True, text="")
row = col.row(align=True)
row.itemR(brush, "strength", slider=True)
row.itemR(brush, "use_strength_pressure", toggle=True, text="")
row.prop(brush, "strength", slider=True)
row.prop(brush, "use_strength_pressure", toggle=True, text="")
row = col.row(align=True)
row.itemR(brush, "jitter", slider=True)
row.itemR(brush, "use_jitter_pressure", toggle=True, text="")
row.prop(brush, "jitter", slider=True)
row.prop(brush, "use_jitter_pressure", toggle=True, text="")
col.itemR(brush, "blend", text="Blend")
col.prop(brush, "blend", text="Blend")
# Weight Paint Mode #
elif context.weight_paint_object and brush:
layout.itemR(context.tool_settings, "vertex_group_weight", text="Weight", slider=True)
layout.itemR(context.tool_settings, "auto_normalize", text="Auto Normalize")
layout.prop(context.tool_settings, "vertex_group_weight", text="Weight", slider=True)
layout.prop(context.tool_settings, "auto_normalize", text="Auto Normalize")
col = layout.column()
row = col.row(align=True)
row.itemR(brush, "size", slider=True)
row.itemR(brush, "use_size_pressure", toggle=True, text="")
row.prop(brush, "size", slider=True)
row.prop(brush, "use_size_pressure", toggle=True, text="")
row = col.row(align=True)
row.itemR(brush, "strength", slider=True)
row.itemR(brush, "use_strength_pressure", toggle=True, text="")
row.prop(brush, "strength", slider=True)
row.prop(brush, "use_strength_pressure", toggle=True, text="")
row = col.row(align=True)
row.itemR(brush, "jitter", slider=True)
row.itemR(brush, "use_jitter_pressure", toggle=True, text="")
row.prop(brush, "jitter", slider=True)
row.prop(brush, "use_jitter_pressure", toggle=True, text="")
# Vertex Paint Mode #
elif context.vertex_paint_object and brush:
col = layout.column()
col.itemR(brush, "color", text="")
col.prop(brush, "color", text="")
row = col.row(align=True)
row.itemR(brush, "size", slider=True)
row.itemR(brush, "use_size_pressure", toggle=True, text="")
row.prop(brush, "size", slider=True)
row.prop(brush, "use_size_pressure", toggle=True, text="")
row = col.row(align=True)
row.itemR(brush, "strength", slider=True)
row.itemR(brush, "use_strength_pressure", toggle=True, text="")
row.prop(brush, "strength", slider=True)
row.prop(brush, "use_strength_pressure", toggle=True, text="")
# XXX - TODO
#row = col.row(align=True)
#row.itemR(brush, "jitter", slider=True)
#row.itemR(brush, "use_jitter_pressure", toggle=True, text="")
#row.prop(brush, "jitter", slider=True)
#row.prop(brush, "use_jitter_pressure", toggle=True, text="")
class VIEW3D_PT_tools_brush_stroke(PaintPanel):
@@ -642,27 +642,27 @@ class VIEW3D_PT_tools_brush_stroke(PaintPanel):
if context.sculpt_object:
if brush.sculpt_tool != 'LAYER':
layout.itemR(brush, "use_anchor")
layout.itemR(brush, "use_rake")
layout.prop(brush, "use_anchor")
layout.prop(brush, "use_rake")
layout.itemR(brush, "use_airbrush")
layout.prop(brush, "use_airbrush")
col = layout.column()
col.active = brush.use_airbrush
col.itemR(brush, "rate", slider=True)
col.prop(brush, "rate", slider=True)
if not texture_paint:
layout.itemR(brush, "use_smooth_stroke")
layout.prop(brush, "use_smooth_stroke")
col = layout.column()
col.active = brush.use_smooth_stroke
col.itemR(brush, "smooth_stroke_radius", text="Radius", slider=True)
col.itemR(brush, "smooth_stroke_factor", text="Factor", slider=True)
col.prop(brush, "smooth_stroke_radius", text="Radius", slider=True)
col.prop(brush, "smooth_stroke_factor", text="Factor", slider=True)
layout.itemR(brush, "use_space")
layout.prop(brush, "use_space")
row = layout.row(align=True)
row.active = brush.use_space
row.itemR(brush, "spacing", text="Distance", slider=True)
row.prop(brush, "spacing", text="Distance", slider=True)
if texture_paint:
row.itemR(brush, "use_spacing_pressure", toggle=True, text="")
row.prop(brush, "use_spacing_pressure", toggle=True, text="")
class VIEW3D_PT_tools_brush_curve(PaintPanel):
@@ -680,7 +680,7 @@ class VIEW3D_PT_tools_brush_curve(PaintPanel):
brush = settings.brush
layout.template_curve_mapping(brush, "curve")
layout.item_menu_enumO("brush.curve_preset", property="shape")
layout.operator_menu_enum("brush.curve_preset", property="shape")
class VIEW3D_PT_sculpt_options(PaintPanel):
@@ -695,22 +695,22 @@ class VIEW3D_PT_sculpt_options(PaintPanel):
sculpt = context.tool_settings.sculpt
col = layout.column()
col.itemR(sculpt, "partial_redraw", text="Partial Refresh")
col.itemR(sculpt, "show_brush")
col.prop(sculpt, "partial_redraw", text="Partial Refresh")
col.prop(sculpt, "show_brush")
split = self.layout.split()
col = split.column()
col.itemL(text="Symmetry:")
col.itemR(sculpt, "symmetry_x", text="X")
col.itemR(sculpt, "symmetry_y", text="Y")
col.itemR(sculpt, "symmetry_z", text="Z")
col.label(text="Symmetry:")
col.prop(sculpt, "symmetry_x", text="X")
col.prop(sculpt, "symmetry_y", text="Y")
col.prop(sculpt, "symmetry_z", text="Z")
col = split.column()
col.itemL(text="Lock:")
col.itemR(sculpt, "lock_x", text="X")
col.itemR(sculpt, "lock_y", text="Y")
col.itemR(sculpt, "lock_z", text="Z")
col.label(text="Lock:")
col.prop(sculpt, "lock_x", text="X")
col.prop(sculpt, "lock_y", text="Y")
col.prop(sculpt, "lock_z", text="Z")
# ********** default tools for weightpaint ****************
@@ -723,12 +723,12 @@ class VIEW3D_PT_tools_weightpaint(View3DPanel):
layout = self.layout
col = layout.column()
# col.itemL(text="Blend:")
col.itemO("object.vertex_group_normalize_all", text="Normalize All")
col.itemO("object.vertex_group_normalize", text="Normalize")
col.itemO("object.vertex_group_invert", text="Invert")
col.itemO("object.vertex_group_clean", text="Clean")
col.itemO("object.vertex_group_levels", text="Levels")
# col.label(text="Blend:")
col.operator("object.vertex_group_normalize_all", text="Normalize All")
col.operator("object.vertex_group_normalize", text="Normalize")
col.operator("object.vertex_group_invert", text="Invert")
col.operator("object.vertex_group_clean", text="Clean")
col.operator("object.vertex_group_levels", text="Levels")
class VIEW3D_PT_tools_weightpaint_options(View3DPanel):
@@ -741,21 +741,21 @@ class VIEW3D_PT_tools_weightpaint_options(View3DPanel):
wpaint = context.tool_settings.weight_paint
col = layout.column()
col.itemL(text="Blend:")
col.itemR(wpaint, "mode", text="")
col.itemR(wpaint, "all_faces")
col.itemR(wpaint, "normals")
col.itemR(wpaint, "spray")
col.label(text="Blend:")
col.prop(wpaint, "mode", text="")
col.prop(wpaint, "all_faces")
col.prop(wpaint, "normals")
col.prop(wpaint, "spray")
data = context.weight_paint_object.data
if type(data) == bpy.types.Mesh:
col.itemR(data, "use_mirror_x")
col.prop(data, "use_mirror_x")
# Commented out because the Apply button isn't an operator yet, making these settings useless
# col.itemL(text="Gamma:")
# col.itemR(wpaint, "gamma", text="")
# col.itemL(text="Multiply:")
# col.itemR(wpaint, "mul", text="")
# col.label(text="Gamma:")
# col.prop(wpaint, "gamma", text="")
# col.label(text="Multiply:")
# col.prop(wpaint, "mul", text="")
# Also missing now:
# Soft, Vgroup, X-Mirror and "Clear" Operator.
@@ -773,17 +773,17 @@ class VIEW3D_PT_tools_vertexpaint(View3DPanel):
vpaint = context.tool_settings.vertex_paint
col = layout.column()
col.itemL(text="Blend:")
col.itemR(vpaint, "mode", text="")
col.itemR(vpaint, "all_faces")
col.itemR(vpaint, "normals")
col.itemR(vpaint, "spray")
col.label(text="Blend:")
col.prop(vpaint, "mode", text="")
col.prop(vpaint, "all_faces")
col.prop(vpaint, "normals")
col.prop(vpaint, "spray")
# Commented out because the Apply button isn't an operator yet, making these settings useless
# col.itemL(text="Gamma:")
# col.itemR(vpaint, "gamma", text="")
# col.itemL(text="Multiply:")
# col.itemR(vpaint, "mul", text="")
# col.label(text="Gamma:")
# col.prop(vpaint, "gamma", text="")
# col.label(text="Multiply:")
# col.prop(vpaint, "mul", text="")
# ********** default tools for texturepaint ****************
@@ -798,7 +798,7 @@ class VIEW3D_PT_tools_projectpaint(View3DPanel):
def draw_header(self, context):
ipaint = context.tool_settings.image_paint
self.layout.itemR(ipaint, "use_projection", text="")
self.layout.prop(ipaint, "use_projection", text="")
def draw(self, context):
layout = self.layout
@@ -810,36 +810,36 @@ class VIEW3D_PT_tools_projectpaint(View3DPanel):
col = layout.column()
sub = col.column()
sub.active = use_projection
sub.itemR(ipaint, "use_occlude")
sub.itemR(ipaint, "use_backface_cull")
sub.prop(ipaint, "use_occlude")
sub.prop(ipaint, "use_backface_cull")
split = layout.split()
col = split.column()
col.active = (use_projection)
col.itemR(ipaint, "use_normal_falloff")
col.prop(ipaint, "use_normal_falloff")
col = split.column()
col.active = (ipaint.use_normal_falloff and use_projection)
col.itemR(ipaint, "normal_angle", text="")
col.prop(ipaint, "normal_angle", text="")
split = layout.split(percentage=0.7)
col = split.column(align=False)
col.active = (use_projection)
col.itemR(ipaint, "use_stencil_layer")
col.prop(ipaint, "use_stencil_layer")
col = split.column(align=False)
col.active = (use_projection and ipaint.use_stencil_layer)
col.itemR(ipaint, "invert_stencil", text="Inv")
col.prop(ipaint, "invert_stencil", text="Inv")
col = layout.column()
sub = col.column()
sub.active = (settings.tool == 'CLONE')
sub.itemR(ipaint, "use_clone_layer")
sub.prop(ipaint, "use_clone_layer")
sub = col.column()
sub.itemR(ipaint, "seam_bleed")
sub.prop(ipaint, "seam_bleed")
class VIEW3D_PT_tools_particlemode(View3DPanel):
@@ -853,7 +853,7 @@ class VIEW3D_PT_tools_particlemode(View3DPanel):
pe = context.tool_settings.particle_edit
ob = pe.object
layout.itemR(pe, "type", text="")
layout.prop(pe, "type", text="")
ptcache = None
@@ -873,36 +873,36 @@ class VIEW3D_PT_tools_particlemode(View3DPanel):
if not pe.editable:
layout.itemL(text="Point cache must be baked")
layout.itemL(text="to enable editing!")
layout.label(text="Point cache must be baked")
layout.label(text="to enable editing!")
col = layout.column(align=True)
if pe.hair:
col.active = pe.editable
col.itemR(pe, "emitter_deflect", text="Deflect emitter")
col.prop(pe, "emitter_deflect", text="Deflect emitter")
sub = col.row()
sub.active = pe.emitter_deflect
sub.itemR(pe, "emitter_distance", text="Distance")
sub.prop(pe, "emitter_distance", text="Distance")
col = layout.column(align=True)
col.active = pe.editable
col.itemL(text="Keep:")
col.itemR(pe, "keep_lengths", text="Lenghts")
col.itemR(pe, "keep_root", text="Root")
col.label(text="Keep:")
col.prop(pe, "keep_lengths", text="Lenghts")
col.prop(pe, "keep_root", text="Root")
if not pe.hair:
col.itemL(text="Correct:")
col.itemR(pe, "auto_velocity", text="Velocity")
col.label(text="Correct:")
col.prop(pe, "auto_velocity", text="Velocity")
col = layout.column(align=True)
col.active = pe.editable
col.itemL(text="Draw:")
col.itemR(pe, "draw_step", text="Path Steps")
col.label(text="Draw:")
col.prop(pe, "draw_step", text="Path Steps")
if pe.type == 'PARTICLES':
col.itemR(pe, "draw_particles", text="Particles")
col.itemR(pe, "fade_time")
col.prop(pe, "draw_particles", text="Particles")
col.prop(pe, "fade_time")
sub = col.row()
sub.active = pe.fade_time
sub.itemR(pe, "fade_frames", slider=True)
sub.prop(pe, "fade_frames", slider=True)
bpy.types.register(VIEW3D_PT_tools_weightpaint)

View File

@@ -142,7 +142,7 @@ void RNA_api_ui_layout(StructRNA *srna)
RNA_def_float(func, "percentage", 0.0f, 0.0f, 1.0f, "Percentage", "Percentage of width to split at.", 0.0f, 1.0f);
/* items */
func= RNA_def_function(srna, "itemR", "rna_uiItemR");
func= RNA_def_function(srna, "prop", "rna_uiItemR");
api_ui_item_common(func);
api_ui_item_rna_common(func);
RNA_def_boolean(func, "expand", 0, "", "Expand button to show more detail.");
@@ -152,10 +152,10 @@ void RNA_api_ui_layout(StructRNA *srna)
RNA_def_boolean(func, "event", 0, "", "Use button to input key events.");
RNA_def_boolean(func, "full_event", 0, "", "Use button to input full events including modifiers.");
func= RNA_def_function(srna, "items_enumR", "uiItemsEnumR");
func= RNA_def_function(srna, "props_enum", "uiItemsEnumR");
api_ui_item_rna_common(func);
func= RNA_def_function(srna, "item_menu_enumR", "uiItemMenuEnumR");
func= RNA_def_function(srna, "prop_menu_enum", "uiItemMenuEnumR");
api_ui_item_common(func);
api_ui_item_rna_common(func);
@@ -165,7 +165,7 @@ void RNA_api_ui_layout(StructRNA *srna)
parm= RNA_def_string(func, "value", "", 0, "", "Enum property value.");
RNA_def_property_flag(parm, PROP_REQUIRED);
func= RNA_def_function(srna, "item_pointerR", "uiItemPointerR");
func= RNA_def_function(srna, "prop_pointer", "uiItemPointerR");
api_ui_item_common(func);
api_ui_item_rna_common(func);
parm= RNA_def_pointer(func, "search_data", "AnyType", "", "Data from which to take collection to search in.");
@@ -173,69 +173,69 @@ void RNA_api_ui_layout(StructRNA *srna)
parm= RNA_def_string(func, "search_property", "", 0, "", "Identifier of search collection property.");
RNA_def_property_flag(parm, PROP_REQUIRED);
func= RNA_def_function(srna, "itemO", "rna_uiItemO");
func= RNA_def_function(srna, "operator", "rna_uiItemO");
api_ui_item_op_common(func);
parm= RNA_def_boolean(func, "properties", 0, "Properties", "Return operator properties to fill in manually.");
parm= RNA_def_pointer(func, "return_properties", "OperatorProperties", "", "Operator properties to fill in, return when 'properties' is set to true.");
RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR);
RNA_def_function_return(func, parm);
func= RNA_def_function(srna, "item_enumO", "uiItemEnumO_string");
func= RNA_def_function(srna, "operator_enum", "uiItemEnumO_string");
api_ui_item_op_common(func);
parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_string(func, "value", "", 0, "", "Enum property value.");
RNA_def_property_flag(parm, PROP_REQUIRED);
func= RNA_def_function(srna, "items_enumO", "uiItemsEnumO");
func= RNA_def_function(srna, "operator_enums", "uiItemsEnumO");
parm= RNA_def_string(func, "operator", "", 0, "", "Identifier of the operator.");
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
RNA_def_property_flag(parm, PROP_REQUIRED);
func= RNA_def_function(srna, "item_menu_enumO", "uiItemMenuEnumO");
func= RNA_def_function(srna, "operator_menu_enum", "uiItemMenuEnumO");
api_ui_item_op_common(func);
parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
RNA_def_property_flag(parm, PROP_REQUIRED);
func= RNA_def_function(srna, "item_booleanO", "uiItemBooleanO");
func= RNA_def_function(srna, "operator_boolean", "uiItemBooleanO");
api_ui_item_op_common(func);
parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_boolean(func, "value", 0, "", "Value of the property to call the operator with.");
RNA_def_property_flag(parm, PROP_REQUIRED);
func= RNA_def_function(srna, "item_intO", "uiItemIntO");
func= RNA_def_function(srna, "operator_int", "uiItemIntO");
api_ui_item_op_common(func);
parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_int(func, "value", 0, INT_MIN, INT_MAX, "", "Value of the property to call the operator with.", INT_MIN, INT_MAX);
RNA_def_property_flag(parm, PROP_REQUIRED);
func= RNA_def_function(srna, "item_floatO", "uiItemFloatO");
func= RNA_def_function(srna, "operator_float", "uiItemFloatO");
api_ui_item_op_common(func);
parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_float(func, "value", 0, -FLT_MAX, FLT_MAX, "", "Value of the property to call the operator with.", -FLT_MAX, FLT_MAX);
RNA_def_property_flag(parm, PROP_REQUIRED);
func= RNA_def_function(srna, "item_stringO", "uiItemStringO");
func= RNA_def_function(srna, "operator_string", "uiItemStringO");
api_ui_item_op_common(func);
parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_string(func, "value", "", 0, "", "Value of the property to call the operator with.");
RNA_def_property_flag(parm, PROP_REQUIRED);
func= RNA_def_function(srna, "itemL", "uiItemL");
func= RNA_def_function(srna, "label", "uiItemL");
api_ui_item_common(func);
func= RNA_def_function(srna, "itemM", "uiItemM");
func= RNA_def_function(srna, "menu", "uiItemM");
RNA_def_function_flag(func, FUNC_USE_CONTEXT);
api_ui_item_common(func);
parm= RNA_def_string(func, "menu", "", 0, "", "Identifier of the menu.");
RNA_def_property_flag(parm, PROP_REQUIRED);
func= RNA_def_function(srna, "itemS", "uiItemS");
func= RNA_def_function(srna, "separator", "uiItemS");
/* context */
func= RNA_def_function(srna, "set_context_pointer", "uiLayoutSetContextPointer");