| 
									
										
										
										
											2011-08-01 11:44:20 +00:00
										 |  |  | # ##### BEGIN GPL LICENSE BLOCK ##### | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | #  This program is free software; you can redistribute it and/or | 
					
						
							|  |  |  | #  modify it under the terms of the GNU General Public License | 
					
						
							|  |  |  | #  as published by the Free Software Foundation; either version 2 | 
					
						
							|  |  |  | #  of the License, or (at your option) any later version. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | #  This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  | #  but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  | #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  | #  GNU General Public License for more details. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | #  You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  | #  along with this program; if not, write to the Free Software Foundation, | 
					
						
							|  |  |  | #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # ##### END GPL LICENSE BLOCK ##### | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # <pep8 compliant> | 
					
						
							|  |  |  | import bpy | 
					
						
							| 
									
										
										
										
											2011-11-11 03:28:46 +00:00
										 |  |  | from bpy.types import Panel | 
					
						
							| 
									
										
										
										
											2011-08-01 11:44:20 +00:00
										 |  |  | from rna_prop_ui import PropertyPanel | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DataButtonsPanel(): | 
					
						
							|  |  |  |     bl_space_type = 'PROPERTIES' | 
					
						
							|  |  |  |     bl_region_type = 'WINDOW' | 
					
						
							|  |  |  |     bl_context = "data" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def poll(cls, context): | 
					
						
							|  |  |  |         engine = context.scene.render.engine | 
					
						
							|  |  |  |         return context.speaker and (engine in cls.COMPAT_ENGINES) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-11 03:28:46 +00:00
										 |  |  | class DATA_PT_context_speaker(DataButtonsPanel, Panel): | 
					
						
							| 
									
										
										
										
											2011-08-01 11:44:20 +00:00
										 |  |  |     bl_label = "" | 
					
						
							|  |  |  |     bl_options = {'HIDE_HEADER'} | 
					
						
							|  |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         ob = context.object | 
					
						
							|  |  |  |         speaker = context.speaker | 
					
						
							|  |  |  |         space = context.space_data | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         split = layout.split(percentage=0.65) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ob: | 
					
						
							|  |  |  |             split.template_ID(ob, "data") | 
					
						
							|  |  |  |         elif speaker: | 
					
						
							|  |  |  |             split.template_ID(space, "pin_id") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-11 03:28:46 +00:00
										 |  |  | class DATA_PT_speaker(DataButtonsPanel, Panel): | 
					
						
							| 
									
										
										
										
											2011-08-01 11:44:20 +00:00
										 |  |  |     bl_label = "Sound" | 
					
						
							|  |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER'} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         speaker = context.speaker | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         split = layout.split(percentage=0.75) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-11 11:41:24 +00:00
										 |  |  |         split.template_ID(speaker, "sound", open="sound.open_mono") | 
					
						
							| 
									
										
										
										
											2011-08-01 11:44:20 +00:00
										 |  |  |         split.prop(speaker, "muted") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-30 10:44:02 +00:00
										 |  |  |         row = layout.row() | 
					
						
							| 
									
										
										
										
											2011-08-01 11:44:20 +00:00
										 |  |  |         row.prop(speaker, "volume") | 
					
						
							|  |  |  |         row.prop(speaker, "pitch") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-11 03:28:46 +00:00
										 |  |  | class DATA_PT_distance(DataButtonsPanel, Panel): | 
					
						
							| 
									
										
										
										
											2011-08-01 11:44:20 +00:00
										 |  |  |     bl_label = "Distance" | 
					
						
							|  |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER'} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         speaker = context.speaker | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         split = layout.split() | 
					
						
							| 
									
										
										
										
											2011-09-08 05:42:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-01 11:44:20 +00:00
										 |  |  |         col = split.column() | 
					
						
							|  |  |  |         col.label("Volume:") | 
					
						
							|  |  |  |         col.prop(speaker, "volume_min", text="Minimum") | 
					
						
							|  |  |  |         col.prop(speaker, "volume_max", text="Maximum") | 
					
						
							|  |  |  |         col.prop(speaker, "attenuation") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         col = split.column() | 
					
						
							|  |  |  |         col.label("Distance:") | 
					
						
							|  |  |  |         col.prop(speaker, "distance_max", text="Maximum") | 
					
						
							|  |  |  |         col.prop(speaker, "distance_reference", text="Reference") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-11 03:28:46 +00:00
										 |  |  | class DATA_PT_cone(DataButtonsPanel, Panel): | 
					
						
							| 
									
										
										
										
											2011-08-01 11:44:20 +00:00
										 |  |  |     bl_label = "Cone" | 
					
						
							|  |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER'} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         speaker = context.speaker | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         split = layout.split() | 
					
						
							| 
									
										
										
										
											2012-07-29 10:03:46 +00:00
										 |  |  |          | 
					
						
							| 
									
										
										
										
											2011-08-01 11:44:20 +00:00
										 |  |  |         col = split.column() | 
					
						
							|  |  |  |         col.label("Angle:") | 
					
						
							|  |  |  |         col.prop(speaker, "cone_angle_outer", text="Outer") | 
					
						
							|  |  |  |         col.prop(speaker, "cone_angle_inner", text="Inner") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         col = split.column() | 
					
						
							|  |  |  |         col.label("Volume:") | 
					
						
							|  |  |  |         col.prop(speaker, "cone_volume_outer", text="Outer") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-11 03:28:46 +00:00
										 |  |  | class DATA_PT_custom_props_speaker(DataButtonsPanel, PropertyPanel, Panel): | 
					
						
							| 
									
										
										
										
											2011-08-01 11:44:20 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							|  |  |  |     _context_path = "object.data" | 
					
						
							|  |  |  |     _property_type = bpy.types.Speaker | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__":  # only for live edit. | 
					
						
							|  |  |  |     bpy.utils.register_module(__name__) |