X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9b4da62701dbe8ccfbe447ce8d1bc77fcb40e9e5..86ac84b8ce086e6bbda58f422d41f84268606e35:/include/wx/bmpbuttn.h diff --git a/include/wx/bmpbuttn.h b/include/wx/bmpbuttn.h index 27edd94fd0..8837752b00 100644 --- a/include/wx/bmpbuttn.h +++ b/include/wx/bmpbuttn.h @@ -16,57 +16,44 @@ #if wxUSE_BMPBUTTON -#include "wx/bitmap.h" #include "wx/button.h" -extern WXDLLEXPORT_DATA(const char) wxButtonNameStr[]; +// FIXME: right now only wxMSW and wxGTK implement bitmap support in wxButton +// itself, this shouldn't be used for the other platforms neither +// when all of them do it +#if (defined(__WXMSW__) || defined(__WXGTK__)) && !defined(__WXUNIVERSAL__) + #define wxHAS_BUTTON_BITMAP +#endif // ---------------------------------------------------------------------------- // wxBitmapButton: a button which shows bitmaps instead of the usual string. // It has different bitmaps for different states (focused/disabled/pressed) // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxBitmapButtonBase : public wxButton +class WXDLLIMPEXP_CORE wxBitmapButtonBase : public wxButton { public: wxBitmapButtonBase() { +#ifndef wxHAS_BUTTON_BITMAP m_marginX = m_marginY = 0; +#endif // wxHAS_BUTTON_BITMAP } - // set the bitmaps - virtual void SetBitmapLabel(const wxBitmap& bitmap) - { m_bmpNormal = bitmap; OnSetBitmap(); } - virtual void SetBitmapSelected(const wxBitmap& sel) - { m_bmpSelected = sel; OnSetBitmap(); } - virtual void SetBitmapFocus(const wxBitmap& focus) - { m_bmpFocus = focus; OnSetBitmap(); } - virtual void SetBitmapDisabled(const wxBitmap& disabled) - { m_bmpDisabled = disabled; OnSetBitmap(); } - virtual void SetBitmapHover(const wxBitmap& hover) - { m_bmpHover = hover; OnSetBitmap(); } - - // retrieve the bitmaps - const wxBitmap& GetBitmapLabel() const { return m_bmpNormal; } - const wxBitmap& GetBitmapSelected() const { return m_bmpSelected; } - const wxBitmap& GetBitmapFocus() const { return m_bmpFocus; } - const wxBitmap& GetBitmapDisabled() const { return m_bmpDisabled; } - const wxBitmap& GetBitmapHover() const { return m_bmpHover; } - wxBitmap& GetBitmapLabel() { return m_bmpNormal; } - wxBitmap& GetBitmapSelected() { return m_bmpSelected; } - wxBitmap& GetBitmapFocus() { return m_bmpFocus; } - wxBitmap& GetBitmapDisabled() { return m_bmpDisabled; } - wxBitmap& GetBitmapHover() { return m_bmpHover; } - // set/get the margins around the button - virtual void SetMargins(int x, int y) { m_marginX = x; m_marginY = y; } - int GetMarginX() const { return m_marginX; } - int GetMarginY() const { return m_marginY; } + virtual void SetMargins(int x, int y) + { + DoSetBitmapMargins(x, y); + } + + int GetMarginX() const { return DoGetBitmapMargins().x; } + int GetMarginY() const { return DoGetBitmapMargins().y; } // deprecated synonym for SetBitmapLabel() #if WXWIN_COMPATIBILITY_2_6 - wxDEPRECATED( void SetLabel(const wxBitmap& bitmap) ); + wxDEPRECATED_INLINE( void SetLabel(const wxBitmap& bitmap), + SetBitmapLabel(bitmap); ) // prevent virtual function hiding virtual void SetLabel(const wxString& label) @@ -74,31 +61,36 @@ public: #endif // WXWIN_COMPATIBILITY_2_6 protected: +#ifndef wxHAS_BUTTON_BITMAP // function called when any of the bitmaps changes virtual void OnSetBitmap() { InvalidateBestSize(); Refresh(); } + virtual wxBitmap DoGetBitmap(State which) const { return m_bitmaps[which]; } + virtual void DoSetBitmap(const wxBitmap& bitmap, State which) + { m_bitmaps[which] = bitmap; OnSetBitmap(); } + + virtual wxSize DoGetBitmapMargins() const + { + return wxSize(m_marginX, m_marginY); + } + + virtual void DoSetBitmapMargins(int x, int y) + { + m_marginX = x; + m_marginY = y; + } + // the bitmaps for various states - wxBitmap m_bmpNormal, - m_bmpSelected, - m_bmpFocus, - m_bmpDisabled, - m_bmpHover; + wxBitmap m_bitmaps[State_Max]; // the margins around the bitmap int m_marginX, m_marginY; +#endif // !wxHAS_BUTTON_BITMAP - - DECLARE_NO_COPY_CLASS(wxBitmapButtonBase) + wxDECLARE_NO_COPY_CLASS(wxBitmapButtonBase); }; -#if WXWIN_COMPATIBILITY_2_6 -inline void wxBitmapButtonBase::SetLabel(const wxBitmap& bitmap) -{ - SetBitmapLabel(bitmap); -} -#endif // WXWIN_COMPATIBILITY_2_6 - #if defined(__WXUNIVERSAL__) #include "wx/univ/bmpbuttn.h" #elif defined(__WXMSW__) @@ -110,7 +102,7 @@ inline void wxBitmapButtonBase::SetLabel(const wxBitmap& bitmap) #elif defined(__WXGTK__) #include "wx/gtk1/bmpbuttn.h" #elif defined(__WXMAC__) - #include "wx/mac/bmpbuttn.h" + #include "wx/osx/bmpbuttn.h" #elif defined(__WXCOCOA__) #include "wx/cocoa/bmpbuttn.h" #elif defined(__WXPM__)