make wxStatusBarPane a 'full class' with getters and protected data; document it; provide more accessors in wxStatusBar (closes #10574)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59566 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Francesco Montorsi
2009-03-15 17:54:05 +00:00
parent bff248644e
commit b31eaa5c34
6 changed files with 121 additions and 28 deletions

View File

@@ -37,19 +37,33 @@ extern WXDLLIMPEXP_DATA_CORE(const char) wxStatusBarNameStr[];
class wxStatusBarPane
{
// only wxStatusBarBase can access our internal members and modify them:
friend class WXDLLIMPEXP_FWD_CORE wxStatusBarBase;
public:
wxStatusBarPane(int style = wxSB_NORMAL, size_t width = 0)
: nStyle(style), nWidth(width) { arrStack.Add(wxEmptyString); }
: m_nStyle(style), m_nWidth(width) { m_arrStack.Add(wxEmptyString); }
int GetWidth() const
{ return m_nWidth; }
int GetStyle() const
{ return m_nStyle; }
const wxArrayString& GetStack() const
{ return m_arrStack; }
int nStyle;
int nWidth; // the width maybe negative, indicating a variable-width field
// use wxStatusBar setter functions to modify a wxStatusBarPane
protected:
int m_nStyle;
int m_nWidth; // the width maybe negative, indicating a variable-width field
// this is the array of the stacked strings of this pane; note that this
// stack does include also the string currently displayed in this pane
// as the version stored in the native status bar control is possibly
// ellipsized; note that arrStack.Last() is the top of the stack
// (i.e. the string shown in the status bar)
wxArrayString arrStack;
wxArrayString m_arrStack;
};
WX_DECLARE_OBJARRAY(wxStatusBarPane, wxStatusBarPaneArray);
@@ -77,9 +91,11 @@ public:
// ----------
virtual void SetStatusText(const wxString& text, int number = 0)
{ m_panes[number].arrStack.Last() = text; }
{ m_panes[number].GetStack().Last() = text; }
virtual wxString GetStatusText(int number = 0) const
{ return m_panes[number].arrStack.Last(); }
{ return m_panes[number].GetStack().Last(); }
const wxArrayString& GetStatusStack(int n) const
{ return m_panes[n].GetStack(); }
void PushStatusText(const wxString& text, int number = 0);
void PopStatusText(int number = 0);
@@ -94,6 +110,9 @@ public:
// negative width according to the abs value of the width (field with width
// -2 grows twice as much as one with width -1 &c)
virtual void SetStatusWidths(int n, const int widths[]);
int GetStatusWidth(int n) const
{ return m_panes[n].GetWidth(); }
// field styles
// ------------
@@ -103,6 +122,9 @@ public:
// appears flat or wxSB_POPOUT to make the field appear raised.
// Setting field styles only works on wxMSW
virtual void SetStatusStyles(int n, const int styles[]);
int GetStatusStyle(int n) const
{ return m_panes[n].GetStyle(); }
// geometry
// --------
@@ -117,9 +139,18 @@ public:
virtual int GetBorderX() const = 0;
virtual int GetBorderY() const = 0;
// miscellaneous
// -------------
const wxStatusBarPane& GetField(int n) const
{ return m_panes[n]; }
// wxWindow overrides:
// don't want status bars to accept the focus at all
virtual bool AcceptsFocus() const { return false; }
// the client size of a toplevel window doesn't include the status bar
virtual bool CanBeOutsideClientArea() const { return true; }
protected: