import wx

import os
import sys

try:
    dirName = os.path.dirname(os.path.abspath(__file__))
except:
    dirName = os.path.dirname(os.path.abspath(sys.argv[0]))

sys.path.append(os.path.split(dirName)[0])

try:
    from agw import cubecolourdialog as CCD
except ImportError: # if it's not there locally, try the wxPython lib.
    import wx.lib.agw.cubecolourdialog as CCD


class CubeColourDialogDemo(wx.Panel):

    def __init__(self, parent, log):

        wx.Panel.__init__(self, parent, -1)

        static = wx.StaticText(self, -1, "Notice the panel background colour!", (50, 50))
        b = wx.Button(self, -1, "Create and Show a CubeColourDialog", (50, 70))
        self.Bind(wx.EVT_BUTTON, self.OnButton, b)

        self.log = log        


    def OnButton(self, evt):

        if not hasattr(self, "colourData"):
            self.colourData = wx.ColourData()
            
        self.colourData.SetColour(self.GetBackgroundColour())
        
        dlg = CCD.CubeColourDialog(self, self.colourData)

        if dlg.ShowModal() == wx.ID_OK:

            # If the user selected OK, then the dialog's wx.ColourData will
            # contain valid information. Fetch the data ...
            self.colourData = dlg.GetColourData()
            h, s, v, a = dlg.GetHSVAColour()

            # ... then do something with it. The actual colour data will be
            # returned as a three-tuple (r, g, b) in this particular case.
            colour = self.colourData.GetColour()
            self.log.WriteText('You selected: %s: %d, %s: %d, %s: %d, %s: %d\n' % ("Red", colour.Red(),
                                                                                   "Green", colour.Green(),
                                                                                   "Blue", colour.Blue(),
                                                                                   "Alpha", colour.Alpha()))
            self.log.WriteText('HSVA Components: %s: %d, %s: %d, %s: %d, %s: %d\n\n' % ("Hue", h,
                                                                                        "Saturation", s,
                                                                                        "Brightness", v,
                                                                                        "Alpha", a))
            self.SetBackgroundColour(self.colourData.GetColour())
            self.Refresh()

        # Once the dialog is destroyed, Mr. wx.ColourData is no longer your
        # friend. Don't use it again!
        dlg.Destroy()


#----------------------------------------------------------------------

def runTest(frame, nb, log):
    win = CubeColourDialogDemo(nb, log)
    return win

#----------------------------------------------------------------------

overview = CCD.__doc__

if __name__ == '__main__':
    import sys,os
    import run
    run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])

