Subversion Repositories Kolibri OS

Rev

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