1
|
#include "ide.h"
|
2
|
|
3
|
void Ide::SerializeWorkspace(Stream& s) {
|
4
|
int i;
|
5
|
int version = 12;
|
6
|
s / version;
|
7
|
s.Magic(0x12354);
|
8
|
if(s.IsStoring()) {
|
9
|
for(i = 0; i < filedata.GetCount(); i++) {
|
10
|
String fn = filedata.GetKey(i);
|
11
|
if(!fn.IsEmpty() && FileExists(fn)) {
|
12
|
s % fn;
|
13
|
s % filedata[i].editpos;
|
14
|
if(version >= 1)
|
15
|
s % filedata[i].columnline;
|
16
|
}
|
17
|
}
|
18
|
String h;
|
19
|
s % h;
|
20
|
}
|
21
|
else {
|
22
|
String fn;
|
23
|
filedata.Clear();
|
24
|
for(;;) {
|
25
|
s % fn;
|
26
|
if(fn.IsEmpty()) break;
|
27
|
FileData& fd = filedata.GetAdd(fn);
|
28
|
fd.Clear();
|
29
|
s % fd.editpos;
|
30
|
if(version >= 1)
|
31
|
s % fd.columnline;
|
32
|
}
|
33
|
}
|
34
|
String pk = GetActivePackage();
|
35
|
s % pk;
|
36
|
package.FindSetCursor(pk);
|
37
|
s % tablru;
|
38
|
s % mainconfigname;
|
39
|
s % mainconfigparam;
|
40
|
s % console.verbosebuild;
|
41
|
s % stoponerrors;
|
42
|
byte dummy;
|
43
|
s % dummy;
|
44
|
s % runarg;
|
45
|
s % recent_runarg;
|
46
|
s % rundir;
|
47
|
s % stdout_file % recent_stdout_file / runmode;
|
48
|
if(version >= 1)
|
49
|
s % runexternal;
|
50
|
if(version >= 11)
|
51
|
s % forceconsole;
|
52
|
s % editfile;
|
53
|
for(i = 0; i < 10; i++)
|
54
|
s % bookmark[i];
|
55
|
editor.Serialize(s);
|
56
|
if(version >= 5)
|
57
|
s % editorsplit;
|
58
|
if(version == 6) {
|
59
|
String n;
|
60
|
int v;
|
61
|
s / v;
|
62
|
for(int i = 0; i < 10; i++) {
|
63
|
s % n;
|
64
|
s / v;
|
65
|
}
|
66
|
}
|
67
|
if(version >= 8) {
|
68
|
bool dummyb;
|
69
|
String dummy;
|
70
|
s % dummyb;
|
71
|
s % dummy;
|
72
|
}
|
73
|
SerializeFindInFiles(s);
|
74
|
String om;
|
75
|
s % om;
|
76
|
s % recentoutput;
|
77
|
s % recentflags;
|
78
|
s / editortabsize / indent_amount % indent_spaces;
|
79
|
for(int j = 0; j < GetIdeModuleCount(); j++)
|
80
|
GetIdeModule(j).Serialize(s);
|
81
|
SerializeWorkspaceConfigs(s);
|
82
|
SerializeOutputMode(s);
|
83
|
SerializeClosed(s);
|
84
|
if(version >= 10) {
|
85
|
if(tabs_serialize) {
|
86
|
s % tabs;
|
87
|
}
|
88
|
}
|
89
|
if(version >= 11) {
|
90
|
s % find_file_search_string;
|
91
|
}
|
92
|
if(version >= 12)
|
93
|
SerializePlacement(s);
|
94
|
|
95
|
}
|
96
|
|
97
|
void Ide::SerializeLastMain(Stream& s)
|
98
|
{
|
99
|
s % main;
|
100
|
String varsname = GetVarsName();
|
101
|
s % varsname;
|
102
|
s % pocfg;
|
103
|
if(s.IsLoading())
|
104
|
LoadVars(varsname);
|
105
|
}
|
106
|
|
107
|
void Ide::SaveLastMain()
|
108
|
{
|
109
|
StoreToFile(THISBACK(SerializeLastMain), ConfigFile("lastmain.cfg"));
|
110
|
}
|
111
|
|
112
|
void Ide::LoadLastMain()
|
113
|
{
|
114
|
LoadFromFile(THISBACK(SerializeLastMain), ConfigFile("lastmain.cfg"));
|
115
|
}
|
116
|
|
117
|
void Sentinel(Stream& s, const char *txt)
|
118
|
{
|
119
|
String h;
|
120
|
h << "<123456789:" << txt << ":123456789>";
|
121
|
Buffer<char> hh(h.GetLength());
|
122
|
memcpy(hh, h, h.GetLength());
|
123
|
s.SerializeRaw((byte *)~hh, h.GetLength());
|
124
|
}
|
125
|
|
126
|
void Ide::Serialize(Stream& s)
|
127
|
{
|
128
|
int version = 3;
|
129
|
Sentinel(s, "before 12341234");
|
130
|
s.Magic(0x12341234);
|
131
|
Sentinel(s, "after magic");
|
132
|
s / version;
|
133
|
Sentinel(s, "before first FileSel");
|
134
|
s % AnySourceFs();
|
135
|
Sentinel(s, "after AnySourceFs");
|
136
|
s % BasedSourceFs();
|
137
|
Sentinel(s, "after BasedSourceFs");
|
138
|
s % AnyPackageFs();
|
139
|
Sentinel(s, "after AnyPackageFs");
|
140
|
s % pfsplit;
|
141
|
s % wesplit;
|
142
|
package.SerializeSettings(s);
|
143
|
filelist.SerializeSettings(s);
|
144
|
s % editorfont;
|
145
|
s % tfont;
|
146
|
s % veditorfont;
|
147
|
s % consolefont;
|
148
|
s % font1;
|
149
|
s % font2;
|
150
|
s % show_status_bar;
|
151
|
s % toolbar_in_row;
|
152
|
s % filetabs;
|
153
|
s % auto_enclose;
|
154
|
s % persistent_find_replace;
|
155
|
s % show_tabs;
|
156
|
s % tabs_icons;
|
157
|
s % tabs_crosses;
|
158
|
s % tabs_grouping;
|
159
|
s % tabs_serialize;
|
160
|
s % tabs_stacking;
|
161
|
bool dummy_force_crlf = false;
|
162
|
s % dummy_force_crlf;
|
163
|
if(version >= 1)
|
164
|
s % line_endings;
|
165
|
s % no_parenthesis_indent;
|
166
|
s % hilite_scope;
|
167
|
s % hilite_if_endif;
|
168
|
s % hilite_bracket;
|
169
|
s % hilite_ifdef;
|
170
|
if(version >= 3)
|
171
|
s % thousands_separator;
|
172
|
s % barline;
|
173
|
s % qtfsel;
|
174
|
s % wrap_console_text;
|
175
|
s % mute_sounds;
|
176
|
s % line_numbers;
|
177
|
s % bookmark_pos;
|
178
|
s % use_target;
|
179
|
s % default_charset;
|
180
|
s % header_guards;
|
181
|
s % insert_include;
|
182
|
SerializeGlobalConfigs(s);
|
183
|
doc.Serialize(s);
|
184
|
s % right_split;
|
185
|
s % splash_screen;
|
186
|
s % editor.auto_assist;
|
187
|
s % editor.commentdp;
|
188
|
s % bordercolumn;
|
189
|
s % bordercolor;
|
190
|
s % hydra1_threads;
|
191
|
if(s.IsLoading())
|
192
|
console.SetSlots(hydra1_threads);
|
193
|
s % gdbSelector;
|
194
|
s % doc;
|
195
|
s % chstyle;
|
196
|
s % astyle_BracketIndent;
|
197
|
s % astyle_NamespaceIndent;
|
198
|
s % astyle_BlockIndent;
|
199
|
s % astyle_CaseIndent;
|
200
|
s % astyle_ClassIndent;
|
201
|
s % astyle_LabelIndent;
|
202
|
s % astyle_SwitchIndent;
|
203
|
s % astyle_PreprocessorIndent;
|
204
|
s % astyle_MinInStatementIndentLength;
|
205
|
s % astyle_MaxInStatementIndentLength;
|
206
|
s % astyle_BreakClosingHeaderBracketsMode;
|
207
|
s % astyle_BreakElseIfsMode;
|
208
|
s % astyle_BreakOneLineBlocksMode;
|
209
|
s % astyle_SingleStatementsMode;
|
210
|
s % astyle_BreakBlocksMode;
|
211
|
s % astyle_BreakClosingHeaderBlocksMode;
|
212
|
s % astyle_BracketFormatMode;
|
213
|
s % astyle_ParensPaddingMode;
|
214
|
s % astyle_ParensUnPaddingMode;
|
215
|
s % astyle_OperatorPaddingMode;
|
216
|
s % astyle_EmptyLineFill;
|
217
|
s % astyle_TabSpaceConversionMode;
|
218
|
s % astyle_TestBox;
|
219
|
s % LinuxHostConsole;
|
220
|
editor.SerializeNavigator(s);
|
221
|
s % showtime;
|
222
|
s % DiffFs();
|
223
|
s % sort;
|
224
|
s % debug_console_apps_in_console;
|
225
|
s % output_per_assembly;
|
226
|
s.Magic();
|
227
|
}
|
228
|
|
229
|
Time Ide::ConfigTime()
|
230
|
{
|
231
|
return FileGetTime(ConfigFile());
|
232
|
}
|
233
|
|
234
|
void Ide::SaveConfig()
|
235
|
{
|
236
|
SaveChangedFile(ConfigFile(), StoreAsString(*this));
|
237
|
if(GetIniKey("DebugClipboard") == "1") {
|
238
|
SaveChangedFile(ConfigFile() + ".bak", StoreAsString(*this));
|
239
|
StoreToFile(*this, ConfigFile() + ".bak1");
|
240
|
}
|
241
|
SaveChangedFile(ConfigFile("ide.key"), StoreKeys());
|
242
|
SaveChangedFile(ConfigFile("ide.colors"), editor.StoreHlStyles());
|
243
|
config_time = ConfigTime();
|
244
|
}
|
245
|
|
246
|
void Ide::SaveConfigOnTime()
|
247
|
{
|
248
|
if(ConfigTime() == config_time)
|
249
|
SaveConfig();
|
250
|
}
|
251
|
|
252
|
void Ide::LoadConfig()
|
253
|
{
|
254
|
if(!LoadFromFile(*this) && GetIniKey("DebugClipboard") == "1") {
|
255
|
Exclamation("LoadConfig has failed!");
|
256
|
if(!LoadFromFile(*this, ConfigFile() + ".bak")) {
|
257
|
Exclamation("LoadConfig .bak has failed!");
|
258
|
if(!LoadFromFile(*this, ConfigFile() + ".bak1"))
|
259
|
Exclamation("LoadConfig .bak1 has failed!");
|
260
|
}
|
261
|
}
|
262
|
RestoreKeys(LoadFile(ConfigFile("ide.key")));
|
263
|
editor.LoadHlStyles(LoadFile(ConfigFile("ide.colors")));
|
264
|
config_time = FileGetTime(ConfigFile());
|
265
|
UpdateFormat();
|
266
|
if(filelist.IsCursor()) {
|
267
|
FlushFile();
|
268
|
FileCursor();
|
269
|
}
|
270
|
SaveLoadPackage();
|
271
|
SyncCh();
|
272
|
}
|