--- /dev/null
+#----------------------------------------------------------------------
+# Name: wxPython.lib.sizers.border
+# Purpose: A Sizer that wraps an empty border around its contents
+#
+# Author: Robin Dunn
+#
+# Created: 9-June-1999
+# RCS-ID: $Id$
+# Copyright: (c) 1998 by Total Control Software
+# Licence: wxWindows license
+#----------------------------------------------------------------------
+
+from sizer import wxSizer
+
+wxNORTH = 1
+wxSOUTH = 2
+wxEAST = 4
+wxWEST = 8
+wxALL = wxNORTH | wxSOUTH | wxEAST | wxWEST
+
+#----------------------------------------------------------------------
+
+class wxBorderSizer(wxSizer):
+ """
+ wxBorderSizer
+
+ This sizer provides an empty buffer on one or more sides of it's
+ contents. It can only hold a single widget, but that can be a
+ sizer containing other items if you wish.
+
+ The sizer is constructed with a parameter specifying which sides
+ should have the border. You can use a logical OR of the following
+ values to specify the sides:
+
+ wxNORTH -- the top side
+ wxSOUTH -- the bottom side
+ wxEAST -- the right side
+ wxWEST -- the left side
+ wxALL -- all sides
+
+ The width in pixels of the border is specified when the child
+ widget is Added to the sizer.
+
+ """
+ def __init__(self, sides = wxALL):
+ wxSizer.__init__(self)
+ self.sides = sides
+
+
+ def Add(self, widget, borderSize):
+ if self.children:
+ raise ValueError("wxBorderSizer can only contain one child.")
+
+ wxSizer.Add(self, widget, borderSize)
+
+
+ def CalcMin(self):
+ isSizer, widget, width, height, borderSize = self.children[0]
+
+ if isSizer:
+ width, height = widget.CalcMin()
+
+ if self.sides & wxEAST:
+ width = width + borderSize
+
+ if self.sides & wxWEST:
+ width = width + borderSize
+
+ if self.sides & wxNORTH:
+ height = height + borderSize
+
+ if self.sides & wxSOUTH:
+ height = height + borderSize
+
+ return width, height
+
+
+ def RecalcSizes(self):
+ isSizer, widget, width, height, borderSize = self.children[0]
+ width = self.size.width
+ height = self.size.height
+ px = self.origin.x
+ py = self.origin.y
+
+ if self.sides & wxWEST:
+ width = width - borderSize
+ px = px + borderSize
+ if self.sides & wxEAST:
+ width = width - borderSize
+
+ if self.sides & wxNORTH:
+ height = height - borderSize
+ py = py + borderSize
+ if self.sides & wxSOUTH:
+ height = height - borderSize
+
+ widget.SetDimensions(px, py, width, height)
+
+
+#----------------------------------------------------------------------
+#
+# TODO... Make an abstract class wxBorder whose decendants can be added to
+# a wxBorderSizer to provide drawing for the buffer area. Ideas are
+# to provide a color border, beveled borders, rounded borders, etc.
+
+
+
+
+