X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c6281ceb776325251aa119c7b496e6152303996a..299647acac7960652aadb008775429c1f8ea9b8d:/wxPython/demo/LayoutConstraints.py diff --git a/wxPython/demo/LayoutConstraints.py b/wxPython/demo/LayoutConstraints.py new file mode 100644 index 0000000000..29ffeaf080 --- /dev/null +++ b/wxPython/demo/LayoutConstraints.py @@ -0,0 +1,152 @@ +# 11/19/2003 - Jeff Grimmett (grimmtooth@softhome.net) +# +# o Updated for wx namespace +# + +import wx + +#--------------------------------------------------------------------------- + +class TestLayoutConstraints(wx.Panel): + def __init__(self, parent): + wx.Panel.__init__(self, parent, -1) + self.SetAutoLayout(True) + self.Bind(wx.EVT_BUTTON, self.OnButton, id=100) + + self.SetBackgroundColour(wx.NamedColour("MEDIUM ORCHID")) + + self.panelA = wx.Window(self, -1, style=wx.SIMPLE_BORDER) + self.panelA.SetBackgroundColour(wx.BLUE) + + txt = wx.StaticText( + self.panelA, -1, + "Resize the window and see\n" + "what happens... Notice that\n" + "there is no OnSize handler.", + (5,5), (-1, 50) + ) + + txt.SetBackgroundColour(wx.BLUE) + txt.SetForegroundColour(wx.WHITE) + + lc = wx.LayoutConstraints() + lc.top.SameAs(self, wx.Top, 10) + lc.left.SameAs(self, wx.Left, 10) + lc.bottom.SameAs(self, wx.Bottom, 10) + lc.right.PercentOf(self, wx.Right, 50) + self.panelA.SetConstraints(lc) + + self.panelB = wx.Window(self, -1, style=wx.SIMPLE_BORDER) + self.panelB.SetBackgroundColour(wx.RED) + lc = wx.LayoutConstraints() + lc.top.SameAs(self, wx.Top, 10) + lc.right.SameAs(self, wx.Right, 10) + lc.bottom.PercentOf(self, wx.Bottom, 30) + lc.left.RightOf(self.panelA, 10) + self.panelB.SetConstraints(lc) + + self.panelC = wx.Window(self, -1, style=wx.SIMPLE_BORDER) + self.panelC.SetBackgroundColour(wx.WHITE) + lc = wx.LayoutConstraints() + lc.top.Below(self.panelB, 10) + lc.right.SameAs(self, wx.Right, 10) + lc.bottom.SameAs(self, wx.Bottom, 10) + lc.left.RightOf(self.panelA, 10) + self.panelC.SetConstraints(lc) + + b = wx.Button(self.panelA, 100, ' Panel A ') + lc = wx.LayoutConstraints() + lc.centreX.SameAs (self.panelA, wx.CentreX) + lc.centreY.SameAs (self.panelA, wx.CentreY) + lc.height.AsIs () + lc.width.PercentOf (self.panelA, wx.Width, 50) + b.SetConstraints(lc); + + b = wx.Button(self.panelB, 100, ' Panel B ') + lc = wx.LayoutConstraints() + lc.top.SameAs (self.panelB, wx.Top, 2) + lc.right.SameAs (self.panelB, wx.Right, 4) + lc.height.AsIs () + lc.width.AsIs () + b.SetConstraints(lc); + + self.panelD = wx.Window(self.panelC, -1, style=wx.SIMPLE_BORDER) + self.panelD.SetBackgroundColour(wx.GREEN) + wx.StaticText( + self.panelD, -1, "Panel D", (4, 4) + ).SetBackgroundColour(wx.GREEN) + + b = wx.Button(self.panelC, 100, ' Panel C ') + lc = wx.LayoutConstraints() + lc.top.Below (self.panelD) + lc.left.RightOf (self.panelD) + lc.height.AsIs () + lc.width.AsIs () + b.SetConstraints(lc); + + lc = wx.LayoutConstraints() + lc.bottom.PercentOf (self.panelC, wx.Height, 50) + lc.right.PercentOf (self.panelC, wx.Width, 50) + lc.height.SameAs (b, wx.Height) + lc.width.SameAs (b, wx.Width) + self.panelD.SetConstraints(lc); + + + def OnButton(self, event): + wx.Bell() + + +#--------------------------------------------------------------------------- + +def runTest(frame, nb, log): + win = TestLayoutConstraints(nb) + return win + +#--------------------------------------------------------------------------- + + + +overview = """\ +
+Objects of this class can be associated with a window to define its +layout constraints, with respect to siblings or its parent. + +The class consists of the following eight constraints of class +wxIndividualLayoutConstraint, some or all of which should be accessed +directly to set the appropriate constraints. + +
Most constraints are initially set to have the relationship +wxUnconstrained, which means that their values should be calculated by +looking at known constraints. The exceptions are width and height, +which are set to wxAsIs to ensure that if the user does not specify a +constraint, the existing width and height will be used, to be +compatible with panel items which often have take a default size. If +the constraint is wxAsIs, the dimension will not be changed. + +""" + + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) +