UI:
* Fix context.cloth, was not being set correct. * Fix errors with context pinning, scripts should not assume context.object to be there. * Always show preview even if e.g. the material is not set, to keep ID buttons from jumping while you're using them.
This commit is contained in:
@@ -14,7 +14,7 @@ class DATA_PT_skeleton(DataButtonsPanel):
|
|||||||
__label__ = "Skeleton"
|
__label__ = "Skeleton"
|
||||||
|
|
||||||
def poll(self, context):
|
def poll(self, context):
|
||||||
return (context.object.type == 'ARMATURE' or context.armature)
|
return ((context.object and context.object.type == 'ARMATURE') or context.armature)
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
@@ -127,4 +127,4 @@ class DATA_PT_ghost(DataButtonsPanel):
|
|||||||
bpy.types.register(DATA_PT_skeleton)
|
bpy.types.register(DATA_PT_skeleton)
|
||||||
bpy.types.register(DATA_PT_display)
|
bpy.types.register(DATA_PT_display)
|
||||||
bpy.types.register(DATA_PT_paths)
|
bpy.types.register(DATA_PT_paths)
|
||||||
bpy.types.register(DATA_PT_ghost)
|
bpy.types.register(DATA_PT_ghost)
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class DATA_PT_camera(DataButtonsPanel):
|
|||||||
__label__ = "Lens"
|
__label__ = "Lens"
|
||||||
|
|
||||||
def poll(self, context):
|
def poll(self, context):
|
||||||
return (context.object.type == 'CAMERA')
|
return (context.object and context.object.type == 'CAMERA')
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
@@ -87,4 +87,4 @@ class DATA_PT_camera_display(DataButtonsPanel):
|
|||||||
col.itemR(cam, "draw_size", text="Size")
|
col.itemR(cam, "draw_size", text="Size")
|
||||||
|
|
||||||
bpy.types.register(DATA_PT_camera)
|
bpy.types.register(DATA_PT_camera)
|
||||||
bpy.types.register(DATA_PT_camera_display)
|
bpy.types.register(DATA_PT_camera_display)
|
||||||
|
|||||||
@@ -7,14 +7,14 @@ class DataButtonsPanel(bpy.types.Panel):
|
|||||||
__context__ = "data"
|
__context__ = "data"
|
||||||
|
|
||||||
def poll(self, context):
|
def poll(self, context):
|
||||||
return (context.object.type == 'CURVE' and context.curve)
|
return (context.object and context.object.type == 'CURVE' and context.curve)
|
||||||
|
|
||||||
class DATA_PT_shape_curve(DataButtonsPanel):
|
class DATA_PT_shape_curve(DataButtonsPanel):
|
||||||
__idname__ = "DATA_PT_shape_curve"
|
__idname__ = "DATA_PT_shape_curve"
|
||||||
__label__ = "Shape"
|
__label__ = "Shape"
|
||||||
|
|
||||||
def poll(self, context):
|
def poll(self, context):
|
||||||
return (context.object.type == 'CURVE')
|
return (context.object and context.object.type == 'CURVE')
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
@@ -144,4 +144,4 @@ class DATA_PT_current_curve(DataButtonsPanel):
|
|||||||
bpy.types.register(DATA_PT_shape_curve)
|
bpy.types.register(DATA_PT_shape_curve)
|
||||||
bpy.types.register(DATA_PT_geometry)
|
bpy.types.register(DATA_PT_geometry)
|
||||||
bpy.types.register(DATA_PT_pathanim)
|
bpy.types.register(DATA_PT_pathanim)
|
||||||
bpy.types.register(DATA_PT_current_curve)
|
bpy.types.register(DATA_PT_current_curve)
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ class DataButtonsPanel(bpy.types.Panel):
|
|||||||
__context__ = "data"
|
__context__ = "data"
|
||||||
|
|
||||||
def poll(self, context):
|
def poll(self, context):
|
||||||
return (context.object.type == 'EMPTY')
|
return (context.object and context.object.type == 'EMPTY')
|
||||||
|
|
||||||
class DATA_PT_empty(DataButtonsPanel):
|
class DATA_PT_empty(DataButtonsPanel):
|
||||||
__idname__ = "DATA_PT_empty"
|
__idname__ = "DATA_PT_empty"
|
||||||
@@ -20,4 +20,4 @@ class DATA_PT_empty(DataButtonsPanel):
|
|||||||
layout.itemR(ob, "empty_draw_type")
|
layout.itemR(ob, "empty_draw_type")
|
||||||
layout.itemR(ob, "empty_draw_size")
|
layout.itemR(ob, "empty_draw_size")
|
||||||
|
|
||||||
bpy.types.register(DATA_PT_empty)
|
bpy.types.register(DATA_PT_empty)
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ class DATA_PT_lamp(DataButtonsPanel):
|
|||||||
__label__ = "Lamp"
|
__label__ = "Lamp"
|
||||||
|
|
||||||
def poll(self, context):
|
def poll(self, context):
|
||||||
return (context.object.type == 'LAMP')
|
return ((context.object and context.object.type == 'LAMP') or context.lamp)
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
@@ -249,4 +249,4 @@ bpy.types.register(DATA_PT_lamp)
|
|||||||
bpy.types.register(DATA_PT_shadow)
|
bpy.types.register(DATA_PT_shadow)
|
||||||
bpy.types.register(DATA_PT_sunsky)
|
bpy.types.register(DATA_PT_sunsky)
|
||||||
bpy.types.register(DATA_PT_spot)
|
bpy.types.register(DATA_PT_spot)
|
||||||
bpy.types.register(DATA_PT_falloff_curve)
|
bpy.types.register(DATA_PT_falloff_curve)
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class DATA_PT_lattice(DataButtonsPanel):
|
|||||||
__label__ = "Lattice"
|
__label__ = "Lattice"
|
||||||
|
|
||||||
def poll(self, context):
|
def poll(self, context):
|
||||||
return (context.object.type == 'LATTICE')
|
return (context.object and context.object.type == 'LATTICE')
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
@@ -51,4 +51,4 @@ class DATA_PT_lattice(DataButtonsPanel):
|
|||||||
row.itemR(lat, "outside")
|
row.itemR(lat, "outside")
|
||||||
row.itemR(lat, "shape_keys")
|
row.itemR(lat, "shape_keys")
|
||||||
|
|
||||||
bpy.types.register(DATA_PT_lattice)
|
bpy.types.register(DATA_PT_lattice)
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class DATA_PT_mesh(DataButtonsPanel):
|
|||||||
__label__ = "Mesh"
|
__label__ = "Mesh"
|
||||||
|
|
||||||
def poll(self, context):
|
def poll(self, context):
|
||||||
return (context.object.type == 'MESH')
|
return (context.object and context.object.type == 'MESH')
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
@@ -48,4 +48,4 @@ class DATA_PT_mesh(DataButtonsPanel):
|
|||||||
|
|
||||||
layout.itemR(mesh, "texco_mesh")
|
layout.itemR(mesh, "texco_mesh")
|
||||||
|
|
||||||
bpy.types.register(DATA_PT_mesh)
|
bpy.types.register(DATA_PT_mesh)
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ class DataButtonsPanel(bpy.types.Panel):
|
|||||||
__context__ = "data"
|
__context__ = "data"
|
||||||
|
|
||||||
def poll(self, context):
|
def poll(self, context):
|
||||||
return (context.object.type == 'TEXT' and context.curve)
|
return (context.object and context.object.type == 'TEXT' and context.curve)
|
||||||
|
|
||||||
class DATA_PT_shape_text(DataButtonsPanel):
|
class DATA_PT_shape_text(DataButtonsPanel):
|
||||||
__idname__ = "DATA_PT_shape_text"
|
__idname__ = "DATA_PT_shape_text"
|
||||||
@@ -15,7 +15,7 @@ class DATA_PT_shape_text(DataButtonsPanel):
|
|||||||
|
|
||||||
def poll(self, context):
|
def poll(self, context):
|
||||||
ob = context.object
|
ob = context.object
|
||||||
return (context.object.type == 'TEXT')
|
return (context.object and context.object.type == 'TEXT')
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ class MATERIAL_PT_preview(MaterialButtonsPanel):
|
|||||||
__idname__= "MATERIAL_PT_preview"
|
__idname__= "MATERIAL_PT_preview"
|
||||||
__label__ = "Preview"
|
__label__ = "Preview"
|
||||||
|
|
||||||
|
def poll(self, context):
|
||||||
|
return (context.material or context.material_slot)
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
mat = context.material
|
mat = context.material
|
||||||
@@ -24,7 +27,7 @@ class MATERIAL_PT_material(MaterialButtonsPanel):
|
|||||||
__label__ = "Material"
|
__label__ = "Material"
|
||||||
|
|
||||||
def poll(self, context):
|
def poll(self, context):
|
||||||
return (context.object != None)
|
return (context.material or context.material_slot)
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
@@ -419,4 +422,4 @@ bpy.types.register(MATERIAL_PT_raytransp)
|
|||||||
bpy.types.register(MATERIAL_PT_sss)
|
bpy.types.register(MATERIAL_PT_sss)
|
||||||
bpy.types.register(MATERIAL_PT_halo)
|
bpy.types.register(MATERIAL_PT_halo)
|
||||||
bpy.types.register(MATERIAL_PT_strand)
|
bpy.types.register(MATERIAL_PT_strand)
|
||||||
bpy.types.register(MATERIAL_PT_options)
|
bpy.types.register(MATERIAL_PT_options)
|
||||||
|
|||||||
@@ -50,13 +50,13 @@ class Physic_PT_cloth_collision(PhysicButtonsPanel):
|
|||||||
|
|
||||||
def draw_header(self, context):
|
def draw_header(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
cloth = context.cloth.settings
|
cloth = context.cloth.collision_settings
|
||||||
|
|
||||||
layout.itemR(cloth, "enable_collision", text="")
|
layout.itemR(cloth, "enable_collision", text="")
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
cloth = context.cloth.settings
|
cloth = context.cloth.collision_settings
|
||||||
|
|
||||||
layout.active = cloth.enable_collision
|
layout.active = cloth.enable_collision
|
||||||
|
|
||||||
@@ -103,4 +103,4 @@ class Physic_PT_cloth_stiffness(PhysicButtonsPanel):
|
|||||||
|
|
||||||
bpy.types.register(Physic_PT_cloth)
|
bpy.types.register(Physic_PT_cloth)
|
||||||
bpy.types.register(Physic_PT_cloth_collision)
|
bpy.types.register(Physic_PT_cloth_collision)
|
||||||
bpy.types.register(Physic_PT_cloth_stiffness)
|
bpy.types.register(Physic_PT_cloth_stiffness)
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ class TEXTURE_PT_preview(TextureButtonsPanel):
|
|||||||
__idname__= "TEXTURE_PT_preview"
|
__idname__= "TEXTURE_PT_preview"
|
||||||
__label__ = "Preview"
|
__label__ = "Preview"
|
||||||
|
|
||||||
|
def poll(self, context):
|
||||||
|
return (context.material or context.world or context.lamp or context.texture)
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
tex = context.texture
|
tex = context.texture
|
||||||
@@ -24,7 +27,7 @@ class TEXTURE_PT_texture(TextureButtonsPanel):
|
|||||||
__label__ = "Texture"
|
__label__ = "Texture"
|
||||||
|
|
||||||
def poll(self, context):
|
def poll(self, context):
|
||||||
return (context.material or context.world or context.lamp)
|
return (context.material or context.world or context.lamp or context.texture)
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|||||||
@@ -12,6 +12,9 @@ class WorldButtonsPanel(bpy.types.Panel):
|
|||||||
class WORLD_PT_preview(WorldButtonsPanel):
|
class WORLD_PT_preview(WorldButtonsPanel):
|
||||||
__label__ = "Preview"
|
__label__ = "Preview"
|
||||||
|
|
||||||
|
def poll(self, context):
|
||||||
|
return (context.scene or context.world)
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
world = context.world
|
world = context.world
|
||||||
@@ -176,4 +179,4 @@ bpy.types.register(WORLD_PT_world)
|
|||||||
bpy.types.register(WORLD_PT_ambient_occlusion)
|
bpy.types.register(WORLD_PT_ambient_occlusion)
|
||||||
bpy.types.register(WORLD_PT_mist)
|
bpy.types.register(WORLD_PT_mist)
|
||||||
bpy.types.register(WORLD_PT_stars)
|
bpy.types.register(WORLD_PT_stars)
|
||||||
bpy.types.register(WORLD_PT_color_correction)
|
bpy.types.register(WORLD_PT_color_correction)
|
||||||
|
|||||||
@@ -574,8 +574,14 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if(CTX_data_equals(member, "cloth")) {
|
else if(CTX_data_equals(member, "cloth")) {
|
||||||
set_pointer_type(path, result, &RNA_ClothModifier);
|
PointerRNA *ptr= get_pointer_type(path, &RNA_Object);
|
||||||
return 1;
|
|
||||||
|
if(ptr && ptr->data) {
|
||||||
|
Object *ob= ptr->data;
|
||||||
|
ModifierData *md= modifiers_findByType(ob, eModifierType_Cloth);
|
||||||
|
CTX_data_pointer_set(result, &ob->id, &RNA_ClothModifier, md);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(CTX_data_equals(member, "soft_body")) {
|
else if(CTX_data_equals(member, "soft_body")) {
|
||||||
PointerRNA *ptr= get_pointer_type(path, &RNA_Object);
|
PointerRNA *ptr= get_pointer_type(path, &RNA_Object);
|
||||||
|
|||||||
Reference in New Issue
Block a user