// 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[];
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)
// 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
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);
};