Subversion Repositories Kolibri OS

Rev

Rev 5671 | Rev 5911 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4308 IgorA 1
;Огромная благодарность всем, кто помогал: кодом/советом/дизайном ...
1338 IgorA 2
 
3
use32
4
  org 0x0
1449 IgorA 5
  db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт
1338 IgorA 6
  dd 0x01
7
  dd start
1449 IgorA 8
  dd i_end ; размер приложения
1338 IgorA 9
  dd mem
10
  dd stacktop
1449 IgorA 11
  dd file_name ; command line
1338 IgorA 12
  dd sys_path
13
 
14
MAX_COLOR_WORD_LEN equ 40
15
maxChars equ 100002 ;(...+2)
2817 IgorA 16
BUF_SIZE equ 4096 ;buffer for copy|paste
1457 IgorA 17
maxSyntaxFileSize equ 410000
4308 IgorA 18
TOOLBAR_ICONS_SIZE equ 1200*20
1338 IgorA 19
 
1449 IgorA 20
include '../../proc32.inc'
2708 IgorA 21
;include '../../config.inc'
1338 IgorA 22
include '../../macros.inc'
3014 dunkaist 23
include '../../dll.inc'
1390 IgorA 24
include '../../develop/libraries/box_lib/load_lib.mac'
1449 IgorA 25
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
2708 IgorA 26
include '../../system/desktop/trunk/kglobals.inc'
27
include '../../system/desktop/trunk/unpacker.inc'
1343 IgorA 28
include 'lang.inc'
1467 IgorA 29
 
1338 IgorA 30
include 't_data.inc'
5671 leency 31
include 't_menu.inc'
1338 IgorA 32
include 'strlen.inc'
33
include 't_draw.inc' ;draw main window functions
1457 IgorA 34
include 't_button.inc' ;text work functions
3244 IgorA 35
include 'wnd_k_words.inc'
1338 IgorA 36
 
2632 IgorA 37
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
1338 IgorA 38
 
2632 IgorA 39
 
40
;Макрос для загрузки изображений с использованием библиотеки libimg.obj
41
;для использования макроса нужны переменные:
42
; - run_file_70 FileInfoBlock
43
; - image_data dd 0
44
macro load_image_file path,buf,size
45
{
46
	;path - может быть переменной или строковым параметром
47
	if path eqtype '' ;проверяем задан ли строкой параметр path
48
		jmp @f
49
			local .path_str
50
			.path_str db path ;формируем локальную переменную
51
			db 0
52
		@@:
53
		;32 - стандартный адрес по которому должен быть буфер с системным путем
54
		copy_path .path_str,[32],file_name,0x0
55
	else
56
		copy_path path,[32],file_name,0x0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой
57
	end if
58
 
59
	stdcall mem.Alloc, dword size ;выделяем память для изображения
60
	mov [buf],eax
61
 
62
	mov eax,70 ;70-я функция работа с файлами
63
	mov [run_file_70.Function], 0
64
	mov [run_file_70.Position], 0
65
	mov [run_file_70.Flags], 0
66
	mov [run_file_70.Count], dword size
67
	m2m [run_file_70.Buffer], [buf]
68
	mov byte[run_file_70+20], 0
69
	mov [run_file_70.FileName], file_name
70
	mov ebx,run_file_70
71
	int 0x40 ;загружаем файл изображения
72
	cmp ebx,0xffffffff
73
	je @f
74
		;определяем вид изображения и переводим его во временный буфер image_data
75
		stdcall dword[img_decode], dword[buf],ebx,0
76
		mov dword[image_data],eax
77
		;преобразуем изображение к формату rgb
78
		stdcall dword[img_to_rgb2], dword[image_data],dword[buf]
79
		;удаляем временный буфер image_data
80
		stdcall dword[img_destroy], dword[image_data]
81
	@@:
82
}
83
 
84
image_data dd 0 ;указатель на временную память. для нужен преобразования изображения
85
icon_tl_sys dd 0 ;указатель на память для хранения системных иконок
86
 
1456 IgorA 87
align 4
1338 IgorA 88
start:
4308 IgorA 89
	mcall 48,3,sc,sizeof.system_colors
1338 IgorA 90
 
4308 IgorA 91
	mcall 68,11
92
	or eax,eax
93
	jz button.exit
1338 IgorA 94
 
4308 IgorA 95
	mcall 66,1,1 ;scan code
96
	mcall 40,0xC0000027
1338 IgorA 97
 
4308 IgorA 98
	mov esi,file_name
99
	call strlen
100
	mov ecx,eax
101
	mov edi,openfile_path
102
	cld
103
	rep movsb ;копируем имя файла в буфер openfile_path
1338 IgorA 104
 
1456 IgorA 105
load_libraries l_libs_start,load_lib_end
1338 IgorA 106
 
2102 IgorA 107
;проверка на сколько удачно загузились библиотеки
4308 IgorA 108
mov	ebp,lib0
109
.test_lib_open:
1456 IgorA 110
	cmp	dword [ebp+ll_struc_size-4],0
111
	jz	@f
112
	mcall -1 ;exit not correct
113
@@:
4308 IgorA 114
	add ebp,ll_struc_size
115
	cmp ebp,load_lib_end
116
	jl .test_lib_open
1338 IgorA 117
 
1456 IgorA 118
;---------------------------------------------------------------------
1592 IgorA 119
	stdcall [ted_init], tedit0
120
	stdcall dword[tl_data_init], tree1
1338 IgorA 121
 
1467 IgorA 122
; OpenDialog initialisation
1592 IgorA 123
	stdcall [OpenDialog_Init],OpenDialog_data
1467 IgorA 124
 
5649 leency 125
; kmenu initialisation
126
	stdcall [kmenu_init], sc
127
 
128
	stdcall [ksubmenu_new]
129
	mov [main_menu], eax
130
 
131
	stdcall [ksubmenu_new]
132
	mov [main_menu_file], eax
133
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_File_New, 3
134
	stdcall [ksubmenu_add], [main_menu_file], eax
135
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_File_Open, 4
136
	stdcall [ksubmenu_add], [main_menu_file], eax
137
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_File_Save, 5
138
	stdcall [ksubmenu_add], [main_menu_file], eax
139
	stdcall [kmenuitem_new], KMENUITEM_SEPARATOR, 0, 0
140
	stdcall [ksubmenu_add], [main_menu_file], eax
141
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_File_Exit, 199
5671 leency 142
	stdcall [ksubmenu_add], [main_menu_file], eax
5649 leency 143
	stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_main_menu_File, [main_menu_file]
144
	stdcall [ksubmenu_add], [main_menu], eax
145
 
5671 leency 146
	stdcall [ksubmenu_new]
147
	mov [main_menu_changes], eax
148
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Changes_Undo, 16
149
	stdcall [ksubmenu_add], [main_menu_changes], eax
150
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Changes_Redo, 17
151
	stdcall [ksubmenu_add], [main_menu_changes], eax
152
	stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_main_menu_Changes, [main_menu_changes]
153
	stdcall [ksubmenu_add], [main_menu], eax
154
 
155
	stdcall [ksubmenu_new]
156
	mov [main_menu_buf], eax
157
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Buf_Cut, 7
158
	stdcall [ksubmenu_add], [main_menu_buf], eax
159
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Buf_Copy, 8
160
	stdcall [ksubmenu_add], [main_menu_buf], eax
161
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Buf_Paste, 9
162
	stdcall [ksubmenu_add], [main_menu_buf], eax
163
	stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_main_menu_Buf, [main_menu_buf]
164
	stdcall [ksubmenu_add], [main_menu], eax
165
 
5830 IgorA 166
	stdcall [ksubmenu_new]
167
	mov [main_menu_search], eax
168
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Search_Text, 10
169
	stdcall [ksubmenu_add], [main_menu_search], eax
170
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Search_Keywords, 12
171
	stdcall [ksubmenu_add], [main_menu_search], eax
172
	stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_main_menu_Search, [main_menu_search]
173
	stdcall [ksubmenu_add], [main_menu], eax
5671 leency 174
 
175
	stdcall [ksubmenu_new]
176
	mov [main_menu_view], eax
177
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_UseSyntax, 19
178
	stdcall [ksubmenu_add], [main_menu_view], eax
179
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_ChooseSyntax, 20
180
	stdcall [ksubmenu_add], [main_menu_view], eax
181
	stdcall [kmenuitem_new], KMENUITEM_SEPARATOR, 0, 0
182
	stdcall [ksubmenu_add], [main_menu_view], eax
183
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_LineBreak, 18
184
	stdcall [ksubmenu_add], [main_menu_view], eax
185
	stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_main_menu_View, [main_menu_view]
186
	stdcall [ksubmenu_add], [main_menu], eax
187
 
188
	stdcall [ksubmenu_new]
189
	mov [main_menu_encoding], eax
190
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Encoding_1251to866, 21
191
	stdcall [ksubmenu_add], [main_menu_encoding], eax
192
	stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Encoding_866to1251, 22
193
	stdcall [ksubmenu_add], [main_menu_encoding], eax
194
	stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_main_menu_Encoding, [main_menu_encoding]
195
	stdcall [ksubmenu_add], [main_menu], eax
196
 
2632 IgorA 197
; init toolbar file
4128 IgorA 198
	load_image_file 'te_icon.png', bmp_icon,TOOLBAR_ICONS_SIZE*2 ;умножение на 2 для серых кнопок
199
	mov eax,[bmp_icon]
200
	add eax,TOOLBAR_ICONS_SIZE
201
	stdcall img_to_gray, [bmp_icon],eax,(TOOLBAR_ICONS_SIZE)/3
1338 IgorA 202
;---------------------------------------------------------------------
2632 IgorA 203
; читаем файл с курсорами и линиями
204
	load_image_file 'tl_sys_16.png', icon_tl_sys,54+3*256*13
205
	mov eax,dword[icon_tl_sys]
206
	mov dword[tree1.data_img_sys],eax
1338 IgorA 207
;---------------------------------------------------------------------
2632 IgorA 208
; читаем файл с иконками узлов
209
	load_image_file 'tl_nod_16.png', icon_tl_sys,54+3*256*2
210
	mov eax,dword[icon_tl_sys]
211
	mov dword[tree1.data_img],eax
1338 IgorA 212
;------------------------------------------------------------------------------
1449 IgorA 213
  copy_path fn_syntax_dir,sys_path,file_name,0x0 ;берем путь к папке с файлами синтаксиса
1338 IgorA 214
  mov eax,70
215
  mov ebx,tree_file_struct
216
  int 0x40
217
 
218
cmp ebx,-1
219
je .end_dir_init
220
 
221
  mov eax,dir_mem
222
  add eax,32+4+1+3+4*6+8
223
mov ecx,ebx
224
@@:
1449 IgorA 225
  cmp byte[eax],'.' ;фильтруем файлы с именами '.' и '..'
1338 IgorA 226
  je .filter
1456 IgorA 227
    ;0x10000 ;1*2^16 - где 1 номер иконки с книгой
228
    stdcall dword[tl_node_add], eax,0x10000, tree1
1338 IgorA 229
 
1456 IgorA 230
    stdcall dword[tl_cur_next], tree1
1338 IgorA 231
  .filter:
232
  add eax,304
233
  loop @b
2102 IgorA 234
  stdcall dword[tl_cur_beg],tree1 ;ставим курсор на начало списка
1338 IgorA 235
.end_dir_init:
236
 
2817 IgorA 237
;--- load ini file ---
2855 IgorA 238
	copy_path ini_name,sys_path,file_name,0
2817 IgorA 239
	;window startup pozition
240
	stdcall dword[ini_get_int],file_name,ini_sec_window,key_window_l,ini_def_window_l
241
	mov word[wnd_s_pos+2],ax
242
	stdcall dword[ini_get_int],file_name,ini_sec_window,key_window_w,ini_def_window_w
243
	mov word[wnd_s_pos],ax
244
	stdcall dword[ini_get_int],file_name,ini_sec_window,key_window_t,ini_def_window_t
245
	mov word[wnd_s_pos+6],ax
246
	stdcall dword[ini_get_int],file_name,ini_sec_window,key_window_h,ini_def_window_h
247
	mov word[wnd_s_pos+4],ax
248
	;scrool type
249
	stdcall dword[ini_get_int],file_name,ini_sec_window,key_scroll_type,ini_def_scroll_type
250
	mov [wScr.type],eax
251
	mov [hScr.type],eax
252
	mov [ws_dir_lbox.type],eax
3244 IgorA 253
    mov [w_scr_t3.type],eax
2817 IgorA 254
	;symbol size
255
	stdcall dword[ini_get_int],file_name,ini_sec_window,key_symbol_w,ini_def_symbol_w
256
	mov dword[tedit0.rec.width],eax
257
	stdcall dword[ini_get_int],file_name,ini_sec_window,key_symbol_h,ini_def_symbol_h
258
	mov dword[tedit0.rec.height],eax
259
	lea eax,[eax+eax*2]
260
	mov dword[tedit0.rec.top],eax
2855 IgorA 261
	;файловые расширения
262
	xor edx,edx
263
	mov ebx,synt_auto_open
264
	@@:
265
		;берем имя файла
266
		stdcall dword[ini_get_str],file_name,ini_sec_options,key_synt_file,ebx,32,ini_def_synt_f
267
		cmp byte[ebx],0
268
		je @f
269
		inc byte[key_synt_file.numb]
270
		add ebx,32
271
		;берем расширения
272
		stdcall dword[ini_get_str],file_name,ini_sec_options,key_synt_ext,ebx,32,ini_def_synt_f
273
		inc byte[key_synt_ext.numb]
274
		add ebx,32
275
		inc edx
276
		cmp edx,max_synt_auto_open
277
		jl @b
278
	@@:
2817 IgorA 279
 
1338 IgorA 280
;--- load color option file ---
1457 IgorA 281
	mov ebx,dword[fn_col_option]
2708 IgorA 282
	call open_unpac_synt_file
1338 IgorA 283
 
284
;--- get cmd line ---
2708 IgorA 285
	cmp byte[openfile_path+3],0 ;openfile_path
286
	je @f ;if file names exist
287
		mov esi,openfile_path
288
		call strlen ;eax=strlen
289
		call but_no_msg_OpenFile
290
	@@:
1338 IgorA 291
 
2817 IgorA 292
 
293
 
1456 IgorA 294
align 4
1338 IgorA 295
red_win:
1467 IgorA 296
  call draw_window
297
 
298
align 4
299
still:
2125 IgorA 300
	mcall 10
4991 IgorA 301
	cmp dword[exit_code],1
302
	je button.exit
1467 IgorA 303
 
2125 IgorA 304
	cmp al,1 ;изменилось положение окна
305
	jz red_win
306
	cmp al,2
307
	jz key
308
	cmp al,3
309
	jz button
310
	cmp al,6 ;мышь
311
	jne @f
312
		jmp mouse
313
	@@:
314
	jmp still
1467 IgorA 315
 
316
align 4
317
draw_window:
2125 IgorA 318
	mcall 12,1
1338 IgorA 319
 
2125 IgorA 320
	mov edx,[sc.work]
321
	or  edx,0x73000000
322
	mov edi,hed
2817 IgorA 323
	mcall 0,dword[wnd_s_pos],dword[wnd_s_pos+4]
1338 IgorA 324
 
2125 IgorA 325
	mcall 9,procinfo,-1
326
	mov edi,tedit0 ;значение edi нужно для EvSize и ted_wnd_t
327
	call EvSize
1449 IgorA 328
 
2125 IgorA 329
	mov eax,13 ;верхний прямоугольник, для очистки верхней панели
330
	xor ebx,ebx
331
	mov ecx,ted_wnd_t
332
	mov bx,word[procinfo.client_box.width]
333
	inc bx
334
	int 0x40
1338 IgorA 335
 
4308 IgorA 336
	call draw_but_toolbar
5649 leency 337
 
338
	stdcall [kmainmenu_draw], [main_menu]
1338 IgorA 339
 
4308 IgorA 340
	stdcall [ted_draw], tedit0
1338 IgorA 341
 
4308 IgorA 342
	mcall 12,2
343
	ret
1338 IgorA 344
 
1456 IgorA 345
align 4
1338 IgorA 346
mouse:
5649 leency 347
	stdcall [kmainmenu_dispatch_cursorevent], [main_menu]
2125 IgorA 348
	stdcall [ted_mouse], tedit0
1338 IgorA 349
 
2125 IgorA 350
	cmp byte[tedit0.panel_id],TED_PANEL_FIND ;if not panel
351
	jne @f
352
		stdcall [edit_box_mouse], dword edit2
353
	@@:
354
	cmp byte[tedit0.panel_id],TED_PANEL_SYNTAX ;if not panel
5649 leency 355
	jne .mouse_end
2125 IgorA 356
	stdcall [tl_mouse], tree1
5649 leency 357
.mouse_end:
2125 IgorA 358
	jmp still
1338 IgorA 359
;---------------------------------------------------------------------
360
 
1456 IgorA 361
;output:
362
; ah = symbol
363
align 4
364
proc KeyConvertToASCII, table:dword
365
  push ebx
366
  mov ebx,dword[table] ;convert scan to ascii
1338 IgorA 367
  ror ax,8
368
  xor ah,ah
369
  add bx,ax
370
  mov ah,byte[ebx]
1456 IgorA 371
  pop ebx
1338 IgorA 372
  ret
1456 IgorA 373
endp
1338 IgorA 374
 
1456 IgorA 375
align 4
1338 IgorA 376
key:
1456 IgorA 377
  mcall 66,3 ;66.3 получить состояние управляющих клавиш
1457 IgorA 378
  xor esi,esi
1338 IgorA 379
  mov ecx,1
380
  test al,0x03 ;[Shift]
381
  jz @f
1456 IgorA 382
    mov cl,2
1457 IgorA 383
    or esi,KM_SHIFT
1338 IgorA 384
  @@:
385
  test al,0x0c ;[Ctrl]
386
  jz @f
1457 IgorA 387
    or esi,KM_CTRL
1338 IgorA 388
  @@:
389
  test al,0x30 ;[Alt]
390
  jz @f
1456 IgorA 391
    mov cl,3
1457 IgorA 392
    or esi,KM_ALT
1338 IgorA 393
  @@:
394
  test al,0x80 ;[NumLock]
395
  jz @f
1457 IgorA 396
    or esi,KM_NUMLOCK
1338 IgorA 397
  @@:
1457 IgorA 398
 
1456 IgorA 399
  mcall 26,2,,conv_tabl ;26.2 получить раскладку клавиатуры
400
  mcall 2 ;получаем код нажатой клавиши
1458 IgorA 401
  stdcall [tl_key], tree1
1338 IgorA 402
 
403
  test word [edit2.flags],10b;ed_focus ; если не в фокусе, выходим
404
  je @f
405
    cmp ah,0x80 ;if key up
406
    ja still
407
    cmp ah,42 ;[Shift] (left)
408
    je still
409
    cmp ah,54 ;[Shift] (right)
410
    je still
411
    cmp ah,56 ;[Alt]
412
    je still
413
    cmp ah,29 ;[Ctrl]
414
    je still
415
    cmp ah,69 ;[Pause Break]
416
    je still
417
 
1456 IgorA 418
    stdcall KeyConvertToASCII, dword conv_tabl
1449 IgorA 419
    stdcall [edit_box_key], dword edit2
1338 IgorA 420
    jmp still
421
  @@:
422
 
1457 IgorA 423
  stdcall [ted_key], tedit0, conv_tabl,esi
1338 IgorA 424
  jmp still
425
 
1457 IgorA 426
align 4
1338 IgorA 427
button:
428
 
1449 IgorA 429
  mcall 17 ;получить код нажатой кнопки
1338 IgorA 430
  cmp ah,3
431
  jne @f
1457 IgorA 432
    call ted_but_new_file
1338 IgorA 433
  @@:
434
  cmp ah,4
435
  jne @f
1457 IgorA 436
    call ted_but_open_file
1338 IgorA 437
  @@:
438
  cmp ah,5
439
  jne @f
4308 IgorA 440
    call ted_but_save_file
1338 IgorA 441
  @@:
442
  cmp ah,6
1456 IgorA 443
  jne @f
1457 IgorA 444
    stdcall [ted_but_select_word], tedit0
1456 IgorA 445
  @@:
1338 IgorA 446
  cmp ah,7
1456 IgorA 447
  jne @f
1457 IgorA 448
    stdcall [ted_but_cut], tedit0
1456 IgorA 449
  @@:
1338 IgorA 450
  cmp ah,8
451
  jne @f
1457 IgorA 452
    stdcall [ted_but_copy], tedit0
1338 IgorA 453
  @@:
454
  cmp ah,9
1456 IgorA 455
  jne @f
1457 IgorA 456
    stdcall [ted_but_paste], tedit0
1456 IgorA 457
  @@:
1338 IgorA 458
  cmp ah,10
1449 IgorA 459
  jne @f
1457 IgorA 460
    call ted_but_find
1449 IgorA 461
  @@:
1338 IgorA 462
  cmp ah,11
1456 IgorA 463
  jne @f
464
    call but_replace
465
  @@:
1338 IgorA 466
  cmp ah,12
1456 IgorA 467
  jne @f
468
    call but_find_key_w
469
  @@:
1338 IgorA 470
  cmp ah,13
1456 IgorA 471
  jne @f
1457 IgorA 472
    stdcall [ted_but_sumb_upper], tedit0
1456 IgorA 473
  @@:
1338 IgorA 474
  cmp ah,14
1456 IgorA 475
  jne @f
1457 IgorA 476
    stdcall [ted_but_sumb_lover], tedit0
1456 IgorA 477
  @@:
1338 IgorA 478
  cmp ah,15
1456 IgorA 479
  jne @f
1457 IgorA 480
    stdcall [ted_but_reverse], tedit0
1456 IgorA 481
  @@:
1338 IgorA 482
  cmp ah,16
1456 IgorA 483
  jne @f
1457 IgorA 484
    stdcall [ted_but_undo], tedit0
1456 IgorA 485
  @@:
1338 IgorA 486
  cmp ah,17
1456 IgorA 487
  jne @f
1457 IgorA 488
    stdcall [ted_but_redo], tedit0
1456 IgorA 489
  @@:
1338 IgorA 490
  cmp ah,18
1456 IgorA 491
  jne @f
492
    stdcall but_sumb_invis, tedit0
493
  @@:
1338 IgorA 494
  cmp ah,19
1456 IgorA 495
  jne @f
496
    stdcall but_k_words_show, tedit0
497
  @@:
1338 IgorA 498
  cmp ah,20
1449 IgorA 499
  jne @f
500
    stdcall but_synt_show, tedit0
501
  @@:
4308 IgorA 502
  cmp ah,21
503
  jne @f
504
    stdcall [ted_but_convert_by_table],tedit0,tbl_1251_866
505
  @@:
506
  cmp ah,22
507
  jne @f
508
    stdcall [ted_but_convert_by_table],tedit0,tbl_866_1251
509
  @@:
1338 IgorA 510
 
511
  cmp ah,200
512
  jne @f
1456 IgorA 513
    stdcall ted_but_open_syntax, tedit0
1338 IgorA 514
  @@:
515
  cmp ah,201
516
  jne @f
1457 IgorA 517
    stdcall [ted_but_find_next], tedit0
1338 IgorA 518
  @@:
519
 
520
  cmp ah,1
5649 leency 521
  je .exit
522
 
523
  cmp ah,199
524
  je .exit
525
 
526
  jmp still
1338 IgorA 527
.exit:
4991 IgorA 528
	cmp dword[exit_code],1
529
	je @f
2708 IgorA 530
	stdcall [ted_can_save], tedit0
531
	cmp al,1
532
	jne @f
5671 leency 533
		stdcall [mb_create],msgbox_2,thread ;message: save buf in file?
4991 IgorA 534
		stdcall [mb_setfunctions],msgbox_2E_funct
2708 IgorA 535
		jmp still
536
	@@:
537
	stdcall mem.Free,[bmp_icon]
538
	cmp dword[unpac_mem],0
539
	je @f
540
		stdcall mem.Free,[unpac_mem]
541
	@@:
542
 
543
	stdcall [ted_delete], tedit0
544
	stdcall dword[tl_data_clear], tree1
545
	mcall -1 ;выход из программы
1456 IgorA 546
 
1457 IgorA 547
edit2 edit_box TED_PANEL_WIDTH-1, 0, 20, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_find, mouse_dd, 0
1338 IgorA 548
 
2708 IgorA 549
unpac_mem dd 0
1338 IgorA 550
 
1343 IgorA 551
if lang eq ru
2632 IgorA 552
  head_f_i:
553
  head_f_l db 'Системная ошибка',0
1592 IgorA 554
  err_message_found_lib0 db 'Не найдена библиотека ',39,'box_lib.obj',39,0
555
  err_message_import0 db 'Ошибка при импорте библиотеки ',39,'box_lib.obj',39,0
556
  err_message_found_lib1 db 'Не найдена библиотека ',39,'msgbox.obj',39,0
557
  err_message_import1 db 'Ошибка при импорте библиотеки ',39,'msgbox.obj',39,0
558
  err_message_found_lib2 db 'Не найдена библиотека ',39,'proc_lib.obj',39,0
559
  err_message_import2 db 'Ошибка при импорте библиотеки ',39,'proc_lib.obj',39,0
2632 IgorA 560
  err_message_found_lib_3 db 'Не найдена библиотека ',39,'libimg.obj',39,0
561
  err_message_import_3 db 'Ошибка при импорте библиотеки ',39,'libimg.obj',39,0
2817 IgorA 562
  err_message_found_lib_4 db 'Не найдена библиотека ',39,'libini.obj',39,0
563
  err_message_import_4 db 'Ошибка при импорте библиотеки ',39,'libini.obj',39,0
5649 leency 564
  err_message_found_lib_5 db 'Не найдена библиотека ',39,'libkmenu.obj',39,0
565
  err_message_import_5 db 'Ошибка при импорте библиотеки ',39,'libkmenu.obj',39,0
1343 IgorA 566
else
2632 IgorA 567
  head_f_i:
568
  head_f_l db 'System error',0
1592 IgorA 569
  err_message_found_lib0 db 'Sorry I cannot found library ',39,'box_lib.obj',39,0
570
  err_message_import0 db 'Error on load import library ',39,'box_lib.obj',39,0
571
  err_message_found_lib1 db 'Sorry I cannot found library ',39,'msgbox.obj',39,0
572
  err_message_import1 db 'Error on load import library ',39,'msgbox.obj',39,0
573
  err_message_found_lib2 db 'Sorry I cannot found library ',39,'proc_lib.obj',39,0
574
  err_message_import2 db 'Error on load import library ',39,'proc_lib.obj',39,0
2632 IgorA 575
  err_message_found_lib_3 db 'Sorry I cannot found library ',39,'libimg.obj',39,0
576
  err_message_import_3 db 'Error on load import library ',39,'libimg.obj',39,0
2817 IgorA 577
  err_message_found_lib_4 db 'Sorry I cannot found library ',39,'libini.obj',39,0
578
  err_message_import_4 db 'Error on load import library ',39,'libini.obj',39,0
5649 leency 579
  err_message_found_lib_5 db 'Sorry I cannot found library ',39,'libkmenu.obj',39,0
580
  err_message_import_5 db 'Error on load import library ',39,'libkmenu.obj',39,0
1343 IgorA 581
end if
1338 IgorA 582
 
583
;library structures
584
l_libs_start:
2632 IgorA 585
	lib0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\
586
		err_message_found_lib0, head_f_l, import_box_lib,err_message_import0, head_f_i
587
	lib1 l_libs lib_name_1, sys_path, file_name, system_dir_1,\
588
		err_message_found_lib1, head_f_l, import_msgbox_lib, err_message_import1, head_f_i
589
	lib2 l_libs lib_name_2, sys_path, file_name, system_dir_2,\
590
		err_message_found_lib2, head_f_l, import_proclib, err_message_import2, head_f_i
591
	lib3 l_libs lib_name_3, sys_path, file_name, system_dir_3,\
592
		err_message_found_lib_3, head_f_l, import_libimg, err_message_import_3, head_f_i
2817 IgorA 593
	lib4 l_libs lib_name_4, sys_path, file_name, system_dir_4,\
594
		err_message_found_lib_4, head_f_l, import_libini, err_message_import_4, head_f_i
5649 leency 595
	lib5 l_libs lib_name_5, sys_path, file_name, system_dir_5,\
596
		err_message_found_lib_5, head_f_l, import_libkmenu, err_message_import_5, head_f_i
1338 IgorA 597
load_lib_end:
598
 
2708 IgorA 599
IncludeIGlobals
5643 leency 600
hed db 'TextEdit '
1338 IgorA 601
i_end:
5643 leency 602
	openfile_path: ;полный путь к файлу с которым идет работа
603
		rb 4096
2855 IgorA 604
	dir_mem rb 32+304*count_of_dir_list_files
605
	wnd_s_pos: ;место для настроек стартовой позиции окна
606
		rq 1
607
	last_open_synt_file rb 32 ;имя последнего подключенного файла синтаксиса
608
	buf rb BUF_SIZE ;буфер для копирования и вставки
609
	buf_find rb 302 ;буфер для поиска текста
2708 IgorA 610
IncludeUGlobals
1467 IgorA 611
	align 16
612
	procinfo process_information
1705 IgorA 613
		rb 1024
1467 IgorA 614
	thread:
1705 IgorA 615
	rb 1024
3244 IgorA 616
    thread_coords:
5830 IgorA 617
	rb 4096
1338 IgorA 618
stacktop:
4308 IgorA 619
	sys_path: ;путь откуда запустился исполняемый файл
1705 IgorA 620
		rb 4096
4308 IgorA 621
	file_name: ;параметры запуска
1705 IgorA 622
		rb 4096
4308 IgorA 623
	syntax_path: ;имя подключаемого файла синтаксиса
1705 IgorA 624
		rb 4096
625
	plugin_path:
626
		rb 4096
4308 IgorA 627
	text_work_area: ;путь к файлу, который показывается в окне
628
		rb 4096
629
	filename_area: ;имя файла для диалога открытия/закрытия
1705 IgorA 630
		rb 256
631
	file_info:
632
		rb 40
1338 IgorA 633
mem: