]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/button.h
Fix AUI compilation without PCH after recent changes.
[wxWidgets.git] / include / wx / button.h
index 5f6da7282ab74d1401515e90a77f85ad9e1154e5..49613d09dbaa39dfe672f7913d5985a78ff17209 100644 (file)
 // small as possible
 #define wxBU_EXACTFIT        0x0001
 
-#include "wx/control.h"
+// this flag can be used to disable using the text label in the button: it is
+// mostly useful when creating buttons showing bitmap and having stock id as
+// without it both the standard label corresponding to the stock id and the
+// bitmap would be shown
+#define wxBU_NOTEXT          0x0002
+
 
-class WXDLLIMPEXP_FWD_CORE wxBitmap;
+#include "wx/bitmap.h"
+#include "wx/control.h"
 
 extern WXDLLIMPEXP_DATA_CORE(const char) wxButtonNameStr[];
 
@@ -58,6 +64,12 @@ class WXDLLIMPEXP_CORE wxButtonBase : public wxControl
 public:
     wxButtonBase() { }
 
+    // show the authentication needed symbol on the button: this is currently
+    // only implemented on Windows Vista and newer (on which it shows the UAC
+    // shield symbol)
+    void SetAuthNeeded(bool show = true) { DoSetAuthNeeded(show); }
+    bool GetAuthNeeded() const { return DoGetAuthNeeded(); }
+
     // show the image in the button in addition to the label: this method is
     // supported on all (major) platforms
     void SetBitmap(const wxBitmap& bitmap, wxDirection dir = wxLEFT)
@@ -97,10 +109,11 @@ public:
     // set the margins around the image
     void SetBitmapMargins(wxCoord x, wxCoord y) { DoSetBitmapMargins(x, y); }
     void SetBitmapMargins(const wxSize& sz) { DoSetBitmapMargins(sz.x, sz.y); }
-
+    wxSize GetBitmapMargins() { return DoGetBitmapMargins(); }
+    
     // set the image position relative to the text, i.e. wxLEFT means that the
     // image is to the left of the text (this is the default)
-    virtual void SetBitmapPosition(wxDirection WXUNUSED(dir)) { }
+    void SetBitmapPosition(wxDirection dir);
 
 
     // make this button the default button in its top level window
@@ -131,28 +144,57 @@ public:
     void SetBitmapSelected(const wxBitmap& bitmap) { SetBitmapPressed(bitmap); }
     void SetBitmapHover(const wxBitmap& bitmap) { SetBitmapCurrent(bitmap); }
 
-protected:
-    // choose the default border for this window
-    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
 
+    // this enum is not part of wx public API, it is public because it is used
+    // in non wxButton-derived classes internally
+    //
+    // also notice that MSW code relies on the values of the enum elements, do
+    // not change them without revising src/msw/button.cpp
     enum State
     {
         State_Normal,
-        State_Pressed,    // a.k.a. "selected" in public API for some reason
         State_Current,    // a.k.a. hot or "hovering"
+        State_Pressed,    // a.k.a. "selected" in public API for some reason
         State_Disabled,
         State_Focused,
         State_Max
     };
 
+    // return true if this button shouldn't show the text label, either because
+    // it doesn't have it or because it was explicitly disabled with wxBU_NOTEXT
+    bool DontShowLabel() const
+    {
+        return HasFlag(wxBU_NOTEXT) || GetLabel().empty();
+    }
+
+    // return true if we do show the label
+    bool ShowsLabel() const
+    {
+        return !DontShowLabel();
+    }
+
+protected:
+    // choose the default border for this window
+    virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
+
+    virtual bool DoGetAuthNeeded() const { return false; }
+    virtual void DoSetAuthNeeded(bool WXUNUSED(show)) { }
+
     virtual wxBitmap DoGetBitmap(State WXUNUSED(which)) const
         { return wxBitmap(); }
     virtual void DoSetBitmap(const wxBitmap& WXUNUSED(bitmap),
                              State WXUNUSED(which))
         { }
+
+    virtual wxSize DoGetBitmapMargins() const
+        { return wxSize(0, 0); }
+
     virtual void DoSetBitmapMargins(wxCoord WXUNUSED(x), wxCoord WXUNUSED(y))
         { }
 
+    virtual void DoSetBitmapPosition(wxDirection WXUNUSED(dir))
+        { }
+
 
     wxDECLARE_NO_COPY_CLASS(wxButtonBase);
 };