forked from mapic91/JxqyScriptEidtor
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConfigManager.cpp
More file actions
179 lines (162 loc) · 6.65 KB
/
ConfigManager.cpp
File metadata and controls
179 lines (162 loc) · 6.65 KB
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#include "ConfigManager.h"
#include "helperFun.h"
#include "wx/font.h"
//#define BYTE unsigned char
//#define WORD unsigned int
//#define DWORD_PTR unsigned long
//#define LOBYTE(w) ((BYTE) (((DWORD_PTR) (w)) & 0xff))
//#define RGB(r,g,b) ((WORD)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))
//#define GetRValue(rgb) (LOBYTE(rgb))
//#define GetGValue(rgb) (LOBYTE(((WORD)(rgb)) >> 8))
//#define GetBValue(rgb) (LOBYTE((rgb)>>16))
const wxString ConfigManager::LEX_JXQY2_FILEPATH = wxT("Function\\剑侠情缘二.txt");
const wxString ConfigManager::LEX_YYCS_FILEPATH = wxT("Function\\月影传说.txt");
const wxString ConfigManager::LEX_XJXQY_FILEPATH = wxT("Function\\新剑侠情缘.txt");
const wxString ConfigManager::LEX_YYCSGQ_FILEPATH = wxT("Function\\月影传说高清版.txt");
//const wxString ConfigManager::CONFIGNAME = wxT("JxqyScriptEditor");
//static const unsigned int ConfigManager::FORGROUND_INIT[wxSTC_STYLE_DEFAULT + 1] =
//{
// 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
// 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
// 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
// 0x000000, 0x000000, 0x000000
//}
//static const unsigned int ConfigManager::BACKGROUND_INIT[wxSTC_STYLE_DEFAULT + 1] =
//{
// 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF,
// 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF,
// 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF,
// 0xFFFFFF, 0xFFFFFF, 0xFFFFFF
//}
const wxFont ConfigManager::FONT_INIT = wxFont(12, wxMODERN, wxNORMAL, wxNORMAL);
const ConfigManager::LexerType ConfigManager::LEXER_INIT = ConfigManager::LEX_JXQY2;
#define LEX_TYPE "LEX_TYPE"
#define DEFAULT_FONT_FACENAME "DEFAULT_FONT_FACENAME"
#define DEFAULT_FONT_WEIGHT "DEFAULT_FONT_WEIGHT"
#define DEFAULT_FONT_SIZE "DEFAULT_FONT_SIZE"
#define DEFAULT_FONT_STYLE "DEFAULT_FONT_STYLE"
#define DEFAULT_FONT_UNDERLINED "DEFAULT_FONT_UNDERLINED"
#define DEFAULT_FONT_STRIKETHROUGH "DEFAULT_FONT_STRIKETHROUGH"
#define STYLE_FOREGROUNDCOLOUR "STYLE_FOREGROUNDCOLOUR"
#define STYLE_BACKGROUNDCOLOUR "STYLE_BACKGROUNDCOLOUR"
#define IS_WORD_WRAP "IS_WORD_WRAP"
#define IS_FUNCTION_HELP_SHOW "IS_FUNCTION_HELP_SHOW"
#define IS_LINE_NUMBER_SHOW "IS_LINE_NUMBER_SHOW"
ConfigManager::ConfigManager()
{
m_lexer = LEXER_INIT;
m_defaultFont = FONT_INIT;
m_isWordWrap = true;
m_isFunctionHelpShow = true;
m_showLineNumber = true;
for(int i = 0 ; i < wxSTC_STYLE_MAX; i++)
{
m_foregroundColour[i] = 0;
m_backgroundColour[i] = 0xFFFFFF;
}
ReadConfig();
}
ConfigManager::~ConfigManager()
{
}
wxString ConfigManager::GetLexerFilePath()
{
wxString path = GetExecutableDirWithoutEndPathSeprator() + wxFileName::GetPathSeparator();
switch(m_lexer)
{
case LEX_JXQY2:
path += LEX_JXQY2_FILEPATH;
break;
case LEX_YYCS:
path += LEX_YYCS_FILEPATH;
break;
case LEX_XJXQY:
path += LEX_XJXQY_FILEPATH;
break;
case LEX_YYCSGQ:
path += LEX_YYCSGQ_FILEPATH;
break;
default:
path.Clear();
}
return path;
}
void ConfigManager::ReadConfig()
{
wxFileConfig *cfg = GetNewFileConfig();
wxString str_var;
long long_var;
cfg->Read(LEX_TYPE, (long*)&m_lexer);
if(cfg->Read(DEFAULT_FONT_FACENAME, &str_var))
m_defaultFont.SetFaceName(str_var);
if(cfg->Read(DEFAULT_FONT_WEIGHT, &long_var))
m_defaultFont.SetWeight((int)long_var);
if(cfg->Read(DEFAULT_FONT_SIZE, &long_var))
m_defaultFont.SetPointSize((int)long_var);
if(cfg->Read(DEFAULT_FONT_STYLE, &long_var))
m_defaultFont.SetStyle((int)long_var);
if(cfg->Read(DEFAULT_FONT_UNDERLINED, &long_var))
m_defaultFont.SetUnderlined((bool)long_var);
if(cfg->Read(DEFAULT_FONT_STRIKETHROUGH, &long_var))
m_defaultFont.SetStrikethrough((bool)long_var);
//Colour
wxString col_key;
for(int j = 0 ; j < wxSTC_STYLE_MAX; j++)
{
col_key = wxString::Format(wxT("%s_%d"), STYLE_FOREGROUNDCOLOUR, j);
m_isForegroundColourSetted[j] = cfg->Read(col_key, (int*)&m_foregroundColour[j]);
col_key = wxString::Format(wxT("%s_%d"), STYLE_BACKGROUNDCOLOUR, j);
m_isBackgroundColourSetted[j] = cfg->Read(col_key, (int*)&m_backgroundColour[j]);
}
if(cfg->Read(IS_WORD_WRAP, &long_var))
m_isWordWrap = (bool) long_var;
if(cfg->Read(IS_FUNCTION_HELP_SHOW, &long_var))
m_isFunctionHelpShow = (bool) long_var;
if(cfg->Read(IS_LINE_NUMBER_SHOW, &long_var))
m_showLineNumber = (bool) long_var;
delete cfg;
}
void ConfigManager::WriteConfig()
{
wxFileConfig *cfg = GetNewFileConfig();
cfg->DeleteAll();
//LEX_TYPE
cfg->Write(LEX_TYPE, (long)m_lexer);
//DEFAULT_FONT_FACENAME
cfg->Write(DEFAULT_FONT_FACENAME, m_defaultFont.GetFaceName());
//DEFAULT_FONT_WEIGHT
cfg->Write(DEFAULT_FONT_WEIGHT, (long)m_defaultFont.GetWeight());
//DEFAULT_FONT_SIZE
cfg->Write(DEFAULT_FONT_SIZE, (long)m_defaultFont.GetPointSize());
//DEFAULT_FONT_STYLE
cfg->Write(DEFAULT_FONT_STYLE, (long)m_defaultFont.GetStyle());
//DEFAULT_FONT_UNDERLINED
cfg->Write(DEFAULT_FONT_UNDERLINED, (long)m_defaultFont.GetUnderlined());
//DEFAULT_FONT_STRIKETHROUGH
cfg->Write(DEFAULT_FONT_STRIKETHROUGH, (long)m_defaultFont.GetStrikethrough());
//Colour
wxString col_key;
for(int j = 0 ; j < wxSTC_STYLE_MAX; j++)
{
col_key = wxString::Format(wxT("%s_%d"), STYLE_FOREGROUNDCOLOUR, j);
if(m_isForegroundColourSetted[j])
cfg->Write(col_key, (long)m_foregroundColour[j]);
col_key = wxString::Format(wxT("%s_%d"), STYLE_BACKGROUNDCOLOUR, j);
if(m_isBackgroundColourSetted[j])
cfg->Write(col_key, (long)m_backgroundColour[j]);
}
cfg->Write(IS_WORD_WRAP, (long)m_isWordWrap);
cfg->Write(IS_FUNCTION_HELP_SHOW, (long)m_isFunctionHelpShow);
cfg->Write(IS_LINE_NUMBER_SHOW, (long)m_showLineNumber);
delete cfg;
}
wxFileConfig *ConfigManager::GetNewFileConfig()
{
return new wxFileConfig(wxT("JxqyScriptEditor"),
wxT("小试刀剑"),
GetExecutableDirWithoutEndPathSeprator() +
wxFileName::GetPathSeparator() +
wxT("JxqyScriptEditor.ini"),
wxT(""),
wxCONFIG_USE_LOCAL_FILE);
}