Subversion Repositories spk

Rev

Rev 197 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
104 cycrow 1
#ifndef __LANGUAGES_H__
2
#define __LANGUAGES_H__
3
 
197 cycrow 4
#include "Utils\WString.h"
104 cycrow 5
#include <map>
6
#include <vector>
7
 
8
enum Lang_Section 
9
{ 
299 cycrow 10
	LS_STARTUP			= 1, 
122 cycrow 11
	LS_DIRECTORY,
299 cycrow 12
	LS_FILEDIALOG,
13
	LS_SCRIPTTYPE,
104 cycrow 14
};
15
 
122 cycrow 16
enum Lang_Startup
104 cycrow 17
{ 
122 cycrow 18
	LANGSTARTUP_ANOTHERINSTANCE_TITLE	= 1,
104 cycrow 19
	LANGSTARTUP_ANOTHERINSTANCE,
20
	LANGSTARTUP_PROTECTEDDIR,
21
	LANGSTARTUP_LOCKEDDIR,
22
	LANGSTARTUP_LOCKEDDIR_TITLE,
23
};
24
 
122 cycrow 25
enum Lang_Directory
26
{
27
	LANGDIR_TITLE	 = 1,
28
};
29
 
197 cycrow 30
typedef std::map<int, Utils::WString> LangPage;
122 cycrow 31
typedef std::map<int, LangPage> LangPages;
32
typedef std::map<int, LangPages> LangTexts;
104 cycrow 33
 
34
class SPKEXPORT CLanguages
35
{
36
public:
37
	static CLanguages *Instance();
38
	static void Release();
39
 
197 cycrow 40
	void setLanguage(int lang);
299 cycrow 41
	void pushLanguage(int lang);
42
	void popLanguage();
104 cycrow 43
 
197 cycrow 44
	Utils::WString findText(int section, int id);
104 cycrow 45
 
46
protected:
47
	CLanguages();
48
	~CLanguages();
49
 
50
private:
122 cycrow 51
	void DEBUG_AddDefaultTexts();
104 cycrow 52
 
122 cycrow 53
	LangPages *_findLanguageText(int id = -1) const;
197 cycrow 54
	Utils::WString _error(int section, int id) const;
55
	bool _findText(LangPages *texts, int section, int id, Utils::WString *out) const;
104 cycrow 56
 
57
private:
58
	static CLanguages *_pInstance;
59
 
122 cycrow 60
	int			_iLanguage;
61
	LangTexts	*_lTexts;
62
	LangPages	*_pDefaultLang;
63
	LangPages	*_pCurrentLang;
299 cycrow 64
 
65
	std::vector<int> *_langStack;
104 cycrow 66
};
67
 
68
#endif //__LANGUAGES_H__