Subversion Repositories Kolibri OS

Rev

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