#Script by Jessie Amadio 09/10/09 in Nuke 5.0v1

import random
import nuke

i = 0
for n in nuke.selectedNodes():
    i = i + 1
if i == 0:
    bdName = nuke.getInput("Backdrop Name")
    bd = nuke.createNode("BackdropNode")
    bd.knob("name").setValue(bdName)
    bd.knob("tile_color").setValue(random.randrange(00000000, 99999999))

else:

    #create lists
    xposList = []
    yposList = []
 
    #add each node position to respective list
    for n in nuke.selectedNodes():
        xposList.append(n.xpos())
        yposList.append(n.ypos())

    #sort lists numerically
    xposList.sort()
    yposList.sort()

    #grab the min
    leftX = xposList[0]
    topY = yposList[0]

    #calculate difference between smallest and largest values
    if i == 1:
        theWidth = 105
        theHeight = 110
    else:
        theWidth = (xposList[(len(xposList) - 1)] - xposList[0]) + 105
        theHeight = (yposList[(len(yposList) - 1)] - yposList [0]) + 110

    #get Backdrop name
    bdName = nuke.getInput("Backdrop Name")

    #create Backdrop Node
    bd = nuke.createNode("BackdropNode")
    bd.knob("xpos").setValue(leftX - 20)
    bd.knob("ypos").setValue(topY - 40)
    bd.knob("bdwidth").setValue(theWidth + 20) #padding
    bd.knob("bdheight").setValue(theHeight + 20) #padding
    bd.knob("name").setValue(bdName)
    bd.knob("tile_color").setValue(random.randrange(00000000, 99999999))
