Subversion Repositories Kolibri OS

Rev

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