1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: wx/statusbr.h 3 // Purpose: wxStatusBar class interface 4 // Author: Vadim Zeitlin 5 // Modified by: 6 // Created: 05.02.00 7 // RCS-ID: $Id: statusbr.h 41035 2006-09-06 17:36:22Z PC $ 8 // Copyright: (c) Vadim Zeitlin 9 // Licence: wxWindows licence 10 ///////////////////////////////////////////////////////////////////////////// 11 12 #ifndef _WX_STATUSBR_H_BASE_ 13 #define _WX_STATUSBR_H_BASE_ 14 15 #include "wx/defs.h" 16 17 #if wxUSE_STATUSBAR 18 19 #include "wx/window.h" 20 #include "wx/list.h" 21 #include "wx/dynarray.h" 22 23 extern WXDLLIMPEXP_DATA_CORE(const wxChar) wxStatusBarNameStr[]; 24 25 WX_DECLARE_LIST(wxString, wxListString); 26 27 // ---------------------------------------------------------------------------- 28 // wxStatusBar constants 29 // ---------------------------------------------------------------------------- 30 31 // style flags for fields 32 #define wxSB_NORMAL 0x0000 33 #define wxSB_FLAT 0x0001 34 #define wxSB_RAISED 0x0002 35 36 // ---------------------------------------------------------------------------- 37 // wxStatusBar: a window near the bottom of the frame used for status info 38 // ---------------------------------------------------------------------------- 39 40 class WXDLLEXPORT wxStatusBarBase : public wxWindow 41 { 42 public: 43 wxStatusBarBase(); 44 45 virtual ~wxStatusBarBase(); 46 47 // field count 48 // ----------- 49 50 // set the number of fields and call SetStatusWidths(widths) if widths are 51 // given 52 virtual void SetFieldsCount(int number = 1, const int *widths = NULL); GetFieldsCount()53 int GetFieldsCount() const { return m_nFields; } 54 55 // field text 56 // ---------- 57 58 virtual void SetStatusText(const wxString& text, int number = 0) = 0; 59 virtual wxString GetStatusText(int number = 0) const = 0; 60 61 void PushStatusText(const wxString& text, int number = 0); 62 void PopStatusText(int number = 0); 63 64 // fields widths 65 // ------------- 66 67 // set status field widths as absolute numbers: positive widths mean that 68 // the field has the specified absolute width, negative widths are 69 // interpreted as the sizer options, i.e. the extra space (total space 70 // minus the sum of fixed width fields) is divided between the fields with 71 // negative width according to the abs value of the width (field with width 72 // -2 grows twice as much as one with width -1 &c) 73 virtual void SetStatusWidths(int n, const int widths[]); 74 75 // field styles 76 // ------------ 77 78 // Set the field style. Use either wxSB_NORMAL (default) for a standard 3D 79 // border around a field, wxSB_FLAT for no border around a field, so that it 80 // appears flat or wxSB_POPOUT to make the field appear raised. 81 // Setting field styles only works on wxMSW 82 virtual void SetStatusStyles(int n, const int styles[]); 83 84 // geometry 85 // -------- 86 87 // Get the position and size of the field's internal bounding rectangle 88 virtual bool GetFieldRect(int i, wxRect& rect) const = 0; 89 90 // sets the minimal vertical size of the status bar 91 virtual void SetMinHeight(int height) = 0; 92 93 // get the dimensions of the horizontal and vertical borders 94 virtual int GetBorderX() const = 0; 95 virtual int GetBorderY() const = 0; 96 97 // don't want status bars to accept the focus at all AcceptsFocus()98 virtual bool AcceptsFocus() const { return false; } 99 100 protected: 101 // set the widths array to NULL 102 void InitWidths(); 103 104 // free the status widths arrays 105 void FreeWidths(); 106 107 // reset the widths ReinitWidths()108 void ReinitWidths() { FreeWidths(); InitWidths(); } 109 110 // same, for field styles 111 void InitStyles(); 112 void FreeStyles(); ReinitStyles()113 void ReinitStyles() { FreeStyles(); InitStyles(); } 114 115 // same, for text stacks 116 void InitStacks(); 117 void FreeStacks(); ReinitStacks()118 void ReinitStacks() { FreeStacks(); InitStacks(); } 119 120 // calculate the real field widths for the given total available size 121 wxArrayInt CalculateAbsWidths(wxCoord widthTotal) const; 122 123 // use these functions to access the stacks of field strings 124 wxListString *GetStatusStack(int i) const; 125 wxListString *GetOrCreateStatusStack(int i); 126 127 // the current number of fields 128 int m_nFields; 129 130 // the widths of the fields in pixels if !NULL, all fields have the same 131 // width otherwise 132 int *m_statusWidths; 133 134 // the styles of the fields 135 int *m_statusStyles; 136 137 // stacks of previous values for PushStatusText/PopStatusText 138 // this is created on demand, use GetStatusStack/GetOrCreateStatusStack 139 wxListString **m_statusTextStacks; 140 141 DECLARE_NO_COPY_CLASS(wxStatusBarBase) 142 }; 143 144 // ---------------------------------------------------------------------------- 145 // include the actual wxStatusBar class declaration 146 // ---------------------------------------------------------------------------- 147 148 #if defined(__WXUNIVERSAL__) 149 #define wxStatusBarUniv wxStatusBar 150 151 #include "wx/univ/statusbr.h" 152 #elif defined(__WXPALMOS__) 153 #define wxStatusBarPalm wxStatusBar 154 155 #include "wx/palmos/statusbr.h" 156 #elif defined(__WIN32__) && wxUSE_NATIVE_STATUSBAR 157 #define wxStatusBar95 wxStatusBar 158 159 #include "wx/msw/statbr95.h" 160 #elif defined(__WXMAC__) 161 #define wxStatusBarMac wxStatusBar 162 163 #include "wx/generic/statusbr.h" 164 #include "wx/mac/statusbr.h" 165 #else 166 #define wxStatusBarGeneric wxStatusBar 167 168 #include "wx/generic/statusbr.h" 169 #endif 170 171 #endif // wxUSE_STATUSBAR 172 173 #endif 174 // _WX_STATUSBR_H_BASE_ 175