1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: src/osx/anybutton_osx.cpp 3 // Purpose: wxAnyButton 4 // Author: Stefan Csomor 5 // Created: 1998-01-01 (extracted from button_osx.cpp) 6 // Copyright: (c) Stefan Csomor 7 // Licence: wxWindows licence 8 ///////////////////////////////////////////////////////////////////////////// 9 10 #include "wx/wxprec.h" 11 12 #include "wx/anybutton.h" 13 14 #ifndef WX_PRECOMP 15 #include "wx/panel.h" 16 #include "wx/toplevel.h" 17 #include "wx/dcclient.h" 18 #include "wx/stattext.h" 19 #endif 20 21 #include "wx/stockitem.h" 22 23 #include "wx/osx/private.h" 24 BEGIN_EVENT_TABLE(wxAnyButton,wxControl)25BEGIN_EVENT_TABLE(wxAnyButton, wxControl) 26 EVT_ENTER_WINDOW(wxAnyButton::OnEnterWindow) 27 EVT_LEAVE_WINDOW(wxAnyButton::OnLeaveWindow) 28 END_EVENT_TABLE() 29 30 void wxAnyButton::SetLabel(const wxString& label) 31 { 32 if ( HasFlag(wxBU_NOTEXT) ) 33 { 34 // just store the label internally but don't really use it for the 35 // button 36 m_labelOrig = 37 m_label = label; 38 return; 39 } 40 41 wxAnyButtonBase::SetLabel(label); 42 } 43 DoGetBitmap(State which) const44wxBitmap wxAnyButton::DoGetBitmap(State which) const 45 { 46 return m_bitmaps[which]; 47 } 48 DoSetBitmap(const wxBitmap & bitmap,State which)49void wxAnyButton::DoSetBitmap(const wxBitmap& bitmap, State which) 50 { 51 m_bitmaps[which] = bitmap; 52 53 if ( which == State_Normal ) 54 GetPeer()->SetBitmap(bitmap); 55 else if ( which == State_Pressed ) 56 { 57 wxButtonImpl* bi = dynamic_cast<wxButtonImpl*> (GetPeer()); 58 if ( bi ) 59 bi->SetPressedBitmap(bitmap); 60 } 61 InvalidateBestSize(); 62 } 63 DoSetBitmapPosition(wxDirection dir)64void wxAnyButton::DoSetBitmapPosition(wxDirection dir) 65 { 66 GetPeer()->SetBitmapPosition(dir); 67 InvalidateBestSize(); 68 } 69 70 #if wxUSE_MARKUP && wxOSX_USE_COCOA 71 DoSetLabelMarkup(const wxString & markup)72bool wxAnyButton::DoSetLabelMarkup(const wxString& markup) 73 { 74 if ( !wxAnyButtonBase::DoSetLabelMarkup(markup) ) 75 return false; 76 77 GetPeer()->SetLabelMarkup(markup); 78 79 return true; 80 } 81 82 #endif // wxUSE_MARKUP && wxOSX_USE_COCOA 83 OnEnterWindow(wxMouseEvent & WXUNUSED (event))84void wxAnyButton::OnEnterWindow( wxMouseEvent& WXUNUSED(event)) 85 { 86 if ( DoGetBitmap( State_Current ).IsOk() ) 87 GetPeer()->SetBitmap( DoGetBitmap( State_Current ) ); 88 } 89 OnLeaveWindow(wxMouseEvent & WXUNUSED (event))90void wxAnyButton::OnLeaveWindow( wxMouseEvent& WXUNUSED(event)) 91 { 92 if ( DoGetBitmap( State_Current ).IsOk() ) 93 GetPeer()->SetBitmap( DoGetBitmap( State_Normal ) ); 94 } 95