import wx
import sys

sys.path.append("FloatCanvas")
from floatcanvas import NavCanvas, FloatCanvas


class DrawFrame(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)    
        self.Canvas = NavCanvas.NavCanvas(self,-1,(500,500),
                                          ProjectionFun = None,
                                          Debug = 0,
                                          BackgroundColor = "#FFFFFF",
                                          ).Canvas
        self.run()
        self.Centre()
        self.Show(True)
        self.Canvas.ZoomToBB()
        return None
    
    def draw(self, xy, wh, color):
        self.color = color
        Canvas = self.Canvas
        rec = Canvas.AddRectangle(xy, wh, LineWidth = 1, FillColor = color )
        rec.Bind(FloatCanvas.EVT_FC_LEFT_DOWN, self.hit)
        rec.Bind(FloatCanvas.EVT_FC_ENTER_OBJECT, self.colorFlashIn)
        rec.Bind(FloatCanvas.EVT_FC_LEAVE_OBJECT, self.colorFlashOut)


    def hit(self, obj):
        print "A rect was hit, obj ID: %i. color %s "%(id(obj),obj.FillColor)
    
    def colorFlashIn(self,obj):
        print "Enter id: %s"% id(obj)
        obj.SetFillColor("#CF5F3B")
        self.Canvas.Draw(Force=True)
        
    def colorFlashOut(self,obj):
        print "Leave obj id: %s"% id(obj)
        obj.SetFillColor(self.color)
        self.Canvas.Draw(Force=True)

    
    def run(self):
        self.draw((20,20),(20,20),'#EEEE99')
        self.draw((40,20),(20,20),'#EEEE99')
        self.draw((60,20),(20,20),'#EEEE99')

        
        self.draw((20,40),(20,20),'#EEEE99')
        self.draw((40,40),(20,20),'#EEEE99')
        self.draw((60,40),(20,20),'#EEEE99')

        
        self.draw((20,60),(20,20),'#EEEE99')
        self.draw((40,60),(20,20),'#EEEE99')
        self.draw((60,60),(20,20),'#EEEE99')

        


app = wx.App(False)
DrawFrame(None, -1, "FloatCanvas Demo App", wx.DefaultPosition, (500,500) )
app.MainLoop()