X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fd3f2efe791cf99c2e4944cd615f02a5502ed93e..27587c251c4c500a20af0c3fbab9a849a28e4456:/wxPython/wx/lib/rcsizer.py?ds=sidebyside diff --git a/wxPython/wx/lib/rcsizer.py b/wxPython/wx/lib/rcsizer.py index 752f3203fc..b262aee4bd 100644 --- a/wxPython/wx/lib/rcsizer.py +++ b/wxPython/wx/lib/rcsizer.py @@ -9,32 +9,58 @@ # Copyright: (c) 2002 by Total Control Software # Licence: wxWindows license #---------------------------------------------------------------------- +# 12/10/2003 - Jeff Grimmett (grimmtooth@softhome.net) +# +# o 2.5 compatability update. +# o There appears to be a prob with the wx.PySizer.GetSize() method. +# +# 12/23/2003 - Jeff Grimmett (grimmtooth@softhome.net) +# +# o wx.PySizer.GetSize() method working right now. +# """ -A pure-Python wxSizer that lays out items in a grid similar to -wxFlexGridSizer but item position is not implicit but explicitly +A pure-Python Sizer that lays out items in a grid similar to +wx.FlexGridSizer but item position is not implicit but explicitly specified by row and col, and row/col spanning is supported. Adapted from code by Niki Spahiev. -If anyone is interested, it would be nice to have this ported to C++. +NOTE: There is now a C++ version of this class that has been wrapped +as wx.GridBagSizer. It is quicker and more capable so you are +encouraged to switch. """ +import operator +import wx + + +# After the lib and demo no longer uses this sizer enable this warning... + +## import warnings +## warningmsg = r"""\ + +## #####################################################\ +## # THIS MODULE IS NOW DEPRECATED | +## # | +## # The core wx library now contains a similar class | +## # wrapped as wx.GridBagSizer. | +## #####################################################/ +## """ -from wxPython.wx import * -import operator +## warnings.warn(warningmsg, DeprecationWarning, stacklevel=2) #---------------------------------------------------------------------- -class RowColSizer(wxPySizer): +class RowColSizer(wx.PySizer): # default sizes for cells with no item col_w = 10 row_h = 22 def __init__(self): - wxPySizer.__init__(self) + wx.PySizer.__init__(self) self.growableRows = [] self.growableCols = [] @@ -49,9 +75,11 @@ class RowColSizer(wxPySizer): #-------------------------------------------------- def Add(self, item, option=0, flag=0, border=0, - row=-1, col=-1, # row, col and spanning can be specified individually... + # row, col and spanning can be specified individually... + row=-1, col=-1, rowspan=1, colspan=1, - pos=None, size=None, # or as tuples (row,col) and (rowspan,colspan) + # or as tuples (row,col) and (rowspan,colspan) + pos=None, size=None, ): if pos is not None: @@ -64,10 +92,10 @@ class RowColSizer(wxPySizer): # Do I really want to do this? Probably not... #if rowspan > 1 or colspan > 1: - # flag = flag | wxEXPAND + # flag = flag | wx.EXPAND - wxPySizer.Add(self, item, option, flag, border, - userData=(row, col, row+rowspan, col+colspan)) + return wx.PySizer.Add(self, item, option, flag, border, + userData=(row, col, row+rowspan, col+colspan)) #AddWindow = Add #AddSizer = Add @@ -85,8 +113,8 @@ class RowColSizer(wxPySizer): assert row != -1, "Row must be specified" assert col != -1, "Column must be specified" - wxPySizer.AddSpacer(self, (width, height), option, flag, border, - userData=(row, col, row+rowspan, col+colspan)) + return wx.PySizer.Add(self, (width, height), option, flag, border, + userData=(row, col, row+rowspan, col+colspan)) #-------------------------------------------------- def _add( self, size, dim ): @@ -116,25 +144,22 @@ class RowColSizer(wxPySizer): items = self.GetChildren() if not items: - return wxSize(10, 10) + return wx.Size(10, 10) for item in items: self._add( item.CalcMin(), item.GetUserData() ) - size = wxSize( reduce( operator.add, self.colWidths), - reduce( operator.add, self.rowHeights) ) + size = wx.Size( reduce( operator.add, self.colWidths), + reduce( operator.add, self.rowHeights) ) return size #-------------------------------------------------- def RecalcSizes( self ): # save current dimensions, etc. - curWidth = self.GetSize().width - curHeight = self.GetSize().height - px = self.GetPosition().x - py = self.GetPosition().y - minWidth = self.CalcMin().width - minHeight = self.CalcMin().height + curWidth, curHeight = self.GetSize() + px, py = self.GetPosition() + minWidth, minHeight = self.CalcMin() # Check for growables if self.growableRows and curHeight > minHeight: @@ -176,21 +201,21 @@ class RowColSizer(wxPySizer): def SetItemBounds(self, item, x, y, w, h): # calculate the item's actual size and position within # its grid cell - ipt = wxPoint(x, y) + ipt = wx.Point(x, y) isz = item.CalcMin() flag = item.GetFlag() - if flag & wxEXPAND or flag & wxSHAPED: - isz = wxSize(w, h) + if flag & wx.EXPAND or flag & wx.SHAPED: + isz = wx.Size(w, h) else: - if flag & wxALIGN_CENTER_HORIZONTAL: + if flag & wx.ALIGN_CENTER_HORIZONTAL: ipt.x = x + (w - isz.width) / 2 - elif flag & wxALIGN_RIGHT: + elif flag & wx.ALIGN_RIGHT: ipt.x = x + (w - isz.width) - if flag & wxALIGN_CENTER_VERTICAL: + if flag & wx.ALIGN_CENTER_VERTICAL: ipt.y = y + (h - isz.height) / 2 - elif flag & wxALIGN_BOTTOM: + elif flag & wx.ALIGN_BOTTOM: ipt.y = y + (h - isz.height) item.SetDimension(ipt, isz)