Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
3244 IgorA 1
;
2
; в этом файле собраны функции нужные для создания и
3
; работы окна с поиском в ключевых словах
4
;
5
 
6
prop_wnd_width equ 350 ;ширина окна с поиском
7
SIZE_ONE_FLOAT equ 14
8
 
9
IMAGE_TOOLBAR_ICON_SIZE equ 20*20*3
10
 
11
wnd_k_words_run db 0 ;переменная следящая за тем что-бы не запускать больше 1-го окна одновременно
12
 
13
if lang eq ru
14
txt_caption db 'Поиск в ключевых словах',0
15
else
16
txt_caption db 'Search in keywords',0
17
end if
18
 
19
;даное окно (процесс) вызываеться функцией but_wnd_coords
20
align 4
21
prop_start:
22
pushad
23
	mcall 40,0xC0000027 ;маска ожидаемых событий
24
	inc byte[wnd_k_words_run]
25
 
26
	;настройка списка объектов
27
	mov dword[tree3.info_max_count],2
28
	mov edi,tedit0
29
	mov edx,ted_key_words_count
30
	add dword[tree3.info_max_count],edx ;ставим число узлов, равное колличеству ключевых слов в файле подсветки (+2 на начало и конец списка)
31
	stdcall dword[tl_data_init], tree3
32
	mov eax,dword[icon_tl_sys]
33
	mov dword[tree3.data_img],eax
34
	mov eax,dword[tree1.data_img_sys]
35
	mov dword[tree3.data_img_sys],eax
36
 
37
	edit_boxes_set_sys_color edit3,editboxes_end,sc ;установка системных цветов
38
	;stdcall [edit_box_set_text], edit3, txt_q
39
popad
40
 
41
align 4
42
prop_red_win:
43
pushad
44
	mcall 12,1
45
 
46
	xor eax,eax
47
	mov edi,txt_caption
48
	mov bx,word[procinfo.box.left]
49
	add bx,5 ;word[buf_0.l]
50
	shl ebx,16
51
	mov bx,prop_wnd_width
52
	mov cx,word[procinfo.box.top]
5831 IgorA 53
	add cx,42 ;word[buf_0.t]
3244 IgorA 54
	shl ecx,16
55
	mov cx,250
56
	mov edx,0xffffd0
57
	or  edx,0x33000000
58
	int 0x40
59
 
60
	mov eax,8
61
	mov ebx,(5 shl 16)+19
62
	mov ecx,(5 shl 16)+19
63
	mov edx,3
64
	mov esi,[sc.work_button]
65
	int 0x40
66
 
67
	add ebx,(25 shl 16)
68
	mov edx,4
69
	int 0x40
70
 
71
	mov eax,7
72
	mov ebx,[bmp_icon]
73
	add ebx,7*IMAGE_TOOLBAR_ICON_SIZE
74
	mov ecx,(20 shl 16)+20
75
	mov edx,(5 shl 16)+5 ;найти
76
	int 0x40
77
 
78
	sub ebx,2*IMAGE_TOOLBAR_ICON_SIZE
79
	mov edx,(30 shl 16)+5 ;копировать
80
	int 0x40
81
 
82
	mov dword[w_scr_t3.all_redraw],1
83
	stdcall [scrollbar_ver_draw],dword w_scr_t3
84
	stdcall [tl_draw], tree3
85
	stdcall [edit_box_draw], edit3
86
	mcall 12,2
87
popad
88
 
89
;не отрывать эту функцию от предыдущей
90
align 4
91
prop_still:
92
	mcall 10
93
 
94
	cmp al,1 ;изм. положение окна
95
	jz prop_red_win
96
	cmp al,2
97
	jne @f
98
		call prop_key
99
	@@:
100
	cmp al,3
101
	jne @f
102
		call prop_button
103
	@@:
104
	cmp al,6
105
	jne @f
106
		call prop_mouse
107
	@@:
108
	jmp prop_still
109
.exit:
110
	mov dword[tree3.data_img],0 ;чистим указатели на иконки что-бы их не удалил деструктор
111
	mov dword[tree3.data_img_sys],0 ;т. к. они еще используються в других элементах
112
	stdcall dword[tl_data_clear], tree3
113
	mov byte[wnd_k_words_run],0 ;обнуляем счетчик окон
114
	mcall -1 ;закрытие окна поиска
115
 
116
align 4
117
prop_key:
118
push eax
119
	mcall 2
120
	stdcall [edit_box_key], edit3
121
	stdcall [tl_key], tree3
122
pop eax
123
	ret
124
 
125
align 4
126
prop_mouse:
127
	;push ecx edi
128
	stdcall [tl_mouse], tree3
129
	stdcall [edit_box_mouse], edit3
130
	;pop edi ecx
131
	ret
132
 
133
align 4
134
prop_button:
135
	pushad
136
	mcall 17 ;получить код нажатой кнопки
137
 
138
	cmp ah,1
139
	je prop_still.exit
140
 
141
	cmp ah,3
142
	jne @f
143
		;найти слова
144
		mov edi,tedit0
145
		cmp ted_syntax_file,0
146
		je @f
147
		stdcall dword[tl_info_clear], tree3
148
 
149
		mov ebx,ted_key_words_data
150
		mov ecx,ted_key_words_count
151
		cld
152
		.cycle_0:
153
		stdcall str_instr, ebx,[edit3.text]
154
		test al,al
155
		jnz .end_add
5911 IgorA 156
			stdcall dword[tl_node_add], tree3, (0 shl 16), ebx
3244 IgorA 157
			stdcall dword[tl_cur_next], tree3
158
		.end_add:
159
		add ebx,MAX_COLOR_WORD_LEN+8 ;sizeof.TexColViv
160
		loop .cycle_0
161
 
162
		stdcall dword[tl_cur_beg], tree3
163
		stdcall dword[tl_draw], tree3
164
	@@:
165
	cmp ah,4
166
	jne @f
167
		;копировать в буфер
168
		stdcall [tl_node_get_data],tree3
5911 IgorA 169
		or eax,eax
5831 IgorA 170
		jz .no_select_0
5911 IgorA 171
			mov esi,eax
3244 IgorA 172
			mov edi,[tedit0.buffer]
5831 IgorA 173
			mov dword[edi],MAX_COLOR_WORD_LEN
174
			mov dword[edi+4],0 ;text data
175
			mov dword[edi+8],1 ;code 866
176
			add edi,12 ;system buffer header size
3244 IgorA 177
			mov byte[edi+MAX_COLOR_WORD_LEN],0
178
			mov ecx,MAX_COLOR_WORD_LEN
179
			cld
180
			rep movsb
5831 IgorA 181
			mcall 54,2,12+MAX_COLOR_WORD_LEN,[tedit0.buffer]
3244 IgorA 182
		.no_select_0:
183
	@@:
184
 
185
	popad
186
	ret
187
 
188
;дерево с объектами в пользовательском файле
189
align 4
190
tree3 tree_list MAX_COLOR_WORD_LEN,3,\
191
	tl_key_no_edit+tl_list_box_mode,\
192
	16,16, 0x8080ff,0x0000ff,0xffffff, 5,30,300,160, 16, 0,0, el_focus,\
193
	w_scr_t3,0
194
 
195
align 4
196
edit3 edit_box 80, 70, 8, 0xffffff, 0xff, 0x80ff, 0, 0x8000, MAX_COLOR_WORD_LEN+2, string1, mouse_dd, 0
197
editboxes_end:
198
 
199
string1 rb MAX_COLOR_WORD_LEN
200
 
201
align 4
5911 IgorA 202
w_scr_t3 scrollbar 16,0, 3,0, 15, 100, 0,0, 0xeeeeee, 0xbbddff, 0, 1