Subversion Repositories Kolibri OS

Rev

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