exposing common used button impl class

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72861 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2012-11-02 10:41:22 +00:00
parent a1b719bc74
commit b108581c99

View File

@@ -17,6 +17,7 @@
#include "wx/button.h" #include "wx/button.h"
#include "wx/toplevel.h" #include "wx/toplevel.h"
#include "wx/tglbtn.h"
#include "wx/osx/private.h" #include "wx/osx/private.h"
@@ -82,20 +83,14 @@
- (NSControlSize)controlSize; - (NSControlSize)controlSize;
@end @end
namespace wxButtonCocoaImpl::wxButtonCocoaImpl(wxWindowMac *wxpeer, wxNSButton *v)
: wxWidgetCocoaImpl(wxpeer, v)
{ {
class wxButtonCocoaImpl : public wxWidgetCocoaImpl, public wxButtonImpl
{
public:
wxButtonCocoaImpl(wxWindowMac *wxpeer, wxNSButton *v)
: wxWidgetCocoaImpl(wxpeer, v)
{
SetNeedsFrame(false); SetNeedsFrame(false);
} }
virtual void SetBitmap(const wxBitmap& bitmap) void wxButtonCocoaImpl::SetBitmap(const wxBitmap& bitmap)
{ {
// switch bezel style for plain pushbuttons // switch bezel style for plain pushbuttons
if ( bitmap.IsOk() ) if ( bitmap.IsOk() )
{ {
@@ -108,11 +103,11 @@ public:
} }
wxWidgetCocoaImpl::SetBitmap(bitmap); wxWidgetCocoaImpl::SetBitmap(bitmap);
} }
#if wxUSE_MARKUP #if wxUSE_MARKUP
virtual void SetLabelMarkup(const wxString& markup) void wxButtonCocoaImpl::SetLabelMarkup(const wxString& markup)
{ {
wxMarkupToAttrString toAttr(GetWXPeer(), markup); wxMarkupToAttrString toAttr(GetWXPeer(), markup);
NSMutableAttributedString *attrString = toAttr.GetNSAttributedString(); NSMutableAttributedString *attrString = toAttr.GetNSAttributedString();
@@ -126,18 +121,25 @@ public:
[paragraphStyle release]; [paragraphStyle release];
[GetNSButton() setAttributedTitle:attrString]; [GetNSButton() setAttributedTitle:attrString];
} }
#endif // wxUSE_MARKUP #endif // wxUSE_MARKUP
void SetPressedBitmap( const wxBitmap& bitmap ) void wxButtonCocoaImpl::SetPressedBitmap( const wxBitmap& bitmap )
{ {
NSButton* button = GetNSButton(); NSButton* button = GetNSButton();
[button setAlternateImage: bitmap.GetNSImage()]; [button setAlternateImage: bitmap.GetNSImage()];
if ( GetWXPeer()->IsKindOf(wxCLASSINFO(wxToggleButton)) )
{
[button setButtonType:NSToggleButton];
}
else
{
[button setButtonType:NSMomentaryChangeButton]; [button setButtonType:NSMomentaryChangeButton];
} }
}
void GetLayoutInset(int &left , int &top , int &right, int &bottom) const void wxButtonCocoaImpl::GetLayoutInset(int &left , int &top , int &right, int &bottom) const
{ {
left = top = right = bottom = 0; left = top = right = bottom = 0;
NSControlSize size = NSRegularControlSize; NSControlSize size = NSRegularControlSize;
if ( [m_osxView respondsToSelector:@selector(controlSize)] ) if ( [m_osxView respondsToSelector:@selector(controlSize)] )
@@ -170,10 +172,10 @@ public:
break; break;
} }
} }
} }
void SetAcceleratorFromLabel(const wxString& label) void wxButtonCocoaImpl::SetAcceleratorFromLabel(const wxString& label)
{ {
const int accelPos = wxControl::FindAccelIndex(label); const int accelPos = wxControl::FindAccelIndex(label);
if ( accelPos != wxNOT_FOUND ) if ( accelPos != wxNOT_FOUND )
{ {
@@ -187,19 +189,14 @@ public:
{ {
[GetNSButton() setKeyEquivalent:@""]; [GetNSButton() setKeyEquivalent:@""];
} }
} }
NSButton *wxButtonCocoaImpl::GetNSButton() const
private: {
NSButton *GetNSButton() const
{
wxASSERT( [m_osxView isKindOfClass:[NSButton class]] ); wxASSERT( [m_osxView isKindOfClass:[NSButton class]] );
return static_cast<NSButton *>(m_osxView); return static_cast<NSButton *>(m_osxView);
} }
};
} // anonymous namespace
// Set the keyboard accelerator key from the label (e.g. "Click &Me") // Set the keyboard accelerator key from the label (e.g. "Click &Me")
void wxButton::OSXSetAcceleratorFromLabel(const wxString& label) void wxButton::OSXSetAcceleratorFromLabel(const wxString& label)