Files
wxWidgets/src/univ/tglbtn.cpp
Dimitri Schoolwerth 8f8d58d193 Use wx-prefixed macros throughout the repository.
Change {DECLARE,IMPLEMENT}_*CLASS and {DECLARE,BEGIN,END}_EVENT_TABLE
occurrences to use the wx-prefixed version of the macros.
2015-04-23 22:00:35 +04:00

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