implementation for mac added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25899 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
407f0db050
commit
eabe6af8d9
59
include/wx/mac/tglbtn.h
Normal file
59
include/wx/mac/tglbtn.h
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: wx/mac/tglbtn.h
|
||||||
|
// Purpose: Declaration of the wxToggleButton class, which implements a
|
||||||
|
// toggle button under wxMac.
|
||||||
|
// Author: Stefan Csomor
|
||||||
|
// Modified by:
|
||||||
|
// Created: 08.02.01
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) 2004 Stefan Csomor
|
||||||
|
// License: wxWindows License
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef _WX_TOGGLEBUTTON_H_
|
||||||
|
#define _WX_TOGGLEBUTTON_H_
|
||||||
|
|
||||||
|
WXDLLEXPORT_DATA(extern const wxChar*) wxCheckBoxNameStr;
|
||||||
|
|
||||||
|
// Checkbox item (single checkbox)
|
||||||
|
class WXDLLEXPORT wxToggleButton : public wxControl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxToggleButton() {}
|
||||||
|
wxToggleButton(wxWindow *parent,
|
||||||
|
wxWindowID id,
|
||||||
|
const wxString& 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 wxString& 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 void MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool mouseStillDown ) ;
|
||||||
|
|
||||||
|
virtual void Command(wxCommandEvent& event);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual wxSize DoGetBestSize() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
DECLARE_DYNAMIC_CLASS_NO_COPY(wxToggleButton)
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _WX_TOGGLEBUTTON_H_
|
||||||
|
|
@ -32,9 +32,9 @@ END_DECLARE_EVENT_TYPES()
|
|||||||
#include "wx/gtk/tglbtn.h"
|
#include "wx/gtk/tglbtn.h"
|
||||||
# elif defined(__WXMOTIF__)
|
# elif defined(__WXMOTIF__)
|
||||||
#include "wx/motif/tglbtn.h"
|
#include "wx/motif/tglbtn.h"
|
||||||
|
#elif defined(__WXMAC__)
|
||||||
|
#include "wx/mac/tglbtn.h"
|
||||||
/*
|
/*
|
||||||
# elif defined(__WXMAC__)
|
|
||||||
# include "wx/mac/tglbtn.h"
|
|
||||||
# elif defined(__WXPM__)
|
# elif defined(__WXPM__)
|
||||||
# include "wx/os2/tglbtn.h"
|
# include "wx/os2/tglbtn.h"
|
||||||
*/
|
*/
|
||||||
|
127
src/mac/carbon/tglbtn.cpp
Normal file
127
src/mac/carbon/tglbtn.cpp
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: src/mac/tglbtn.cpp
|
||||||
|
// Purpose: Definition of the wxToggleButton class, which implements a
|
||||||
|
// toggle button under wxMac.
|
||||||
|
// Author: Stefan Csomor
|
||||||
|
// Modified by:
|
||||||
|
// Created: 08.02.01
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) 2000 Johnny C. Norris II
|
||||||
|
// License: Rocketeer license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// declatations
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// headers
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma implementation "button.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/defs.h"
|
||||||
|
#include "wx/tglbtn.h"
|
||||||
|
|
||||||
|
#if wxUSE_TOGGLEBTN
|
||||||
|
|
||||||
|
#include "wx/mac/uma.h"
|
||||||
|
// Button
|
||||||
|
|
||||||
|
static const int kMacOSXHorizontalBorder = 2 ;
|
||||||
|
static const int kMacOSXVerticalBorder = 4 ;
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// macros
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
IMPLEMENT_DYNAMIC_CLASS(wxToggleButton, wxControl)
|
||||||
|
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,
|
||||||
|
const wxSize& size, long style,
|
||||||
|
const wxValidator& validator,
|
||||||
|
const wxString& name)
|
||||||
|
{
|
||||||
|
if ( !wxControl::Create(parent, id, pos, size, style, validator, name) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
Rect bounds ;
|
||||||
|
Str255 title ;
|
||||||
|
|
||||||
|
if ( UMAHasAquaLayout() )
|
||||||
|
{
|
||||||
|
m_macHorizontalBorder = kMacOSXHorizontalBorder;
|
||||||
|
m_macVerticalBorder = kMacOSXVerticalBorder;
|
||||||
|
}
|
||||||
|
|
||||||
|
MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ;
|
||||||
|
|
||||||
|
m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , kControlBehaviorToggles , 1,
|
||||||
|
kControlBevelButtonNormalBevelProc , (long) this ) ;
|
||||||
|
wxASSERT_MSG( (ControlHandle) m_macControl != NULL , wxT("No valid mac control") ) ;
|
||||||
|
|
||||||
|
MacPostControlCreate() ;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxSize wxToggleButton::DoGetBestSize() const
|
||||||
|
{
|
||||||
|
int wBtn = 70 ;
|
||||||
|
int hBtn = 20 ;
|
||||||
|
|
||||||
|
int lBtn = m_label.Length() * 10 + 12 ;
|
||||||
|
if (lBtn > wBtn)
|
||||||
|
wBtn = lBtn;
|
||||||
|
|
||||||
|
if ( UMAHasAquaLayout() )
|
||||||
|
{
|
||||||
|
wBtn += 2 * kMacOSXHorizontalBorder ;
|
||||||
|
hBtn += 2 * kMacOSXVerticalBorder ;
|
||||||
|
}
|
||||||
|
return wxSize ( wBtn , hBtn ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxToggleButton::SetValue(bool val)
|
||||||
|
{
|
||||||
|
::SetControl32BitValue( (ControlHandle) m_macControl , val ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxToggleButton::GetValue() const
|
||||||
|
{
|
||||||
|
return GetControl32BitValue( (ControlHandle) m_macControl ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxToggleButton::Command(wxCommandEvent & event)
|
||||||
|
{
|
||||||
|
SetValue((event.GetInt() != 0));
|
||||||
|
ProcessCommand(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxToggleButton::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 controlpart , bool WXUNUSED(mouseStillDown) )
|
||||||
|
{
|
||||||
|
if ( controlpart != kControlNoPart )
|
||||||
|
{
|
||||||
|
wxCommandEvent event(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, m_windowId);
|
||||||
|
event.SetInt(GetValue());
|
||||||
|
event.SetEventObject(this);
|
||||||
|
ProcessCommand(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // wxUSE_TOGGLEBTN
|
||||||
|
|
127
src/mac/tglbtn.cpp
Normal file
127
src/mac/tglbtn.cpp
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: src/mac/tglbtn.cpp
|
||||||
|
// Purpose: Definition of the wxToggleButton class, which implements a
|
||||||
|
// toggle button under wxMac.
|
||||||
|
// Author: Stefan Csomor
|
||||||
|
// Modified by:
|
||||||
|
// Created: 08.02.01
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) 2000 Johnny C. Norris II
|
||||||
|
// License: Rocketeer license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// declatations
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// headers
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma implementation "button.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/defs.h"
|
||||||
|
#include "wx/tglbtn.h"
|
||||||
|
|
||||||
|
#if wxUSE_TOGGLEBTN
|
||||||
|
|
||||||
|
#include "wx/mac/uma.h"
|
||||||
|
// Button
|
||||||
|
|
||||||
|
static const int kMacOSXHorizontalBorder = 2 ;
|
||||||
|
static const int kMacOSXVerticalBorder = 4 ;
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// macros
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
IMPLEMENT_DYNAMIC_CLASS(wxToggleButton, wxControl)
|
||||||
|
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,
|
||||||
|
const wxSize& size, long style,
|
||||||
|
const wxValidator& validator,
|
||||||
|
const wxString& name)
|
||||||
|
{
|
||||||
|
if ( !wxControl::Create(parent, id, pos, size, style, validator, name) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
Rect bounds ;
|
||||||
|
Str255 title ;
|
||||||
|
|
||||||
|
if ( UMAHasAquaLayout() )
|
||||||
|
{
|
||||||
|
m_macHorizontalBorder = kMacOSXHorizontalBorder;
|
||||||
|
m_macVerticalBorder = kMacOSXVerticalBorder;
|
||||||
|
}
|
||||||
|
|
||||||
|
MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ;
|
||||||
|
|
||||||
|
m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , kControlBehaviorToggles , 1,
|
||||||
|
kControlBevelButtonNormalBevelProc , (long) this ) ;
|
||||||
|
wxASSERT_MSG( (ControlHandle) m_macControl != NULL , wxT("No valid mac control") ) ;
|
||||||
|
|
||||||
|
MacPostControlCreate() ;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxSize wxToggleButton::DoGetBestSize() const
|
||||||
|
{
|
||||||
|
int wBtn = 70 ;
|
||||||
|
int hBtn = 20 ;
|
||||||
|
|
||||||
|
int lBtn = m_label.Length() * 10 + 12 ;
|
||||||
|
if (lBtn > wBtn)
|
||||||
|
wBtn = lBtn;
|
||||||
|
|
||||||
|
if ( UMAHasAquaLayout() )
|
||||||
|
{
|
||||||
|
wBtn += 2 * kMacOSXHorizontalBorder ;
|
||||||
|
hBtn += 2 * kMacOSXVerticalBorder ;
|
||||||
|
}
|
||||||
|
return wxSize ( wBtn , hBtn ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxToggleButton::SetValue(bool val)
|
||||||
|
{
|
||||||
|
::SetControl32BitValue( (ControlHandle) m_macControl , val ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxToggleButton::GetValue() const
|
||||||
|
{
|
||||||
|
return GetControl32BitValue( (ControlHandle) m_macControl ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxToggleButton::Command(wxCommandEvent & event)
|
||||||
|
{
|
||||||
|
SetValue((event.GetInt() != 0));
|
||||||
|
ProcessCommand(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxToggleButton::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 controlpart , bool WXUNUSED(mouseStillDown) )
|
||||||
|
{
|
||||||
|
if ( controlpart != kControlNoPart )
|
||||||
|
{
|
||||||
|
wxCommandEvent event(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, m_windowId);
|
||||||
|
event.SetInt(GetValue());
|
||||||
|
event.SetEventObject(this);
|
||||||
|
ProcessCommand(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // wxUSE_TOGGLEBTN
|
||||||
|
|
Loading…
Reference in New Issue
Block a user