added wxGrid::{Set,Get}{Row,Col}Sizes() methods allowing to save/restore all grid rows/columns sizes at once

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59144 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2009-02-25 23:41:29 +00:00
parent 0330301cb3
commit 574e1c5a03
5 changed files with 1021 additions and 826 deletions

View File

@@ -8336,6 +8336,48 @@ wxRect wxGrid::BlockToDeviceRect( const wxGridCellCoords& topLeft,
return resultRect;
}
void wxGrid::DoSetSizes(const wxGridSizesInfo& sizeInfo,
const wxGridOperations& oper)
{
BeginBatch();
oper.SetDefaultLineSize(this, sizeInfo.m_sizeDefault, true);
const int numLines = oper.GetNumberOfLines(this);
for ( int i = 0; i < numLines; i++ )
{
int size = sizeInfo.GetSize(i);
if ( size != sizeInfo.m_sizeDefault)
oper.SetLineSize(this, i, size);
}
EndBatch();
}
void wxGrid::SetColSizes(const wxGridSizesInfo& sizeInfo)
{
DoSetSizes(sizeInfo, wxGridColumnOperations());
}
void wxGrid::SetRowSizes(const wxGridSizesInfo& sizeInfo)
{
DoSetSizes(sizeInfo, wxGridRowOperations());
}
wxGridSizesInfo::wxGridSizesInfo(int defSize, const wxArrayInt& allSizes)
{
m_sizeDefault = defSize;
for ( size_t i = 0; i < allSizes.size(); i++ )
{
if ( allSizes[i] != defSize )
m_customSizes[i] = allSizes[i];
}
}
int wxGridSizesInfo::GetSize(unsigned pos) const
{
wxUnsignedToIntHashMap::const_iterator it = m_customSizes.find(pos);
return it == m_customSizes.end() ? m_sizeDefault : it->second;
}
// ----------------------------------------------------------------------------
// drop target
// ----------------------------------------------------------------------------