Added wxToggleBitmapButton

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50481 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling 2007-12-05 15:01:13 +00:00
parent 9d5507f7a2
commit f8b13b5868
2 changed files with 112 additions and 3 deletions

View File

@ -15,7 +15,51 @@
WXDLLEXPORT_DATA(extern const char) wxCheckBoxNameStr[];
// Checkbox item (single checkbox)
class WXDLLEXPORT wxToggleBitmapButton : public wxControl
{
public:
wxToggleBitmapButton() {}
wxToggleBitmapButton(wxWindow *parent,
wxWindowID id,
const wxBitmap& label,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxCheckBoxNameStr)
{
Create(parent, id, label, pos, size, style, validator, name);
}
bool Create(wxWindow *parent,
wxWindowID id,
const wxBitmap& label,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxCheckBoxNameStr);
virtual void SetValue(bool value);
virtual bool GetValue() const ;
virtual wxInt32 MacControlHit( WXEVENTHANDLERREF handler , WXEVENTREF event ) ;
virtual void Command(wxCommandEvent& event);
private:
wxBitmap m_bitmap;
protected:
virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
virtual wxSize DoGetBestSize() const;
private:
DECLARE_DYNAMIC_CLASS_NO_COPY(wxToggleBitmapButton)
};
class WXDLLEXPORT wxToggleButton : public wxControl
{
public:

View File

@ -36,12 +36,10 @@ DEFINE_EVENT_TYPE(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED)
// ============================================================================
// implementation
// ============================================================================
// ----------------------------------------------------------------------------
// wxToggleButton
// ----------------------------------------------------------------------------
// Single check box item
bool wxToggleButton::Create(wxWindow *parent, wxWindowID id,
const wxString& label,
const wxPoint& pos,
@ -105,5 +103,72 @@ wxInt32 wxToggleButton::MacControlHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEV
return noErr ;
}
// ----------------------------------------------------------------------------
// wxToggleBitmapButton
// ----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxToggleBitmapButton, wxControl)
bool wxToggleBitmapButton::Create(wxWindow *parent, wxWindowID id,
const wxBitmap& label,
const wxPoint& pos,
const wxSize& size, long style,
const wxValidator& validator,
const wxString& name)
{
m_macIsUserPane = FALSE ;
m_bitmap = label;
if ( !wxControl::Create(parent, id, pos, size, style, validator, name) )
return false;
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
m_peer = new wxMacControl(this) ;
ControlButtonContentInfo info;
wxMacCreateBitmapButton( &info, m_bitmap );
verify_noerr ( CreateBevelButtonControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds , CFSTR("") ,
kControlBevelButtonNormalBevel , kControlBehaviorOffsetContents | kControlBehaviorToggles , &info , 0 , 0 , 0 , m_peer->GetControlRefAddr() ) );
MacPostControlCreate(pos,size) ;
return TRUE;
}
wxSize wxToggleBitmapButton::DoGetBestSize() const
{
if (!m_bitmap.IsOk())
return wxSize(20,20);
return wxSize ( m_bitmap.GetWidth()+6, m_bitmap.GetHeight()+6 ) ;
}
void wxToggleBitmapButton::SetValue(bool val)
{
m_peer->SetValue( val ) ;
}
bool wxToggleBitmapButton::GetValue() const
{
return m_peer->GetValue() ;
}
void wxToggleBitmapButton::Command(wxCommandEvent & event)
{
SetValue((event.GetInt() != 0));
ProcessCommand(event);
}
wxInt32 wxToggleBitmapButton::MacControlHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEVENTREF WXUNUSED(event) )
{
wxCommandEvent event(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, m_windowId);
event.SetInt(GetValue());
event.SetEventObject(this);
ProcessCommand(event);
return noErr ;
}
#endif // wxUSE_TOGGLEBTN