from Tkinter import *
import random
import palettebuilder as pb
from colorservices import getHSV

def randomColors(count=1, sorted=False):
    "returns list of color strings in #nnnnnn hexidecimal format"
    rtn = []
    for x in range(count):
        intgr = random.randrange(0, 16777215, 1)
        hex = "#{:0>6X}".format(intgr)
        rtn.append(hex)
    if sorted:
        "the folowing should be sorted by ..."
#        rtn.sort(key=lambda rtn: getHSV(rtn)[2]) #...value
        rtn.sort(key=lambda rtn: getHSV(rtn)) #...full HSV
    return rtn
    
class test(Toplevel):
    def __init__(self):
        Toplevel.__init__(self)
        self.config(height = 500, width = 500)
        self.activeCanvas = None
        self.bind("<KeyPress-c>", self.reportXY)
        size = 180
        frameOne = Frame(self, height = 200, width =200, bg = "pink")
        self.canvasOne = Canvas(frameOne, height=size, width=size, background="#bababa")
        self.canvasOne.grid(row = 0, column = 0, sticky = W )
        frameTwo = Frame(self, height = 200, width =200, bg="light blue")
        self.canvasTwo = Canvas(frameTwo, height=size, width=size, bg='#bababa')
        self.canvasTwo.grid(row = 1, column = 1)
        self.canvasOne.bind("<Enter>", self.makeOneActive)
        self.canvasTwo.bind("<Enter>", self.makeTwoActive)
        frameOne.grid(row = 0, column = 0, sticky = W )
        frameTwo.grid(row = 1, column = 1, sticky = E )
        colors = randomColors(64, sorted = True)
        pb.DrawPalette(self.canvasOne, colors, columns = 8)
        colors = randomColors(64, sorted = True)
        pb.DrawPalette(self.canvasTwo, colors, columns = 8)
    
    def makeOneActive(self, event):
        self.activeCanvas = self.canvasOne
        print "one = active self.activeCanvas>>>", type(self.activeCanvas)
        
    def makeTwoActive(self, event):
        self.activeCanvas = self.canvasTwo
        print "two = active self.activeCanvas>>>", type(self.activeCanvas)

    def reportXY(self, event):
        print event.x, event.y
        item=self.activeCanvas.find_closest(event.x, event.y)
        print self.activeCanvas.itemcget(item, "tags"), "item>>", item
        self.activeCanvas.itemconfigure(item, fill = "red")
        
root = Tk()
root.withdraw()
test()
#for x in range(10):
#    print randomColors(10)
#    print "\n"
root.mainloop()
