added status bar fields styles support (patch 988292)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28480 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2004-07-25 16:13:52 +00:00
parent 22dec51f90
commit c2919ab326
14 changed files with 373 additions and 50 deletions

View File

@@ -53,12 +53,14 @@ wxStatusBarBase::wxStatusBarBase()
InitWidths();
InitStacks();
InitStyles();
}
wxStatusBarBase::~wxStatusBarBase()
{
FreeWidths();
FreeStacks();
InitStyles();
}
// ----------------------------------------------------------------------------
@@ -75,6 +77,20 @@ void wxStatusBarBase::FreeWidths()
delete [] m_statusWidths;
}
// ----------------------------------------------------------------------------
// styles array handling
// ----------------------------------------------------------------------------
void wxStatusBarBase::InitStyles()
{
m_statusStyles = NULL;
}
void wxStatusBarBase::FreeStyles()
{
delete [] m_statusStyles;
}
// ----------------------------------------------------------------------------
// field widths
// ----------------------------------------------------------------------------
@@ -112,6 +128,26 @@ void wxStatusBarBase::SetFieldsCount(int number, const int *widths)
m_statusTextStacks = newStacks;
}
// Resize styles array
if (m_statusStyles)
{
int *oldStyles = m_statusStyles;
m_statusStyles = new int[number];
int i, max = wxMin(number, m_nFields);
// copy old styles
for (i = 0; i < max; ++i)
m_statusStyles[i] = oldStyles[i];
// initialize new styles to wxSB_NORMAL
for (i = max; i < number; ++i)
m_statusStyles[i] = wxSB_NORMAL;
// free old styles
delete [] oldStyles;
}
m_nFields = number;
ReinitWidths();
@@ -151,6 +187,25 @@ void wxStatusBarBase::SetStatusWidths(int WXUNUSED_UNLESS_DEBUG(n),
Refresh();
}
void wxStatusBarBase::SetStatusStyles(int WXUNUSED_UNLESS_DEBUG(n),
const int styles[])
{
wxCHECK_RET( styles, _T("NULL pointer in SetStatusStyles") );
wxASSERT_MSG( n == m_nFields, _T("field number mismatch") );
if ( !m_statusStyles )
m_statusStyles = new int[m_nFields];
for ( int i = 0; i < m_nFields; i++ )
{
m_statusStyles[i] = styles[i];
}
// update the display after the widths changed
Refresh();
}
wxArrayInt wxStatusBarBase::CalculateAbsWidths(wxCoord widthTotal) const
{
wxArrayInt widths;