From 3bf9df6b2785fa6d951086978a3e66f49427166a Mon Sep 17 00:00:00 2001 From: FluorescentCIAAfricanAmerican <0934gj3049fk@protonmail.com> Date: Wed, 22 Apr 2020 12:56:21 -0400 Subject: 1 --- vgui2/vgui_controls/ToggleButton.cpp | 102 +++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 vgui2/vgui_controls/ToggleButton.cpp (limited to 'vgui2/vgui_controls/ToggleButton.cpp') diff --git a/vgui2/vgui_controls/ToggleButton.cpp b/vgui2/vgui_controls/ToggleButton.cpp new file mode 100644 index 0000000..63e4dd6 --- /dev/null +++ b/vgui2/vgui_controls/ToggleButton.cpp @@ -0,0 +1,102 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#include + +#include + +#include + +// memdbgon must be the last include file in a .cpp file!!! +#include + +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); + } +} + -- cgit v1.2.3