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