Team Fortress 2 Source Code as on 22/4/2020
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.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#include "CvarTextEntry.h"
#include "EngineInterface.h"
#include <vgui/IVGui.h>
#include "IGameUIFuncs.h"
#include "tier1/KeyValues.h"
#include "tier1/convar.h"
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
using namespace vgui;
static const int MAX_CVAR_TEXT = 64;
CCvarTextEntry::CCvarTextEntry( Panel *parent, const char *panelName, char const *cvarname ) : TextEntry( parent, panelName) { m_pszCvarName = cvarname ? strdup( cvarname ) : NULL; m_pszStartValue[0] = 0;
if ( m_pszCvarName ) { Reset(); }
AddActionSignalTarget( this ); }
CCvarTextEntry::~CCvarTextEntry() { if ( m_pszCvarName ) { free( m_pszCvarName ); } }
void CCvarTextEntry::ApplySchemeSettings(IScheme *pScheme) { BaseClass::ApplySchemeSettings(pScheme); if (GetMaximumCharCount() < 0 || GetMaximumCharCount() > MAX_CVAR_TEXT) { SetMaximumCharCount(MAX_CVAR_TEXT - 1); } }
void CCvarTextEntry::ApplyChanges( bool immediate ) { if ( !m_pszCvarName ) return;
char szText[ MAX_CVAR_TEXT ]; GetText( szText, MAX_CVAR_TEXT );
if ( !szText[ 0 ] ) return;
if ( immediate ) { // set immediately - don't wait for the next frame
ConVarRef newCvar( m_pszCvarName ); newCvar.SetValue( szText ); } else { char szCommand[ 256 ]; sprintf( szCommand, "%s \"%s\"\n", m_pszCvarName, szText ); engine->ClientCmd_Unrestricted( szCommand ); }
Q_strncpy( m_pszStartValue, szText, sizeof( m_pszStartValue ) ); }
void CCvarTextEntry::Reset() { // char *value = engine->pfnGetCvarString( m_pszCvarName );
ConVarRef var( m_pszCvarName ); if ( !var.IsValid() ) return; const char *value = var.GetString(); if ( value && value[ 0 ] ) { SetText( value ); Q_strncpy( m_pszStartValue, value, sizeof( m_pszStartValue ) ); } }
bool CCvarTextEntry::HasBeenModified() { char szText[ MAX_CVAR_TEXT ]; GetText( szText, MAX_CVAR_TEXT );
return stricmp( szText, m_pszStartValue ); }
void CCvarTextEntry::OnTextChanged() { if ( !m_pszCvarName ) return; if (HasBeenModified()) { PostActionSignal(new KeyValues("ControlModified")); } }
|