summaryrefslogtreecommitdiff
path: root/vgui2/vlocalize/CreateTokenDialog.cpp
blob: 1737d1fc624d1a6bc6db21c41b314457f66053ee (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
//========= 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();
}