# ButtonTreeCtrlPanel test
# Author:      E. A. Tacao


import wx
import ButtonTreeCtrlPanel as bt
import images

#----------------------------------------------------------------------

class TestPanel(wx.Panel):
    def __init__(self, parent, log):
        self.log = log
        wx.Panel.__init__(self, parent, -1)

        icon1 = getattr(images, 'getBlom%02dBitmap' % 2)
        bmp1 = icon1(); img=wx.ImageFromBitmap(bmp1); img.Rescale(16,16); bmp1=wx.BitmapFromImage(img)

        icon2 = getattr(images, 'getBlom%02dBitmap' % 3)
        bmp2 = icon2(); img=wx.ImageFromBitmap(bmp2); img.Rescale(16,16); bmp2=wx.BitmapFromImage(img)

        icon3 = getattr(images, 'getBlom%02dBitmap' % 4)
        bmp3 = icon3(); img=wx.ImageFromBitmap(bmp3); img.Rescale(16,16); bmp3=wx.BitmapFromImage(img)

        icon4 = getattr(images, 'getBlom%02dBitmap' % 5)
        bmp4 = icon4(); img=wx.ImageFromBitmap(bmp4); img.Rescale(16,16); bmp4=wx.BitmapFromImage(img)

        win1 = bt.ButtonTreeCtrlPanel(self)

        item1 = win1.AddItem("The foo doesn't bar", bmp1)
        item2 = win1.AddItem("Animals", bmp2, item1)
        item3 = win1.AddItem("Cats", parent = item2, style = "check", value = True)
        item4 = win1.AddItem("Dogs", parent = item2, style = "check", value = True)
        item5 = win1.AddItem("Colours", bmp3, item1)
        item6 = win1.AddItem("Green", parent = item5, style = "radio", value = False)
        item7 = win1.AddItem("Yellow", parent = item5, style = "radio", value = True)
        item8 = win1.AddItem("Blue", parent = item5, style = "radio", value = False)
        item9 = win1.AddItem("White", parent = item5, style = "radio", value = False)
        itema = win1.AddItem("The Flying Circus", bmp4)
        itemb = win1.AddItem("Spam", parent = itema, style = "check", value = True)
        itemc = win1.AddItem("Eggs", parent = itema, style = "check", value = True)

        win1.SetItemValue(item9, True)

        win2 = bt.ButtonTreeCtrlPanel(self)

        sampleList = ['zero', 'one', 'two', 'three', 'four', 'five',
                      'six', 'seven', 'eight', 'nine', 'ten', 'eleven',
                      'twelve', 'thirteen', 'fourteen']
                      
        s = True
        for i in sampleList:
            s = not s
            item = win2.AddItem(i, style = "check", value = s)

        win3 = bt.ButtonTreeCtrlPanel(self)

        s = True
        for i in sampleList:
            s = not s
            item = win3.AddItem(i, style = "radio", value = s)

        item = win3.GetItem(3); win3.SetItemValue(item, True)
        
        self.win1 = win1; self.win2 = win2; self.win3 = win3
        self.item2 = item2; self.itema = itema; self.item5 = item5

        # layout the controls in a grid
        gs = wx.GridSizer(1, 3, 10, 10)
        gs.Add(win1, 0, wx.EXPAND)
        gs.Add(win2, 0, wx.EXPAND)
        gs.Add(win3, 0, wx.EXPAND)

        # put it in another sizer for a border
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(gs, 1, wx.EXPAND | wx.ALL, 10)

        b = wx.Button(self, -1, "GetStringItemsChecked")
        self.Bind(wx.EVT_BUTTON, self.OnClick, b)
        sizer.Add(b, 0, wx.ALIGN_CENTRE | wx.ALL, 10)

        self.SetSizer(sizer)

    def OnClick(self, event):
        s1 = self.win1.GetStringItemsChecked(self.item2)
        s2 = self.win2.GetStringItemsChecked()
        s3 = self.win3.GetStringItemsChecked()

        s5 = self.win1.GetStringItemsChecked(self.item5)
        sa = self.win1.GetStringItemsChecked(self.itema)

        self.log.write("1: %s\n2: %s\n3: %s\n" % (`s1`+`s5`+`sa`, `s2`, `s3`))


#----------------------------------------------------------------------

def runTest(frame, nb, log):
    win = TestPanel(nb, log)
    return win

#----------------------------------------------------------------------



overview = """<html><body>
<h2><center>ButtonTreeCtrlPanel</center></h2>

Take a look and you'll see what I mean. 8^)
<p>
By E. A. Tacao.
</body></html>
"""



if __name__ == '__main__':
    import sys,os
    import run
    run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])


