# 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.
| +-------*-------+ |
+-------------------+
* = 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,
- cPos.x, cSize.x, pSize.x, parent)
+ 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,
- cPos.y, cSize.y, pSize.y, parent)
+ 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,
side2, side2Edge, side2Anchor,
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))
+