Change {DECLARE,IMPLEMENT}_*CLASS and {DECLARE,BEGIN,END}_EVENT_TABLE occurrences to use the wx-prefixed version of the macros.
124 lines
3.1 KiB
C++
124 lines
3.1 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: src/univ/tglbtn.cpp
|
|
// Purpose: wxToggleButton
|
|
// Author: Vadim Zeitlin
|
|
// Modified by: David Bjorkevik
|
|
// Created: 16.05.06
|
|
// Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "wx/wxprec.h"
|
|
|
|
#ifdef __BORLANDC__
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
#if wxUSE_TOGGLEBTN
|
|
|
|
#include "wx/tglbtn.h"
|
|
#include "wx/univ/renderer.h"
|
|
#include "wx/univ/colschem.h"
|
|
#include "wx/univ/theme.h"
|
|
|
|
#include "wx/stockitem.h"
|
|
|
|
wxDEFINE_EVENT( wxEVT_TOGGLEBUTTON, wxCommandEvent );
|
|
|
|
wxIMPLEMENT_DYNAMIC_CLASS(wxToggleButton, wxToggleButtonBase);
|
|
|
|
wxToggleButton::wxToggleButton()
|
|
{
|
|
Init();
|
|
}
|
|
|
|
wxToggleButton::wxToggleButton(wxWindow *parent,
|
|
wxWindowID id,
|
|
const wxString& label,
|
|
const wxPoint& pos,
|
|
const wxSize& size,
|
|
long style,
|
|
const wxValidator& validator,
|
|
const wxString& name)
|
|
{
|
|
Init();
|
|
Create(parent, id, label, pos, size, style, validator, name);
|
|
}
|
|
|
|
bool wxToggleButton::Create(wxWindow *parent,
|
|
wxWindowID id,
|
|
const wxString& lbl,
|
|
const wxPoint& pos,
|
|
const wxSize& size, long style,
|
|
const wxValidator& validator,
|
|
const wxString& name)
|
|
{
|
|
wxString label(lbl);
|
|
if (label.empty() && wxIsStockID(id))
|
|
label = wxGetStockLabel(id);
|
|
|
|
long ctrl_style = style & ~wxBU_ALIGN_MASK;
|
|
ctrl_style = ctrl_style & ~wxALIGN_MASK;
|
|
|
|
if((style & wxBU_RIGHT) == wxBU_RIGHT)
|
|
ctrl_style |= wxALIGN_RIGHT;
|
|
else if((style & wxBU_LEFT) == wxBU_LEFT)
|
|
ctrl_style |= wxALIGN_LEFT;
|
|
else
|
|
ctrl_style |= wxALIGN_CENTRE_HORIZONTAL;
|
|
|
|
if((style & wxBU_TOP) == wxBU_TOP)
|
|
ctrl_style |= wxALIGN_TOP;
|
|
else if((style & wxBU_BOTTOM) == wxBU_BOTTOM)
|
|
ctrl_style |= wxALIGN_BOTTOM;
|
|
else
|
|
ctrl_style |= wxALIGN_CENTRE_VERTICAL;
|
|
|
|
if ( !wxToggleButtonBase::Create(parent, id, pos, size, ctrl_style, validator, name) )
|
|
{
|
|
wxFAIL_MSG(wxT("wxToggleButton creation failed"));
|
|
return false;
|
|
}
|
|
SetLabel(label);
|
|
CreateInputHandler(wxINP_HANDLER_BUTTON);
|
|
return true;
|
|
}
|
|
|
|
void wxToggleButton::Init()
|
|
{
|
|
m_isPressed = false;
|
|
m_value = false;
|
|
}
|
|
|
|
void wxToggleButton::Toggle()
|
|
{
|
|
if ( m_isPressed )
|
|
Release();
|
|
else
|
|
Press();
|
|
|
|
if ( !m_isPressed )
|
|
{
|
|
// releasing button after it had been pressed generates a click event
|
|
// and toggles value
|
|
m_value = !m_value;
|
|
Click();
|
|
}
|
|
}
|
|
|
|
void wxToggleButton::Click()
|
|
{
|
|
wxCommandEvent event(wxEVT_TOGGLEBUTTON, GetId());
|
|
InitCommandEvent(event);
|
|
event.SetInt(GetValue());
|
|
Command(event);
|
|
}
|
|
|
|
void wxToggleButton::SetValue(bool state)
|
|
{
|
|
m_value = state;
|
|
Refresh();
|
|
}
|
|
|
|
#endif // wxUSE_TOGGLEBTN
|