X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2233e5b82c14c529f97b3fd0cba99908de2d5d0c..bb0054cda81e7a6a6e1f33f4b47e46f529110f14:/utils/wxPython/lib/sizers/border.py?ds=inline diff --git a/utils/wxPython/lib/sizers/border.py b/utils/wxPython/lib/sizers/border.py new file mode 100644 index 0000000000..fd054c632e --- /dev/null +++ b/utils/wxPython/lib/sizers/border.py @@ -0,0 +1,109 @@ +#---------------------------------------------------------------------- +# 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. + + + + +