You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
2.7 KiB
102 lines
2.7 KiB
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//=============================================================================//
|
|
|
|
#include <vgui/KeyCode.h>
|
|
|
|
#include <vgui_controls/ToggleButton.h>
|
|
|
|
#include <KeyValues.h>
|
|
|
|
// memdbgon must be the last include file in a .cpp file!!!
|
|
#include <tier0/memdbgon.h>
|
|
|
|
using namespace vgui;
|
|
|
|
DECLARE_BUILD_FACTORY_DEFAULT_TEXT( ToggleButton, ToggleButton );
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Constructor
|
|
//-----------------------------------------------------------------------------
|
|
ToggleButton::ToggleButton(Panel *parent, const char *panelName, const char* text) : Button(parent, panelName, text)
|
|
{
|
|
SetButtonActivationType(ACTIVATE_ONPRESSED);
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Turns double-click into normal click
|
|
//-----------------------------------------------------------------------------
|
|
void ToggleButton::OnMouseDoublePressed(MouseCode code)
|
|
{
|
|
OnMousePressed(code);
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose:
|
|
//-----------------------------------------------------------------------------
|
|
Color ToggleButton::GetButtonFgColor()
|
|
{
|
|
if (IsSelected())
|
|
{
|
|
// highlight the text when depressed
|
|
return _selectedColor;
|
|
}
|
|
else
|
|
{
|
|
return BaseClass::GetButtonFgColor();
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose:
|
|
//-----------------------------------------------------------------------------
|
|
bool ToggleButton::CanBeDefaultButton(void)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Toggles the state of the button
|
|
//-----------------------------------------------------------------------------
|
|
void ToggleButton::DoClick()
|
|
{
|
|
if (IsSelected())
|
|
{
|
|
ForceDepressed(false);
|
|
}
|
|
else if (!IsSelected())
|
|
{
|
|
ForceDepressed(true);
|
|
}
|
|
|
|
SetSelected(!IsSelected());
|
|
FireActionSignal();
|
|
|
|
// post a button toggled message
|
|
KeyValues *msg = new KeyValues("ButtonToggled");
|
|
msg->SetInt("state", (int)IsSelected());
|
|
PostActionSignal(msg);
|
|
|
|
Repaint();
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose:
|
|
//-----------------------------------------------------------------------------
|
|
void ToggleButton::ApplySchemeSettings(IScheme *pScheme)
|
|
{
|
|
BaseClass::ApplySchemeSettings(pScheme);
|
|
_selectedColor = GetSchemeColor("ToggleButton.SelectedTextColor", pScheme);
|
|
}
|
|
|
|
void ToggleButton::OnKeyCodePressed(KeyCode code)
|
|
{
|
|
if (code != KEY_ENTER)
|
|
{
|
|
BaseClass::OnKeyCodePressed(code);
|
|
}
|
|
}
|
|
|