import wx
from wx.lib import stattext as WX
# http://trac.wxwidgets.org/ticket/9859

class mybox(wx.Panel):

    def __init__(self, parent, id=wx.ID_ANY, label=wx.EmptyString, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.TAB_TRAVERSAL|wx.NO_BORDER, name=''):
      wx.Panel.__init__(self, parent, id, pos=pos, size=size, style=style, name=name)

      y = self.GetBackgroundColour()
      z = self.GetBackgroundColour()
      r,g,b,a = y.Get(True)
      xr = r ^ 255
      xg = g ^ 255
      xb = b ^ 255
      y.Set(xr, xg, xb, a)
      self.SetBackgroundColour(y)
      self.vbox = wx.BoxSizer(wx.VERTICAL)
      
      self.inside = wx.Panel(self, -1)
      self.txt = label
      self.label = WX.GenStaticText(self,wx.ID_ANY, label)
      self.label.SetForegroundColour(z)
      self.label.SetBackgroundColour(y)
      self.vbox.Add(self.label,0,wx.EXPAND | wx.Bottom, 2)
      junk, self.px = self.label.GetSize()
      self.vbox.Add(self.inside, 1, wx.EXPAND | wx.BOTTOM | wx.LEFT | wx.RIGHT, self.px)
      self.SetSizer(self.vbox)
      self.SetAutoLayout(True)

    
    def GetInside(self):
        return self.inside
      

class MyForm(wx.Frame):
 
    def __init__(self, inpanel=False):
        wx.Frame.__init__(self, None, wx.ID_ANY, "StaticBox replacement Demo")
        if inpanel:
          panel = wx.Panel(self, wx.ID_ANY)
          abox = mybox(panel, -1, "mybox")
        else:
          abox = mybox(self, -1, "mybox")
        box = abox.GetInside()
        boxsizer = wx.BoxSizer(wx.VERTICAL)
        box.SetSizer(boxsizer)
        box.SetAutoLayout(True)
        
        txt = wx.StaticText(box, wx.ID_ANY, "Show the tooltip")
        tt=wx.ToolTip("ToolTip")
        txt.SetToolTip(tt)
        boxsizer.Add(txt ,1, wx.EXPAND)

        
        sizer = wx.FlexGridSizer(cols=1)
        sizer.Add(abox, 1, wx.EXPAND | wx.ALL)
        if inpanel:
            panel.SetSizer(sizer)
            panel.SetAutoLayout(True)
                
# Run the program
if __name__ == "__main__":
    app = wx.PySimpleApp()
    frame = MyForm(True).Show()
    app.MainLoop()

    app2 = wx.PySimpleApp()
    frame = MyForm(False).Show()
    app2.MainLoop()
