X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/771be77f9a134e71facb6611bd490d45cf30b142..7ac5e1c9088dedba495f5af5dbfb23ca89487a78:/include/wx/statusbr.h diff --git a/include/wx/statusbr.h b/include/wx/statusbr.h index d60562e139..a5593c27cf 100644 --- a/include/wx/statusbr.h +++ b/include/wx/statusbr.h @@ -5,25 +5,22 @@ // Modified by: // Created: 05.02.00 // RCS-ID: $Id$ -// Copyright: (c) wxWidgets team +// Copyright: (c) Vadim Zeitlin // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_STATUSBR_H_BASE_ #define _WX_STATUSBR_H_BASE_ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma interface "statbar.h" -#endif - -#include "wx/window.h" +#include "wx/defs.h" #if wxUSE_STATUSBAR +#include "wx/window.h" #include "wx/list.h" #include "wx/dynarray.h" -WX_DECLARE_LIST(wxString, wxListString); +extern WXDLLIMPEXP_DATA_CORE(const char) wxStatusBarNameStr[]; // ---------------------------------------------------------------------------- // wxStatusBar constants @@ -34,11 +31,32 @@ WX_DECLARE_LIST(wxString, wxListString); #define wxSB_FLAT 0x0001 #define wxSB_RAISED 0x0002 +// ---------------------------------------------------------------------------- +// wxStatusBarPane: an helper for wxStatusBar +// ---------------------------------------------------------------------------- + +class wxStatusBarPane +{ +public: + wxStatusBarPane(int style = wxSB_NORMAL, size_t width = 0) + : nStyle(style), nWidth(width) {} + + int nStyle; + int 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 not include the string currently displayed in this pane + // as it's stored in the native status bar control + wxArrayString arrStack; +}; + +WX_DECLARE_OBJARRAY(wxStatusBarPane, wxStatusBarPaneArray); + // ---------------------------------------------------------------------------- // wxStatusBar: a window near the bottom of the frame used for status info // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxStatusBarBase : public wxWindow +class WXDLLIMPEXP_CORE wxStatusBarBase : public wxWindow { public: wxStatusBarBase(); @@ -51,7 +69,7 @@ public: // set the number of fields and call SetStatusWidths(widths) if widths are // given virtual void SetFieldsCount(int number = 1, const int *widths = NULL); - int GetFieldsCount() const { return m_nFields; } + int GetFieldsCount() const { return m_panes.GetCount(); } // field text // ---------- @@ -98,46 +116,19 @@ public: // don't want status bars to accept the focus at all virtual bool AcceptsFocus() const { return false; } -protected: - // set the widths array to NULL - void InitWidths(); - - // free the status widths arrays - void FreeWidths(); - - // reset the widths - void ReinitWidths() { FreeWidths(); InitWidths(); } - - // same, for field styles - void InitStyles(); - void FreeStyles(); - void ReinitStyles() { FreeStyles(); InitStyles(); } + virtual bool CanBeOutsideClientArea() const { return true; } - // same, for text stacks - void InitStacks(); - void FreeStacks(); - void ReinitStacks() { FreeStacks(); InitStacks(); } +protected: + virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; } // calculate the real field widths for the given total available size wxArrayInt CalculateAbsWidths(wxCoord widthTotal) const; - // use these functions to access the stacks of field strings - wxListString *GetStatusStack(int i) const; - wxListString *GetOrCreateStatusStack(int i); - - // the current number of fields - int m_nFields; - - // the widths of the fields in pixels if !NULL, all fields have the same - // width otherwise - int *m_statusWidths; + // the array with the pane infos: + wxStatusBarPaneArray m_panes; - // the styles of the fields - int *m_statusStyles; - - // stacks of previous values for PushStatusText/PopStatusText - // this is created on demand, use GetStatusStack/GetOrCreateStatusStack - wxListString **m_statusTextStacks; + // if true overrides the width info of the wxStatusBarPanes + bool m_bSameWidthForAllPanes; DECLARE_NO_COPY_CLASS(wxStatusBarBase) }; @@ -148,24 +139,18 @@ protected: #if defined(__WXUNIVERSAL__) #define wxStatusBarUniv wxStatusBar - #include "wx/univ/statusbr.h" -#elif defined(__PALMOS__) +#elif defined(__WXPALMOS__) #define wxStatusBarPalm wxStatusBar - #include "wx/palmos/statusbr.h" #elif defined(__WIN32__) && wxUSE_NATIVE_STATUSBAR - #define wxStatusBar95 wxStatusBar - - #include "wx/msw/statbr95.h" + #include "wx/msw/statusbar.h" #elif defined(__WXMAC__) #define wxStatusBarMac wxStatusBar - #include "wx/generic/statusbr.h" - #include "wx/mac/statusbr.h" + #include "wx/osx/statusbr.h" #else #define wxStatusBarGeneric wxStatusBar - #include "wx/generic/statusbr.h" #endif