1
2 #include "fpimagelist.h"
3
4 #ifndef CB_PRECOMP
5 #include <wx/string.h>
6 #include <wx/bitmap.h>
7
8 #include <configmanager.h>
9 #endif
10
FPImageList(int imSize)11 FPImageList::FPImageList(int imSize)
12 {
13 //ctor
14 CreateImageList(imSize);
15 }
16
~FPImageList()17 FPImageList::~FPImageList()
18 {
19 //dtor
20 delete m_pImlist;
21 }
22
CreateImageList(int imSize)23 void FPImageList::CreateImageList(int imSize)
24 {
25 wxString prefix2;
26 if (imSize <= 19)
27 {
28 m_pImlist = new wxImageList(16, 16);
29 prefix2 = ConfigManager::GetDataFolder() + _T("/images/fortranproject/16x16/");
30 }
31 else if (imSize <= 23)
32 {
33 m_pImlist = new wxImageList(20, 20);
34 prefix2 = ConfigManager::GetDataFolder() + _T("/images/fortranproject/20x20/");
35 }
36 else if (imSize <= 27)
37 {
38 m_pImlist = new wxImageList(24, 24);
39 prefix2 = ConfigManager::GetDataFolder() + _T("/images/fortranproject/24x24/");
40 }
41 else if (imSize <= 31)
42 {
43 m_pImlist = new wxImageList(28, 28);
44 prefix2 = ConfigManager::GetDataFolder() + _T("/images/fortranproject/28x28/");
45 }
46 else if (imSize <= 39)
47 {
48 m_pImlist = new wxImageList(32, 32);
49 prefix2 = ConfigManager::GetDataFolder() + _T("/images/fortranproject/32x32/");
50 }
51 else if (imSize <= 47)
52 {
53 m_pImlist = new wxImageList(40, 40);
54 prefix2 = ConfigManager::GetDataFolder() + _T("/images/fortranproject/40x40/");
55 }
56 else if (imSize <= 55)
57 {
58 m_pImlist = new wxImageList(48, 48);
59 prefix2 = ConfigManager::GetDataFolder() + _T("/images/fortranproject/48x48/");
60 }
61 else if (imSize <= 63)
62 {
63 m_pImlist = new wxImageList(56, 56);
64 prefix2 = ConfigManager::GetDataFolder() + _T("/images/fortranproject/56x56/");
65 }
66 else
67 {
68 m_pImlist = new wxImageList(64, 64);
69 prefix2 = ConfigManager::GetDataFolder() + _T("/images/fortranproject/64x64/");
70 }
71 wxBitmap bmp;
72
73 bmp = cbLoadBitmap(prefix2 + _T("ctor_public.png"), wxBITMAP_TYPE_PNG);
74 m_pImlist->Add(bmp);
75 m_ImgNr["use"] = 0;
76 bmp = cbLoadBitmap(prefix2 + _T("class_public.png"), wxBITMAP_TYPE_PNG);
77 m_pImlist->Add(bmp);
78 m_ImgNr["module"] = 1;
79 bmp = cbLoadBitmap(prefix2 + _T("method_public.png"), wxBITMAP_TYPE_PNG);
80 m_pImlist->Add(bmp);
81 m_ImgNr["subroutine"] = 2;
82 bmp = cbLoadBitmap(prefix2 + _T("method_protected.png"), wxBITMAP_TYPE_PNG);
83 m_pImlist->Add(bmp);
84 m_ImgNr["function"] = 3;
85 bmp = cbLoadBitmap(prefix2 + _T("method_private.png"), wxBITMAP_TYPE_PNG);
86 m_pImlist->Add(bmp);
87 m_ImgNr["program"] = 4;
88 bmp = cbLoadBitmap(prefix2 + _T("typedef.png"), wxBITMAP_TYPE_PNG);
89 m_pImlist->Add(bmp);
90 m_ImgNr["type"] = 5;
91 bmp = cbLoadBitmap(prefix2 + _T("interface.png"), wxBITMAP_TYPE_PNG);
92 m_pImlist->Add(bmp);
93 m_ImgNr["interface"] = 6;
94 bmp = cbLoadBitmap(prefix2 + _T("funcs_folder.png"), wxBITMAP_TYPE_PNG);
95 m_pImlist->Add(bmp);
96 m_ImgNr["function_folder"] = 7;
97 bmp = cbLoadBitmap(prefix2 + _T("others_folder.png"), wxBITMAP_TYPE_PNG);
98 m_pImlist->Add(bmp);
99 m_ImgNr["others_folder"] = 8;
100 bmp = cbLoadBitmap(prefix2 + _T("symbols_folder.png"), wxBITMAP_TYPE_PNG);
101 m_pImlist->Add(bmp);
102 m_ImgNr["symbols_folder"] = 9;
103 bmp = cbLoadBitmap(prefix2 + _T("preproc.png"), wxBITMAP_TYPE_PNG);
104 m_pImlist->Add(bmp);
105 m_ImgNr["preproc"] = 10;
106 bmp = cbLoadBitmap(prefix2 + _T("var_public.png"), wxBITMAP_TYPE_PNG);
107 m_pImlist->Add(bmp);
108 m_ImgNr["variable"] = 11;
109 bmp = cbLoadBitmap(prefix2 + _T("interface_function.png"), wxBITMAP_TYPE_PNG);
110 m_pImlist->Add(bmp);
111 m_ImgNr["interface_function"] = 12;
112 bmp = cbLoadBitmap(prefix2 + _T("interface_subroutine.png"), wxBITMAP_TYPE_PNG);
113 m_pImlist->Add(bmp);
114 m_ImgNr["interface_subroutine"] = 13;
115 bmp = cbLoadBitmap(prefix2 + _T("procedure.png"), wxBITMAP_TYPE_PNG);
116 m_pImlist->Add(bmp);
117 m_ImgNr["procedure"] = 14;
118
119 bmp = cbLoadBitmap(prefix2 + _T("subroutine_private.png"), wxBITMAP_TYPE_PNG);
120 m_pImlist->Add(bmp);
121 m_ImgNr["subroutine_private"] = 15;
122 bmp = cbLoadBitmap(prefix2 + _T("function_private.png"), wxBITMAP_TYPE_PNG);
123 m_pImlist->Add(bmp);
124 m_ImgNr["function_private"] = 16;
125 bmp = cbLoadBitmap(prefix2 + _T("var_private.png"), wxBITMAP_TYPE_PNG);
126 m_pImlist->Add(bmp);
127 m_ImgNr["variable_private"] = 17;
128 bmp = cbLoadBitmap(prefix2 + _T("var_protected.png"), wxBITMAP_TYPE_PNG);
129 m_pImlist->Add(bmp);
130 m_ImgNr["variable_protected"] = 18;
131 bmp = cbLoadBitmap(prefix2 + _T("typedef_private.png"), wxBITMAP_TYPE_PNG);
132 m_pImlist->Add(bmp);
133 m_ImgNr["type_private"] = 19;
134 bmp = cbLoadBitmap(prefix2 + _T("interface_private.png"), wxBITMAP_TYPE_PNG);
135 m_pImlist->Add(bmp);
136 m_ImgNr["interface_private"] = 20;
137 bmp = cbLoadBitmap(prefix2 + _T("access_list_private.png"), wxBITMAP_TYPE_PNG);
138 m_pImlist->Add(bmp);
139 m_ImgNr["access_list_private"] = 21;
140 bmp = cbLoadBitmap(prefix2 + _T("access_list_public.png"), wxBITMAP_TYPE_PNG);
141 m_pImlist->Add(bmp);
142 m_ImgNr["access_list_public"] = 22;
143 bmp = cbLoadBitmap(prefix2 + _T("access_list_protected.png"), wxBITMAP_TYPE_PNG);
144 m_pImlist->Add(bmp);
145 m_ImgNr["access_list_protected"] = 23;
146 bmp = cbLoadBitmap(prefix2 + _T("procedure_private.png"), wxBITMAP_TYPE_PNG);
147 m_pImlist->Add(bmp);
148 m_ImgNr["procedure_private"] = 24;
149 bmp = cbLoadBitmap(prefix2 + _T("interface_function_private.png"), wxBITMAP_TYPE_PNG);
150 m_pImlist->Add(bmp);
151 m_ImgNr["interface_function_private"] = 25;
152 bmp = cbLoadBitmap(prefix2 + _T("interface_subroutine_private.png"), wxBITMAP_TYPE_PNG);
153 m_pImlist->Add(bmp);
154 m_ImgNr["interface_subroutine_private"] = 26;
155 bmp = cbLoadBitmap(prefix2 + _T("class.png"), wxBITMAP_TYPE_PNG);
156 m_pImlist->Add(bmp);
157 m_ImgNr["submodule"] = 27;
158 bmp = cbLoadBitmap(prefix2 + _T("interface_subroutine_gen_private.png"), wxBITMAP_TYPE_PNG);
159 m_pImlist->Add(bmp);
160 m_ImgNr["interface_sub_gen_private"] = 28;
161 bmp = cbLoadBitmap(prefix2 + _T("interface_subroutine_gen.png"), wxBITMAP_TYPE_PNG);
162 m_pImlist->Add(bmp);
163 m_ImgNr["interface_sub_gen"] = 29;
164 bmp = cbLoadBitmap(prefix2 + _T("interface_function_gen_private.png"), wxBITMAP_TYPE_PNG);
165 m_pImlist->Add(bmp);
166 m_ImgNr["interface_fun_gen_private"] = 30;
167 bmp = cbLoadBitmap(prefix2 + _T("interface_function_gen.png"), wxBITMAP_TYPE_PNG);
168 m_pImlist->Add(bmp);
169 m_ImgNr["interface_fun_gen"] = 31;
170 bmp = cbLoadBitmap(prefix2 + _T("typedef_abstract.png"), wxBITMAP_TYPE_PNG);
171 m_pImlist->Add(bmp);
172 m_ImgNr["type_abstract"] = 32;
173 bmp = cbLoadBitmap(prefix2 + _T("typedef_abstract_private.png"), wxBITMAP_TYPE_PNG);
174 m_pImlist->Add(bmp);
175 m_ImgNr["type_abstract_private"] = 33;
176 bmp = cbLoadBitmap(prefix2 + _T("dtor_public.png"), wxBITMAP_TYPE_PNG);
177 m_pImlist->Add(bmp);
178 m_ImgNr["procedure_final"] = 34;
179 bmp = cbLoadBitmap(prefix2 + _T("subroutine_call.png"), wxBITMAP_TYPE_PNG);
180 m_pImlist->Add(bmp);
181 m_ImgNr["subroutine_call"] = 35;
182 bmp = cbLoadBitmap(prefix2 + _T("function_call.png"), wxBITMAP_TYPE_PNG);
183 m_pImlist->Add(bmp);
184 m_ImgNr["function_call"] = 36;
185 bmp = cbLoadBitmap(prefix2 + _T("subroutine_calledby.png"), wxBITMAP_TYPE_PNG);
186 m_pImlist->Add(bmp);
187 m_ImgNr["subroutine_calledby"] = 37;
188 bmp = cbLoadBitmap(prefix2 + _T("function_calledby.png"), wxBITMAP_TYPE_PNG);
189 m_pImlist->Add(bmp);
190 m_ImgNr["function_calledby"] = 38;
191 bmp = cbLoadBitmap(prefix2 + _T("typedefs_folder.png"), wxBITMAP_TYPE_PNG);
192 m_pImlist->Add(bmp);
193 m_ImgNr["typedefs_folder"] = 39;
194
195 bmp = cbLoadBitmap(prefix2 + _T("unknown.png"), wxBITMAP_TYPE_PNG);
196 m_pImlist->Add(bmp);
197 m_ImgNr["unknown"] = 40;
198
199 m_ImgNr["none"] = -1;
200 }
201
GetImageIdx(const std::string & name)202 int FPImageList::GetImageIdx(const std::string& name)
203 {
204 int idx;
205 if (m_ImgNr.count(name) == 0)
206 idx = m_ImgNr["none"];
207 else
208 idx = m_ImgNr[name];
209 return idx;
210 }
211
GetTokenKindImageIdx(TokenF * token)212 int FPImageList::GetTokenKindImageIdx(TokenF* token)
213 {
214 if (!token)
215 return m_ImgNr["none"];
216
217 switch (token->m_TokenKind)
218 {
219 case tkUse: return m_ImgNr["use"];
220
221 case tkModule: return m_ImgNr["module"];
222
223 case tkSubroutine:
224 {
225 if (token->m_TokenAccess == taPrivate)
226 return m_ImgNr["subroutine_private"];
227 else
228 return m_ImgNr["subroutine"];
229 }
230 case tkFunction:
231 {
232 if (token->m_TokenAccess == taPrivate)
233 return m_ImgNr["function_private"];
234 else
235 return m_ImgNr["function"];
236 }
237 case tkProgram: return m_ImgNr["program"];
238
239 case tkType:
240 {
241 if (token->m_TokenAccess == taPrivate)
242 {
243 if (token->m_IsAbstract)
244 return m_ImgNr["type_abstract_private"];
245 else
246 return m_ImgNr["type_private"];
247 }
248 else
249 {
250 if (token->m_IsAbstract)
251 return m_ImgNr["type_abstract"];
252 else
253 return m_ImgNr["type"];
254 }
255 }
256 case tkInterface:
257 {
258 if (token->m_TypeDefinition.IsSameAs(_T("subroutine")))
259 {
260 if (token->m_TokenAccess == taPrivate)
261 return m_ImgNr["interface_sub_gen_private"];
262 else
263 return m_ImgNr["interface_sub_gen"];
264 }
265 else if (token->m_TypeDefinition.IsSameAs(_T("function")))
266 {
267 if (token->m_TokenAccess == taPrivate)
268 return m_ImgNr["interface_fun_gen_private"];
269 else
270 return m_ImgNr["interface_fun_gen"];
271 }
272 else
273 {
274 if (token->m_TokenAccess == taPrivate)
275 return m_ImgNr["interface_private"];
276 else
277 return m_ImgNr["interface"];
278 }
279 }
280 case tkInterfaceExplicit:
281 {
282 if (token->m_TokenAccess == taPrivate)
283 return m_ImgNr["interface_private"];
284 else
285 return m_ImgNr["interface"];
286 }
287
288 case tkCommonblock: return m_ImgNr["none"];
289
290 case tkPreprocessor: return m_ImgNr["preproc"];
291
292 case tkFile: return m_ImgNr["none"];
293
294 case tkVariable:
295 {
296 if (token->m_TokenAccess == taPrivate)
297 return m_ImgNr["variable_private"];
298 else if (token->m_TokenAccess == taProtected)
299 return m_ImgNr["variable_protected"];
300 else
301 return m_ImgNr["variable"];
302 }
303
304 //case tkInterfaceFunction: return m_ImgNr["interface_function"];
305
306 //case tkInterfaceSubroutine: return m_ImgNr["interface_subroutine"];
307
308 case tkProcedure:
309 {
310 if (token->m_TypeDefinition.IsSameAs(_T("subroutine")))
311 {
312 if (token->m_TokenAccess == taPrivate)
313 return m_ImgNr["subroutine_private"];
314 else
315 return m_ImgNr["subroutine"];
316 }
317 else if (token->m_TypeDefinition.IsSameAs(_T("function")))
318 {
319 if (token->m_TokenAccess == taPrivate)
320 return m_ImgNr["function_private"];
321 else
322 return m_ImgNr["function"];
323 }
324 else
325 {
326 if (token->m_TokenAccess == taPrivate)
327 return m_ImgNr["procedure_private"];
328 else
329 return m_ImgNr["procedure"];
330 }
331 }
332
333 case tkAccessList:
334 {
335 if (token->m_TokenAccess == taPrivate)
336 return m_ImgNr["access_list_private"];
337 else if (token->m_TokenAccess == taProtected)
338 return m_ImgNr["access_list_protected"];
339 else
340 return m_ImgNr["access_list_public"];
341 }
342
343 case tkSubmodule: return m_ImgNr["submodule"];
344
345 case tkProcedureFinal: return m_ImgNr["procedure_final"];
346
347 default: return m_ImgNr["unknown"];
348 }
349 }
350
351