Subversion Repositories Kolibri OS

Rev

Rev 2173 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2165 IgorA 1
;
2
; в этом файле собраны функции нужные для создания и
3
; работы окна с координатами
4
;
5
 
6
prop_edits_top equ 25
7
prop_edits_height equ 18
8
prop_wnd_width equ 350 ;ширина окна со свойствами объекта
9
SIZE_ONE_FLOAT equ 14
10
MAX_OBJECT_SIZE equ (4+SIZE_ONE_FLOAT*3+1)
11
 
12
prop_wnd_run db 0 ;переменная следящая за тем что-бы не запускать больше 1-го окна со свойствами одновременно
13
 
14
txt_space:
15
	db SIZE_ONE_FLOAT dup(' ')
16
.end:
17
	db 0
18
 
19
obj_point: ;добавляемый объект
20
	dd 0   ;указатель
21
.text:
22
	rb MAX_OBJECT_SIZE
23
 
24
 
25
 
26
;даное окно (процесс) вызываеться функцией but_wnd_coords
27
align 4
28
prop_start:
29
pushad
30
	mcall 40,0x27 ;маска ожидаемых событий
31
	inc byte[prop_wnd_run]
32
 
33
	stdcall [tl_node_get_data],tree1
34
	pop ebx
35
	xor edx,edx
36
	cmp ebx,0
37
	je @f
38
		mov ebx,dword[ebx] ;получаем значение сдвига выбранного блока
39
		add ebx,dword[open_file_lif]
40
		mov dx,word[ebx+6] ;колличество точек
41
	@@:
42
 
43
	;настройка списка объектов
44
	mov dword[tree3.info_max_count],2
45
	add dword[tree3.info_max_count],edx ;ставим число узлов, равное колличеству точек (+2 на начало и конец списка)
46
	stdcall dword[tl_data_init], tree3
47
	mov eax,dword[icon_tl_sys]
48
	mov dword[tree3.data_img_sys],eax
49
	mov eax,dword[icon_toolbar]
50
	mov dword[tree3.data_img],eax
51
 
52
	cmp ebx,0
53
	je .no_object
54
		cmp word[ebx],CHUNK_VERTLIST
55
		jne .no_object ;если не тот объект
56
		add ebx,8
57
		finit
58
		.new_point:
59
			mov dword[obj_point],ebx
60
			mov dword[obj_point.text],0
61
			cld
62
			mov ecx,3
63
			@@:
64
				fld dword[ebx]
65
				fstp qword[Data_Double]
66
				call DoubleFloat_to_String
67
				add ebx,4
68
				stdcall str_len, Data_String
69
				mov esi,txt_space
70
				add esi,eax
71
				cmp esi,txt_space.end
72
				jl .normal_size
73
					mov esi,txt_space.end-1 ;минимум 1 пробел нужно добавить, что-бы цифры не слипались
74
				.normal_size:
75
				stdcall str_cat, obj_point.text,esi
76
				stdcall str_cat, obj_point.text,Data_String
77
				loop @b
78
			stdcall dword[tl_node_add], obj_point, (ID_ICON_DATA shl 16), tree3
79
			stdcall dword[tl_cur_next], tree3
80
			dec edx
81
			cmp edx,0
82
			jg .new_point
83
			stdcall dword[tl_cur_beg], tree3
84
	.no_object:
85
popad
86
 
87
align 4
88
prop_red_win:
89
pushad
90
	mcall 12,1
91
 
92
	xor eax,eax
93
	mov edi,txt_4110 ;caption
94
	mov bx,word[procinfo.box.left]
95
	add bx,word[buf_0.l]
96
	shl ebx,16
97
	mov bx,prop_wnd_width
98
	mov cx,word[procinfo.box.top]
99
	shl ecx,16
100
	mov cx,250
101
	mov edx,0xffffd0
102
	or  edx,0x33000000
103
	int 0x40
104
 
105
	mov dword[w_scr_t3.all_redraw],1
106
	stdcall [scrollbar_ver_draw],dword w_scr_t3
107
	stdcall [tl_draw], tree3
108
	mcall 12,2
109
popad
110
 
111
;не отрывать эту функцию от предыдущей
112
align 4
113
prop_still:
114
	pushad
115
	mcall 10
116
 
117
	cmp al,1 ;изм. положение окна
118
	jz prop_red_win
119
	cmp al,2
120
	jne @f
121
		call prop_key
122
	@@:
123
	cmp al,3
124
	jz prop_button
125
	cmp al,6
126
	jne @f
127
		call prop_mouse
128
	@@:
129
	popad
130
	jmp prop_still
131
 
132
align 4
133
prop_key:
134
push eax
135
	mcall 2
136
	stdcall [tl_key], tree3
137
pop eax
138
	ret
139
 
140
align 4
141
prop_mouse:
142
	;push ecx edi
143
	stdcall [tl_mouse], tree3
144
	;pop edi ecx
145
	ret
146
 
147
align 4
148
prop_button:
149
	mcall 17 ;получить код нажатой кнопки
150
 
151
	cmp ah,10
152
	jne @f
153
		;;;call but_element_change
154
		mov ah,1 ;для закрытия окна
155
	@@:
156
 
157
	cmp ah,1
158
	jne prop_still
159
.exit:
160
	mov dword[tree3.data_img],0 ;чистим указатели на иконки что-бы их не удалил деструктор
161
	mov dword[tree3.data_img_sys],0 ;т. к. они еще используються в других элементах
162
	stdcall dword[tl_data_clear], tree3
163
	mov byte[prop_wnd_run],0 ;обнуляем счетчик окон
164
	mcall -1 ;выход из программы
165
 
166
;дерево с объектами в пользовательском файле
167
tree3 tree_list MAX_OBJECT_SIZE,3,\
168
	tl_key_no_edit+tl_list_box_mode,\
169
	16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,30,300,150, 16, 4,0, el_focus,\
170
	w_scr_t3,0
171
 
172
align 4
173
w_scr_t3:
174
.size_x     dw 16 ;+0
175
rb 2+2+2
176
.btn_high   dd 15 ;+8
177
.type	    dd 1  ;+12
178
.max_area   dd 100  ;+16
179
rb 4+4
180
.bckg_col   dd 0xeeeeee ;+28
181
.frnt_col   dd 0xbbddff ;+32
182
.line_col   dd 0  ;+36
183
rb 4+2+2
184
.run_x:
185
rb 2+2+2+2+4+4+4+4+4+4
186
.all_redraw dd 0 ;+80
187
.ar_offset  dd 1 ;+84
188