152 lines
3.9 KiB
C++
152 lines
3.9 KiB
C++
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// $NoKeywords: $
|
||
|
//=============================================================================
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include "DialogCvarChange.h"
|
||
|
|
||
|
#include <vgui/IInput.h>
|
||
|
#include <vgui/ISurface.h>
|
||
|
#include <KeyValues.h>
|
||
|
|
||
|
#include <vgui_controls/Button.h>
|
||
|
#include <vgui_controls/Panel.h>
|
||
|
#include <vgui_controls/Label.h>
|
||
|
#include <vgui_controls/TextEntry.h>
|
||
|
|
||
|
using namespace vgui;
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Constructor
|
||
|
//-----------------------------------------------------------------------------
|
||
|
CDialogCvarChange::CDialogCvarChange(vgui::Panel *parent) : Frame(parent, "DialogCvarChange")
|
||
|
{
|
||
|
SetSize(320, 200);
|
||
|
|
||
|
m_bAddCvarText = true;
|
||
|
|
||
|
m_pInfoLabel = new Label(this, "InfoLabel", "");
|
||
|
m_pCvarLabel = new Label(this, "CvarLabel", "");
|
||
|
m_pCvarEntry = new TextEntry(this, "CvarEntry");
|
||
|
m_pOkayButton = new Button(this, "OkayButton", "#Okay_Button");
|
||
|
|
||
|
LoadControlSettings("Admin/DialogCvarChange.res", "PLATFORM");
|
||
|
|
||
|
SetTitle("#Cvar_Title", true);
|
||
|
|
||
|
SetSizeable(false);
|
||
|
// set our initial position in the middle of the workspace
|
||
|
MoveToCenterOfScreen();
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Destructor
|
||
|
//-----------------------------------------------------------------------------
|
||
|
CDialogCvarChange::~CDialogCvarChange()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Hides value text
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void CDialogCvarChange::MakePassword()
|
||
|
{
|
||
|
m_pCvarEntry->SetTextHidden(true);
|
||
|
m_bAddCvarText = false; // this isn't asking about a cvar
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: initializes the dialog and brings it to the foreground
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void CDialogCvarChange::Activate(const char *cvarName, const char *curValue, const char *type, const char *question)
|
||
|
{
|
||
|
m_pCvarLabel->SetText(cvarName);
|
||
|
if (!m_bAddCvarText)
|
||
|
{
|
||
|
m_pCvarLabel->SetVisible(false); // hide this
|
||
|
}
|
||
|
|
||
|
m_pInfoLabel->SetText(question);
|
||
|
|
||
|
m_cType=type;
|
||
|
|
||
|
m_pOkayButton->SetAsDefaultButton(true);
|
||
|
MakePopup();
|
||
|
MoveToFront();
|
||
|
|
||
|
m_pCvarEntry->SetText(curValue);
|
||
|
m_pCvarEntry->RequestFocus();
|
||
|
RequestFocus();
|
||
|
|
||
|
// make it modal
|
||
|
input()->SetAppModalSurface(GetVPanel());
|
||
|
SetVisible(true);
|
||
|
|
||
|
BaseClass::Activate();
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Sets the text of a labell by name
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void CDialogCvarChange::SetLabelText(const char *textEntryName, const char *text)
|
||
|
{
|
||
|
Label *entry = dynamic_cast<Label *>(FindChildByName(textEntryName));
|
||
|
if (entry)
|
||
|
{
|
||
|
entry->SetText(text);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Handles button presses
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void CDialogCvarChange::OnCommand(const char *command)
|
||
|
{
|
||
|
bool bClose = false;
|
||
|
|
||
|
if (!stricmp(command, "Okay"))
|
||
|
{
|
||
|
KeyValues *msg = new KeyValues("CvarChangeValue");
|
||
|
char buf[64];
|
||
|
m_pCvarLabel->GetText(buf,64);
|
||
|
|
||
|
msg->SetString("player", buf );
|
||
|
m_pCvarEntry->GetText(buf, sizeof(buf)-1);
|
||
|
msg->SetString("value", buf);
|
||
|
msg->SetString("type",m_cType);
|
||
|
|
||
|
PostActionSignal(msg);
|
||
|
|
||
|
bClose = true;
|
||
|
}
|
||
|
else if (!stricmp(command, "Close"))
|
||
|
{
|
||
|
bClose = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
BaseClass::OnCommand(command);
|
||
|
}
|
||
|
|
||
|
if (bClose)
|
||
|
{
|
||
|
Close();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: deletes the dialog on close
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void CDialogCvarChange::OnClose()
|
||
|
{
|
||
|
BaseClass::OnClose();
|
||
|
MarkForDeletion();
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|