X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fd3f2efe791cf99c2e4944cd615f02a5502ed93e..b6b4695492baff990f5cb4c50522fd6a72c2773d:/wxPython/wx/lib/anchors.py?ds=sidebyside diff --git a/wxPython/wx/lib/anchors.py b/wxPython/wx/lib/anchors.py index 1553f2701a..d90eebf67e 100644 --- a/wxPython/wx/lib/anchors.py +++ b/wxPython/wx/lib/anchors.py @@ -10,24 +10,32 @@ # Copyright: (c) 2000 by Total Control Software # Licence: wxWindows license #---------------------------------------------------------------------- +# 11/30/2003 - Jeff Grimmett (grimmtooth@softhome.net) +# +# o Updated for wx namespace +# o Tested with updated demo +# +""" +`LayoutAnchors` is a class that implements Delphi's Anchors using +`wx.LayoutConstraints`. +""" -from wxPython.wx import wxLayoutConstraints, wxTop, wxLeft, wxBottom, wxRight, \ - wxHeight, wxWidth +import wx -class LayoutAnchors(wxLayoutConstraints): - """ A class that implements Delphi's Anchors with wxLayoutConstraints. +class LayoutAnchors(wx.LayoutConstraints): + """ + A class that implements Delphi's Anchors with wx.LayoutConstraints. - Anchored sides maintain the distance from the edge of the - control to the same edge of the parent. - When neither side is selected, the control keeps the same - relative position to both sides. + Anchored sides maintain the distance from the edge of the control + to the same edge of the parent. When neither side is selected, + the control keeps the same relative position to both sides. - The current position and size of the control and it's parent - is used when setting up the constraints. To change the size or - position of an already anchored control, set the constraints to - None, reposition or resize and reapply the anchors. + The current position and size of the control and it's parent is + used when setting up the constraints. To change the size or + position of an already anchored control, set the constraints to + None, reposition or resize and reapply the anchors. - Examples: + Examples:: Let's anchor the right and bottom edge of a control and resize it's parent. @@ -55,23 +63,24 @@ class LayoutAnchors(wxLayoutConstraints): | +-------*-------+ | +-------------------+ * = anchored edge + """ - def __init__(self, control, left = 1, top = 1, right = 0, bottom = 0): - wxLayoutConstraints.__init__(self) + def __init__(self, control, left=1, top=1, right=0, bottom=0): + wx.LayoutConstraints.__init__(self) parent = control.GetParent() if not parent: return pPos, pSize = parent.GetPosition(), parent.GetClientSize() cPos, cSize = control.GetPosition(), control.GetSize() - self.setConstraintSides(self.left, wxLeft, left, - self.right, wxRight, right, - self.width, wxWidth, self.centreX, + self.setConstraintSides(self.left, wx.Left, left, + self.right, wx.Right, right, + self.width, wx.Width, self.centreX, cPos.x, cSize.width, pSize.width, parent) - self.setConstraintSides(self.top, wxTop, top, - self.bottom, wxBottom, bottom, - self.height, wxHeight, self.centreY, + self.setConstraintSides(self.top, wx.Top, top, + self.bottom, wx.Bottom, bottom, + self.height, wx.Height, self.centreY, cPos.y, cSize.height, pSize.height, parent) def setConstraintSides(self, side1, side1Edge, side1Anchor, @@ -80,12 +89,16 @@ class LayoutAnchors(wxLayoutConstraints): cPos, cSize, pSize, parent): if side2Anchor: side2.SameAs(parent, side2Edge, pSize - (cPos + cSize)) + if side1Anchor: side1.SameAs(parent, side1Edge, cPos) + if not side2Anchor: size.AsIs() else: size.AsIs() + if not side2Anchor: centre.PercentOf(parent, sizeEdge, int(((cPos + cSize / 2.0) / pSize)*100)) +