\membersection{wxFlexGridSizer::AddGrowableCol}\label{wxflexgridsizeraddgrowablecol}
-\func{void}{AddGrowableCol}{\param{size\_t }{idx}}
+\func{void}{AddGrowableCol}{\param{size\_t }{idx}, \param{int }{proportion = $0$}}
-Specifies that column idx (starting from zero) should be grown if
+Specifies that column {\it idx} (starting from zero) should be grown if
there is extra space available to the sizer.
+The {\it proportion} parameter has the same meaning as the stretch factor for
+the \helpref{sizers}{sizeroverview} except that if all proportions are $0$,
+then all columns are resized equally (instead of not being resized at all).
+
\membersection{wxFlexGridSizer::AddGrowableRow}\label{wxflexgridsizeraddgrowablerow}
-\func{void}{AddGrowableRow}{\param{size\_t }{idx}}
+\func{void}{AddGrowableRow}{\param{size\_t }{idx}, \param{int }{proportion = $0$}}
Specifies that row idx (starting from zero) should be grown if there
is extra space available to the sizer.
+See \helpref{AddGrowableCol}{wxflexgridsizeraddgrowablecol} for the description
+of {\it proportion} parameter.
+
\membersection{wxFlexGridSizer::GetFlexibleDirection}\label{wxflexgridsizergetflexibledrection}
\constfunc{int}{GetFlexibleDirections}{\void}
// set the rows/columns which will grow (the others will remain of the
// constant initial size)
- void AddGrowableRow( size_t idx );
+ void AddGrowableRow( size_t idx, int proportion = 0 );
void RemoveGrowableRow( size_t idx );
- void AddGrowableCol( size_t idx );
+ void AddGrowableCol( size_t idx, int proportion = 0 );
void RemoveGrowableCol( size_t idx );
wxArrayInt m_growableRows,
m_growableCols;
+ // proportion values of the corresponding growable rows and columns
+ wxArrayInt m_growableRowsProportions,
+ m_growableColsProportions;
+
// parameters describing whether the growable cells should be resized in
// both directions or only one
int m_flexDirection;
int delta;
size_t idx, num;
wxArrayInt temp;
+ wxArrayInt temp_proportions;
+ int sum_proportions = 0;
+ int growable_space = 0;
// what to do with the rows? by default, resize them proportionally
if ( (m_flexDirection & wxVERTICAL) ||
for (idx = 0; idx < m_growableRows.GetCount(); idx++)
{
if (m_growableRows[idx] < nrows)
+ {
temp.Add( m_growableRows[idx] );
+ temp_proportions.Add( m_growableRowsProportions[idx] );
+ sum_proportions += m_growableRowsProportions[idx];
+ growable_space += m_rowHeights[ temp[idx] ];
+ }
}
num = temp.GetCount();
if ((num > 0) && (sz.y > minsz.y))
{
- delta = (sz.y - minsz.y) / num;
for (idx = 0; idx < num; idx++)
- m_rowHeights[ temp[idx] ] += delta;
+ {
+ delta = (sz.y - minsz.y);
+ if (sum_proportions == 0)
+ delta = (delta/num) + m_rowHeights[ temp[idx] ];
+ else
+ delta = ((delta+growable_space)*temp_proportions[idx])/
+ sum_proportions;
+ m_rowHeights[ temp[idx] ] = delta;
+ }
}
temp.Empty();
+ temp_proportions.Empty();
+ sum_proportions = 0;
+ growable_space = 0;
}
else if ( (m_growMode == wxFLEX_GROWMODE_ALL) && (sz.y > minsz.y) )
{
for (idx = 0; idx < m_growableCols.GetCount(); idx++)
{
if (m_growableCols[idx] < ncols)
+ {
temp.Add( m_growableCols[idx] );
+ temp_proportions.Add( m_growableColsProportions[idx] );
+ sum_proportions += m_growableColsProportions[idx];
+ growable_space += m_colWidths[idx];
+ }
}
num = temp.GetCount();
if ((num > 0) && (sz.x > minsz.x))
{
- delta = (sz.x - minsz.x) / num;
for (idx = 0; idx < num; idx++)
- m_colWidths[ temp[idx] ] += delta;
+ {
+ delta = (sz.x - minsz.x);
+ if (sum_proportions == 0)
+ delta = (delta/num) + m_colWidths[ temp[idx] ];
+ else
+ delta = ((delta+growable_space)*temp_proportions[idx])/
+ sum_proportions;
+ m_colWidths[ temp[idx] ] = delta;
+ }
}
}
else if ( (m_growMode == wxFLEX_GROWMODE_ALL) && (sz.x > minsz.x) )
height + (nrows-1) * m_vgap);
}
-void wxFlexGridSizer::AddGrowableRow( size_t idx )
+void wxFlexGridSizer::AddGrowableRow( size_t idx, int proportion )
{
m_growableRows.Add( idx );
+ m_growableRowsProportions.Add( proportion );
}
void wxFlexGridSizer::RemoveGrowableRow( size_t WXUNUSED(idx) )
{
}
-void wxFlexGridSizer::AddGrowableCol( size_t idx )
+void wxFlexGridSizer::AddGrowableCol( size_t idx, int proportion )
{
m_growableCols.Add( idx );
+ m_growableColsProportions.Add( proportion );
}
void wxFlexGridSizer::RemoveGrowableCol( size_t WXUNUSED(idx) )