2.5 Buttons:

* Split the buttons_data.py into separate files, this makes it easier to maintain them. 
Notes: Added an extra modifier file, because modifiers are for different object types.

* Added basic lamp buttons and Sun/Sky settings.
As the camera buttons they only work for the default light object for now.

* Some minor code cleanup
This commit is contained in:
Thomas Dinges 2009-05-08 18:17:57 +00:00
parent f8b929b8e2
commit bf2daa56c1
3 changed files with 181 additions and 61 deletions

@ -6,63 +6,13 @@ class DataButtonsPanel(bpy.types.Panel):
__region_type__ = "WINDOW" __region_type__ = "WINDOW"
__context__ = "data" __context__ = "data"
class DATA_PT_modifiers(DataButtonsPanel):
__idname__ = "DATA_PT_modifiers"
__label__ = "Modifiers"
def poll(self, context): def poll(self, context):
ob = context.active_object ob = context.active_object
return (ob and ob.type in ("MESH", "CURVE", "SURFACE", "TEXT", "LATTICE")) return (ob and ob.type == 'CAMERA')
def draw(self, context):
ob = context.active_object
layout = self.layout
if not ob:
return
layout.row()
layout.item_menu_enumO("OBJECT_OT_modifier_add", "type")
for md in ob.modifiers:
sub = layout.box()
sub.row()
sub.itemR(md, "expanded", text="")
sub.itemR(md, "name", text="")
sub.itemR(md, "render", text="")
sub.itemR(md, "realtime", text="")
sub.itemR(md, "editmode", text="")
sub.itemR(md, "on_cage", text="")
if md.expanded:
sub.row()
sub.itemS()
if md.type == "ARMATURE":
self.armature(sub, md)
def armature(self, layout, md):
layout.column()
layout.itemR(md, "object")
layout.row()
layout.itemR(md, "vertex_group")
layout.itemR(md, "invert")
layout.column_flow()
layout.itemR(md, "use_vertex_groups")
layout.itemR(md, "use_bone_envelopes")
layout.itemR(md, "quaternion")
layout.itemR(md, "b_bone_rest")
layout.itemR(md, "multi_modifier")
class DATA_PT_cameralens(DataButtonsPanel): class DATA_PT_cameralens(DataButtonsPanel):
__idname__ = "DATA_PT_camera" __idname__ = "DATA_PT_camera"
__label__ = "Lens" __label__ = "Lens"
def poll(self, context):
ob = context.active_object
return (ob and ob.type == "CAMERA")
def draw(self, context): def draw(self, context):
cam = context.main.cameras[0] cam = context.main.cameras[0]
@ -75,13 +25,13 @@ class DATA_PT_cameralens(DataButtonsPanel):
layout.itemR(cam, "type", expand=True) layout.itemR(cam, "type", expand=True)
layout.row() layout.row()
if cam.type == 'PERSP': if (cam.type == 'PERSP'):
layout.itemR(cam, "lens_unit") layout.itemR(cam, "lens_unit")
if cam.lens_unit == 'MILLIMETERS': if (cam.lens_unit == 'MILLIMETERS'):
layout.itemR(cam, "lens", text="Angle") layout.itemR(cam, "lens", text="Angle")
if cam.lens_unit == 'DEGREES': if (cam.lens_unit == 'DEGREES'):
layout.itemR(cam, "angle") layout.itemR(cam, "angle")
if cam.type == 'ORTHO': if (cam.type == 'ORTHO'):
layout.itemR(cam, "ortho_scale") layout.itemR(cam, "ortho_scale")
layout.column_flow() layout.column_flow()
@ -100,10 +50,6 @@ class DATA_PT_cameradisplay(DataButtonsPanel):
__idname__ = "DATA_PT_cameradisplay" __idname__ = "DATA_PT_cameradisplay"
__label__ = "Display" __label__ = "Display"
def poll(self, context):
ob = context.active_object
return (ob and ob.type == "CAMERA")
def draw(self, context): def draw(self, context):
cam = context.main.cameras[0] cam = context.main.cameras[0]
layout = self.layout layout = self.layout
@ -129,7 +75,7 @@ class DATA_PT_cameradisplay(DataButtonsPanel):
sub.row() sub.row()
sub.itemR(cam, "draw_size", text="Size") sub.itemR(cam, "draw_size", text="Size")
bpy.types.register(DATA_PT_modifiers)
bpy.types.register(DATA_PT_cameralens) bpy.types.register(DATA_PT_cameralens)
bpy.types.register(DATA_PT_cameradisplay) bpy.types.register(DATA_PT_cameradisplay)

@ -0,0 +1,113 @@
import bpy
class DataButtonsPanel(bpy.types.Panel):
__space_type__ = "BUTTONS_WINDOW"
__region_type__ = "WINDOW"
__context__ = "data"
def poll(self, context):
ob = context.active_object
return (ob and ob.type == "LAMP")
class DATA_PT_lamp(DataButtonsPanel):
__idname__ = "DATA_PT_lamp"
__label__ = "Lamp"
def draw(self, context):
lamp = context.main.lamps[0]
layout = self.layout
if not lamp:
return
layout.row()
layout.itemR(lamp, "type", expand=True)
layout.split(number=2)
sub = layout.sub(0)
sub.column()
sub.itemL(text="LAMP DATABLOCKS")
sub.itemR(lamp, "energy")
sub.itemR(lamp, "distance")
sub.itemR(lamp, "color")
sub = layout.sub(1)
sub.column()
sub.itemL(text="Illumination:")
sub.itemR(lamp, "layer")
sub.itemR(lamp, "negative")
sub.itemR(lamp, "specular")
sub.itemR(lamp, "diffuse")
if (lamp.type in ('LOCAL', 'SPOT')):
sub.column()
sub.itemR(lamp, "falloff_type")
sub.itemR(lamp, "sphere")
if (lamp.falloff_type == 'LINEAR_QUADRATIC_WEIGHTED'):
sub.itemR(lamp, "linear_attenuation")
sub.itemR(lamp, "quadratic_attenuation")
if (lamp.type == 'AREA'):
sub.column()
sub.itemR(lamp, "gamma")
sub.itemR(lamp, "shape")
if (lamp.shape == 'SQUARE'):
sub.itemR(lamp, "size")
if (lamp.shape == 'RECTANGLE'):
sub.itemR(lamp, "size", text="Size X")
sub.itemR(lamp, "size_y")
class DATA_PT_sunsky(DataButtonsPanel):
__idname__ = "DATA_PT_sunsky"
__label__ = "Sun/Sky"
def poll(self, context):
ob = context.active_object
lamp = context.main.lamps[0]
return (ob.type == 'LAMP' and lamp.type == 'SUN')
def draw(self, context):
lamp = context.main.lamps[0].sky
layout = self.layout
if not lamp:
return
layout.row()
layout.itemR(lamp, "sky")
layout.itemR(lamp, "atmosphere")
if (lamp.sky or lamp.atmosphere):
layout.row()
layout.itemR(lamp, "atmosphere_turbidity", text="Turbidity")
layout.split(number=2)
if (lamp.sky):
sub = layout.sub(0)
sub.column()
sub.itemR(lamp, "horizon_brightness", text="Hor Bright")
sub.itemR(lamp, "spread", text="Hor Spread")
sub.itemR(lamp, "sun_brightness", text="Sun Bright")
sub.itemR(lamp, "sun_size")
sub.itemR(lamp, "backscattered_light", text="Back Light")
sub.column()
sub.itemR(lamp, "sky_blend_type", text="Blend Type")
sub.itemR(lamp, "sky_blend")
sub.itemR(lamp, "sky_color_space", text="Color Space")
sub.itemR(lamp, "sky_exposure")
if (lamp.atmosphere):
sub = layout.sub(1)
sub.column()
sub.itemR(lamp, "sun_intensity", text="Sun Intens")
sub.itemR(lamp, "atmosphere_inscattering", text="Inscattering")
sub.itemR(lamp, "atmosphere_extinction", text="Extinction")
sub.itemR(lamp, "atmosphere_distance_factor", text="Distance")
bpy.types.register(DATA_PT_lamp)
bpy.types.register(DATA_PT_sunsky)

@ -0,0 +1,61 @@
import bpy
class DataButtonsPanel(bpy.types.Panel):
__space_type__ = "BUTTONS_WINDOW"
__region_type__ = "WINDOW"
__context__ = "data"
def poll(self, context):
ob = context.active_object
return (ob and ob.type in ('MESH', 'CURVE', 'SURFACE', 'TEXT', 'LATTICE'))
class DATA_PT_modifiers(DataButtonsPanel):
__idname__ = "DATA_PT_modifiers"
__label__ = "Modifiers"
def draw(self, context):
ob = context.active_object
layout = self.layout
if not ob:
return
layout.row()
layout.item_menu_enumO("OBJECT_OT_modifier_add", "type")
for md in ob.modifiers:
sub = layout.box()
sub.row()
sub.itemR(md, "expanded", text="")
sub.itemR(md, "name", text="")
sub.itemR(md, "render", text="")
sub.itemR(md, "realtime", text="")
sub.itemR(md, "editmode", text="")
sub.itemR(md, "on_cage", text="")
if (md.expanded):
sub.row()
sub.itemS()
if (md.type == 'ARMATURE'):
self.armature(sub, md)
def armature(self, layout, md):
layout.column()
layout.itemR(md, "object")
layout.row()
layout.itemR(md, "vertex_group")
layout.itemR(md, "invert")
layout.column_flow()
layout.itemR(md, "use_vertex_groups")
layout.itemR(md, "use_bone_envelopes")
layout.itemR(md, "quaternion")
layout.itemR(md, "b_bone_rest")
layout.itemR(md, "multi_modifier")
bpy.types.register(DATA_PT_modifiers)