synched with trunk at revision 36569
[blender.git] / release / scripts / startup / bl_ui / properties_data_modifier.py
@@ -59,16 +59,15 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
         col.prop(md, "use_vertex_groups", text="Vertex Groups")
         col.prop(md, "use_bone_envelopes", text="Bone Envelopes")
 
-        split = layout.split()
+        layout.separator()
 
-        col = split.split()
-        col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
-        sub = col.column()
+        row = layout.row()
+        row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
+        sub = row.row()
         sub.active = bool(md.vertex_group)
         sub.prop(md, "invert_vertex_group")
 
-        col = layout.column()
-        col.prop(md, "use_multi_modifier")
+        layout.prop(md, "use_multi_modifier")
 
     def ARRAY(self, layout, ob, md):
         layout.prop(md, "fit_type")
@@ -113,18 +112,14 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
 
         layout.separator()
 
-        col = layout.column()
-        col.prop(md, "start_cap")
-        col.prop(md, "end_cap")
+        layout.prop(md, "start_cap")
+        layout.prop(md, "end_cap")
 
     def BEVEL(self, layout, ob, md):
         split = layout.split()
 
-        col = split.column()
-        col.prop(md, "width")
-
-        col = split.column()
-        col.prop(md, "use_only_vertices")
+        split.prop(md, "width")
+        split.prop(md, "use_only_vertices")
 
         layout.label(text="Limit Method:")
         layout.row().prop(md, "limit_method", expand=True)
@@ -188,10 +183,10 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
             col.prop(md, "use_transform")
 
     def CLOTH(self, layout, ob, md):
-        layout.label(text="See Cloth panel.")
+        layout.label(text="Settings can be found inside the Physics context")
 
     def COLLISION(self, layout, ob, md):
-        layout.label(text="See Collision panel.")
+        layout.label(text="Settings can be found inside the Physics context")
 
     def CURVE(self, layout, ob, md):
         split = layout.split()
@@ -214,7 +209,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
 
         col = split.column()
         col.label(text="Texture:")
-        col.prop(md, "texture", text="")
+        col.template_ID(md, "texture", new="texture.new")
         col.label(text="Vertex Group:")
         col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
 
@@ -230,13 +225,9 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
 
         layout.separator()
 
-        split = layout.split()
-
-        col = split.column()
-        col.prop(md, "mid_level")
-
-        col = split.column()
-        col.prop(md, "strength")
+        row = layout.row()
+        row.prop(md, "mid_level")
+        row.prop(md, "strength")
 
     def EDGE_SPLIT(self, layout, ob, md):
         split = layout.split()
@@ -247,8 +238,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
         sub.active = md.use_edge_angle
         sub.prop(md, "split_angle")
 
-        col = split.column()
-        col.prop(md, "use_edge_sharp", text="Sharp Edges")
+        split.prop(md, "use_edge_sharp", text="Sharp Edges")
 
     def EXPLODE(self, layout, ob, md):
         split = layout.split()
@@ -259,9 +249,11 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
         sub = col.column()
         sub.active = bool(md.vertex_group)
         sub.prop(md, "protect")
+        col.label(text="Particle UV")
+        col.prop_search(md, "particle_uv", ob.data, "uv_textures", text="")
 
         col = split.column()
-        col.prop(md, "use_edge_split")
+        col.prop(md, "use_edge_cut")
         col.prop(md, "show_unborn")
         col.prop(md, "show_alive")
         col.prop(md, "show_dead")
@@ -270,7 +262,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
         layout.operator("object.explode_refresh", text="Refresh")
 
     def FLUID_SIMULATION(self, layout, ob, md):
-        layout.label(text="See Fluid panel.")
+        layout.label(text="Settings can be found inside the Physics context")
 
     def HOOK(self, layout, ob, md):
         split = layout.split()
@@ -334,6 +326,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
 
     def MESH_DEFORM(self, layout, ob, md):
         split = layout.split()
+
         col = split.column()
         sub = col.column()
         sub.label(text="Object:")
@@ -354,13 +347,9 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
         else:
             layout.operator("object.meshdeform_bind", text="Bind")
 
-            split = layout.split()
-
-            col = split.column()
-            col.prop(md, "precision")
-
-            col = split.column()
-            col.prop(md, "use_dynamic_bind")
+            row = layout.row()
+            row.prop(md, "precision")
+            row.prop(md, "use_dynamic_bind")
 
     def MIRROR(self, layout, ob, md):
         split = layout.split(percentage=0.25)
@@ -383,7 +372,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
         col.prop(md, "use_mirror_v", text="V")
 
         col = layout.column()
-        
+
         if md.use_mirror_merge == True:
             col.prop(md, "merge_threshold")
         col.label(text="Mirror Object:")
@@ -393,9 +382,9 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
         split = layout.split()
         if ob.mode == 'EDIT':
             col = split.column()
-            col.operator("object.assign_navpolygon", text="Assign poly idx")
-            col = split.column()
-            col.operator("object.assign_new_navpolygon", text="Assign new poly idx")
+        col.operator("object.assign_navpolygon", text="Assign poly idx")
+        col = split.column()
+        col.operator("object.assign_new_navpolygon", text="Assign new poly idx")
 
     def MULTIRES(self, layout, ob, md):
         layout.row().prop(md, "subdivision_type", expand=True)
@@ -460,7 +449,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
         col.prop(md, "random_position", text="Random", slider=True)
 
     def PARTICLE_SYSTEM(self, layout, ob, md):
-        layout.label(text="See Particle panel.")
+        layout.label(text="Settings can be found inside the Particle context")
 
     def SCREW(self, layout, ob, md):
         split = layout.split()
@@ -520,8 +509,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
             col = split.column()
 
             col.label(text="Cull Faces:")
-            col.prop(md, "use_cull_front_faces", text="Front")
-            col.prop(md, "use_cull_back_faces", text="Back")
+            col.prop(md, "cull_face", expand=True)
 
             layout.label(text="Auxiliary Target:")
             layout.prop(md, "auxiliary_target", text="")
@@ -553,12 +541,12 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
         col.label(text="Deform:")
         col.prop(md, "factor")
         col.prop(md, "limits", slider=True)
-        if md.deform_method in ('TAPER', 'STRETCH'):
+        if md.deform_method in {'TAPER', 'STRETCH'}:
             col.prop(md, "lock_x")
             col.prop(md, "lock_y")
 
     def SMOKE(self, layout, ob, md):
-        layout.label(text="See Smoke panel.")
+        layout.label(text="Settings can be found inside the Physics context")
 
     def SMOOTH(self, layout, ob, md):
         split = layout.split(percentage=0.25)
@@ -576,10 +564,9 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
         col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
 
     def SOFT_BODY(self, layout, ob, md):
-        layout.label(text="See Soft Body panel.")
+        layout.label(text="Settings can be found inside the Physics context")
 
     def SOLIDIFY(self, layout, ob, md):
-
         split = layout.split()
 
         col = split.column()
@@ -590,21 +577,26 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
         col.prop(md, "edge_crease_inner", text="Inner")
         col.prop(md, "edge_crease_outer", text="Outer")
         col.prop(md, "edge_crease_rim", text="Rim")
+        col.label(text="Material Index Offset:")
 
         col = split.column()
 
         col.prop(md, "offset")
-        colsub = col.column()
-        colsub.active = bool(md.vertex_group)
-        colsub.prop(md, "invert_vertex_group", text="Invert")
+        sub = col.column()
+        sub.active = bool(md.vertex_group)
+        sub.prop(md, "invert_vertex_group", text="Invert")
 
         col.prop(md, "use_even_offset")
         col.prop(md, "use_quality_normals")
-
         col.prop(md, "use_rim")
-        colsub = col.column()
-        colsub.active = md.use_rim
-        colsub.prop(md, "use_rim_material")
+
+        sub = col.column()
+        sub.label()
+        row = sub.split(align=True, percentage=0.4)
+        row.prop(md, "material_offset", text="")
+        row = row.row()
+        row.active = md.use_rim
+        row.prop(md, "material_offset_rim", text="Rim")
 
     def SUBSURF(self, layout, ob, md):
         layout.row().prop(md, "subdivision_type", expand=True)
@@ -621,7 +613,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
         col.prop(md, "show_only_control_edges")
 
     def SURFACE(self, layout, ob, md):
-        layout.label(text="See Fields panel.")
+        layout.label(text="Settings can be found inside the Physics context")
 
     def UV_PROJECT(self, layout, ob, md):
         if ob.type == 'MESH':
@@ -651,6 +643,48 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
             sub.prop(md, "scale_x", text="Scale X")
             sub.prop(md, "scale_y", text="Scale Y")
 
+    def WARP(self, layout, ob, md):
+        use_falloff = (md.falloff_type != 'NONE')
+        split = layout.split()
+
+        col = split.column()
+        col.label(text="From:")
+        col.prop(md, "object_from", text="")
+
+        col.prop(md, "use_volume_preserve")
+
+        col = split.column()
+        col.label(text="To:")
+        col.prop(md, "object_to", text="")
+        col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
+
+        col = layout.column()
+
+        row = col.row(align=True)
+        row.prop(md, "strength")
+        if use_falloff:
+            row.prop(md, "falloff_radius")
+
+        col.prop(md, "falloff_type")
+        if use_falloff:
+            if md.falloff_type == 'CURVE':
+                col.template_curve_mapping(md, "falloff_curve")
+
+        # 2 new columns
+        split = layout.split()
+        col = split.column()
+        col.label(text="Texture:")
+        col.prop(md, "texture", text="")
+
+        col = split.column()
+        col.label(text="Texture Coordinates:")
+        col.prop(md, "texture_coords", text="")
+
+        if md.texture_coords == 'OBJECT':
+            layout.prop(md, "texture_coordinate_object", text="Object")
+        elif md.texture_coords == 'UV' and ob.type == 'MESH':
+            layout.prop_search(md, "uv_layer", ob.data, "uv_textures")
+
     def WAVE(self, layout, ob, md):
         split = layout.split()
 
@@ -688,7 +722,11 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
 
         layout.prop(md, "start_position_object")
         layout.prop_search(md, "vertex_group", ob, "vertex_groups")
-        layout.prop(md, "texture")
+        split = layout.split(percentage=0.33)
+        col = split.column()
+        col.label(text="Texture")
+        col = split.column()
+        col.template_ID(md, "texture", new="texture.new")
         layout.prop(md, "texture_coords")
         if md.texture_coords == 'MAP_UV' and ob.type == 'MESH':
             layout.prop_search(md, "uv_layer", ob.data, "uv_textures")
@@ -707,13 +745,5 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
         col.prop(md, "width", slider=True)
         col.prop(md, "narrowness", slider=True)
 
-
-def register():
+if __name__ == "__main__":  # only for live edit.
     bpy.utils.register_module(__name__)
-
-
-def unregister():
-    bpy.utils.unregister_module(__name__)
-
-if __name__ == "__main__":
-    register()