Rev 5911 | Go to most recent revision | Details | 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] |
||
53 | add cx,5 ;word[buf_0.t] |
||
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 |
||
156 | stdcall dword[tl_node_add], ebx, (0 shl 16), tree3 |
||
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 |
||
169 | pop esi |
||
170 | cmp esi,0 |
||
171 | je .no_select_0 |
||
172 | mov edi,[tedit0.buffer] |
||
173 | mov byte[edi+MAX_COLOR_WORD_LEN],0 |
||
174 | mov ecx,MAX_COLOR_WORD_LEN |
||
175 | cld |
||
176 | rep movsb |
||
177 | .no_select_0: |
||
178 | @@: |
||
179 | |||
180 | popad |
||
181 | ret |
||
182 | |||
183 | ;дерево с объектами в пользовательском файле |
||
184 | align 4 |
||
185 | tree3 tree_list MAX_COLOR_WORD_LEN,3,\ |
||
186 | tl_key_no_edit+tl_list_box_mode,\ |
||
187 | 16,16, 0x8080ff,0x0000ff,0xffffff, 5,30,300,160, 16, 0,0, el_focus,\ |
||
188 | w_scr_t3,0 |
||
189 | |||
190 | align 4 |
||
191 | edit3 edit_box 80, 70, 8, 0xffffff, 0xff, 0x80ff, 0, 0x8000, MAX_COLOR_WORD_LEN+2, string1, mouse_dd, 0 |
||
192 | editboxes_end: |
||
193 | |||
194 | string1 rb MAX_COLOR_WORD_LEN |
||
195 | |||
196 | align 4 |
||
197 | w_scr_t3: |
||
198 | .size_x dw 16 ;+0 |
||
199 | rb 2+2+2 |
||
200 | .btn_high dd 15 ;+8 |
||
201 | .type dd 1 ;+12 |
||
202 | .max_area dd 100 ;+16 |
||
203 | rb 4+4 |
||
204 | .bckg_col dd 0xeeeeee ;+28 |
||
205 | .frnt_col dd 0xbbddff ;+32 |
||
206 | .line_col dd 0 ;+36 |
||
207 | rb 4+2+2 |
||
208 | .run_x: |
||
209 | rb 2+2+2+2+4+4+4+4+4+4 |
||
210 | .all_redraw dd 0 ;+80 |
||
211 | .ar_offset dd 1 ;+84 |
||
212 |