Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
1706 IgorA 1
use32
2
	org 0x0
3
	db 'MENUET01'
4
	dd 0x1
5
	dd start
6
	dd i_end
7
	dd mem
8
	dd stacktop
9
	dd buf_cmd_lin
10
	dd sys_path
11
 
12
include '../../macros.inc'
13
include '../../proc32.inc'
14
include '../../develop/libraries/box_lib/load_lib.mac'
15
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
3014 dunkaist 16
include '../../dll.inc'
3475 IgorA 17
include '../../system/desktop/trunk/kglobals.inc'
18
include '../../system/desktop/trunk/unpacker.inc'
1706 IgorA 19
include 'strlen.inc'
1714 IgorA 20
include 'obj_codes.inc'
1706 IgorA 21
 
22
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
23
 
5917 IgorA 24
hed db 'kol_f_edit 16.11.15',0
1706 IgorA 25
 
26
sizeof.TreeList equ 20 ;need for element 'tree_list'
27
 
28
BUF_STRUCT_SIZE equ 21
29
buf2d_data equ dword[edi] ;данные буфера изображения
30
buf2d_w equ dword[edi+8] ;ширина буфера
31
buf2d_h equ dword[edi+12] ;высота буфера
32
buf2d_l equ word[edi+4] ;отступ слева
33
buf2d_t equ word[edi+6] ;отступ сверху
34
buf2d_size_lt equ dword[edi+4] ;отступ слева и справа для буфера
35
buf2d_color equ dword[edi+16] ;цвет фона буфера
36
buf2d_bits equ byte[edi+20] ;количество бит в 1-й точке изображения
37
 
1714 IgorA 38
 
1706 IgorA 39
MAX_CED_OBJECTS equ 200
40
MAX_OPT_FIELDS equ 11
1727 IgorA 41
MAX_OBJ_TYPES equ 17 ;максимальное число объектов
1714 IgorA 42
MAX_OBJ_CAPTIONS equ 1000 ;размер дополнительных подписей подписей
1706 IgorA 43
WND_CAPT_COLOR equ 0xb0d0ff
44
BUF_SIZE equ 1000
45
 
46
;modif
1720 IgorA 47
BIT_MOD_ACI equ 0 ;первоначальные настройки элементов
1717 IgorA 48
BIT_MOD_ACM equ 1 ;события от мыши
49
BIT_MOD_ACD equ 2 ;данные объектов
50
BIT_MOD_ABU equ 3 ;связывание кнопок
1904 IgorA 51
BIT_MOD_WI_CAPT equ 0 ;стиль окна подпись
52
BIT_MOD_WI_CORD_OTN_CL_OBL equ 1 ;стиль окна координаты относительно клиентской области
53
BIT_MOD_WI_REDR equ 2 ;стиль окна перерисовка окна
54
BIT_MOD_WI_GRAD equ 3 ;стиль окна градиент
1720 IgorA 55
BIT_MOD_CHE equ 0 ; ch_flag_en - выбран CheckBox
56
BIT_MOD_CHE_T equ 1 ;сверху
57
BIT_MOD_CHE_M equ 2 ;по центру
58
BIT_MOD_CHE_B equ 3 ;снизу
59
BIT_MOD_TXT_ASCII_0 equ 0 ;текст заканчив. 0
60
BIT_MOD_TXT_NO_TRAN equ 1 ;текст прозрачный
61
BIT_MOD_TXT_CHAR2 equ 2 ;текст 2-м шрифтом
1727 IgorA 62
BIT_MOD_EDIT_FOC equ 0 ;EditBox в фокусе
63
BIT_MOD_EDIT_FIO equ 1 ;
1720 IgorA 64
;CPP_MOD_RE_GR equ 1 ;градиентный прямоугольник
65
BIT_MOD_BUT_NFON equ 0 ;стиль Button не рисовать кнопку
66
BIT_MOD_BUT_NBORD equ 1 ;стиль Button не рисовать границу
67
BIT_MOD_IMPORT_FUNCT_COMMENT equ 0 ;коментировать функцию
1706 IgorA 68
 
3465 IgorA 69
macro load_image_file path,buf,size { ;макрос для загрузки изображений
70
	;path - может быть переменной или строковым параметром
71
	if path eqtype '' ;проверяем задан ли строкой параметр path
72
		jmp @f
73
			local .path_str
74
			.path_str db path ;формируем локальную переменную
75
			db 0
76
		@@:
77
		;32 - стандартный адрес по которому должен быть буфер с системным путем
5917 IgorA 78
		copy_path .path_str,[32],file_name,0
3465 IgorA 79
	else
5917 IgorA 80
		copy_path path,[32],file_name,0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой
3465 IgorA 81
	end if
1706 IgorA 82
 
83
	stdcall mem.Alloc, dword size ;выделяем память для изображения
84
	mov [buf],eax
85
 
86
	mov [run_file_70.Function], 0
87
	mov [run_file_70.Position], 0
88
	mov [run_file_70.Flags], 0
89
	mov [run_file_70.Count], dword size
5917 IgorA 90
	m2m [run_file_70.Buffer], eax
1706 IgorA 91
	mov byte[run_file_70+20], 0
3465 IgorA 92
	mov [run_file_70.FileName], file_name
5917 IgorA 93
	mcall 70,run_file_70 ;загружаем файл изображения
1706 IgorA 94
	cmp ebx,0xffffffff
95
	je @f
96
		;определяем вид изображения и переводим его во временный буфер image_data
97
		stdcall dword[img_decode], dword[buf],ebx,0
98
		mov dword[image_data],eax
99
		;преобразуем изображение к формату rgb
100
		stdcall dword[img_to_rgb2], dword[image_data],dword[buf]
101
		;удаляем временный буфер image_data
102
		stdcall dword[img_destroy], dword[image_data]
103
	@@:
104
}
105
 
106
struct FileInfoBlock
107
	Function dd ?
108
	Position dd ?
109
	Flags	 dd ?
110
	Count	 dd ?
111
	Buffer	 dd ?
112
	rezerv	 db ?
113
	FileName dd ?
114
ends
115
 
116
struct object
1717 IgorA 117
	id dd ? ;идентификатор объекта
118
	txt rb MAX_LEN_OBJ_TXT ;текстовые свойства
119
	lvl db 0
120
	clo db 0
121
	typid dd ? ;номер объекта определяющего тип переменной
122
	modif dd ? ;битовые свойства
1706 IgorA 123
ends
124
 
125
struct ObjOpt
1717 IgorA 126
	dd ?
1706 IgorA 127
	bl_type db ?
128
	graph db ?
129
	info rb 30
1717 IgorA 130
	caption rb MAX_OPT_CAPTION
1706 IgorA 131
	Col rw MAX_OPT_FIELDS
132
	img rw MAX_OPT_FIELDS ;индексы картинок (в файле 'icon.bmp')
1727 IgorA 133
	bit_prop dd 0 ;битовые свойства (подписи, названия)
134
	bit_val dd 0 ;битовые свойства (значения, константы)
1706 IgorA 135
ends
136
 
137
SKIN_H equ 22
138
SKIN_W1 equ 5
139
SKIN_W2 equ 7
140
SKIN_W3 equ 23
141
fn_skin_1 db 'left.bmp',0
142
fn_skin_2 db 'base.bmp',0
143
fn_skin_3 db 'oper.bmp',0
144
IMAGE_FILE_SKIN1_SIZE equ 3*(SKIN_W1+3)*SKIN_H+54
145
IMAGE_FILE_SKIN2_SIZE equ 3*(SKIN_W2+3)*SKIN_H+54
146
IMAGE_FILE_SKIN3_SIZE equ 3*(SKIN_W3+3)*SKIN_H+54
147
 
148
IMAGE_FILE_FONT1_SIZE equ 96*144*3 ;размер файла с 1-м системным шрифтом
149
 
150
fn_icon db 'icon.bmp',0
1711 IgorA 151
count_main_icons equ 35 ;число иконок в файле icon.bmp
1706 IgorA 152
bmp_icon rb 0x300*count_main_icons
153
 
154
TREE_ICON_SYS16_BMP_SIZE equ 256*3*11+54 ;размер bmp файла с системными иконками
155
icon_tl_sys dd 0 ;указатеель на память для хранения системных иконок
156
icon_font_s1 dd 0 ;указатель на временную память для загрузки шрифта
157
 
158
fn_syntax db 'asm.syn',0 ;имя загружаемого файла синтаксиса
159
 
1717 IgorA 160
;макрос для проверки битового свойства
161
macro test_bool_prop obj_reg,n_prop
162
{
163
	bt dword[obj_reg+u_object.modif-u_object],n_prop
164
}
165
 
1706 IgorA 166
include 'ced_wnd_m.inc'
1714 IgorA 167
include 'ced_wnd_prop.inc' ;файл с функциями окна свойств объекта
1706 IgorA 168
include 'ced_constr.inc' ;файл с функциями окна конструктора
169
include 'ced_code_g.inc' ;файл с функциями генерирования кодов
170
 
171
align 4
172
start:
173
	load_libraries l_libs_start,load_lib_end
174
 
175
	;проверка на сколько удачно загузилась наша либа
176
	mov	ebp,lib0
177
	cmp	dword [ebp+ll_struc_size-4],0
178
	jz	@f
179
		mcall -1 ;exit not correct
180
	@@:
181
	mov	ebp,lib1
182
	cmp	dword [ebp+ll_struc_size-4],0
183
	jz	@f
184
		mcall -1 ;exit not correct
185
	@@:
186
	mov	ebp,lib2
187
	cmp	dword [ebp+ll_struc_size-4],0
188
	jz	@f
189
		mcall -1 ;exit not correct
190
	@@:
191
	mov	ebp,lib3
192
	cmp	dword [ebp+ll_struc_size-4],0
193
	jz	@f
194
		mcall -1 ;exit not correct
195
	@@:
196
 
1714 IgorA 197
	;задание размеров полей со свойствами
198
	mov eax,prop_edits_top
199
	mov ebx,16+6 ;ширина иконки + отступы
1706 IgorA 200
	mov edi,edit2
201
	@@:
1711 IgorA 202
		mov ed_top,eax ;отступ сверху
203
		mov ed_left,ebx ;отступ слева
1706 IgorA 204
		add edi,ed_struc_size
1714 IgorA 205
		add eax,prop_edits_height
1706 IgorA 206
		cmp edi,prop_wnd_edits_end
207
		jl @b
208
 
209
	stdcall [buf2d_create], buf_fon
210
 
211
	mcall 48,3,sc,sizeof.system_colors
212
	mcall 40,0x27
213
 
214
	stdcall dword[tl_data_init], tree1
215
	stdcall dword[tl_data_init], tree2
216
 
5917 IgorA 217
	copy_path fn_icon,sys_path,file_name,0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой
1706 IgorA 218
	mov [run_file_70.Function], 0
219
	mov [run_file_70.Position], 54
220
	mov [run_file_70.Flags], 0
221
	mov [run_file_70.Count], 0x300*count_main_icons
222
	mov [run_file_70.Buffer], bmp_icon
223
	mov [run_file_70.rezerv], 0
3465 IgorA 224
	mov [run_file_70.FileName], file_name
5917 IgorA 225
	mcall 70,run_file_70
1706 IgorA 226
 
227
	cmp ebx,-1
228
	mov [err_ini0],1
229
	je @f ;if open file
230
		mov [err_ini0],0
231
		mov dword[tree1.data_img],bmp_icon
232
		mov dword[tree2.data_img],bmp_icon
233
	@@:
234
 
235
	;системные иконки 16*16 для tree_list
3465 IgorA 236
	load_image_file 'tl_sys_16.png', icon_tl_sys,TREE_ICON_SYS16_BMP_SIZE
1706 IgorA 237
	;если изображение не открылось, то в icon_tl_sys будут
238
	;не инициализированные данные, но ошибки не будет, т. к. буфер нужного размера
1714 IgorA 239
	mov eax,dword[icon_tl_sys]
240
	mov dword[tree1.data_img_sys],eax
241
	mov dword[tree2.data_img_sys],eax
1706 IgorA 242
 
243
	;1-й файл скина
244
	load_image_file fn_skin_1, icon_font_s1,IMAGE_FILE_SKIN1_SIZE
245
	stdcall [buf2d_create_f_img], buf_skin1,[icon_font_s1] ;создаем буфер
246
	stdcall mem.Free,[icon_font_s1] ;освобождаем память
247
	;2-й файл скина
248
	load_image_file fn_skin_2, icon_font_s1,IMAGE_FILE_SKIN2_SIZE
249
	stdcall [buf2d_create_f_img], buf_skin2,[icon_font_s1] ;создаем буфер
250
	stdcall mem.Free,[icon_font_s1] ;освобождаем память
251
	;3-й файл скина
252
	load_image_file fn_skin_3, icon_font_s1,IMAGE_FILE_SKIN3_SIZE
253
	stdcall [buf2d_create_f_img], buf_skin3,[icon_font_s1] ;создаем буфер
254
	stdcall mem.Free,[icon_font_s1] ;освобождаем память
255
 
256
	;символы 1-го системного шрифта
3465 IgorA 257
	load_image_file 'font6x9.bmp', icon_font_s1,IMAGE_FILE_FONT1_SIZE
1706 IgorA 258
	stdcall [buf2d_create_f_img], buf_font,[icon_font_s1] ;создаем буфер
259
	stdcall mem.Free,[icon_font_s1] ;освобождаем память
260
	stdcall [buf2d_conv_24_to_8], buf_font,1 ;делаем буфер прозрачности 8 бит
261
	stdcall [buf2d_convert_text_matrix], buf_font
262
 
263
 
5917 IgorA 264
	copy_path fn_obj_opt,sys_path,fp_obj_opt,0
1706 IgorA 265
	;load options file
266
	mov [run_file_70.Position], 0
1714 IgorA 267
	mov [run_file_70.Count], sizeof.ObjOpt*MAX_OBJ_TYPES+MAX_OBJ_CAPTIONS
1706 IgorA 268
	mov [run_file_70.Buffer], obj_opt
269
	mov [run_file_70.FileName], fp_obj_opt
5917 IgorA 270
	mcall 70,run_file_70
1706 IgorA 271
 
272
	cmp ebx,-1
273
	mov [err_ini1],1
274
	je .open_end ;jmp if not open file
275
		mov [err_ini1],0
276
 
277
		mov eax,obj_opt ;добавляем объекты
278
		@@:
1717 IgorA 279
			mov ebx,dword[eax]
280
			cmp ebx,0
1706 IgorA 281
			je @f
282
			;xor ecx,ecx ;в ecx будет индекс иконки
1714 IgorA 283
			mov cx,word[eax+obj_opt.img-obj_opt]
1706 IgorA 284
			cmp cx,0
285
			jge .zero
286
				xor cx,cx ;что-бы не глючило с отрицательным индексом
287
			.zero:
288
			shl ecx,16
5917 IgorA 289
			stdcall dword[tl_node_add], tree1,ecx,eax ;добавляем название объекта
1706 IgorA 290
			stdcall dword[tl_cur_next], tree1 ;переносим курсор вниз, что-бы не поменялся порядок
291
			add eax,sizeof.ObjOpt ;переход на следующий объект
292
			jmp @b
293
		@@:
294
		stdcall dword[tl_cur_beg], tree1 ;переносим курсор вверх
295
 
296
	.open_end:
297
 
5917 IgorA 298
	stdcall [OpenDialog_Init],OpenDialog_data ;подготовка диалога
1706 IgorA 299
	stdcall [ted_init], tedit0
5917 IgorA 300
	copy_path fn_syntax,sys_path,file_name,0
1706 IgorA 301
 
3465 IgorA 302
	; *** init syntax file ***
303
	; проверяем размер файла синтаксиса
304
	mov [run_file_70.Function], 5
305
	mov [run_file_70.Position], 0
306
	mov [run_file_70.Flags], 0
307
	mov dword[run_file_70.Count], 0
308
	mov dword[run_file_70.Buffer], open_b
309
	mov byte[run_file_70+20], 0
310
	mov dword[run_file_70.FileName], file_name
5917 IgorA 311
	mcall 70,run_file_70
3465 IgorA 312
	cmp eax,0
313
	jne @f
314
 
315
	mov edi,tedit0
316
	mov ecx,dword[open_b+32] ;+32 qword: размер файла в байтах
317
	mov ted_syntax_file_size,ecx
318
 
319
	stdcall mem.Alloc,ecx ;выделяем память для файла синтаксиса
320
	mov ted_syntax_file,eax
321
 
322
	;пробуем открыть файл синтаксиса
3475 IgorA 323
	call open_unpac_synt_file
324
	jmp .end_0
3465 IgorA 325
	@@:
326
		notify_window_run txt_not_syntax_file
327
	.end_0:
328
 
1706 IgorA 329
	;get cmd line
330
	cmp [buf_cmd_lin],0
331
	je @f ;if file names exist
332
		mov esi,buf_cmd_lin
333
		call strlen ;eax=strlen
334
		mov edi,[edit1.text]
335
		mov [edit1.size],eax
336
		mov ecx,eax
337
		rep movsb
338
		call but_open_proj
339
	@@:
340
 
341
 
342
 
343
align 4
344
red_win:
345
	call draw_window
346
 
347
align 4
348
still:
349
	mcall 10
350
 
351
	cmp al,1
352
	jne @f
353
		call draw_window
354
	@@:
355
	cmp al,2
356
	jz key
357
	cmp al,3
358
	jz button
359
	cmp al,6
360
	jne @f
361
		call mouse
362
	@@:
363
 
364
	jmp still
365
 
366
align 4
367
draw_window:
368
pushad
369
	mcall 12,1
370
 
371
	xor eax,eax
372
	mov ebx,20*65536+670
373
	mov ecx,20*65536+370
374
	mov edx,[sc.work]
375
	or  edx,0x33000000
376
	mov edi,hed
377
	int 0x40
378
 
379
	mov eax,8 ;button 'Open Project'
380
	mov esi,0x80ff
381
	mov ebx,230*65536+18
382
	mov ecx,5*65536+18
383
	mov edx,5
384
	int 0x40
385
	stdcall draw_icon, 22,231,6 ;22 - open
386
 
387
	;button 'Save Project'
388
	mov ebx,250*65536+18
389
	mov ecx,5*65536+18
390
	mov edx,6
391
	int 0x40
392
	stdcall draw_icon, 17,251,6 ;17 - save
393
 
394
	;button 'Show Constructor'
395
	mov ebx,310*65536+18
396
	mov ecx,5*65536+18
397
	mov edx,11
398
	int 0x40
399
	stdcall draw_icon, 12,311,6 ;12 - window
400
 
401
	;button 'Show Code'
402
	mov ebx,330*65536+18
403
	mov edx,12
404
	int 0x40
405
	stdcall draw_icon, 11,331,6 ;11 - text
406
 
1711 IgorA 407
	;button 'Update: Code, Constructor'
1706 IgorA 408
	mov ebx,350*65536+18
409
	mov edx,13
410
	int 0x40
411
	stdcall draw_icon, 32,351,6 ;32 - update
412
 
413
	;button 'Save Code'
414
	mov ebx,370*65536+18
415
	mov edx,14
416
	int 0x40
417
	stdcall draw_icon, 17,371,6 ;17 - save
418
 
419
	;button ']P'
420
	mov ebx,390*65536+18
421
	mov edx,15
422
	int 0x40
423
	stdcall draw_icon, 18,391,6 ;18 - знак конца абзаца
424
 
425
	;button 'Show color text'
426
	mov ebx,410*65536+18
427
	mov edx,16
428
	int 0x40
429
	stdcall draw_icon, 19,411,6
430
 
1711 IgorA 431
	;button 'Add Object'
432
	mov ebx,125*65536+18
433
	mov ecx,30*65536+18
434
	mov edx,31
435
	int 0x40
436
	stdcall draw_icon, 14,126,31 ;14 - add object
437
 
1706 IgorA 438
	;button 'Move Up'
1711 IgorA 439
	mov ebx,155*65536+18
1706 IgorA 440
	mov edx,21
441
	int 0x40
1711 IgorA 442
	stdcall draw_icon, 23,156,31 ;23 - move up
1706 IgorA 443
 
444
	;button 'Move Down'
1711 IgorA 445
	mov ebx,175*65536+18
1706 IgorA 446
	mov edx,22
447
	int 0x40
1711 IgorA 448
	stdcall draw_icon, 24,176,31 ;24 - move down
1706 IgorA 449
 
450
	;button 'Copy'
1711 IgorA 451
	mov ebx,195*65536+18
1706 IgorA 452
	mov edx,23
453
	int 0x40
1711 IgorA 454
	stdcall draw_icon, 30,196,31 ;30 - copy
1706 IgorA 455
 
456
	;button 'Paste'
1711 IgorA 457
	mov ebx,215*65536+18
1706 IgorA 458
	mov edx,24
459
	int 0x40
1711 IgorA 460
	stdcall draw_icon, 31,216,31 ;31 - paste
1706 IgorA 461
 
462
	;button 'Property'
1711 IgorA 463
	mov ebx,235*65536+18
1706 IgorA 464
	mov edx,25
465
	int 0x40
1711 IgorA 466
	stdcall draw_icon, 7,236,31 ;7 - property
1706 IgorA 467
 
1711 IgorA 468
	;button 'Undo'
469
	mov ebx,255*65536+18
470
	mov edx,26
471
	int 0x40
472
	stdcall draw_icon, 33,256,31 ;33 - undo
473
 
474
	;button 'Redo'
475
	mov ebx,275*65536+18
476
	mov edx,27
477
	int 0x40
478
	stdcall draw_icon, 34,276,31 ;34 - redo
479
 
1706 IgorA 480
; 10 30 50 70 90
481
 
482
	cmp [err_opn],1
483
	jne @f
5917 IgorA 484
		mcall 4,10*65536+35,0x80ff0000,txtErrOpen
1706 IgorA 485
	@@:
486
 
487
	stdcall [edit_box_draw], dword edit1
488
	stdcall [edit_box_draw], dword edit_sav
1714 IgorA 489
 
490
	mov dword[w_scr_t1.all_redraw],1
491
	;stdcall [scrollbar_ver_draw],dword w_scr_t1
1706 IgorA 492
	stdcall [tl_draw],dword tree1
1714 IgorA 493
	mov dword[w_scr_t2.all_redraw],1
494
	;stdcall [scrollbar_ver_draw],dword w_scr_t2
1706 IgorA 495
	stdcall [tl_draw],dword tree2
496
 
497
	cmp byte[show_mode],0 ;условие видимости окна конструктора
498
	jne @f
499
		stdcall [buf2d_draw], buf_fon
500
	@@:
501
	cmp byte[show_mode],1 ;условие видимости текстового окна
502
	jne @f
503
		stdcall [ted_draw], tedit0
504
	@@:
505
	mcall 12,2
506
popad
507
	ret
508
 
509
align 4
510
mouse:
511
	stdcall [edit_box_mouse], dword edit1
512
	stdcall [edit_box_mouse], dword edit_sav
513
	stdcall [tl_mouse], dword tree1
514
	stdcall [tl_mouse], dword tree2
515
	cmp byte[show_mode],1 ;условие видимости текстового окна
516
	jne @f
517
		stdcall [ted_mouse], tedit0
518
	@@:
519
	ret
520
 
521
 
522
align 4
523
key:
524
	mcall 2
525
	stdcall [edit_box_key], dword edit1
526
	stdcall [edit_box_key], dword edit_sav
527
	stdcall [tl_key], dword tree1
528
	stdcall [tl_key], dword tree2
529
 
530
	jmp still
531
 
532
align 4
533
button:
534
	mcall 17
535
	cmp ah,5
536
	jne @f
537
		call but_open_proj
5917 IgorA 538
		jmp still
1706 IgorA 539
	@@:
540
	cmp ah,6
541
	jne @f
542
		call but_save_proj
5917 IgorA 543
		jmp still
1706 IgorA 544
	@@:
1714 IgorA 545
	;cmp ah,10
546
	;jne @f
547
		;call but_element_change
548
	;@@:
1706 IgorA 549
	cmp ah,11
550
	jne @f
551
		call but_show_constructor
5917 IgorA 552
		jmp still
1706 IgorA 553
	@@:
554
	cmp ah,12
555
	jne @f
556
		call but_show_code
5917 IgorA 557
		jmp still
1706 IgorA 558
	@@:
559
	cmp ah,13
560
	jne @f
1711 IgorA 561
		call but_update
5917 IgorA 562
		jmp still
1706 IgorA 563
	@@:
564
	cmp ah,14
565
	jne @f
566
		call but_save_asm
5917 IgorA 567
		jmp still
1706 IgorA 568
	@@:
569
	cmp ah,15
570
	jne @f
571
		call but_show_invis
5917 IgorA 572
		jmp still
1706 IgorA 573
	@@:
574
	cmp ah,16
575
	jne @f
576
		call but_show_syntax
5917 IgorA 577
		jmp still
1706 IgorA 578
	@@:
579
	cmp ah,21
580
	jne @f
581
		call but_obj_move_up
5917 IgorA 582
		jmp still
1706 IgorA 583
	@@:
584
	cmp ah,22
585
	jne @f
586
		call but_obj_move_down
5917 IgorA 587
		jmp still
1706 IgorA 588
	@@:
589
	cmp ah,23
590
	jne @f
591
		call but_obj_copy
5917 IgorA 592
		jmp still
1706 IgorA 593
	@@:
594
	cmp ah,24
595
	jne @f
596
		call but_obj_paste
5917 IgorA 597
		jmp still
1706 IgorA 598
	@@:
599
	cmp ah,25
600
	jne @f
601
		call on_file_object_select
5917 IgorA 602
		jmp still
1706 IgorA 603
	@@:
1711 IgorA 604
	cmp ah,26
605
	jne @f
606
		stdcall [tl_info_undo], tree2
607
		stdcall [tl_draw], tree2
5917 IgorA 608
		jmp still
1711 IgorA 609
	@@:
610
	cmp ah,27
611
	jne @f
612
		stdcall [tl_info_redo], tree2
613
		stdcall [tl_draw], tree2
5917 IgorA 614
		jmp still
1711 IgorA 615
	@@:
616
	cmp ah,31
617
	jne @f
618
		call on_add_object
5917 IgorA 619
		jmp still
1711 IgorA 620
	@@:
1706 IgorA 621
	cmp ah,1
622
	jne still
623
.exit:
624
	stdcall mem.Free,[icon_tl_sys]
625
	mov dword[tree1.data_img],0
626
	mov dword[tree2.data_img],0
627
	mov dword[tree1.data_img_sys],0
628
	mov dword[tree2.data_img_sys],0
629
	stdcall dword[tl_data_clear], tree1
630
	stdcall dword[tl_data_clear], tree2
631
	stdcall [buf2d_delete],buf_fon ;удаляем буфер
632
	stdcall [buf2d_delete],buf_font ;удаляем буфер
633
	stdcall [buf2d_delete],buf_skin1
634
	stdcall [buf2d_delete],buf_skin2
635
	stdcall [buf2d_delete],buf_skin3
636
	stdcall [ted_delete], tedit0
3475 IgorA 637
	cmp dword[unpac_mem],0
638
	je @f
639
		stdcall mem.Free,[unpac_mem]
640
	@@:
1706 IgorA 641
	mcall -1
642
 
643
align 4
5917 IgorA 644
open_file_data dd 0 ;указатель на память для открытия файлов
645
open_file_size dd 0 ;размер открытого файла
646
 
647
align 4
1706 IgorA 648
but_open_proj:
5917 IgorA 649
	copy_path open_dialog_name,communication_area_default_path,file_name,0
1706 IgorA 650
	pushad
5917 IgorA 651
	mov [OpenDialog_data.type],0
652
	stdcall [OpenDialog_Start],OpenDialog_data
653
	cmp [OpenDialog_data.status],2
654
	je .open_end
655
	;код при удачном открытии диалога
656
 
657
	mov [run_file_70.Function], 5
658
	mov [run_file_70.Position], 0
659
	mov [run_file_70.Flags], 0
660
	mov dword[run_file_70.Count], 0
661
	mov dword[run_file_70.Buffer], open_b
662
	mov byte[run_file_70+20], 0
663
	mov dword[run_file_70.FileName], openfile_path
664
	mcall 70,run_file_70
665
 
666
	mov ecx,dword[open_b+32] ;+32 qword: размер файла в байтах
667
	mov [open_file_size],ecx
668
	stdcall mem.ReAlloc,[open_file_data],ecx
669
	mov [open_file_data],eax
670
 
1706 IgorA 671
	mov [run_file_70.Function], 0
672
	mov [run_file_70.Position], 0
673
	mov [run_file_70.Flags], 0
5917 IgorA 674
	mov dword[run_file_70.Count], ecx
675
	m2m dword[run_file_70.Buffer], eax
676
	mov byte[run_file_70+20], 0
677
	mov dword[run_file_70.FileName], openfile_path
678
	mcall 70,run_file_70 ;загружаем файл
679
	cmp ebx,0xffffffff
1706 IgorA 680
	mov [err_opn],1
681
	je .open_end ;if open file
682
		mov [err_opn],0
5917 IgorA 683
		stdcall [edit_box_set_text], edit1,openfile_path
1706 IgorA 684
 
685
		stdcall dword[tl_info_clear], tree2
5917 IgorA 686
		mov eax,[open_file_data] ;добавляем объекты
1706 IgorA 687
		@@:
1717 IgorA 688
			mov ebx,dword[eax]
689
			cmp ebx,0
1706 IgorA 690
			je @f
691
 
692
			call find_obj_in_opt ;edi = pointer to ObjOpt struct
693
 
1714 IgorA 694
			mov cx,word[edi+obj_opt.img-obj_opt]
1706 IgorA 695
			cmp cx,0
696
			jge .zero
697
				xor cx,cx ;что-бы не глючило с отрицательным индексом
698
			.zero:
699
			shl ecx,16 ;в ecx индекс иконки
5917 IgorA 700
			mov cl,byte[eax+u_object.lvl-u_object] ;уровень объекта
1711 IgorA 701
 
702
			;tl_node_close_open - не подходит, т.к. действует на узлы имеющие дочерние
5917 IgorA 703
			mov ch,byte[eax+u_object.clo-u_object] ;закрытый/открытый
1711 IgorA 704
 
5917 IgorA 705
			stdcall dword[tl_node_add], tree2,ecx,eax ;добавляем объект
1711 IgorA 706
 
1706 IgorA 707
			stdcall dword[tl_cur_next], tree2 ;переносим курсор вниз, что-бы не поменялся порядок
708
			add eax,sizeof.object ;переход на следующий объект
709
			jmp @b
710
		@@:
711
		stdcall dword[tl_cur_beg], tree2 ;переносим курсор вверх
712
 
713
		mov [foc_obj],0
714
		call draw_constructor
715
		call code_gen
716
	.open_end:
717
	call draw_window ;перерисовка окна идет в любом случае, даже если файл не открылся
718
	popad
719
	ret
720
 
721
;сохранение файла проэкта на диск
722
align 4
723
but_save_proj:
5917 IgorA 724
	copy_path open_dialog_name,communication_area_default_path,file_name,0
1706 IgorA 725
	pushad
5917 IgorA 726
	mov [OpenDialog_data.type],1
727
	stdcall [OpenDialog_Start],OpenDialog_data
728
	cmp [OpenDialog_data.status],2
729
	je .end_save_file
730
	;код при удачном открытии диалога
1706 IgorA 731
 
5917 IgorA 732
	;берем размер памяти, необходимой для сохранения файла
733
	xor ecx,ecx
734
	stdcall [tl_node_poi_get_info], tree2,0
735
	@@:
736
		cmp eax,0
737
		je @f
738
		inc ecx
739
		stdcall [tl_node_poi_get_next_info], tree2,eax ;переходим к следущему узлу
740
		jmp @b
741
	@@:
742
	;movzx eax,word[tree2.info_size]
743
	imul ecx,sizeof.object ;eax
744
	add ecx,4 ;метка конца файла
745
	mov [open_file_size],ecx
746
	stdcall mem.ReAlloc,[open_file_data],ecx
747
	mov [open_file_data],eax
1706 IgorA 748
 
5917 IgorA 749
	mov edi,[open_file_data]
750
	stdcall [tl_node_poi_get_info], tree2,0
751
	mov edx,eax
1706 IgorA 752
	@@:
753
		cmp edx,0
754
		je @f
5917 IgorA 755
		stdcall [tl_node_poi_get_data], tree2,edx
756
		mov esi,eax ;получаем данные узла
1706 IgorA 757
 
758
		mov bl,byte[edx+2] ;bl - уровень объекта
1717 IgorA 759
		mov byte[esi+u_object.lvl-u_object],bl
1711 IgorA 760
		mov bl,byte[edx+3] ;bl - открытие/закрытие объекта
1717 IgorA 761
		mov byte[esi+u_object.clo-u_object],bl
1706 IgorA 762
 
763
		;вычисляем новый индекс для типа объекта
1717 IgorA 764
		mov ebx,[esi+u_object.typid-u_object] ;ebx - тип объекта
1706 IgorA 765
		;сохраняем тип объекта
766
		push ebx
767
			imul ebx,sizeof.TreeList
768
			add ebx,[tree2.data_nodes] ;ebx - указатель объект указывающий тип
769
			stdcall get_obj_npp,ebx
1717 IgorA 770
			mov [esi+u_object.typid-u_object],eax
1706 IgorA 771
			mov eax,esi
772
			;копируем объект в память для сохранения
5917 IgorA 773
			movzx ecx,word[tree2.info_size]
1706 IgorA 774
			cld
775
			rep movsb
776
		;восстанавливаем тип объекта
1717 IgorA 777
		pop dword[eax+u_object.typid-u_object]
1706 IgorA 778
 
5917 IgorA 779
		stdcall [tl_node_poi_get_next_info], tree2,edx
780
		mov edx,eax ;переходим к следущему узлу
1706 IgorA 781
		jmp @b
782
	@@:
1717 IgorA 783
	mov dword[edi],0 ;метка конца файла
784
	add edi,4
1706 IgorA 785
 
5917 IgorA 786
	stdcall [edit_box_set_text], edit1,openfile_path
787
	mov ecx,[open_file_size] ;ecx - размер сохраняемого файла
1706 IgorA 788
	mov [run_file_70.Function], 2
789
	mov [run_file_70.Position], 0
790
	mov [run_file_70.Flags], 0
791
	mov [run_file_70.Count], ecx
5917 IgorA 792
	m2m [run_file_70.Buffer], [open_file_data]
1706 IgorA 793
	mov [run_file_70.rezerv], 0
5917 IgorA 794
	mov dword[run_file_70.FileName], openfile_path
795
	mcall 70,run_file_70
1706 IgorA 796
 
5917 IgorA 797
	.end_save_file:
1706 IgorA 798
	popad
799
	ret
800
 
801
;берет номер по порядку по указателю на структуру объекта
1714 IgorA 802
;output:
803
; eax - номер объекта
1706 IgorA 804
align 4
5917 IgorA 805
proc get_obj_npp uses ebx ecx, p_obj_str:dword
806
	mov ecx,2
1706 IgorA 807
	mov ebx,[p_obj_str]
808
 
5917 IgorA 809
	stdcall [tl_node_poi_get_info], tree2,0
1706 IgorA 810
	@@:
5917 IgorA 811
		cmp eax,0
1727 IgorA 812
		je .no_exist
5917 IgorA 813
		cmp eax,ebx
1706 IgorA 814
		je @f
815
 
5917 IgorA 816
		inc ecx
817
		stdcall [tl_node_poi_get_next_info], tree2,eax ;переходим к следущему узлу
1706 IgorA 818
		jmp @b
1727 IgorA 819
	.no_exist: ;когда идет ссылка на не существующий объект
5917 IgorA 820
		xor ecx,ecx ;обнуляем указатель, что-бы не сохранять в файл мусор
1706 IgorA 821
	@@:
5917 IgorA 822
	mov eax,ecx
1706 IgorA 823
	ret
824
endp
825
 
826
;функция для сохранения созданного asm файла
827
align 4
828
but_save_asm:
829
	push edi
830
	mov edi, tedit0
831
 
5917 IgorA 832
	stdcall [ted_save_file],edi,run_file_70,[edit_sav.text]
1706 IgorA 833
	cmp ted_err_save,0
834
	jne @f
835
		stdcall [mb_create],msgbox_1,thread ;message: Файл был сохранен
836
	@@:
837
	pop edi
838
	ret
839
 
840
;функция для показа/скрытия невидимых символов
841
align 4
842
but_show_invis:
843
	push edi
844
	mov edi,tedit0
845
 
846
	xor ted_mode_invis,1
847
	cmp byte[show_mode],1 ;условие видимости текстового окна
848
	jne @f
849
		stdcall [ted_draw],edi
850
	@@:
851
	pop edi
852
	ret
853
 
854
;
855
align 4
856
but_show_syntax:
857
	push edi
858
	mov edi,tedit0
859
 
860
	xor ted_mode_color,1
861
	cmp byte[show_mode],1 ;условие видимости текстового окна
862
	jne @f
863
		stdcall [ted_draw],edi
864
	@@:
865
	pop edi
866
	ret
867
 
868
align 4
869
ted_save_err_msg:
870
	mov byte[msgbox_0.err],al
871
	stdcall [mb_create],msgbox_0,thread ;message: Can-t save text file!
872
	ret
873
 
874
;функция вызываемая при нажатии Enter в окне tree2
875
;обновляет текстовые поля значениями параметров взятых из объектов
876
;функция обратная к данной but_element_change
877
align 4
878
on_file_object_select:
1714 IgorA 879
	cmp byte[prop_wnd_run],0
880
	jne @f
881
		mov byte[prop_wnd_run],1
882
		stdcall [tl_node_get_data], tree2
5917 IgorA 883
		mov dword[foc_obj],eax
884
		cmp eax,0
1714 IgorA 885
		je @f
886
			pushad
887
			;все действия по настройке элементов управления выполняются в окне со свойствами
888
			mcall 51,1,prop_start,prop_thread
889
			popad
1706 IgorA 890
	@@:
1714 IgorA 891
	;call draw_window
1706 IgorA 892
	ret
893
 
1711 IgorA 894
;функция вызываемая при нажатии Enter в окне tree1
895
;добавляет новый объект в окно tree2
1706 IgorA 896
align 4
1711 IgorA 897
on_add_object:
898
push eax ebx ecx
899
	stdcall [tl_node_get_data], tree1
900
	cmp eax,0
901
	je @f
902
		xor ecx,ecx
903
		mov cx,word[eax+obj_opt.img-obj_opt] ;cx - индекс главной иконки добавляемого объекта
3475 IgorA 904
 
905
		cmp ecx,count_main_icons ;в старших битах ecx будут 0, потому отрицательные числа тоже проверяются
906
		jl .end_0
907
			;если иконки нет, по умолчанию берем 0-ю
908
			xor cx,cx
909
		.end_0:
910
 
1711 IgorA 911
		shl ecx,16
912
		stdcall mem_clear, u_object,sizeof.object
1717 IgorA 913
		mov ebx,dword[eax]
914
		mov dword[u_object.id],ebx
5917 IgorA 915
		stdcall dword[tl_node_add], tree2,ecx,u_object ;добавляем объект
1711 IgorA 916
	@@:
917
pop ecx ebx eax
918
	call draw_window
919
	ret
920
 
921
align 4
1706 IgorA 922
but_ctrl_o:
923
	ret
924
align 4
925
but_ctrl_n:
926
	ret
927
align 4
928
but_ctrl_s:
929
	ret
930
 
3475 IgorA 931
;открытие и распаковка файла подсветки синтаксиса
932
;input:
933
; ted_syntax_file - буфер для открываемого файла синтаксиса
934
; ted_syntax_file_size - размер открываемого файла синтаксиса
935
;output:
936
; ebx - число прочитанных байт из файла
1706 IgorA 937
align 4
3475 IgorA 938
open_unpac_synt_file:
939
push eax edi esi
940
	mov edi, tedit0
941
	mov [run_file_70.Function], 0
942
	mov [run_file_70.Position], 0
943
	mov [run_file_70.Flags], 0
944
	mov ecx, ted_syntax_file_size
945
	mov dword[run_file_70.Count], ecx
946
	m2m dword[run_file_70.Buffer], ted_syntax_file
947
	mov byte[run_file_70+20], 0
948
	mov [run_file_70.FileName], file_name
949
	mcall 70, run_file_70
950
	cmp ebx,-1
951
	jne .end_0
952
		;если возникли ошибки при открытии файла синтаксиса
953
		mov byte[txt_not_syntax_file.err],'0'
954
		add byte[txt_not_syntax_file.err],al
955
		notify_window_run txt_not_syntax_file ;Can-t open color options file!
956
		jmp @f
957
	.end_0:
958
 
959
		mov eax,ted_syntax_file
960
		cmp dword[eax],'KPCK'
961
		jne .end_unpack
962
 
963
		mov ecx,dword[eax+4] ;ecx - размер файла синтаксиса после распаковки
964
		cmp dword[unpac_mem],0
965
		jne .end_1
966
			;первоначальное выделение временной памяти для распаковки файла
967
			stdcall mem.Alloc,ecx
968
			mov [unpac_mem],eax
969
			mov [unpac_mem_size],ecx
970
		.end_1:
971
		cmp dword[unpac_mem_size],ecx
972
		jge .end_2
973
			;если для распакованого файла не хватает временной памяти
974
			stdcall mem.ReAlloc,[unpac_mem],ecx ;заново выделяем временную память
975
			mov [unpac_mem],eax
976
			mov [unpac_mem_size],ecx
977
		.end_2:
978
 
979
		;распаковка файла во временную память
980
		stdcall unpack,ted_syntax_file,[unpac_mem]
981
 
982
		cmp ted_syntax_file_size,ecx
983
		jge .end_3
984
			;если для распакованого файла не хватает памяти
985
			stdcall mem.ReAlloc,ted_syntax_file,ecx ;заново выделяем память
986
			mov ted_syntax_file,eax
987
			mov ted_syntax_file_size,ecx
988
		.end_3:
989
 
990
		;копирование распакованного файла из временной памяти в память элемента
991
		mov edi,ted_syntax_file
992
		mov esi,[unpac_mem]
993
		cld
994
		rep movsb
995
 
996
		.end_unpack:
997
		;применение файла подсветки
998
		stdcall [ted_init_syntax_file], tedit0
999
	@@:
1000
pop esi edi eax
1001
	ret
1002
 
1003
align 4
1004
txt_not_syntax_file:
1005
	db 'Ошибка при открытии файла с цветовыми настройками! (Код ошибки ='
1006
	.err: db '?'
1007
	db ')',0
1008
 
1009
align 4
1706 IgorA 1010
buf_fon: ;фоновый буфер
1011
	dd 0 ;указатель на буфер изображения
1012
	dw 310 ;+4 left
1013
	dw 50 ;+6 top
1014
	dd 340 ;+8 w
1015
	dd 280 ;+12 h
1016
	dd 0xffffff ;+16 color
1017
	db 24 ;+20 bit in pixel
1018
 
1019
align 4
1020
buf_font: ;буфер матрицы со шрифтом
1021
	dd 0 ;указатель на буфер изображения
1022
	dw 25 ;+4 left
1023
	dw 25 ;+6 top
1024
	dd 96 ;+8 w
1025
	dd 144 ;+12 h
1026
	dd 0 ;+16 color
1027
	db 24 ;+20 bit in pixel
1028
 
1029
align 4
1030
buf_skin1:
1031
	dd 0 ;указатель на буфер изображения
1032
	dw 0 ;+4 left
1033
	dw 0 ;+6 top
1034
	dd SKIN_W1 ;+8 w
1035
	dd SKIN_H ;+12 h
1036
	dd 0 ;+16 color
1037
	db 24 ;+20 bit in pixel
1038
align 4
1039
buf_skin2:
1040
	dd 0 ;указатель на буфер изображения
1041
	dw 0 ;+4 left
1042
	dw 0 ;+6 top
1043
	dd SKIN_W2 ;+8 w
1044
	dd SKIN_H ;+12 h
1045
	dd 0 ;+16 color
1046
	db 24 ;+20 bit in pixel
1047
align 4
1048
buf_skin3:
1049
	dd 0 ;указатель на буфер изображения
1050
	dw 0 ;+4 left
1051
	dw 0 ;+6 top
1052
	dd SKIN_W3 ;+8 w
1053
	dd SKIN_H ;+12 h
1054
	dd 0 ;+16 color
1055
	db 24 ;+20 bit in pixel
1056
 
1057
show_mode db 0 ;режим для показа определенного окна
1058
txtErrOpen db 'Не найден файл, проверьте правильность имени',0
1059
txtErrIni1 db 'Не открылся файл с опциями',0
1714 IgorA 1060
err_opn db 0 ;рез. открытия файла проэкта
1061
err_ini0 db 0 ;рез. открытия файла с иконками
1062
err_ini1 db 0 ;рез. открытия файла с опциями
3475 IgorA 1063
unpac_mem dd 0
1064
unpac_mem_size dd 0
1706 IgorA 1065
 
1066
edit1 edit_box 210, 10, 5, 0xffffff, 0xff80, 0xff, 0xff0000, 0x4080, 300, ed_text1, mouse_dd, 0, 7, 7
1067
 
1068
edit2 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text2, mouse_dd, 0
1069
edit3 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text3, mouse_dd, 0
1070
edit4 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text4, mouse_dd, 0
1071
edit5 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text5, mouse_dd, 0
1072
edit6 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text6, mouse_dd, 0
1073
edit7 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text7, mouse_dd, 0
1074
edit8 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text8, mouse_dd, 0
1075
edit9 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text9, mouse_dd, 0
1711 IgorA 1076
edit10 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text10, mouse_dd, 0
1077
edit11 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text11, mouse_dd, 0
1078
edit12 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text12, mouse_dd, 0
1706 IgorA 1079
prop_wnd_edits_end: ;конец текстовых полей, отвечающих за свойства
1080
 
1081
edit_sav edit_box 210, 310, 30, 0xffffff, 0xff80, 0xff, 0xff0000, 0x4080, 300, ed_text_sav, mouse_dd, 0
1082
 
1083
 
1084
ed_text1 db '/hd0/1/',0
1085
	rb 295
1086
ed_text2 rb MAX_LEN_OBJ_TXT+2
1087
ed_text3 rb MAX_LEN_OBJ_TXT+2
1088
ed_text4 rb MAX_LEN_OBJ_TXT+2
1089
ed_text5 rb MAX_LEN_OBJ_TXT+2
1090
ed_text6 rb MAX_LEN_OBJ_TXT+2
1091
ed_text7 rb MAX_LEN_OBJ_TXT+2
1092
ed_text8 rb MAX_LEN_OBJ_TXT+2
1093
ed_text9 rb MAX_LEN_OBJ_TXT+2
1711 IgorA 1094
ed_text10 rb MAX_LEN_OBJ_TXT+2
1095
ed_text11 rb MAX_LEN_OBJ_TXT+2
1096
ed_text12 rb MAX_LEN_OBJ_TXT+2
1706 IgorA 1097
ed_text_sav rb 302
1098
 
1099
txt_null db 'null',0
1100
mouse_dd dd ?
1101
 
1102
el_focus dd tree1
1103
;дерево со списком возможных типов объектов
1104
tree1 tree_list sizeof.ObjOpt,20+2, tl_key_no_edit+tl_draw_par_line+tl_list_box_mode,\
1717 IgorA 1105
	16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,50,125,280, 0,obj_opt.info-obj_opt,0, el_focus,\
1706 IgorA 1106
	w_scr_t1,on_add_object
1107
;дерево с объектами в пользовательском файле
1108
tree2 tree_list sizeof.object,MAX_CED_OBJECTS+2, tl_draw_par_line,\
1717 IgorA 1109
	16,16, 0xffffff,0xb0d0ff,0xd000ff, 155,50,130,280, 13,u_object.txt-u_object,MAX_LEN_OBJ_TXT, el_focus,\
1706 IgorA 1110
	w_scr_t2,on_file_object_select
1111
 
1112
msgbox_0:
1113
  db 1,0
1114
  db 'Warning',0
1115
  db 'Error saving file!',13,\
1116
     'Maybe the file name is not entered correctly.',13,\
1117
     '  (error code ='
1118
  .err: db '?'
1119
  db ')',0
1120
  db 'Close',0
1121
  db 0
1122
 
1123
msgbox_1:
1124
	db 1,0
1125
	db ':)',0
1126
	db 'File was saved',0
1127
	db 'Ok',0
1128
	db 0
1129
 
1130
struct TexSelect
1131
	x0 dd ?
1132
	y0 dd ?
1133
	x1 dd ?
1134
	y1 dd ?
1135
ends
1136
;------------------------------------------------------------------------------
1137
align 4
1138
tedit0: ;структура текстового редактора
1139
	.wnd BOX 310,50,325,260 ;+ 0
1140
	.rec BOX 30,13,7,10   ;+16
1141
	.drag_m db 0 ;+32 выделение от мыши
1142
	.drag_k db 0 ;+33 выделение от клавиатуры
1143
	.sel  TexSelect 0,0,0,0 ;+34 структура выделения
1144
	.seln TexSelect ;+50 дополнительная структура выделения
1145
	.tex	  dd 0 ;+66 text memory pointer
1146
	.tex_1	  dd 0 ;+70 text first symbol pointer
1147
	.tex_end  dd 0 ;+74 text end memory pointer
1148
	.cur_x	  dd 0 ;+78 координата x курсора
1149
	.cur_y	  dd 0 ;+82 координата y курсора
1150
	.max_chars dd 25002 ;+86 максимальное число символов в одном документе
1151
	.count_colors_text dd 1 ;+90 колличество цветов текста
1152
	.count_key_words   dd 0 ;+94 колличество ключевых слов
1153
	.color_cursor	   dd 0xff0000 ;+98 цвет курсора
1154
	.color_wnd_capt    dd 0x0080c0 ;+102 цвет полей вокруг окна
1155
	.color_wnd_work    dd	   0x0 ;+106 цвет фона окна
1156
	.color_wnd_bord    dd 0xffffff ;+110 цвет текста на полях
1157
	.color_select	   dd 0x0000ff ;+114 цвет выделения
1158
	.color_cur_text    dd 0xffff00 ;+118 цвет символа под курсором
1159
	.color_wnd_text    dd 0x80ffff ;+122 цвет текста в окне
1160
	.syntax_file	   dd 0 ;+126 указатель на начало файла синтаксиса
1161
	.syntax_file_size  dd 55*1024 ;+130 максимальный размер файла синтаксиса
1162
	.text_colors	   dd 0 ;+134 указатель на массив цветов текста
1163
	.help_text_f1	   dd 0 ;+138 указатель на текст справки (по нажатии F1)
1164
	.help_id	   dd -1 ;+142 идентификатор для справки
1165
	.key_words_data    dd 0 ;+146 указатель на структуры ключевых слов TexColViv
1166
	.tim_ch      dd ? ;+150 количество изменений в файле
1167
	.tim_undo    dd ? ;+154 количество отмененных действий
1168
	.tim_ls      dd ? ;+158 время последнего сохранения
1169
	.tim_co      dd ? ;+162 время последней цветовой разметки
1170
	.el_focus    dd el_focus ;+166 указатель на переменную элемента в фокусе
1171
	.err_save    db 0 ;+170 ошибка сохранения файла
1172
	.panel_id    db 0 ;+171 номер открытой панели
1173
	.key_new     db 0 ;+172 символ, который будет добавлятся с клавиатуры
1174
	.symbol_new_line db 20 ;+173 символ завершения строки
1175
	.scr_w	     dd scrol_w1 ;+174 вертикальный скроллинг
1176
	.scr_h	     dd scrol_h1 ;+178 горизонтальный скроллинг
1177
	.arr_key_pos dd 0 ;+182 указатель на массив позиций ключевых слов
1178
	.buffer      dd text_buffer ;+186 указатель на буфер копирования/вставки
1179
	.buffer_find dd 0 ;+190 указатель на буфер для поиска
1180
	.cur_ins     db 1 ;+194 режим работы курсора (обычный или замена)
1181
	.mode_color  db 1 ;+195 режим выделения слов цветом (0-выкл. 1-вкл.)
1182
	.mode_invis  db 0 ;+196 режим показа непечатаемых символов
1183
	.gp_opt      db 0 ;+197 опции возвращаемые функцией ted_get_pos_by_cursor
1184
	.fun_on_key_ctrl_o dd but_ctrl_o ;+198 указатель на функцию вызываемую при нажатии Ctrl+O (открытие файла)
1185
	.fun_on_key_ctrl_f dd 0 ;+202 ... Ctrl+F (вызова/скрытия панели поиска)
1186
	.fun_on_key_ctrl_n dd but_ctrl_n ;+206 ... Ctrl+N (создание нового документа)
1187
	.fun_on_key_ctrl_s dd 0 ;+210 ... Ctrl+S
1188
	.buffer_size	   dd BUF_SIZE ;+214 размер буфера копирования/вставки
1189
	.fun_find_err	   dd 0 ;+218 указатель на функцию вызываемую если поиск закончился неудачно
1190
	.fun_init_synt_err dd 0 ;+222 указатель на функцию вызываемую при ошибочном открытии файла синтаксиса
1191
	.fun_draw_panel_buttons dd 0 ;+226 указатель на функцию рисования панели с кнопками
1192
	.fun_draw_panel_find	dd 0 ;+230 указатель на функцию рисования панели поиска
1193
	.fun_draw_panel_syntax	dd 0 ;+234 указатель на функцию рисования панели синтаксиса
1194
	.fun_save_err		dd ted_save_err_msg ;+238 указатель на функцию вызываемую если сохранение файла закончилось неудачно
1195
	.increase_size dd 1000 ;+242 число символов на которые будет увечиваться память при нехватке
1196
	.ptr_free_symb dd ? ;+246 указатель на свободную память, в которую можно добавлять символ (используется внутри элемента для ускорения вставки текста)
1197
;------------------------------------------------------------------------------
1198
align 4
1199
scrol_w1:
1200
.x:
1201
.size_x   dw 16 ;+0
1202
.start_x  dw 85 ;+2
1203
.y:
1204
.size_y   dw 100 ; +4
1205
.start_y  dw  15 ; +6
1206
.btn_high dd  15 ; +8
1207
.type	  dd   1 ;+12
1208
.max_area dd 100 ;+16
1209
rb 4+4
1210
.bckg_col dd 0xeeeeee ;+28
1211
.frnt_col dd 0xbbddff ;+32
1212
.line_col dd 0x808080 ;+36
1213
.redraw   dd   0 ;+40
1214
.delta	  dw   0 ;+44
1215
.delta2   dw   0 ;+46
1216
.run_x:
3475 IgorA 1217
rb 32
1706 IgorA 1218
.all_redraw dd 0 ;+80
1219
.ar_offset  dd 1 ;+84
1220
;---------------------------------------------------------------------
1221
align 4
1222
scrol_h1:
1223
.x:
1224
.size_x     dw 85 ;+0
1225
.start_x    dw 30 ;+2
1226
.y:
1227
.size_y     dw 16 ;+4
1228
.start_y    dw 100 ;+6
1229
.btn_high   dd 15 ;+8
1230
.type	    dd 1  ;+12
1231
.max_area   dd 100 ;+16
1232
rb 4+4
1233
.bckg_col   dd 0xeeeeee ;+28
1234
.frnt_col   dd 0xbbddff ;+32
1235
.line_col   dd 0x808080 ;+36
1236
.redraw     dd 0  ;+40
1237
.delta	    dw 0  ;+44
1238
.delta2     dw 0  ;+46
1239
.run_x:
3475 IgorA 1240
rb 32
1706 IgorA 1241
.all_redraw dd 0 ;+80
1242
.ar_offset  dd 1 ;+84
1243
 
1244
 
1245
 
1246
align 4
1247
w_scr_t1:
1248
.size_x     dw 16 ;+0
1249
rb 2+2+2
1250
.btn_high   dd 15 ;+8
1251
.type	    dd 1  ;+12
1252
.max_area   dd 100  ;+16
1253
rb 4+4
1254
.bckg_col   dd 0xeeeeee ;+28
1255
.frnt_col   dd 0xbbddff ;+32
1256
.line_col   dd 0  ;+36
1257
rb 4+2+2
1258
.run_x:
3475 IgorA 1259
rb 32
1706 IgorA 1260
.all_redraw dd 0 ;+80
1261
.ar_offset  dd 1 ;+84
1262
 
1263
align 4
1264
w_scr_t2:
1265
.size_x     dw 16 ;+0
1266
rb 2+2+2
1267
.btn_high   dd 15 ;+8
1268
.type	    dd 1  ;+12
1269
.max_area   dd 100  ;+16
1270
rb 4+4
1271
.bckg_col   dd 0xeeeeee ;+28
1272
.frnt_col   dd 0xbbddff ;+32
1273
.line_col   dd 0  ;+36
1274
rb 4+2+2
1275
.run_x:
3475 IgorA 1276
rb 32
1706 IgorA 1277
.all_redraw dd 0 ;+80
1278
.ar_offset  dd 1 ;+84
1279
 
5917 IgorA 1280
;данные для диалога открытия файлов
1281
align 4
1282
OpenDialog_data:
1283
.type			dd 0 ;0 - открыть, 1 - сохранить, 2 - выбрать дтректорию
1284
.procinfo		dd procinfo	;+4
1285
.com_area_name		dd communication_area_name	;+8
1286
.com_area		dd 0	;+12
1287
.opendir_path		dd plugin_path	;+16
1288
.dir_default_path	dd default_dir ;+20
1289
.start_path		dd file_name ;+24 путь к диалогу открытия файлов
1290
.draw_window		dd draw_window	;+28
1291
.status 		dd 0	;+32
1292
.openfile_path		dd openfile_path	;+36 путь к открываемому файлу
1293
.filename_area		dd filename_area	;+40
1294
.filter_area		dd Filter
1295
.x:
1296
.x_size 		dw 420 ;+48 ; Window X size
1297
.x_start		dw 10 ;+50 ; Window X position
1298
.y:
1299
.y_size 		dw 320 ;+52 ; Window y size
1300
.y_start		dw 10 ;+54 ; Window Y position
1301
 
1302
default_dir db '/rd/1',0
1303
 
1304
communication_area_name:
1305
	db 'FFFFFFFF_open_dialog',0
1306
open_dialog_name:
1307
	db 'opendial',0
1308
communication_area_default_path:
1309
	db '/rd/1/File managers/',0
1310
 
1311
Filter:
1312
dd Filter.end - Filter ;.1
1313
.1:
1314
db 'CED',0
1315
db 'ASM',0
1316
.end:
1317
db 0
1318
 
1319
 
1706 IgorA 1320
data_of_code dd 0
1321
sc system_colors
1322
 
1323
image_data dd 0 ;память для преобразования картинки функциями libimg
1324
 
1325
text_buffer db BUF_SIZE dup(0)
1326
fn_obj_opt db 'ob_o.opt',0
1327
obj_opt ObjOpt
1714 IgorA 1328
	rb sizeof.ObjOpt*(MAX_OBJ_TYPES-1)+MAX_OBJ_CAPTIONS
1706 IgorA 1329
	db 0 ;eof options
1330
 
1331
cur_x dd 0
1332
cur_y dd 0
1333
foc_obj dd 0 ;объект в фокусе
1717 IgorA 1334
obj_count_txt_props dd 0 ;количество используемых текстовых свойств
1706 IgorA 1335
obj_m_win dd 0 ;структура главного окна
1336
 
1337
;
1338
if 1 ;lang eq ru
1339
 
1340
	err_message_found_lib0 db 'Не найдена библиотека box_lib.obj',0  ;строка, которая будет в сформированном окне, если библиотека не будет найдена
1341
	err_message_import0 db 'Ошибка при импорте библиотеки box_lib.obj',0
1342
	err_message_found_lib1 db 'Не найдена библиотека proc_lib.obj',0
1343
	err_message_import1 db 'Ошибка при импорте библиотеки proc_lib.obj',0
1344
	err_message_found_lib2 db 'Не удалось найти библиотеку buf2d.obj',0
1345
	err_message_import2 db 'Ошибка при импорте библиотеки buf2d.obj',0
1346
	err_message_found_lib3 db 'Не удалось найти библиотеку libimg.obj',0
1347
	err_message_import3 db 'Ошибка при импорте библиотеки libimg.obj',0
1348
	err_message_found_lib4 db 'Не удалось найти библиотеку msgbox.obj',0
1349
	err_message_import4 db 'Ошибка при импорте библиотеки msgbox.obj',0
1350
 
1351
	head_f_i:
1352
	head_f_l db 'Системная ошибка',0 ;заголовок окна, при возникновении ошибки
1353
else
1354
 
1355
	err_message_found_lib0 db 'Sorry I cannot found library box_lib.obj',0
1356
	err_message_import0 db 'Error on load import library box_lib.obj',0
1357
	err_message_found_lib1 db 'Sorry I cannot found library proc_lib.obj',0
1358
	err_message_import1 db 'Error on load import library proc_lib.obj',0
1359
	err_message_found_lib2 db 'Sorry I cannot found library buf2d.obj',0
1360
	err_message_import2 db 'Error on load import library buf2d.obj',0
1361
	err_message_found_lib3 db 'Sorry I cannot found library libimg.obj',0
1362
	err_message_import3 db 'Error on load import library libimg.obj',0
1363
	err_message_found_lib4 db 'Sorry I cannot found library msgbox.obj',0
1364
	err_message_import4 db 'Error on load import library msgbox.obj',0
1365
 
1366
	head_f_i:
1367
	head_f_l db 'System error',0 ;заголовок окна, при возникновении ошибки
1368
end if
1369
 
1370
	system_dir0 db '/sys/lib/'
1371
	lib0_name db 'box_lib.obj',0
1372
 
1373
	system_dir1 db '/sys/lib/'
1374
	lib1_name db 'proc_lib.obj',0
1375
 
1376
	system_dir2 db '/sys/lib/'
1377
	lib2_name db 'buf2d.obj',0
1378
 
1379
	system_dir3 db '/sys/lib/'
1380
	lib3_name db 'libimg.obj',0
1381
 
1382
	system_dir4 db '/sys/lib/'
1383
	lib4_name db 'msgbox.obj',0
1384
 
1385
align 4
1386
import_buf2d_lib:
1387
	dd sz_lib_init
1388
	buf2d_create dd sz_buf2d_create
1389
	buf2d_create_f_img dd sz_buf2d_create_f_img
1390
	buf2d_clear dd sz_buf2d_clear
1391
	buf2d_draw dd sz_buf2d_draw
1392
	buf2d_delete dd sz_buf2d_delete
1393
	buf2d_line dd sz_buf2d_line
1394
	buf2d_rect_by_size dd sz_buf2d_rect_by_size
1395
	buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
1727 IgorA 1396
	;buf2d_circle dd sz_buf2d_circle
1706 IgorA 1397
	buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
1398
	buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
1399
	buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
1400
	buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
1401
	buf2d_bit_blt dd sz_buf2d_bit_blt
1402
	buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
1403
	buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
1727 IgorA 1404
	;buf2d_curve_bezier dd sz_buf2d_curve_bezier
1706 IgorA 1405
	buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
1406
	buf2d_draw_text dd sz_buf2d_draw_text
1727 IgorA 1407
	;buf2d_crop_color dd sz_buf2d_crop_color
1706 IgorA 1408
	buf2d_offset_h dd sz_buf2d_offset_h
1409
dd 0,0
1410
	sz_lib_init db 'lib_init',0
1411
	sz_buf2d_create db 'buf2d_create',0
1412
	sz_buf2d_create_f_img db 'buf2d_create_f_img',0
1413
	sz_buf2d_clear db 'buf2d_clear',0
1414
	sz_buf2d_draw db 'buf2d_draw',0
1415
	sz_buf2d_delete db 'buf2d_delete',0
1416
	sz_buf2d_line db 'buf2d_line',0
1417
	sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0 ;рисование прямоугольника, 2-я координата задана по размеру
1418
	sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
1727 IgorA 1419
	;sz_buf2d_circle db 'buf2d_circle',0 ;рисование окружности
1706 IgorA 1420
	sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
1421
	sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
1422
	sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
1423
	sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
1424
	sz_buf2d_bit_blt db 'buf2d_bit_blt',0
1425
	sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
1426
	sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
1727 IgorA 1427
	;sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
1706 IgorA 1428
	sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
1429
	sz_buf2d_draw_text db 'buf2d_draw_text',0
1727 IgorA 1430
	;sz_buf2d_crop_color db 'buf2d_crop_color',0
1706 IgorA 1431
	sz_buf2d_offset_h db 'buf2d_offset_h',0
1432
 
1433
align 4
1434
import_box_lib:
1435
	dd alib_init2
1436
 
1437
	edit_box_draw dd aEdit_box_draw
1438
	edit_box_key dd aEdit_box_key
1439
	edit_box_mouse dd aEdit_box_mouse
1440
	edit_box_set_text dd aEdit_box_set_text
1441
 
1714 IgorA 1442
	init_checkbox dd aInit_checkbox
1443
	check_box_draw dd aCheck_box_draw
1444
	check_box_mouse dd aCheck_box_mouse
1445
 
1706 IgorA 1446
	scrollbar_ver_draw dd aScrollbar_ver_draw
1447
	scrollbar_hor_draw dd aScrollbar_hor_draw
1448
 
1449
	tl_data_init dd sz_tl_data_init
1450
	tl_data_clear dd sz_tl_data_clear
1451
	tl_info_clear dd sz_tl_info_clear
1452
	tl_key dd sz_tl_key
1453
	tl_mouse dd sz_tl_mouse
1454
	tl_draw dd sz_tl_draw
1455
	tl_info_undo dd sz_tl_info_undo
1456
	tl_info_redo dd sz_tl_info_redo
1457
	tl_node_add dd sz_tl_node_add
1458
	tl_node_set_data dd sz_tl_node_set_data
1459
	tl_node_get_data dd sz_tl_node_get_data
1460
	tl_node_delete dd sz_tl_node_delete
1461
	tl_node_move_up dd sz_tl_node_move_up
1462
	tl_node_move_down dd sz_tl_node_move_down
1463
	tl_cur_beg dd sz_tl_cur_beg
1464
	tl_cur_next dd sz_tl_cur_next
1465
	tl_cur_perv dd sz_tl_cur_perv
1466
	tl_node_close_open dd sz_tl_node_close_open
1467
	tl_node_lev_inc dd sz_tl_node_lev_inc
1468
	tl_node_lev_dec dd sz_tl_node_lev_dec
1469
	tl_node_poi_get_info dd sz_tl_node_poi_get_info
1470
	tl_node_poi_get_next_info dd sz_tl_node_poi_get_next_info
1471
	tl_node_poi_get_data dd sz_tl_node_poi_get_data
1472
 
1473
	ted_but_sumb_upper dd sz_ted_but_sumb_upper
1474
	ted_but_sumb_lover dd sz_ted_but_sumb_lover
1475
	ted_can_save dd sz_ted_can_save
1476
	ted_clear dd sz_ted_clear
1477
	ted_delete dd sz_ted_delete
1478
	ted_draw dd sz_ted_draw
1479
	ted_init dd sz_ted_init
1480
	ted_init_scroll_bars dd sz_ted_init_scroll_bars
1481
	ted_init_syntax_file dd sz_ted_init_syntax_file
1482
	ted_is_select dd sz_ted_is_select
1483
	ted_key dd sz_ted_key
1484
	ted_mouse dd sz_ted_mouse
1485
	ted_open_file dd sz_ted_open_file
5917 IgorA 1486
	ted_save_file dd sz_ted_save_file
1706 IgorA 1487
	ted_text_add dd sz_ted_text_add
1488
	ted_but_select_word dd sz_ted_but_select_word
1489
	ted_but_cut dd sz_ted_but_cut
1490
	ted_but_copy dd sz_ted_but_copy
1491
	ted_but_paste dd sz_ted_but_paste
1492
	ted_but_undo dd sz_ted_but_undo
1493
	ted_but_redo dd sz_ted_but_redo
1494
	ted_but_reverse dd sz_ted_but_reverse
1495
	ted_but_find_next dd sz_ted_but_find_next
1496
	ted_text_colored dd sz_ted_text_colored
1497
	;version_text_edit dd sz_ted_version
1498
 
1499
dd 0,0
1500
 
1501
	alib_init2 db 'lib_init',0
1502
 
1503
	aEdit_box_draw	db 'edit_box',0
1504
	aEdit_box_key	db 'edit_box_key',0
1505
	aEdit_box_mouse db 'edit_box_mouse',0
1506
	aEdit_box_set_text db 'edit_box_set_text',0
1507
 
1714 IgorA 1508
	aInit_checkbox db 'init_checkbox2',0
1509
	aCheck_box_draw db 'check_box_draw2',0
1510
	aCheck_box_mouse db 'check_box_mouse2',0
1511
 
1706 IgorA 1512
	aScrollbar_ver_draw  db 'scrollbar_v_draw',0
1513
	aScrollbar_hor_draw  db 'scrollbar_h_draw',0
1514
 
1515
	sz_tl_data_init db 'tl_data_init',0
1516
	sz_tl_data_clear db 'tl_data_clear',0
1517
	sz_tl_info_clear db 'tl_info_clear',0
1518
	sz_tl_key db 'tl_key',0
1519
	sz_tl_mouse db 'tl_mouse',0
1520
	sz_tl_draw db 'tl_draw',0
1521
	sz_tl_info_undo db 'tl_info_undo',0
1522
	sz_tl_info_redo db 'tl_info_redo',0
1523
	sz_tl_node_add db 'tl_node_add',0
1524
	sz_tl_node_set_data db 'tl_node_set_data',0
1525
	sz_tl_node_get_data db 'tl_node_get_data',0
1526
	sz_tl_node_delete db 'tl_node_delete',0
1527
	sz_tl_node_move_up db 'tl_node_move_up',0
1528
	sz_tl_node_move_down db 'tl_node_move_down',0
1529
	sz_tl_cur_beg db 'tl_cur_beg',0
1530
	sz_tl_cur_next db 'tl_cur_next',0
1531
	sz_tl_cur_perv db 'tl_cur_perv',0
1532
	sz_tl_node_close_open db 'tl_node_close_open',0
1533
	sz_tl_node_lev_inc db 'tl_node_lev_inc',0
1534
	sz_tl_node_lev_dec db 'tl_node_lev_dec',0
1535
	sz_tl_node_poi_get_info db 'tl_node_poi_get_info',0
1536
	sz_tl_node_poi_get_next_info db 'tl_node_poi_get_next_info',0
1537
	sz_tl_node_poi_get_data db 'tl_node_poi_get_data',0
1538
 
1539
	sz_ted_but_sumb_upper	db 'ted_but_sumb_upper',0
1540
	sz_ted_but_sumb_lover	db 'ted_but_sumb_lover',0
1541
	sz_ted_can_save 		db 'ted_can_save',0
1542
	sz_ted_clear			db 'ted_clear',0
1543
	sz_ted_delete			db 'ted_delete',0
1544
	sz_ted_draw				db 'ted_draw',0
1545
	sz_ted_init				db 'ted_init',0
1546
	sz_ted_init_scroll_bars db 'ted_init_scroll_bars',0
1547
	sz_ted_init_syntax_file db 'ted_init_syntax_file',0
1548
	sz_ted_is_select		db 'ted_is_select',0
1549
	sz_ted_key				db 'ted_key',0
1550
	sz_ted_mouse			db 'ted_mouse',0
1551
	sz_ted_open_file		db 'ted_open_file',0
5917 IgorA 1552
	sz_ted_save_file		db 'ted_save_file',0
1706 IgorA 1553
	sz_ted_text_add 		db 'ted_text_add',0
1554
	sz_ted_but_select_word	db 'ted_but_select_word',0
1555
	sz_ted_but_cut			db 'ted_but_cut',0
1556
	sz_ted_but_copy 		db 'ted_but_copy',0
1557
	sz_ted_but_paste		db 'ted_but_paste',0
1558
	sz_ted_but_undo 		db 'ted_but_undo',0
1559
	sz_ted_but_redo 		db 'ted_but_redo',0
1560
	sz_ted_but_reverse		db 'ted_but_reverse',0
1561
	sz_ted_but_find_next	db 'ted_but_find_next',0
1562
	sz_ted_text_colored		db 'ted_text_colored',0
1563
	;sz_ted_version db 'version_text_edit',0
1564
 
1565
align 4
1566
import_proc_lib:
1567
	OpenDialog_Init dd aOpenDialog_Init
1568
	OpenDialog_Start dd aOpenDialog_Start
1569
dd 0,0
1570
	aOpenDialog_Init db 'OpenDialog_init',0
1571
	aOpenDialog_Start db 'OpenDialog_start',0
1572
 
1573
align 4
1574
import_libimg:
1575
	dd alib_init1
1576
	img_is_img  dd aimg_is_img
1577
	img_info    dd aimg_info
1578
	img_from_file dd aimg_from_file
1579
	img_to_file dd aimg_to_file
1580
	img_from_rgb dd aimg_from_rgb
1581
	img_to_rgb  dd aimg_to_rgb
1582
	img_to_rgb2 dd aimg_to_rgb2
1583
	img_decode  dd aimg_decode
1584
	img_encode  dd aimg_encode
1585
	img_create  dd aimg_create
1586
	img_destroy dd aimg_destroy
1587
	img_destroy_layer dd aimg_destroy_layer
1588
	img_count   dd aimg_count
1589
	img_lock_bits dd aimg_lock_bits
1590
	img_unlock_bits dd aimg_unlock_bits
1591
	img_flip    dd aimg_flip
1592
	img_flip_layer dd aimg_flip_layer
1593
	img_rotate  dd aimg_rotate
1594
	img_rotate_layer dd aimg_rotate_layer
1595
	img_draw    dd aimg_draw
1596
 
1597
dd 0,0
1598
 
1599
	alib_init1   db 'lib_init',0
1600
	aimg_is_img  db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение
1601
	aimg_info    db 'img_info',0
1602
	aimg_from_file db 'img_from_file',0
1603
	aimg_to_file db 'img_to_file',0
1604
	aimg_from_rgb db 'img_from_rgb',0
1605
	aimg_to_rgb  db 'img_to_rgb',0 ;преобразование изображения в данные RGB
1606
	aimg_to_rgb2 db 'img_to_rgb2',0
1607
	aimg_decode  db 'img_decode',0 ;автоматически определяет формат графических данных
1608
	aimg_encode  db 'img_encode',0
1609
	aimg_create  db 'img_create',0
1610
	aimg_destroy db 'img_destroy',0
1611
	aimg_destroy_layer db 'img_destroy_layer',0
1612
	aimg_count   db 'img_count',0
1613
	aimg_lock_bits db 'img_lock_bits',0
1614
	aimg_unlock_bits db 'img_unlock_bits',0
1615
	aimg_flip    db 'img_flip',0
1616
	aimg_flip_layer db 'img_flip_layer',0
1617
	aimg_rotate  db 'img_rotate',0
1618
	aimg_rotate_layer db 'img_rotate_layer',0
1619
	aimg_draw    db 'img_draw',0
1620
 
1621
align 4
1622
import_msgbox_lib:
1623
	mb_create dd amb_create
1624
	mb_reinit dd amb_reinit
1625
	mb_setfunctions dd amb_setfunctions
1626
dd 0,0
1627
	amb_create db 'mb_create',0
1628
	amb_reinit db 'mb_reinit',0
1629
	amb_setfunctions db 'mb_setfunctions',0
1630
 
1631
;library structures
1632
l_libs_start:
1633
	lib0 l_libs lib0_name, sys_path, library_path, system_dir0, err_message_found_lib0, head_f_l, import_box_lib, err_message_import0, head_f_i
1634
	lib1 l_libs lib1_name, sys_path, library_path, system_dir1, err_message_found_lib1, head_f_l, import_proc_lib,err_message_import1, head_f_i
1635
	lib2 l_libs lib2_name, sys_path, library_path, system_dir2, err_message_found_lib2, head_f_l, import_buf2d_lib, err_message_import2, head_f_i
1636
	lib3 l_libs lib3_name, sys_path, library_path, system_dir3, err_message_found_lib3, head_f_l, import_libimg, err_message_import3, head_f_i
1637
	lib4 l_libs lib4_name, sys_path, library_path, system_dir4, err_message_found_lib4, head_f_l, import_msgbox_lib, err_message_import4, head_f_i
1638
load_lib_end:
1639
 
1640
 
1641
align 16
1642
run_file_70 FileInfoBlock
3465 IgorA 1643
open_b rb 560
1706 IgorA 1644
 
3475 IgorA 1645
IncludeIGlobals
1706 IgorA 1646
i_end:
3475 IgorA 1647
IncludeUGlobals
5917 IgorA 1648
	procinfo process_information
1706 IgorA 1649
	buf_cmd_lin rb 1024
3465 IgorA 1650
	file_name rb 1024 ;icon file path
1706 IgorA 1651
	fp_obj_opt rb 1024 ;obj options file patch
1652
	rb 1024
1714 IgorA 1653
	prop_thread:
1654
	rb 1024
1706 IgorA 1655
	thread: ;вверху дочерний стек для окна сообщения
1656
	rb 1024
1657
stacktop: ;вверху стек основной программы
1658
	sys_path rb 1024
1659
	library_path rb 1024
5917 IgorA 1660
	plugin_path rb 4096
1661
	openfile_path rb 4096
1662
	filename_area rb 256
1706 IgorA 1663
mem: