#!/usr/bin/env python2.3

from wxPython.wx import *


class MyPanel1(wxPanel):
  def __init__(self, parent, id):
    wxPanel.__init__(self, parent, id, wxDefaultPosition, style=wxSUNKEN_BORDER)

    Sizer = wxBoxSizer(wxHORIZONTAL)
    self.Sizer = Sizer
    self.label1 = wxStaticText(self, -1,'Short label',style=wxSUNKEN_BORDER)
    self.label2 = wxStaticText(self, -1,'Short string')

    Sizer.Add(self.label1,0,wxADJUST_MINSIZE|wxALL,10)
    Sizer.Add(self.label2,0,wxADJUST_MINSIZE|wxALL,10)

    self.SetSizer(Sizer)
    self.Fit()
    self.SetAutoLayout(TRUE)

  def changeText(self, text):
    self.label2.SetLabel(text)
    #self.Sizer.SetItemMinSize(self.label2,self.label2.GetBestSize()[0],self.label2.GetBestSize()[1])
    #self.Fit()

class testFrame(wxFrame):
  def __init__(self,parent):
    wxFrame.__init__(self,parent,-1,'Sizer Test',size=(380,240))

    Sizer = wxBoxSizer(wxVERTICAL)
    self.Sizer = Sizer

    self.testBox = wxStaticBox(self,-1,'Test', style=wxSUNKEN_BORDER)
    self.testSizer = wxStaticBoxSizer(self.testBox, wxHORIZONTAL)

    self.label1 = wxStaticText(self,-1,'Short label', style=wxSUNKEN_BORDER)
    self.testSizer.Add(self.label1, 0, wxADJUST_MINSIZE|wxALL, 10)

    self.label2 = wxStaticText(self, -1, 'Short string')
    self.testSizer.Add(self.label2, 0, wxADJUST_MINSIZE|wxALL, 10)

    self.panel2 = MyPanel1(self,-1)

    testButton = wxButton(self,-1,'  Change Label  ')
    EVT_BUTTON(self,testButton.GetId(),self.changeText)

    Sizer.Add(self.testSizer, 0, wxALIGN_CENTER | wxALL, 10)
    Sizer.Add(self.panel2, 0, wxADJUST_MINSIZE|wxALIGN_CENTER | wxALL, 10)
    Sizer.Add(testButton, 0, wxALIGN_CENTER | wxALL, 10)


    self.SetAutoLayout(True)
    self.SetSizer(Sizer)

  def changeText(self,evt):
    self.panel2.changeText("Another longer string")

    self.label2.SetLabel('This is a longer string')
    #self.testSizer.SetItemMinSize(self.label2,self.label2.GetBestSize()[0],self.label2.GetBestSize()[1])

    self.Sizer.Layout()

if __name__ == '__main__':
  app = wxPySimpleApp()
  frame = testFrame(None)
  frame.Show(true)
  app.MainLoop()











