]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/statusbr.h
don't use GetParent() in GetParentForModalDialog() itself as it can be called before...
[wxWidgets.git] / include / wx / statusbr.h
index 3dd21052a187e97025fb10e6426933f2a91426a0..0b286fc7f75e9eeae949c392e4b109b89fe92113 100644 (file)
@@ -26,7 +26,22 @@ extern WXDLLIMPEXP_DATA_CORE(const char) wxStatusBarNameStr[];
 // wxStatusBar constants
 // ----------------------------------------------------------------------------
 
-// style flags for fields
+// wxStatusBar styles
+#define wxSTB_SIZEGRIP         0x0010
+#define wxSTB_SHOW_TIPS        0x0020
+
+#define wxSTB_ELLIPSIZE_START   0x0040
+#define wxSTB_ELLIPSIZE_MIDDLE  0x0080
+#define wxSTB_ELLIPSIZE_END     0x0100
+
+#define wxSTB_DEFAULT_STYLE    (wxSTB_SIZEGRIP|wxSTB_ELLIPSIZE_END|wxSTB_SHOW_TIPS|wxFULL_REPAINT_ON_RESIZE)
+
+
+// old compat style name:
+#define wxST_SIZEGRIP    wxSTB_SIZEGRIP
+
+
+// style flags for wxStatusBar fields
 #define wxSB_NORMAL    0x0000
 #define wxSB_FLAT      0x0001
 #define wxSB_RAISED    0x0002
@@ -42,7 +57,8 @@ class WXDLLIMPEXP_CORE wxStatusBarPane
 
 public:
     wxStatusBarPane(int style = wxSB_NORMAL, size_t width = 0)
-        : m_nStyle(style), m_nWidth(width) { m_arrStack.Add(wxEmptyString); }
+        : m_nStyle(style), m_nWidth(width) 
+        { m_arrStack.Add(wxEmptyString); m_bEllipsized=false; }
         
     int GetWidth() const
         { return m_nWidth; }
@@ -52,7 +68,12 @@ public:
     const wxArrayString& GetStack() const
         { return m_arrStack; }
 
-    // use wxStatusBar setter functions to modify a wxStatusBarPane
+    // implementation-only getter:
+    bool IsEllipsized() const
+        { return m_bEllipsized; }
+
+    // NOTE: there are no setters in wxStatusBarPane; 
+    //       use wxStatusBar functions to modify a wxStatusBarPane
 
 protected:
     int m_nStyle;
@@ -61,9 +82,12 @@ protected:
     // 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
+    // ellipsized; note that m_arrStack.Last() is the top of the stack
     // (i.e. the string shown in the status bar)
     wxArrayString m_arrStack;
+
+    // was the m_arrStack.Last() string shown in the status bar control ellipsized?
+    bool m_bEllipsized;
 };
 
 WX_DECLARE_OBJARRAY(wxStatusBarPane, wxStatusBarPaneArray);
@@ -90,6 +114,8 @@ public:
     // 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
@@ -138,6 +164,9 @@ public:
     // get the dimensions of the horizontal and vertical borders
     virtual int GetBorderX() const = 0;
     virtual int GetBorderY() const = 0;
+    
+    wxSize GetBorders() const
+        { return wxSize(GetBorderX(), GetBorderY()); }
 
     // miscellaneous
     // -------------
@@ -154,10 +183,30 @@ public:
     virtual bool CanBeOutsideClientArea() const { return true; }
 
 protected:
+
+    // wxWindow overrides:
+
+#if wxUSE_TOOLTIPS
+   virtual void DoSetToolTip( wxToolTip *tip )
+        {
+            wxASSERT_MSG(!HasFlag(wxSTB_SHOW_TIPS),
+                         "Do not set tooltip(s) manually when using wxSTB_SHOW_TIPS!");
+            wxWindow::DoSetToolTip(tip);
+        }
+#endif
+   
     virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
 
+
+    // internal helpers & data:
+
     // calculate the real field widths for the given total available size
     wxArrayInt CalculateAbsWidths(wxCoord widthTotal) const;
+    
+    // an internal utility used to keep track of which panes have labels
+    // which were last rendered as ellipsized...
+    void SetEllipsizedFlag(int n, bool ellipsized)
+        { m_panes[n].m_bEllipsized = ellipsized; }
 
     // the array with the pane infos:
     wxStatusBarPaneArray m_panes;