mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-22 22:27:05 +00:00
152 lines
4.4 KiB
C++
152 lines
4.4 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//=============================================================================//
|
|
|
|
#include "CreateTokenDialog.h"
|
|
#include "LocalizationDialog.h"
|
|
|
|
#include "vgui_controls/TextEntry.h"
|
|
#include "vgui_controls/Button.h"
|
|
#include "vgui_controls/MessageBox.h"
|
|
#include "tier1/KeyValues.h"
|
|
#include "vgui/ILocalize.h"
|
|
|
|
using namespace vgui;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Cosntructor
|
|
//-----------------------------------------------------------------------------
|
|
CCreateTokenDialog::CCreateTokenDialog( CLocalizationDialog *pLocalizationDialog ) : Frame(NULL, "CreateTokenDialog"),
|
|
m_pLocalizationDialog( m_pLocalizationDialog )
|
|
{
|
|
Assert( m_pLocalizationDialog );
|
|
|
|
MakePopup();
|
|
|
|
SetTitle("Create New Token - Localizer", true);
|
|
|
|
m_pSkipButton = new Button(this, "SkipButton", "&Skip Token");
|
|
m_pTokenName = new TextEntry(this, "TokenName");
|
|
|
|
m_pTokenValue = new TextEntry(this, "TokenValue");
|
|
m_pTokenValue->SetMultiline(true);
|
|
m_pTokenValue->SetCatchEnterKey(true);
|
|
|
|
m_pSkipButton->SetCommand("SkipToken");
|
|
m_pSkipButton->SetVisible(false);
|
|
|
|
LoadControlSettings("Resource/CreateTokenDialog.res");
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Destructor
|
|
//-----------------------------------------------------------------------------
|
|
CCreateTokenDialog::~CCreateTokenDialog()
|
|
{
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: prompts user to create a single token
|
|
//-----------------------------------------------------------------------------
|
|
void CCreateTokenDialog::CreateSingleToken()
|
|
{
|
|
// bring us to the front
|
|
SetVisible(true);
|
|
RequestFocus();
|
|
MoveToFront();
|
|
m_pTokenName->RequestFocus();
|
|
m_pSkipButton->SetVisible(false);
|
|
|
|
m_bMultiToken = false;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: loads a file to create multiple tokens
|
|
//-----------------------------------------------------------------------------
|
|
void CCreateTokenDialog::CreateMultipleTokens()
|
|
{
|
|
SetVisible(true);
|
|
RequestFocus();
|
|
MoveToFront();
|
|
m_pTokenValue->RequestFocus();
|
|
m_pSkipButton->SetVisible(true);
|
|
|
|
m_bMultiToken = true;
|
|
|
|
//!! read tokens from file, prompt user to each in turn
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Handles an OK message, creating the current token
|
|
//-----------------------------------------------------------------------------
|
|
void CCreateTokenDialog::OnOK()
|
|
{
|
|
// get the data
|
|
char tokenName[1024], tokenValue[1024];
|
|
m_pTokenName->GetText( tokenName, sizeof( tokenName ) );
|
|
m_pTokenValue->GetText( tokenValue, sizeof( tokenValue ) );
|
|
|
|
if ( Q_strlen( tokenName ) < 4 )
|
|
{
|
|
MessageBox *box = new MessageBox("Create Token Error", "Could not create token.\nToken names need to be at least 4 characters long.");
|
|
box->DoModal();
|
|
}
|
|
else
|
|
{
|
|
// create the token
|
|
wchar_t unicodeString[1024];
|
|
g_pVGuiLocalize->ConvertANSIToUnicode(tokenValue, unicodeString, sizeof(unicodeString) / sizeof(wchar_t));
|
|
g_pVGuiLocalize->AddString(tokenName, unicodeString, m_pLocalizationDialog->GetFileName() );
|
|
|
|
// notify the dialog creator
|
|
PostActionSignal(new KeyValues("TokenCreated", "name", tokenName));
|
|
|
|
// close
|
|
if (!m_bMultiToken)
|
|
{
|
|
PostMessage(this, new KeyValues("Close"));
|
|
}
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: skips the current token in the multitoken edit mode
|
|
//-----------------------------------------------------------------------------
|
|
void CCreateTokenDialog::OnSkip()
|
|
{
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: handles a button command
|
|
// Input : *command -
|
|
//-----------------------------------------------------------------------------
|
|
void CCreateTokenDialog::OnCommand(const char *command)
|
|
{
|
|
if (!stricmp(command, "OK"))
|
|
{
|
|
OnOK();
|
|
}
|
|
else if (!stricmp(command, "SkipToken"))
|
|
{
|
|
OnSkip();
|
|
}
|
|
else
|
|
{
|
|
BaseClass::OnCommand(command);
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: handles the close message
|
|
//-----------------------------------------------------------------------------
|
|
void CCreateTokenDialog::OnClose()
|
|
{
|
|
BaseClass::OnClose();
|
|
MarkForDeletion();
|
|
}
|
|
|
|
|