From 8a14de8aa913d127467af566392489a0cb8b9745 Mon Sep 17 00:00:00 2001 From: Kevin Ollivier Date: Thu, 4 Jan 2007 06:47:19 +0000 Subject: [PATCH] Have SetSizerProps internally handle the assignment of growable rows and cols. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44093 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- wxPython/wxaddons/sized_controls.py | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/wxPython/wxaddons/sized_controls.py b/wxPython/wxaddons/sized_controls.py index 67a839fa09..446249efe5 100644 --- a/wxPython/wxaddons/sized_controls.py +++ b/wxPython/wxaddons/sized_controls.py @@ -330,7 +330,8 @@ def GetSizerProps(self): def SetSizerProp(self, prop, value): lprop = prop.lower() - item = self.GetParent().GetSizer().GetItem(self) + sizer = self.GetParent().GetSizer() + item = sizer.GetItem(self) flag = item.GetFlag() if lprop == "proportion": item.SetProportion(int(value)) @@ -359,6 +360,27 @@ def SetSizerProp(self, prop, value): flag = flag &~ misc_flags[lprop] else: flag = flag | misc_flags[lprop] + + # auto-adjust growable rows/columns if expand or proportion is set + # on a sizer item in a FlexGridSizer + if lprop in ["expand", "proportion"] and isinstance(sizer, wx.FlexGridSizer): + cols = sizer.GetCols() + rows = sizer.GetRows() + # FIXME: I'd like to get the item index in the sizer instead, but + # doing sizer.GetChildren.index(item) always gives an error + itemnum = self.GetParent().GetChildren().index(self) + + col = 0 + row = 0 + if cols == 0: + col, row = divmod( itemnum, rows ) + else: + row, col = divmod( itemnum, cols ) + + if lprop == "expand": + sizer.AddGrowableCol(col) + elif lprop == "proportion" and int(value) != 0: + sizer.AddGrowableRow(row) item.SetFlag(flag) @@ -462,7 +484,7 @@ class SizedPanel(wx.PyPanel): elif type == "form": #sizer = TableSizer(2, 0) sizer = wx.FlexGridSizer(0, 2, 0, 0) - sizer.AddGrowableCol(1) + #sizer.AddGrowableCol(1) elif type == "table": rows = cols = 0 -- 2.45.2