// field text
// ----------
+ // NOTE: even if it is not pure virtual, SetStatusText() must be overloaded by
+ // the derived classes to update the given text in the native control
virtual void SetStatusText(const wxString& text, int number = 0)
{ m_panes[number].GetStack().Last() = text; }
virtual wxString GetStatusText(int number = 0) const
to give small amounts of status information. It can contain one or more fields,
one or more of which can be variable length according to the size of the window.
+ wxStatusBar also maintains an independent stack of status texts for each field
+ (see PushStatusText() and PopStatusText()).
+
Note that in wxStatusBar context, the terms @e pane and @e field are synonyms.
@beginStyleTable
void PopStatusText(int field = 0);
/**
- Saves the current field text in a per field stack, and sets the field text
+ Saves the current field text in a per-field stack, and sets the field text
to the string passed as argument.
@see PopStatusText()
virtual void SetStatusStyles(int n, const int* styles);
/**
- Sets the text for one field.
+ Sets the status text for the @a i-th field.
+
+ The given text will replace the current text. Note that unlike PushStatusText()
+ this function won't save the current text (and calling PopStatusText() won't
+ restore it!).
@param text
The text to be set. Use an empty string ("") to clear the field.
void wxStatusBarBase::PushStatusText(const wxString& text, int number)
{
- // save current status text in the stack
- m_panes[number].m_arrStack.push_back(GetStatusText(number));
+ // save the new text (in non-ellipsized form) in the stack
+ m_panes[number].m_arrStack.push_back(text);
SetStatusText(text, number);
- // update current status text (eventually also in the native control)
+ // update current status text (which will possibly be ellipsized)
+ // also in the native control
}
void wxStatusBarBase::PopStatusText(int number)
{
- wxASSERT_MSG(m_panes[number].m_arrStack.GetCount() == 1,
+ wxASSERT_MSG(m_panes[number].m_arrStack.GetCount() >= 1,
"can't pop any further string");
- wxString text = m_panes[number].m_arrStack.back();
- m_panes[number].m_arrStack.pop_back(); // also remove it from the stack
+ // the top of the stack is the status text currently shown in the native control;
+ // remove it
+ m_panes[number].m_arrStack.pop_back();
- // restore the popped status text in the pane
+ // restore the previous status text in the native control
+ const wxString& text = m_panes[number].m_arrStack.back();
SetStatusText(text, number);
}