Rev 7579 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1457 | IgorA | 1 | struct symbol |
2125 | IgorA | 2 | c db ? ; +0 символ |
3 | col db ? ; +1 цвет |
||
4 | perv dd ? ; +2 |
||
5 | next dd ? ; +6 указатели |
||
6 | tc dd ? ;+10 врем. создания |
||
7 | td dd ? ;+14 врем. удаления |
||
1457 | IgorA | 8 | ends |
9 | |||
7573 | IgorA | 10 | ID_BUT_0 equ 3 ;минимальный ID кнопки на панели |
11 | |||
12 | ID_BUT_NEW equ 3 |
||
13 | ID_BUT_OPEN equ 4 |
||
14 | ID_BUT_SAVE equ 5 |
||
15 | ID_BUT_SAVE_AS equ 6 |
||
16 | ID_BUT_SELECT equ 7 |
||
17 | ID_BUT_CUT equ 8 |
||
18 | ID_BUT_COPY equ 9 |
||
19 | ID_BUT_PASTE equ 10 |
||
20 | ID_BUT_FIND equ 11 |
||
21 | ID_BUT_REPLACE equ 12 |
||
22 | ID_BUT_KEY_WORDS equ 13 |
||
23 | ID_BUT_UPPER equ 14 |
||
24 | ID_BUT_LOWER equ 15 |
||
25 | ID_BUT_REVERSE equ 16 |
||
26 | ID_BUT_UNDO equ 17 |
||
27 | ID_BUT_REDO equ 18 |
||
28 | ID_BUT_INVISIBLE equ 19 |
||
29 | ID_BUT_SYNTAX_LIST equ 20 |
||
30 | ID_BUT_SYNTAX_MODE equ 21 |
||
31 | ID_BUT_CONVERT_1251_866 equ 22 |
||
32 | ID_BUT_CONVERT_866_1251 equ 23 |
||
33 | |||
34 | macro ini_panel b_key,b_id |
||
35 | { |
||
36 | stdcall [ini_get_int],file_name,ini_sec_window,b_key,1 |
||
37 | mov byte[panel_but+b_id-ID_BUT_0],al |
||
38 | } |
||
39 | |||
1457 | IgorA | 40 | bmp_icon dd 0 |
41 | |||
7573 | IgorA | 42 | align 16 |
43 | button: |
||
44 | mcall SF_GET_BUTTON |
||
45 | cmp ah,ID_BUT_NEW |
||
46 | jne @f |
||
47 | call ted_but_new_file |
||
48 | jmp still |
||
49 | @@: |
||
50 | cmp ah,ID_BUT_OPEN |
||
51 | jne @f |
||
52 | call ted_but_open_file |
||
53 | jmp still |
||
54 | @@: |
||
55 | cmp ah,ID_BUT_SAVE |
||
56 | jne @f |
||
57 | xor eax,eax |
||
58 | call ted_but_save_file ;сохранение без диалога |
||
59 | jmp still |
||
60 | @@: |
||
61 | cmp ah,ID_BUT_SAVE_AS |
||
62 | jne @f |
||
63 | xor eax,eax |
||
64 | inc eax |
||
65 | call ted_but_save_file ;сохранение с диалогом |
||
66 | jmp still |
||
67 | @@: |
||
68 | cmp ah,ID_BUT_SELECT |
||
69 | jne @f |
||
70 | stdcall [ted_but_select_word], tedit0 |
||
71 | jmp still |
||
72 | @@: |
||
73 | cmp ah,ID_BUT_CUT |
||
74 | jne @f |
||
75 | stdcall [ted_but_cut], tedit0 |
||
76 | jmp still |
||
77 | @@: |
||
78 | cmp ah,ID_BUT_COPY |
||
79 | jne @f |
||
80 | stdcall [ted_but_copy], tedit0 |
||
81 | jmp still |
||
82 | @@: |
||
83 | cmp ah,ID_BUT_PASTE |
||
84 | jne @f |
||
85 | stdcall [ted_but_paste], tedit0 |
||
86 | jmp still |
||
87 | @@: |
||
88 | cmp ah,ID_BUT_FIND |
||
89 | jne @f |
||
7576 | IgorA | 90 | call but_panel_find |
7573 | IgorA | 91 | jmp still |
92 | @@: |
||
93 | cmp ah,ID_BUT_REPLACE |
||
94 | jne @f |
||
7576 | IgorA | 95 | call but_panel_replace |
7573 | IgorA | 96 | jmp still |
97 | @@: |
||
98 | cmp ah,ID_BUT_KEY_WORDS |
||
99 | jne @f |
||
100 | call but_find_key_w |
||
101 | jmp still |
||
102 | @@: |
||
103 | cmp ah,ID_BUT_UPPER |
||
104 | jne @f |
||
105 | stdcall [ted_but_sumb_upper], tedit0 |
||
106 | jmp still |
||
107 | @@: |
||
108 | cmp ah,ID_BUT_LOWER |
||
109 | jne @f |
||
110 | stdcall [ted_but_sumb_lover], tedit0 |
||
111 | jmp still |
||
112 | @@: |
||
113 | cmp ah,ID_BUT_REVERSE |
||
114 | jne @f |
||
115 | stdcall [ted_but_reverse], tedit0 |
||
116 | jmp still |
||
117 | @@: |
||
118 | cmp ah,ID_BUT_UNDO |
||
119 | jne @f |
||
120 | stdcall [ted_but_undo], tedit0 |
||
121 | jmp still |
||
122 | @@: |
||
123 | cmp ah,ID_BUT_REDO |
||
124 | jne @f |
||
125 | stdcall [ted_but_redo], tedit0 |
||
126 | jmp still |
||
127 | @@: |
||
128 | cmp ah,ID_BUT_INVISIBLE |
||
129 | jne @f |
||
130 | stdcall but_sumb_invis, tedit0 |
||
131 | jmp still |
||
132 | @@: |
||
133 | cmp ah,ID_BUT_SYNTAX_LIST |
||
134 | jne @f |
||
135 | stdcall but_use_syntax, tedit0 |
||
136 | jmp still |
||
137 | @@: |
||
138 | cmp ah,ID_BUT_SYNTAX_MODE |
||
139 | jne @f |
||
7579 | IgorA | 140 | call but_panel_choose_syntax |
7573 | IgorA | 141 | jmp still |
142 | @@: |
||
143 | cmp ah,ID_BUT_CONVERT_1251_866 |
||
144 | jne @f |
||
145 | stdcall [ted_but_convert_by_table],tedit0,tbl_1251_866 |
||
146 | jmp still |
||
147 | @@: |
||
148 | cmp ah,ID_BUT_CONVERT_866_1251 |
||
149 | jne @f |
||
150 | stdcall [ted_but_convert_by_table],tedit0,tbl_866_1251 |
||
151 | jmp still |
||
152 | @@: |
||
1457 | IgorA | 153 | |
7573 | IgorA | 154 | cmp ah,200 |
155 | jne @f |
||
156 | stdcall ted_but_open_syntax, tedit0 |
||
157 | jmp still |
||
158 | @@: |
||
7577 | IgorA | 159 | cmp ah,201 ;найти далее |
7576 | IgorA | 160 | jne .no_find |
161 | call get_find_options |
||
162 | stdcall [ted_but_find], tedit0, eax |
||
7573 | IgorA | 163 | jmp still |
7576 | IgorA | 164 | .no_find: |
7577 | IgorA | 165 | cmp ah,202 ;заменить |
7576 | IgorA | 166 | jne .no_change |
167 | call get_find_options |
||
168 | stdcall [ted_but_replace], tedit0, buf_replace, eax, 1 |
||
169 | or eax,eax |
||
170 | jz still |
||
171 | stdcall [ted_draw], tedit0 |
||
172 | jmp still |
||
173 | .no_change: |
||
7577 | IgorA | 174 | cmp ah,203 ;заменить все |
7579 | IgorA | 175 | jne @f |
7576 | IgorA | 176 | call but_replace_all |
177 | jmp still |
||
7579 | IgorA | 178 | @@: |
179 | cmp ah,204 ;перейти на строку |
||
180 | jne @f |
||
181 | call but_goto_line |
||
182 | jmp still |
||
183 | @@: |
||
7573 | IgorA | 184 | |
185 | cmp ah,1 |
||
7575 | IgorA | 186 | jne @f |
187 | call ted_Exit |
||
188 | jmp still |
||
189 | @@: |
||
7573 | IgorA | 190 | |
191 | cmp ah,199 |
||
7575 | IgorA | 192 | jne still |
193 | call ted_Exit |
||
7573 | IgorA | 194 | jmp still |
7575 | IgorA | 195 | |
196 | align 4 |
||
197 | ted_Exit: |
||
7573 | IgorA | 198 | cmp dword[wnd_k_words_run],0 |
199 | je @f |
||
200 | push ebx ecx |
||
201 | mcall SF_SYSTEM, SSF_TERMINATE_THREAD_ID,[wnd_k_words_run] |
||
202 | pop ecx ebx |
||
7575 | IgorA | 203 | mov dword[wnd_k_words_run],0 |
204 | ;test eax,eax |
||
7573 | IgorA | 205 | @@: |
206 | cmp dword[exit_code],1 |
||
207 | je @f |
||
208 | stdcall [ted_can_save], tedit0 |
||
209 | cmp al,1 |
||
210 | jne @f |
||
211 | stdcall [mb_create],msgbox_2,thread ;message: save buf in file? |
||
212 | stdcall [mb_setfunctions],msgbox_2E_funct |
||
7575 | IgorA | 213 | ret |
7573 | IgorA | 214 | @@: |
215 | stdcall mem.Free,[bmp_icon] |
||
216 | cmp dword[unpac_mem],0 |
||
217 | je @f |
||
218 | stdcall mem.Free,[unpac_mem] |
||
219 | @@: |
||
220 | stdcall [ted_delete], tedit0 |
||
221 | stdcall [tl_data_clear], tree1 |
||
222 | mcall SF_TERMINATE_PROCESS ;выход из программы |
||
7575 | IgorA | 223 | ;ret |
7573 | IgorA | 224 | |
7576 | IgorA | 225 | align 4 |
226 | get_find_options: |
||
227 | xor eax,eax |
||
228 | cmp [opt_gr1],opt1 |
||
229 | je @f |
||
230 | inc eax |
||
231 | cmp [opt_gr1],opt2 |
||
232 | je @f |
||
233 | inc eax |
||
234 | @@: |
||
7583 | IgorA | 235 | bt dword[ch1.flags],1 |
236 | jc @f |
||
237 | bts eax,30 |
||
238 | @@: |
||
7576 | IgorA | 239 | ret |
240 | |||
241 | align 4 |
||
242 | proc but_replace_all uses ebx ecx edx |
||
243 | call get_find_options |
||
244 | mov ebx,eax |
||
245 | stdcall [ted_but_replace], tedit0, buf_replace, ebx, 1 |
||
246 | xor edx,edx |
||
247 | or eax,eax |
||
248 | jz @f |
||
249 | inc edx |
||
250 | mov ecx,0x1000 |
||
251 | .cycle0: |
||
252 | stdcall [ted_but_replace], tedit0, buf_replace, ebx, 0 |
||
253 | or eax,eax |
||
254 | jz @f |
||
255 | inc edx |
||
256 | loop .cycle0 |
||
257 | @@: |
||
7577 | IgorA | 258 | or edx,edx |
259 | jz @f |
||
260 | stdcall [ted_draw], tedit0 |
||
261 | @@: |
||
7576 | IgorA | 262 | mov eax,edx |
7577 | IgorA | 263 | mov edi,msgbox_1.z |
264 | stdcall convert_int_to_str, 8 |
||
265 | stdcall str_cat, edi,txt_Info |
||
266 | notify_window_run msgbox_1 |
||
7576 | IgorA | 267 | ret |
268 | endp |
||
269 | |||
7579 | IgorA | 270 | align 4 |
271 | proc but_goto_line uses eax |
||
272 | stdcall conv_str_to_int, buf_goto |
||
273 | stdcall [ted_go_to_position], tedit0,eax,1 |
||
274 | ret |
||
275 | endp |
||
276 | |||
1457 | IgorA | 277 | ;input: |
278 | ; al = код ошибки |
||
1456 | IgorA | 279 | align 4 |
1457 | IgorA | 280 | ted_on_init_synt_err: |
2855 | IgorA | 281 | mov byte[msgbox_3.err],'0' |
282 | add byte[msgbox_3.err],al |
||
1457 | IgorA | 283 | stdcall [mb_create],msgbox_3,thread ;message: Can-t open color options file! |
284 | ret |
||
285 | |||
286 | align 4 |
||
287 | ted_but_new_file: |
||
4991 | IgorA | 288 | push eax ebx |
289 | stdcall [ted_can_save], tedit0 |
||
290 | cmp al,1 |
||
291 | jne @f |
||
292 | stdcall [mb_create],msgbox_2,thread ;message: save changes in file? |
||
293 | stdcall [mb_setfunctions],msgbox_2N_funct |
||
294 | jmp .ret_f |
||
295 | @@: |
||
296 | call On_NewFile |
||
297 | .ret_f: |
||
5643 | leency | 298 | mov byte[openfile_path],0 |
6086 | IgorA | 299 | mcall SF_SET_CAPTION,1,hed |
4991 | IgorA | 300 | pop ebx eax |
301 | ret |
||
1338 | IgorA | 302 | |
1456 | IgorA | 303 | align 4 |
1338 | IgorA | 304 | On_NewFile: |
4991 | IgorA | 305 | stdcall [ted_clear], tedit0,1 |
306 | call draw_but_toolbar |
||
307 | stdcall [ted_draw], tedit0 |
||
7570 | IgorA | 308 | mov dword[openfile_path],0 |
4991 | IgorA | 309 | ret |
1338 | IgorA | 310 | |
1456 | IgorA | 311 | align 4 |
1338 | IgorA | 312 | On_SaveAndNewFile: |
4991 | IgorA | 313 | push edi |
314 | mov edi, tedit0 |
||
1456 | IgorA | 315 | |
4991 | IgorA | 316 | call ted_but_save_file |
317 | cmp ted_err_save,0 |
||
318 | jne @f |
||
319 | call On_NewFile |
||
320 | @@: |
||
321 | pop edi |
||
322 | ret |
||
1338 | IgorA | 323 | |
4991 | IgorA | 324 | align 4 |
325 | On_SaveAndOpenFile: |
||
326 | push edi |
||
327 | mov edi, tedit0 |
||
328 | |||
329 | call ted_but_save_file |
||
330 | cmp ted_err_save,0 |
||
331 | jne @f |
||
332 | call ted_but_open_file.no_msg |
||
333 | @@: |
||
334 | pop edi |
||
335 | ret |
||
336 | |||
337 | align 4 |
||
338 | On_SaveAndExit: |
||
339 | push edi |
||
340 | mov edi, tedit0 |
||
341 | |||
342 | call ted_but_save_file |
||
343 | cmp ted_err_save,0 |
||
344 | jne @f |
||
345 | mov dword[exit_code],1 |
||
346 | @@: |
||
347 | pop edi |
||
348 | ret |
||
349 | |||
350 | align 4 |
||
351 | On_Exit: |
||
352 | mov dword[exit_code],1 |
||
353 | ret |
||
354 | |||
1457 | IgorA | 355 | ;description: |
2102 | IgorA | 356 | ; функция открытия файла без окна сообщения |
1456 | IgorA | 357 | align 4 |
7570 | IgorA | 358 | proc but_no_msg_OpenFile uses eax ebx esi |
4308 | IgorA | 359 | stdcall [ted_open_file], tedit0,run_file_70,openfile_path |
1457 | IgorA | 360 | call ted_messages_after_open_file |
7570 | IgorA | 361 | |
362 | mov esi,openfile_path |
||
7577 | IgorA | 363 | stdcall str_len,esi |
7570 | IgorA | 364 | add esi,eax |
365 | @@: ;цикл для поиска начала имени файла |
||
366 | dec esi |
||
367 | cmp byte[esi],'/' |
||
368 | je @f |
||
369 | cmp byte[esi],0x5c ;'\' |
||
370 | je @f |
||
371 | cmp esi,openfile_path |
||
372 | jg @b |
||
373 | @@: |
||
374 | inc esi |
||
7577 | IgorA | 375 | stdcall str_len,esi |
7570 | IgorA | 376 | cmp eax,255 |
377 | jle @f |
||
378 | mov eax,255 |
||
379 | @@: |
||
380 | inc eax ;для 0 в конце строки |
||
381 | stdcall mem_cpy, filename_area,esi,eax ;копируем имя файла в диалог сохранения |
||
1457 | IgorA | 382 | ret |
7570 | IgorA | 383 | endp |
1456 | IgorA | 384 | |
1457 | IgorA | 385 | ;description: |
7579 | IgorA | 386 | ; функция вызываемую при нажатии Ctrl+N,O,F,S,H,G |
387 | align 4 |
||
388 | proc ted_but_ctrl_all uses eax, opt_key:dword |
||
389 | mov eax,[opt_key] |
||
390 | cmp al,'N' ;Ctrl+N |
||
391 | jne @f |
||
392 | call ted_but_new_file |
||
393 | jmp .end0 |
||
394 | @@: |
||
395 | cmp al,'O' ;Ctrl+O |
||
396 | jne @f |
||
397 | call ted_but_open_file |
||
398 | jmp .end0 |
||
399 | @@: |
||
400 | cmp al,'S' ;Ctrl+S |
||
401 | jne @f |
||
402 | shr eax,8 |
||
403 | call ted_but_save_file |
||
404 | jmp .end0 |
||
405 | @@: |
||
406 | cmp al,'F' ;Ctrl+F |
||
407 | jne @f |
||
408 | call but_panel_find |
||
409 | jmp .end0 |
||
410 | @@: |
||
411 | cmp al,'G' ;Ctrl+G |
||
412 | jne @f |
||
413 | call but_panel_goto |
||
414 | jmp .end0 |
||
415 | @@: |
||
416 | cmp al,'H' ;Ctrl+H |
||
417 | jne .end0 |
||
418 | call but_panel_replace |
||
419 | .end0: |
||
420 | ret |
||
421 | endp |
||
422 | |||
423 | ;description: |
||
1457 | IgorA | 424 | ; функция открытия файла с возможным окном сообщения (о возможности отменить открытие) |
1456 | IgorA | 425 | align 4 |
1457 | IgorA | 426 | ted_but_open_file: |
1467 | IgorA | 427 | pushad |
428 | |||
1457 | IgorA | 429 | stdcall [ted_can_save], tedit0 |
430 | cmp al,1 |
||
431 | jne @f |
||
4991 | IgorA | 432 | stdcall [mb_create],msgbox_2,thread ;message: save changes in file? |
433 | stdcall [mb_setfunctions],msgbox_2O_funct |
||
1457 | IgorA | 434 | jmp .ret_f |
3366 | IgorA | 435 | .no_msg: ;метка для вызова функции через кнопку в сообщении msgbox_5 |
436 | pushad |
||
1457 | IgorA | 437 | @@: |
1467 | IgorA | 438 | |
1468 | IgorA | 439 | copy_path open_dialog_name,communication_area_default_path,file_name,0 |
1467 | IgorA | 440 | mov [OpenDialog_data.type],0 |
1592 | IgorA | 441 | stdcall [OpenDialog_Start],OpenDialog_data |
1467 | IgorA | 442 | cmp [OpenDialog_data.status],2 |
443 | jne @f |
||
1468 | IgorA | 444 | stdcall mem_spac, msgbox_9.fdp,100 |
7577 | IgorA | 445 | stdcall str_len,file_name |
1468 | IgorA | 446 | cmp eax,100 |
447 | jle .no_crop |
||
448 | mov eax,100 |
||
449 | .no_crop: |
||
7570 | IgorA | 450 | stdcall mem_cpy, msgbox_9.fdp,esi,eax |
1467 | IgorA | 451 | stdcall [mb_create],msgbox_9,thread ;message: error run 'open file dialog' |
452 | jmp .ret_f |
||
453 | @@: |
||
2817 | IgorA | 454 | cmp [OpenDialog_data.status],1 |
2632 | IgorA | 455 | jne .ret_f |
6086 | IgorA | 456 | stdcall auto_open_syntax,[OpenDialog_data.openfile_path] |
4308 | IgorA | 457 | stdcall [ted_open_file], tedit0,run_file_70,openfile_path |
2817 | IgorA | 458 | call ted_messages_after_open_file |
1457 | IgorA | 459 | .ret_f: |
1467 | IgorA | 460 | popad |
1457 | IgorA | 461 | ret |
1338 | IgorA | 462 | |
6086 | IgorA | 463 | proc auto_open_syntax, of_path:dword |
464 | pushad |
||
465 | ;ищем есть ли файл подсветки для открываемого текстового файла |
||
7577 | IgorA | 466 | stdcall str_len,[of_path] |
6086 | IgorA | 467 | mov edx,[of_path] |
468 | add edx,eax |
||
469 | .f_beg: |
||
470 | cmp byte[edx],'.' |
||
471 | je .found |
||
472 | dec edx |
||
473 | cmp edx,[of_path] |
||
474 | jg .f_beg |
||
475 | .found: |
||
476 | inc edx ;edx - указатель на расширение открытого файла |
||
477 | |||
478 | mov ebx,synt_auto_open |
||
479 | .cycle_0: |
||
480 | add ebx,32 |
||
481 | stdcall strcmp,ebx,edx ;сравниваем расширение открытого файла со значениями открытыми с ini файла |
||
482 | test eax,eax |
||
483 | jz .ok |
||
484 | add ebx,32 |
||
485 | cmp byte[ebx],0 |
||
486 | jne .cycle_0 |
||
487 | jmp .end_0 |
||
488 | .ok: ;открытие файла подсветки в зависимости от найденного расширения |
||
489 | sub ebx,32 |
||
490 | stdcall open_unpac_synt_file,ebx |
||
491 | .end_0: |
||
492 | popad |
||
493 | ret |
||
494 | endp |
||
495 | |||
7571 | IgorA | 496 | ;input: |
497 | ; eax если равен: 0 - сохранение без диалога, 1 - сохранение с диалогом |
||
2102 | IgorA | 498 | ;description: |
7570 | IgorA | 499 | ; функция сохранения файла |
4308 | IgorA | 500 | align 4 |
501 | proc ted_but_save_file |
||
7571 | IgorA | 502 | or eax,eax |
503 | jnz .init_dlg |
||
504 | ; сохраняем без вызова диалогового окна |
||
505 | cmp byte[openfile_path],0 |
||
506 | jne @f |
||
7570 | IgorA | 507 | .init_dlg: |
7571 | IgorA | 508 | ; вызов диалогового окна для сохранения файла |
509 | copy_path open_dialog_name,communication_area_default_path,file_name,0 |
||
510 | mov [OpenDialog_data.type],1 |
||
511 | stdcall [OpenDialog_Start],OpenDialog_data |
||
512 | cmp [OpenDialog_data.status],1 ;if status==1 then save |
||
513 | jne .end_save |
||
7570 | IgorA | 514 | @@: |
5918 | IgorA | 515 | stdcall [ted_save_file],tedit0,run_file_70,openfile_path |
7570 | IgorA | 516 | .end_save: |
4308 | IgorA | 517 | ret |
518 | endp |
||
519 | |||
520 | ;description: |
||
2102 | IgorA | 521 | ; копирование памяти |
1468 | IgorA | 522 | align 4 |
7570 | IgorA | 523 | proc mem_cpy uses ecx esi edi, destination:dword, source:dword, len:dword |
5918 | IgorA | 524 | cld |
7571 | IgorA | 525 | mov esi,[source] |
526 | mov edi,[destination] |
||
527 | mov ecx,[len] |
||
5918 | IgorA | 528 | rep movsb |
529 | ret |
||
1468 | IgorA | 530 | endp |
531 | |||
2102 | IgorA | 532 | ;description: |
533 | ; заполнение памяти пробелами |
||
1468 | IgorA | 534 | align 4 |
5918 | IgorA | 535 | proc mem_spac uses eax ecx edi, mem:dword, len:dword |
536 | cld |
||
537 | mov al,' ' |
||
7571 | IgorA | 538 | mov edi,[mem] |
539 | mov ecx,[len] |
||
5918 | IgorA | 540 | repne stosb |
541 | ret |
||
1468 | IgorA | 542 | endp |
543 | |||
1457 | IgorA | 544 | ;input: |
545 | ; eax = код ошибки |
||
546 | ; ebx = колличество прочитанных байт |
||
1456 | IgorA | 547 | align 4 |
1457 | IgorA | 548 | ted_messages_after_open_file: |
2847 | IgorA | 549 | push ecx edi |
7577 | IgorA | 550 | or eax,eax |
551 | jz @f |
||
1457 | IgorA | 552 | cmp ax,10 |
553 | jl .zifra_0_9 |
||
554 | mov al,'?' |
||
555 | sub ax,48 |
||
556 | .zifra_0_9: |
||
557 | add ax,48 |
||
1456 | IgorA | 558 | |
1457 | IgorA | 559 | mov byte[msgbox_4.err],al |
560 | stdcall [mb_create],msgbox_4,thread ;message: Can-t open text file! |
||
561 | @@: |
||
2847 | IgorA | 562 | pop edi ecx |
1457 | IgorA | 563 | ret |
1338 | IgorA | 564 | |
1456 | IgorA | 565 | align 4 |
1457 | IgorA | 566 | ted_save_err_msg: |
567 | mov byte[msgbox_6.err],al |
||
568 | stdcall [mb_create],msgbox_6,thread ;message: Can-t save text file! |
||
569 | ret |
||
1456 | IgorA | 570 | |
2102 | IgorA | 571 | ;description: |
572 | ; функция нажатия на кнопку [Применить] в панели синтаксиса |
||
1456 | IgorA | 573 | align 4 |
2707 | IgorA | 574 | proc ted_but_open_syntax uses eax ebx ecx edi, edit:dword |
7577 | IgorA | 575 | mov edi,[edit] |
2707 | IgorA | 576 | cmp ted_panel_id,TED_PANEL_SYNTAX |
577 | jne @f |
||
7577 | IgorA | 578 | stdcall [tl_node_get_data], tree1 |
5911 | IgorA | 579 | mov [fn_col_option],eax |
6086 | IgorA | 580 | stdcall open_unpac_synt_file,eax |
2708 | IgorA | 581 | cmp ebx,-1 |
582 | je @f |
||
583 | |||
2707 | IgorA | 584 | call [ted_text_colored] |
585 | stdcall [ted_draw],edi |
||
586 | @@: |
||
587 | ret |
||
1456 | IgorA | 588 | endp |
1338 | IgorA | 589 | |
2708 | IgorA | 590 | ;открытие и распаковка файла подсветки синтаксиса |
2855 | IgorA | 591 | ;input: |
6086 | IgorA | 592 | ; f_name - указатель на имя открываемого файла синтаксиса (без пути и папки info) |
2708 | IgorA | 593 | ;output: |
594 | ; ebx - число прочитанных байт из файла |
||
2855 | IgorA | 595 | ; ecx - разрушается |
2708 | IgorA | 596 | align 4 |
6086 | IgorA | 597 | proc open_unpac_synt_file uses eax edi esi, f_name:dword |
598 | mov ebx,[f_name] |
||
7577 | IgorA | 599 | cmp byte[ebx],0 |
600 | je @f |
||
2855 | IgorA | 601 | mov edi,last_open_synt_file |
602 | stdcall strcmp,ebx,edi ;сравниваем имя подключенного файла с подключенным ранее файлом |
||
603 | test eax,eax |
||
604 | jz @f |
||
605 | |||
606 | ;копируем имя подключенного файла (для избежания повторных подключений) |
||
607 | mov esi,ebx |
||
6086 | IgorA | 608 | mov ecx,32/4 |
2855 | IgorA | 609 | cld |
6086 | IgorA | 610 | rep movsd |
2855 | IgorA | 611 | |
4308 | IgorA | 612 | copy_path ebx,fn_syntax_dir,syntax_path,0 |
613 | copy_path syntax_path,sys_path,file_name,0 |
||
2708 | IgorA | 614 | mov edi, tedit0 |
6086 | IgorA | 615 | mov [run_file_70.Function], SSF_READ_FILE |
2708 | IgorA | 616 | mov [run_file_70.Position], 0 |
617 | mov [run_file_70.Flags], 0 |
||
618 | mov ecx, ted_syntax_file_size |
||
619 | mov dword[run_file_70.Count], ecx |
||
620 | m2m dword[run_file_70.Buffer], ted_syntax_file |
||
621 | mov byte[run_file_70+20], 0 |
||
622 | mov [run_file_70.FileName], file_name |
||
6086 | IgorA | 623 | mcall SF_FILE, run_file_70 |
2708 | IgorA | 624 | cmp ebx,-1 |
625 | jne .end_0 |
||
626 | call ted_on_init_synt_err |
||
627 | jmp @f |
||
628 | .end_0: |
||
629 | mov eax,ted_syntax_file |
||
630 | cmp dword[eax],'KPCK' |
||
631 | jne .end_unpack |
||
632 | cmp dword[eax+4],ecx |
||
633 | jg @f ;если для распакованого файла не хватает выделенной памяти |
||
634 | cmp dword[unpac_mem],0 |
||
635 | jne .end_1 |
||
636 | ;выделение памяти для распаковки файла |
||
637 | stdcall mem.Alloc,ecx |
||
638 | mov [unpac_mem],eax |
||
639 | .end_1: |
||
640 | stdcall unpack,ted_syntax_file,[unpac_mem] |
||
641 | mov edi,ted_syntax_file |
||
642 | mov esi,[unpac_mem] |
||
643 | mov ecx,[edi+4] |
||
644 | cld |
||
645 | rep movsb |
||
646 | .end_unpack: |
||
647 | stdcall [ted_init_syntax_file], tedit0 |
||
648 | @@: |
||
649 | ret |
||
6086 | IgorA | 650 | endp |
2708 | IgorA | 651 | |
2102 | IgorA | 652 | ;description: |
653 | ; вызов/скрытие панели поиска |
||
1456 | IgorA | 654 | align 4 |
7579 | IgorA | 655 | proc but_panel_find |
656 | stdcall on_panel_change, tedit0,TED_PANEL_FIND |
||
657 | ;or word[edit_find.flags],ed_focus |
||
658 | ret |
||
659 | endp |
||
1456 | IgorA | 660 | |
7579 | IgorA | 661 | ;description: |
662 | ; вызов/скрытие панели перехода |
||
663 | align 4 |
||
664 | proc but_panel_goto |
||
665 | stdcall on_panel_change, tedit0,TED_PANEL_GOTO |
||
666 | ;or word[edit_goto.flags],ed_focus |
||
4308 | IgorA | 667 | ret |
1449 | IgorA | 668 | endp |
1338 | IgorA | 669 | |
7576 | IgorA | 670 | ;description: |
671 | ; вызов/скрытие панели замены |
||
1456 | IgorA | 672 | align 4 |
7579 | IgorA | 673 | proc but_panel_replace |
674 | stdcall on_panel_change, tedit0,TED_PANEL_REPLACE |
||
675 | ;or word[edit_find.flags],ed_focus |
||
7576 | IgorA | 676 | ret |
677 | endp |
||
678 | |||
679 | ;description: |
||
680 | ; вызов/скрытие панели с файлами синтаксиса |
||
681 | align 4 |
||
7579 | IgorA | 682 | proc but_panel_choose_syntax |
683 | stdcall on_panel_change, tedit0,TED_PANEL_SYNTAX |
||
684 | ret |
||
685 | endp |
||
686 | |||
687 | align 4 |
||
688 | proc on_panel_change uses eax edi, edit:dword, new_id:dword |
||
7576 | IgorA | 689 | mov edi,[edit] |
7579 | IgorA | 690 | mov eax,[new_id] |
7576 | IgorA | 691 | |
7579 | IgorA | 692 | ;if(panel_id==new_id) panel_id=0, draw all |
693 | cmp ted_panel_id,al |
||
694 | jne @f |
||
7576 | IgorA | 695 | mov ted_panel_id,TED_PANEL_NULL |
696 | mov ted_wnd_l,0 |
||
697 | jmp .e_if |
||
698 | @@: |
||
7579 | IgorA | 699 | ;elseif(panel_id==0) panel_id=new_id, draw all |
700 | cmp ted_panel_id,TED_PANEL_NULL |
||
701 | jne @f |
||
702 | mov ted_panel_id,al |
||
7576 | IgorA | 703 | mov ted_wnd_l,TED_PANEL_WIDTH |
704 | .e_if: |
||
705 | call EvSize |
||
706 | stdcall [ted_draw],edi |
||
7579 | IgorA | 707 | jmp .end0 |
708 | ;else panel_id=new_id, draw panel |
||
709 | @@: |
||
710 | mov ted_panel_id,al |
||
711 | stdcall draw_panels,edi |
||
712 | .end0: |
||
7576 | IgorA | 713 | ret |
714 | endp |
||
715 | |||
716 | align 4 |
||
4308 | IgorA | 717 | tbl_1251_866: |
718 | rb 128 |
||
719 | db 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0 ;128 |
||
720 | db 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0,0 ;144 |
||
721 | db 0, 0, 0, 0, 0, 0, 0, 0,240,0,0,0,0,0,0,0 ;160 |
||
722 | db 0, 0, 0, 0, 0, 0, 0, 0,241,0,0,0,0,0,0,0 ;176 |
||
723 | db 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143 ;192 |
||
724 | db 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159 ;208 |
||
725 | db 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175 ;224 |
||
726 | db 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239 ;240 |
||
727 | |||
728 | align 4 |
||
729 | tbl_866_1251: |
||
730 | rb 128 |
||
731 | db 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207 ;128 |
||
732 | db 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223 ;144 |
||
733 | db 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239 ;160 |
||
734 | db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;176 |
||
735 | db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;192 |
||
736 | db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;208 |
||
737 | db 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 ;224 |
||
738 | db 168,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;240 |
||
739 | |||
740 | align 4 |
||
1457 | IgorA | 741 | ted_on_find_err: |
7577 | IgorA | 742 | notify_window_run msgbox_7 ;message: Can not find text |
1457 | IgorA | 743 | ret |
744 | |||
2102 | IgorA | 745 | ;description: |
746 | ; функция поиска информации в списке ключевых слов |
||
1456 | IgorA | 747 | align 4 |
1338 | IgorA | 748 | but_find_key_w: |
7035 | IgorA | 749 | cmp dword[wnd_k_words_run],0 |
3244 | IgorA | 750 | jne @f |
751 | pushad |
||
6086 | IgorA | 752 | mcall SF_CREATE_THREAD,1,prop_start,thread_coords |
7579 | IgorA | 753 | mov [wnd_k_words_run],eax |
3244 | IgorA | 754 | popad |
755 | @@: |
||
2102 | IgorA | 756 | ret |
1338 | IgorA | 757 | |
2102 | IgorA | 758 | ;description: |
759 | ; выделение/скрытие непечатаемых символов |
||
1456 | IgorA | 760 | align 4 |
6239 | IgorA | 761 | proc but_sumb_invis uses edi, edit:dword |
7579 | IgorA | 762 | mov edi,[edit] |
1338 | IgorA | 763 | |
6239 | IgorA | 764 | xor ted_mode_invis,1 |
765 | call draw_but_toolbar |
||
766 | stdcall [ted_draw],edi |
||
767 | ret |
||
1456 | IgorA | 768 | endp |
1338 | IgorA | 769 | |
2102 | IgorA | 770 | ;description: |
771 | ; выделение/скрытие ключевых слов |
||
1456 | IgorA | 772 | align 4 |
7573 | IgorA | 773 | proc but_use_syntax uses edi, edit:dword |
7579 | IgorA | 774 | mov edi,[edit] |
1338 | IgorA | 775 | |
6239 | IgorA | 776 | xor ted_mode_color,1 |
777 | cmp ted_mode_color,0 |
||
778 | je @f |
||
779 | call [ted_text_colored] |
||
780 | @@: |
||
781 | call draw_but_toolbar |
||
782 | stdcall [ted_draw],edi |
||
783 | ret |
||
1456 | IgorA | 784 | endp |
1338 | IgorA | 785 |