This keyword is not expanded by Git which means it's not replaced with the correct revision value in the releases made using git-based scripts and it's confusing to have lines with unexpanded "$Id$" in the released files. As expanding them with Git is not that simple (it could be done with git archive and export-subst attribute) and there are not many benefits in having them in the first place, just remove all these lines. If nothing else, this will make an eventual transition to Git simpler. Closes #14487. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
154 lines
4.2 KiB
C++
154 lines
4.2 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: src/os2/tglbtn.cpp
|
|
// Purpose: Definition of the wxToggleButton class, which implements a
|
|
// toggle button under wxMSW.
|
|
// Author: John Norris, minor changes by Axel Schlueter
|
|
// and William Gallafent.
|
|
// Modified by:
|
|
// Created: 08.02.01
|
|
// Copyright: (c) 2000 Johnny C. Norris II
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// ============================================================================
|
|
// declatations
|
|
// ============================================================================
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// headers
|
|
// ----------------------------------------------------------------------------
|
|
|
|
#include "wx/wxprec.h"
|
|
|
|
#ifdef __BORLANDC__
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
#if wxUSE_TOGGLEBTN
|
|
|
|
#include "wx/tglbtn.h"
|
|
|
|
#ifndef WX_PRECOMP
|
|
#include "wx/button.h"
|
|
#include "wx/brush.h"
|
|
#include "wx/dcscreen.h"
|
|
#include "wx/settings.h"
|
|
|
|
#include "wx/log.h"
|
|
#endif // WX_PRECOMP
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// macros
|
|
// ----------------------------------------------------------------------------
|
|
|
|
IMPLEMENT_DYNAMIC_CLASS(wxToggleButton, wxControl)
|
|
wxDEFINE_EVENT( wxEVT_TOGGLEBUTTON, wxCommandEvent );
|
|
|
|
#define BUTTON_HEIGHT_FROM_CHAR_HEIGHT(cy) (11*EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy)/10)
|
|
|
|
// ============================================================================
|
|
// implementation
|
|
// ============================================================================
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// wxToggleButton
|
|
// ----------------------------------------------------------------------------
|
|
|
|
bool wxToggleButton::OS2Command(WXUINT WXUNUSED(param), WXWORD WXUNUSED(id))
|
|
{
|
|
wxCommandEvent event(wxEVT_TOGGLEBUTTON, m_windowId);
|
|
event.SetInt(GetValue());
|
|
event.SetEventObject(this);
|
|
ProcessCommand(event);
|
|
return true;
|
|
}
|
|
|
|
// 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 ( !CreateControl(parent, id, pos, size, style, validator, name) )
|
|
return false;
|
|
|
|
if ( !OS2CreateControl(wxT("BUTTON"), label, pos, size, 0) )
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
wxBorder wxToggleButton::GetDefaultBorder() const
|
|
{
|
|
return wxBORDER_NONE;
|
|
}
|
|
|
|
WXDWORD wxToggleButton::OS2GetStyle(long style, WXDWORD *exstyle) const
|
|
{
|
|
WXDWORD msStyle = wxControl::OS2GetStyle(style, exstyle);
|
|
|
|
#ifndef BS_PUSHLIKE
|
|
#define BS_PUSHLIKE 0x00001000L
|
|
#endif
|
|
|
|
msStyle |= BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_TABSTOP;
|
|
|
|
return msStyle;
|
|
}
|
|
|
|
wxSize wxToggleButton::DoGetBestSize() const
|
|
{
|
|
wxString label = wxGetWindowText(GetHWND());
|
|
int wBtn;
|
|
wxFont vFont = GetFont();
|
|
int wChar;
|
|
int hChar;
|
|
|
|
GetTextExtent(label, &wBtn, NULL);
|
|
|
|
|
|
wxGetCharSize(GetHWND(), &wChar, &hChar, &vFont);
|
|
|
|
// add a margin - the button is wider than just its label
|
|
wBtn += 3*wChar;
|
|
|
|
// the button height is proportional to the height of the font used
|
|
int hBtn = BUTTON_HEIGHT_FROM_CHAR_HEIGHT(hChar);
|
|
|
|
#if wxUSE_BUTTON
|
|
wxSize sz = wxButton::GetDefaultSize();
|
|
if (wBtn > sz.x)
|
|
sz.x = wBtn;
|
|
if (hBtn > sz.y)
|
|
sz.y = hBtn;
|
|
#else
|
|
wxSize sz(wBtn, hBtn);
|
|
#endif
|
|
|
|
return sz;
|
|
}
|
|
|
|
void wxToggleButton::SetValue(bool val)
|
|
{
|
|
::WinSendMsg(GetHwnd(), BM_SETCHECK, MPFROMSHORT(val), (MPARAM)0);
|
|
}
|
|
|
|
#ifndef BST_CHECKED
|
|
#define BST_CHECKED 0x0001
|
|
#endif
|
|
|
|
bool wxToggleButton::GetValue() const
|
|
{
|
|
return (::WinSendMsg(GetHwnd(), BM_QUERYCHECK, 0, 0) == (MRESULT)BST_CHECKED);
|
|
}
|
|
|
|
void wxToggleButton::Command(wxCommandEvent & event)
|
|
{
|
|
SetValue((event.GetInt() != 0));
|
|
ProcessCommand(event);
|
|
}
|
|
|
|
#endif // wxUSE_TOGGLEBTN
|