Subversion Repositories Kolibri OS

Rev

Rev 6254 | 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
 
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 на начало и конец списка)
30
	stdcall dword[tl_data_init], tree3
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]
59
	add ebx,7*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
 
66
	mov dword[w_scr_t3.all_redraw],1
6087 IgorA 67
	stdcall [scrollbar_ver_draw], w_scr_t3
3244 IgorA 68
	stdcall [tl_draw], tree3
69
	stdcall [edit_box_draw], edit3
6087 IgorA 70
	mcall SF_REDRAW,SSF_END_DRAW
3244 IgorA 71
popad
72
 
73
;не отрывать эту функцию от предыдущей
74
align 4
75
prop_still:
6087 IgorA 76
	mcall SF_WAIT_EVENT
3244 IgorA 77
 
78
	cmp al,1 ;изм. положение окна
79
	jz prop_red_win
80
	cmp al,2
81
	jne @f
82
		call prop_key
83
	@@:
84
	cmp al,3
85
	jne @f
86
		call prop_button
87
	@@:
88
	cmp al,6
89
	jne @f
90
		call prop_mouse
91
	@@:
92
	jmp prop_still
93
.exit:
94
	mov dword[tree3.data_img],0 ;чистим указатели на иконки что-бы их не удалил деструктор
95
	mov dword[tree3.data_img_sys],0 ;т. к. они еще используються в других элементах
96
	stdcall dword[tl_data_clear], tree3
7035 IgorA 97
	mov dword[wnd_k_words_run],0 ;обнуляем ID окна
6087 IgorA 98
	mcall SF_TERMINATE_PROCESS
3244 IgorA 99
 
100
align 4
101
prop_key:
102
push eax
6087 IgorA 103
	mcall SF_GET_KEY
3244 IgorA 104
	stdcall [edit_box_key], edit3
105
	stdcall [tl_key], tree3
106
pop eax
107
	ret
108
 
109
align 4
110
prop_mouse:
111
	;push ecx edi
112
	stdcall [tl_mouse], tree3
113
	stdcall [edit_box_mouse], edit3
114
	;pop edi ecx
115
	ret
116
 
117
align 4
118
prop_button:
119
	pushad
6087 IgorA 120
	mcall SF_GET_BUTTON
3244 IgorA 121
 
122
	cmp ah,1
123
	je prop_still.exit
124
 
125
	cmp ah,3
126
	jne @f
127
		;найти слова
128
		mov edi,tedit0
129
		cmp ted_syntax_file,0
130
		je @f
131
		stdcall dword[tl_info_clear], tree3
132
 
133
		mov ebx,ted_key_words_data
134
		mov ecx,ted_key_words_count
135
		cld
136
		.cycle_0:
137
		stdcall str_instr, ebx,[edit3.text]
138
		test al,al
139
		jnz .end_add
6087 IgorA 140
			;ключевое слово
141
			stdcall dword[tl_node_add], tree3, (1 shl 16), ebx
3244 IgorA 142
			stdcall dword[tl_cur_next], tree3
6087 IgorA 143
			mov edx,[ebx+MAX_COLOR_WORD_LEN]
144
			or edx,edx
145
			jz .end_add
146
				;справка по ключевому слову
147
				add edx,ted_help_text_f1
148
				stdcall dword[tl_node_add], tree3, 1, edx
149
				stdcall dword[tl_cur_next], tree3
3244 IgorA 150
		.end_add:
151
		add ebx,MAX_COLOR_WORD_LEN+8 ;sizeof.TexColViv
152
		loop .cycle_0
153
 
154
		stdcall dword[tl_cur_beg], tree3
155
		stdcall dword[tl_draw], tree3
6087 IgorA 156
		jmp .no_select_0
3244 IgorA 157
	@@:
158
	cmp ah,4
159
	jne @f
160
		;копировать в буфер
161
		stdcall [tl_node_get_data],tree3
5911 IgorA 162
		or eax,eax
5831 IgorA 163
		jz .no_select_0
5911 IgorA 164
			mov esi,eax
3244 IgorA 165
			mov edi,[tedit0.buffer]
5831 IgorA 166
			mov dword[edi],MAX_COLOR_WORD_LEN
167
			mov dword[edi+4],0 ;text data
168
			mov dword[edi+8],1 ;code 866
169
			add edi,12 ;system buffer header size
3244 IgorA 170
			mov byte[edi+MAX_COLOR_WORD_LEN],0
171
			mov ecx,MAX_COLOR_WORD_LEN
172
			cld
173
			rep movsb
6087 IgorA 174
			mcall SF_CLIPBOARD,SSF_WRITE_CB,12+MAX_COLOR_WORD_LEN,[tedit0.buffer]
3244 IgorA 175
		.no_select_0:
176
	@@:
177
 
178
	popad
179
	ret
180
 
181
;дерево с объектами в пользовательском файле
182
align 4
6087 IgorA 183
tree3 tree_list MAX_COLOR_WORD_LEN,3,tl_key_no_edit,\
184
	16,16, 0x8080ff,0x0000ff,0xffffff, 5,30,300,160, 16, 0,0, el_focus, w_scr_t3,0
3244 IgorA 185
 
186
align 4
6254 leency 187
edit3 edit_box 80, 70, 8, 0xffffff, 0xff, 0x80ff, 0, 0x8000, MAX_COLOR_WORD_LEN+2, string1, mouse_dd, ed_focus
3244 IgorA 188
editboxes_end:
189
 
190
string1 rb MAX_COLOR_WORD_LEN
191
 
192
align 4
5911 IgorA 193
w_scr_t3 scrollbar 16,0, 3,0, 15, 100, 0,0, 0xeeeeee, 0xbbddff, 0, 1