summaryrefslogtreecommitdiff
path: root/gameui/CvarToggleCheckButton.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gameui/CvarToggleCheckButton.cpp')
-rw-r--r--gameui/CvarToggleCheckButton.cpp159
1 files changed, 159 insertions, 0 deletions
diff --git a/gameui/CvarToggleCheckButton.cpp b/gameui/CvarToggleCheckButton.cpp
new file mode 100644
index 0000000..f8d3141
--- /dev/null
+++ b/gameui/CvarToggleCheckButton.cpp
@@ -0,0 +1,159 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#include "CvarToggleCheckButton.h"
+#include "EngineInterface.h"
+#include <vgui/IVGui.h>
+#include "tier1/KeyValues.h"
+#include "tier1/convar.h"
+#include "IGameUIFuncs.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include <tier0/memdbgon.h>
+
+using namespace vgui;
+
+vgui::Panel *CvarToggleCheckButton_Factory()
+{
+ return new CCvarToggleCheckButton( NULL, NULL, "CvarToggleCheckButton", NULL );
+}
+DECLARE_BUILD_FACTORY_CUSTOM( CCvarToggleCheckButton, CvarToggleCheckButton_Factory );
+
+CCvarToggleCheckButton::CCvarToggleCheckButton( Panel *parent, const char *panelName, const char *text,
+ char const *cvarname )
+ : CheckButton( parent, panelName, text )
+{
+ m_pszCvarName = cvarname ? strdup( cvarname ) : NULL;
+
+ if (m_pszCvarName)
+ {
+ Reset();
+ }
+ AddActionSignalTarget( this );
+}
+
+CCvarToggleCheckButton::~CCvarToggleCheckButton()
+{
+ if ( m_pszCvarName )
+ {
+ free( m_pszCvarName );
+ }
+}
+
+void CCvarToggleCheckButton::Paint()
+{
+ if ( !m_pszCvarName || !m_pszCvarName[ 0 ] )
+ {
+ BaseClass::Paint();
+ return;
+ }
+
+ // Look up current value
+// bool value = engine->pfnGetCvarFloat( m_pszCvarName ) > 0.0f ? true : false;
+ ConVarRef var( m_pszCvarName, true );
+ if ( !var.IsValid() )
+ return;
+ bool value = var.GetBool();
+
+ if ( value != m_bStartValue )
+ //if ( value != IsSelected() )
+ {
+ SetSelected( value );
+ m_bStartValue = value;
+ }
+ BaseClass::Paint();
+}
+
+void CCvarToggleCheckButton::ApplyChanges()
+{
+ if ( !m_pszCvarName || !m_pszCvarName[ 0 ] )
+ return;
+
+ m_bStartValue = IsSelected();
+// engine->Cvar_SetValue( m_pszCvarName, m_bStartValue ? 1.0f : 0.0f );
+ ConVarRef var( m_pszCvarName, true );
+ if ( !var.IsValid() )
+ return;
+ var.SetValue( m_bStartValue );
+}
+
+void CCvarToggleCheckButton::Reset()
+{
+// m_bStartValue = engine->pfnGetCvarFloat( m_pszCvarName ) > 0.0f ? true : false;
+
+ if ( !m_pszCvarName || !m_pszCvarName[ 0 ] )
+ return;
+
+ ConVarRef var( m_pszCvarName, true );
+ if ( !var.IsValid() )
+ return;
+ m_bStartValue = var.GetBool();
+ SetSelected(m_bStartValue);
+}
+
+bool CCvarToggleCheckButton::HasBeenModified()
+{
+ return IsSelected() != m_bStartValue;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : *panel -
+//-----------------------------------------------------------------------------
+void CCvarToggleCheckButton::SetSelected( bool state )
+{
+ BaseClass::SetSelected( state );
+
+ if ( !m_pszCvarName || !m_pszCvarName[ 0 ] )
+ return;
+/*
+ // Look up current value
+ bool value = state;
+
+ engine->Cvar_SetValue( m_pszCvarName, value ? 1.0f : 0.0f );*/
+}
+
+
+//-----------------------------------------------------------------------------
+void CCvarToggleCheckButton::OnButtonChecked()
+{
+ if (HasBeenModified())
+ {
+ PostActionSignal(new KeyValues("ControlModified"));
+ }
+}
+
+//-----------------------------------------------------------------------------
+void CCvarToggleCheckButton::ApplySettings( KeyValues *inResourceData )
+{
+ BaseClass::ApplySettings( inResourceData );
+
+ const char *cvarName = inResourceData->GetString("cvar_name", "");
+ const char *cvarValue = inResourceData->GetString("cvar_value", "");
+
+ if( Q_stricmp( cvarName, "") == 0 )
+ return;// Doesn't have cvar set up in res file, must have been constructed with it.
+
+ if( m_pszCvarName )
+ free( m_pszCvarName );// got a "", not a NULL from the create-control call
+
+ m_pszCvarName = cvarName ? strdup( cvarName ) : NULL;
+
+ if( Q_stricmp( cvarValue, "1") == 0 )
+ m_bStartValue = true;
+ else
+ m_bStartValue = false;
+
+ const ConVar *var = cvar->FindVar( m_pszCvarName );
+ if ( var )
+ {
+ if( var->GetBool() )
+ SetSelected( true );
+ else
+ SetSelected( false );
+ }
+} \ No newline at end of file