#!BPY
""" Released under the Blender Artistic Licence (BAL)
Name: 'Render Cam'
Blender: 237
Group: 'Render'
Tooltip: 'Fast-switch current cam.'
"""
__author__ = "pat"
__version__ = "1.1a - 01/10/05 -"
__email__ = ('Author, pat:psycho3d*de')
__url__ = ("Author's website, www.psycho3d.de")
__bpydoc__ ="""\
This script gives you a list of the cams in your current scene for easier rendering of different views.

Hotkeys:<br>
   [Q]uit
"""


import Blender as b
from Blender.BGL import *
from Blender.Draw import *

menutext = "Camera%t|*** update list ***"
list = Create(1)

sce = b.Scene.getCurrent()
camlist = []


def updateList():
	global menutext, camlist, sce
	
	sce = b.Scene.getCurrent()
	camlist = []
	menutext = "Camera%t|*** update list ***"
	
	oblist = sce.getChildren()
	i=len(oblist)
	while i > 0:
		i -= 1
		if oblist[i].getType() == "Camera":
			camlist.append(oblist[i])
			menutext += "|%s" % oblist[i].getName()
	Redraw()

def renderCams():
	global sce
	if list.val >= 2:
		sce.setCurrentCamera(camlist[list.val - 2])
		sce.getRenderingContext().render()
	else:
		PupMenu("Error%t|Please update list and choose camera!")


def gui():
	global list
	col = b.Window.Theme.Get()[0].get("buts").back
	glClearColor(col[0]/255., col[1]/255., col[2]/255., col[3]/255.)
	glClear(GL_COLOR_BUFFER_BIT)
	PushButton("Exit", 1, 10, 10, 100, 20)
	PushButton("Render", 5, 120, 10, 100, 20, "Renders the selected cam")
	list = Menu(menutext, 2, 10, 40, 210, 20, list.val)

def event(evt, val):
  if (evt == QKEY and not val): Exit()
	
def bevent(evt):
	if (evt == 1): Exit()
	elif (evt == 2):
		if (list.val) == 1: updateList()
	elif (evt == 5): renderCams()

Register(gui, event, bevent)
updateList()
