Subversion Repositories Kolibri OS

Rev

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