Rev 280 | Rev 617 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 280 | Rev 297 | ||
---|---|---|---|
- | 1 | ;POP_WIDTH = (popup_text.max_title+popup_text.max_accel+6)*6 |
|
1 | ;POP_WIDTH = (popup_text.max_title+popup_text.max_accel+6)*6 |
2 | POP_IHEIGHT = 16 |
2 | POP_IHEIGHT = 16 |
3 | ;POP_HEIGHT = popup_text.cnt_item*POP_IHEIGHT+popup_text.cnt_sep*4+4 |
3 | ;POP_HEIGHT = popup_text.cnt_item*POP_IHEIGHT+popup_text.cnt_sep*4+4 |
4 | |
4 | 5 | popup_thread_start: |
|
5 | popup_thread_start: |
6 | mov [popup_active],1 |
6 | mov [popup_active],1 |
7 | mov [pi_cur],0 |
7 | mov [pi_cur],0 |
8 | mov ebp,[esp] |
8 | mov ebp,[esp] |
9 | mcall 14 |
9 | mcall 14 |
10 | movzx ebx,ax |
10 | movzx ebx,ax |
11 | shr eax,16 |
11 | shr eax,16 |
12 | movzx ecx,[ebp+POPUP.x] |
12 | movzx ecx,[ebp+POPUP.x] |
13 | add cx,[ebp+POPUP.width] |
13 | add cx,[ebp+POPUP.width] |
14 | cmp ecx,eax |
14 | cmp ecx,eax |
15 | jle @f |
15 | jle @f |
16 | mov cx,[ebp+POPUP.width] |
16 | mov cx,[ebp+POPUP.width] |
17 | sub [ebp+POPUP.x],cx |
17 | sub [ebp+POPUP.x],cx |
18 | @@: movzx ecx,[ebp+POPUP.y] |
18 | @@: movzx ecx,[ebp+POPUP.y] |
19 | add cx,[ebp+POPUP.height] |
19 | add cx,[ebp+POPUP.height] |
20 | cmp ecx,ebx |
20 | cmp ecx,ebx |
21 | jle @f |
21 | jle @f |
22 | mov cx,[ebp+POPUP.height] |
22 | mov cx,[ebp+POPUP.height] |
23 | sub [ebp+POPUP.y],cx |
23 | sub [ebp+POPUP.y],cx |
24 | @@: mcall 40,01100111b ; ipc mouse button key redraw |
24 | @@: mcall 40,01100111b ; ipc mouse button key redraw |
25 | cmp [mi_cur],0 |
25 | cmp [mi_cur],0 |
26 | jl .2 |
26 | jl .2 |
27 | sub esp,32-16 |
27 | sub esp,32-16 |
28 | push 0 0 8 0 |
28 | push 0 0 8 0 |
29 | mcall 60,1,esp,32 |
29 | mcall 60,1,esp,32 |
30 | .2: call draw_popup_wnd |
30 | .2: call draw_popup_wnd |
31 | |
31 | 32 | still_popup: |
|
32 | still_popup: |
33 | cmp [main_closed],1 |
33 | cmp [main_closed],1 |
34 | je close_popup |
34 | je close_popup |
35 | mcall 10 |
35 | mcall 10 |
36 | cmp eax,1 |
36 | cmp eax,1 |
37 | je popup_thread_start.2 |
37 | je popup_thread_start.2 |
38 | cmp eax,2 |
38 | cmp eax,2 |
39 | je key_popup |
39 | je key_popup |
40 | cmp eax,3 |
40 | cmp eax,3 |
41 | je button_popup |
41 | je button_popup |
42 | cmp eax,6 |
42 | cmp eax,6 |
43 | je mouse_popup |
43 | je mouse_popup |
44 | cmp eax,7 |
44 | cmp eax,7 |
45 | jne still_popup |
45 | jne still_popup |
46 | |
46 | 47 | mov ebp,[POPUP_STACK] |
|
47 | mov ebp,[POPUP_STACK];-32+12+4] |
48 | mov dword[POPUP_STACK-32+4],8 |
48 | mov dword[POPUP_STACK-32+4],8 |
49 | movzx ebx,[ebp+POPUP.x] |
49 | movzx ebx,[ebp+POPUP.x] |
50 | movzx ecx,[ebp+POPUP.y] |
50 | movzx ecx,[ebp+POPUP.y] |
51 | movzx edx,[ebp+POPUP.width] |
51 | movzx edx,[ebp+POPUP.width] |
52 | movzx esi,[ebp+POPUP.height] |
52 | movzx esi,[ebp+POPUP.height] |
53 | mcall 67 |
53 | mcall 67 |
54 | jmp still_popup |
54 | ; call draw_popup_wnd |
- | |
55 | jmp still_popup |
55 | |
56 | 56 | mouse_popup: |
|
57 | mouse_popup: |
57 | mov ecx,mst2 |
58 | mov ecx,mst2 |
58 | call get_mouse_event |
59 | call get_mouse_event |
59 | cmp al,MEV_LDOWN |
60 | cmp al,MEV_LDOWN |
60 | je check_popup_click |
61 | je check_popup_click |
61 | cmp al,MEV_MOVE |
62 | cmp al,MEV_MOVE |
62 | je check_popup_move |
63 | je check_popup_move |
63 | |
64 | 64 | mcall 9,p_info2,-1 |
|
65 | mcall 9,p_info2,-1 |
65 | cmp ax,[p_info2.window_stack_position] |
66 | cmp ax,[p_info2.window_stack_position] |
66 | jne close_popup |
67 | jne close_popup |
67 | |
68 | 68 | jmp still_popup |
|
69 | jmp still_popup |
69 | |
70 | 70 | check_popup_click: |
|
71 | check_popup_click: |
71 | mov eax,[pi_cur] |
72 | mov eax,[pi_cur] |
72 | or al,al |
73 | or al,al |
73 | js close_popup |
74 | js close_popup |
74 | jz still_popup |
75 | jz still_popup |
75 | mov ebx,[ebp+POPUP.actions] |
76 | mov ebx,[ebp+POPUP.actions] |
76 | mov [just_from_popup],1 |
77 | mov [just_from_popup],1 |
77 | call dword[ebx+eax*4-4] |
78 | call dword[ebx+eax*4-4];dword[popup_text.actions+eax*4-4] |
78 | inc [just_from_popup] |
79 | inc [just_from_popup] |
79 | jmp close_popup |
80 | jmp close_popup |
80 | |
81 | 81 | check_popup_move: |
|
82 | check_popup_move: |
82 | mov eax,[pi_cur] |
83 | mov eax,[pi_cur] |
83 | call get_active_popup_item |
84 | call get_active_popup_item |
84 | cmp eax,[pi_cur] |
85 | cmp eax,[pi_cur] |
85 | je still_popup |
86 | je still_popup |
86 | call draw_popup_wnd |
87 | call draw_popup_wnd |
87 | jmp still_popup |
88 | jmp still_popup |
88 | |
89 | 89 | key_popup: |
|
90 | key_popup: |
90 | mcall ;2 |
91 | mcall ;2 |
91 | cmp ah,27 |
92 | cmp ah,27 |
92 | jne still_popup |
93 | jne still_popup |
93 | |
94 | 94 | button_popup: |
|
95 | button_popup: |
95 | mcall 17 |
96 | mcall 17 |
96 | |
97 | 97 | close_popup: |
|
98 | close_popup: |
98 | mcall 18,3,[p_info.PID] |
99 | mcall 18,3,[p_info.PID] |
99 | mov [popup_active],0 |
100 | mov [popup_active],0 |
100 | mov [mi_cur],0 |
- | 101 | mcall -1 |
|
101 | mcall -1 |
102 | |
102 | 103 | func draw_popup_wnd |
|
103 | func draw_popup_wnd |
104 | mcall 12,1 |
104 | mcall 12,1 |
105 | |
105 | - | ||
106 | ; mcall 48,3,sc,sizeof.system_colors |
- | |
107 | ; call calc_3d_colors |
- | |
108 | - | ||
109 | ; mov ebx,[p_pos] |
- | |
110 | ; mov ecx,[p_pos-2] |
- | |
111 | ; mov bx,POP_WIDTH |
- | |
112 | ; mov cx,POP_HEIGHT |
106 | mov ebx,dword[ebp+POPUP.x-2] |
113 | mov ebx,dword[ebp+POPUP.x-2] |
107 | mov bx,[ebp+POPUP.width] |
114 | mov bx,[ebp+POPUP.width] |
108 | mov ecx,dword[ebp+POPUP.y-2] |
115 | mov ecx,dword[ebp+POPUP.y-2] |
109 | mov cx,[ebp+POPUP.height] |
116 | mov cx,[ebp+POPUP.height] |
110 | mcall 0,,,0x01000000,0x01000000 |
117 | mcall 0,,,0x01000000,0x01000000 |
111 | |
118 | 112 | movzx ebx,bx |
|
119 | movzx ebx,bx |
113 | movzx ecx,cx |
120 | movzx ecx,cx |
114 | pushd 0 0 ebx ecx |
121 | pushd 0 0 ebx ecx ;POP_WIDTH POP_HEIGHT |
115 | call draw_3d_panel |
122 | call draw_3d_panel |
116 | |
123 | 117 | mov [pi_sel],0 |
|
124 | mov [pi_sel],0 |
118 | mov eax,4 |
125 | ; mcall 37,1 |
- | |
126 | ; movsx ebx,ax |
- | |
127 | ; sar eax,16 |
- | |
128 | ; mov [c_pos.x],eax |
- | |
129 | ; mov [c_pos.y],ebx |
- | |
130 | - | ||
131 | mov eax,4 |
119 | mpack ebx,3*6,3 |
132 | mpack ebx,3*6,3 |
120 | mov ecx,[sc.work_text] |
133 | mov ecx,[sc.work_text] |
121 | mov edx,[ebp+POPUP.data] |
134 | mov edx,[ebp+POPUP.data];popup_text.data |
122 | @@: inc [pi_sel] |
135 | @@: inc [pi_sel] |
123 | inc edx |
136 | inc edx |
124 | movzx esi,byte[edx-1] |
137 | movzx esi,byte[edx-1] |
125 | cmp byte[edx],'-' |
138 | cmp byte[edx],'-' |
126 | jne .lp1 |
139 | jne .lp1 |
127 | pushad |
140 | pushad |
128 | mov ecx,ebx |
141 | mov ecx,ebx |
129 | shl ecx,16 |
142 | shl ecx,16 |
130 | mov cx,bx |
143 | mov cx,bx |
131 | movzx ebx,[ebp+POPUP.width] |
144 | movzx ebx,[ebp+POPUP.width] |
132 | add ebx,0x00010000-1 |
145 | add ebx,0x00010000-1 |
133 | add ecx,0x00010001 |
146 | ; mpack ebx,1,POP_WIDTH-1 |
- | |
147 | add ecx,0x00010001 |
134 | mcall 38,,,[cl_3d_inset] |
148 | mcall 38,,,[cl_3d_inset];0x006382BF;[sc.work_text] |
135 | add ecx,0x00010001 |
149 | add ecx,0x00010001 |
136 | mcall ,,,[cl_3d_outset] |
150 | mcall ,,,[cl_3d_outset];0x00FFFFFF |
137 | popad |
151 | popad |
138 | add ebx,4 |
152 | add ebx,4 |
139 | jmp .lp2 |
153 | jmp .lp2 |
140 | .lp1: mov edi,[pi_sel] |
154 | .lp1: mov edi,[pi_sel] |
141 | cmp edi,[pi_cur] |
155 | cmp edi,[pi_cur] |
142 | jne .lp3 |
156 | jne .lp3 |
143 | test byte[ebp+edi-1],0x01 |
157 | test byte[ebp+edi-1],0x01 ; byte[popup_text+edi-1],0x01 |
144 | jz .lp3 |
158 | jz .lp3 |
145 | pushad |
159 | pushad |
146 | movzx ecx,bx |
160 | movzx ecx,bx |
147 | shl ecx,16 |
161 | shl ecx,16 |
148 | mov cl,POP_IHEIGHT-1 |
162 | mov cl,POP_IHEIGHT-1 |
149 | movzx ebx,[ebp+POPUP.width] |
163 | movzx ebx,[ebp+POPUP.width] |
150 | add ebx,0x00010000-1 |
164 | add ebx,0x00010000-1 |
151 | mcall 13,,,[cl_3d_pushed] |
165 | ; mpack ebx,1,POP_WIDTH-1 |
- | |
166 | mcall 13,,,[cl_3d_pushed];0x00A3B8CC |
152 | rol ecx,16 |
167 | rol ecx,16 |
153 | mov ax,cx |
168 | mov ax,cx |
154 | rol ecx,16 |
169 | rol ecx,16 |
155 | mov cx,ax |
170 | mov cx,ax |
156 | mcall 38,,,[cl_3d_inset] |
171 | mcall 38,,,[cl_3d_inset];0x006382BF |
157 | add ecx,(POP_IHEIGHT-1)*65536+POP_IHEIGHT-1 |
172 | add ecx,(POP_IHEIGHT-1)*65536+POP_IHEIGHT-1 |
158 | mcall ,,,[cl_3d_outset] |
173 | mcall ,,,[cl_3d_outset];0x00FFFFFF |
159 | popad |
174 | popad |
160 | .lp3: add ebx,(POP_IHEIGHT-7)/2 |
175 | .lp3: add ebx,(POP_IHEIGHT-7)/2 |
161 | |
176 | 162 | pushad |
|
177 | pushad |
163 | test byte[ebp+edi-1],0x02 |
178 | test byte[ebp+edi-1],0x02 |
164 | jz .lp8 |
179 | jz .lp8 |
165 | movzx ecx,bx |
180 | movzx ecx,bx |
166 | shr ebx,16 |
181 | shr ebx,16 |
167 | add ebx,-11 |
182 | add ebx,-11 |
168 | add ecx,2 |
183 | add ecx,2 |
169 | mov edx,[sc.work_text] |
184 | mov edx,[sc.work_text] |
170 | call draw_check |
185 | call draw_check |
171 | .lp8: popad |
186 | .lp8: popad |
172 | |
187 | 173 | mov ecx,[sc.work_text] |
|
188 | mov ecx,[sc.work_text];0x00000000 |
174 | test byte[ebp+edi-1],0x01 |
189 | test byte[ebp+edi-1],0x01 ; byte[popup_text+edi-1],0x01 |
175 | jnz .lp5 |
190 | jnz .lp5 |
176 | add ebx,0x00010001 |
191 | add ebx,0x00010001 |
177 | mov ecx,[cl_3d_outset] |
192 | mov ecx,[cl_3d_outset] |
178 | mcall |
193 | mcall |
179 | sub ebx,0x00010001 |
194 | sub ebx,0x00010001 |
180 | mov ecx,[cl_3d_inset] |
195 | mov ecx,[cl_3d_inset] |
181 | .lp5: mcall |
196 | ;mov ecx,[sc.grab_text];0x007F7F7F |
- | |
197 | .lp5: mcall |
182 | push ebx |
198 | push ebx |
183 | add edx,esi |
199 | add edx,esi |
184 | inc edx |
200 | inc edx |
185 | movzx esi,byte[edx-1] |
201 | movzx esi,byte[edx-1] |
186 | add ebx,[ebp+POPUP.acc_ofs] |
202 | add ebx,[ebp+POPUP.acc_ofs] ; ((popup_text.max_title+2)*6-1)*65536 |
187 | cmp edi,[pi_cur] |
203 | cmp edi,[pi_cur] |
188 | je .lp4 |
204 | je .lp4 |
189 | mov ecx,[cl_3d_inset] |
205 | mov ecx,[cl_3d_inset];0x006382BF |
190 | .lp4: test byte[ebp+edi-1],0x01 |
206 | .lp4: test byte[ebp+edi-1],0x01 ; byte[popup_text+edi-1],0x01 |
191 | jnz .lp6 |
207 | jnz .lp6 |
192 | add ebx,0x00010001 |
208 | add ebx,0x00010001 |
193 | mov ecx,[cl_3d_outset] |
209 | mov ecx,[cl_3d_outset] |
194 | mcall |
210 | mcall |
195 | sub ebx,0x00010001 |
211 | sub ebx,0x00010001 |
196 | mov ecx,[cl_3d_inset] |
212 | mov ecx,[cl_3d_inset] |
197 | .lp6: mcall |
213 | ;mov ecx,[sc.grab_text];0x007F7F7F |
- | |
214 | .lp6: mcall |
198 | pop ebx |
215 | pop ebx |
199 | add ebx,POP_IHEIGHT-(POP_IHEIGHT-7)/2 |
216 | add ebx,POP_IHEIGHT-(POP_IHEIGHT-7)/2 |
200 | .lp2: add edx,esi |
217 | .lp2: add edx,esi |
201 | cmp byte[edx],0 |
218 | cmp byte[edx],0 |
202 | jne @b |
219 | jne @b |
203 | .exit: |
220 | .exit: |
204 | mcall 12,2 |
221 | mcall 12,2 |
205 | ret |
222 | ret |
206 | endf |
223 | endf |
207 | |
224 | 208 | func setup_main_menu_popup |
|
225 | func setup_main_menu_popup |
209 | mov ebx,[p_info.box.left] |
226 | mov ebx,[p_info.box.left] |
210 | add ebx,[p_info.client_box.left] |
227 | add ebx,[p_info.client_box.left] |
211 | @@: dec ecx |
228 | @@: dec ecx |
212 | jz @f |
229 | jz @f |
213 | add edx,8+1 |
230 | add edx,8+1 |
214 | movzx esi,byte[edx-1] |
231 | movzx esi,byte[edx-1] |
215 | add edx,esi |
232 | add edx,esi |
216 | jmp @b |
233 | jmp @b |
217 | @@: movzx ecx,word[edx+2] |
234 | @@: movzx ecx,word[edx+2] |
218 | add ebx,ecx |
235 | add ebx,ecx |
219 | |
236 | 220 | mov [eax+POPUP.x],bx |
|
237 | mov [eax+POPUP.x],bx |
221 | mov ebx,[p_info.box.top] |
238 | mov ebx,[p_info.box.top] |
222 | add ebx,[p_info.client_box.top] |
239 | add ebx,[p_info.client_box.top] |
223 | add ebx,ATOPH-1 |
240 | add ebx,ATOPH-1 |
224 | mov [eax+POPUP.y],bx |
241 | mov [eax+POPUP.y],bx |
225 | mov [POPUP_STACK],eax |
242 | mov [POPUP_STACK],eax |
226 | ret |
243 | ret |
227 | endf |
244 | endf |
228 | |
245 | 229 | onshow: |
|
246 | onshow: |
230 | |
247 | 231 | .file: |
|
248 | .file: |
232 | or byte[mm.File+3],0x01 |
249 | or byte[mm.File+3],0x01 |
233 | cmp [f_info.length],0 |
250 | cmp [f_info.length],0 |
234 | jne @f |
251 | jne @f |
235 | and byte[mm.File+3],0xFE |
252 | and byte[mm.File+3],0xFE |
236 | @@: ret |
253 | @@: ret |
237 | |
254 | 238 | .edit: |
|
255 | .edit: |
239 | or byte[mm.Edit+2],0x01 |
256 | or byte[mm.Edit+2],0x01 |
240 | cmp [copy_size],0 |
257 | cmp [copy_size],0 |
241 | jne @f |
258 | jne @f |
242 | and byte[mm.Edit+2],0xFE |
259 | and byte[mm.Edit+2],0xFE |
243 | @@: or dword[mm.Edit+0],0x01000101 |
260 | @@: or dword[mm.Edit+0],0x01000101 |
244 | cmp [sel.selected],0 |
261 | cmp [sel.selected],0 |
245 | jne @f |
262 | jne @f |
246 | and dword[mm.Edit+0],0xFEFFFEFE |
263 | and dword[mm.Edit+0],0xFEFFFEFE |
247 | @@: ret |
264 | @@: ret |
248 | |
265 | 249 | .search: |
|
266 | .search: |
250 | mov byte[mm.Search+0],0 |
267 | mov byte[mm.Search+0],0 |
251 | ret |
268 | ret |
252 | .run: |
269 | .run: |
253 | ret |
270 | ret |
254 | .recode: |
271 | .recode: |
255 | ret |
272 | ret |
256 | .options: |
273 | .options: |
257 | ;mov word[mm.Options+0],0 |
274 | mov word[mm.Options+0],0 |
258 | mov byte[mm.Options+5],0 |
275 | mov byte[mm.Options+5],0 |
259 | or byte[mm.Options+2],0x02 |
276 | or byte[mm.Options+2],0x02 |
260 | test [options],OPTS_SECURESEL |
277 | test [options],OPTS_SECURESEL |
261 | jnz @f |
278 | jnz @f |
262 | and byte[mm.Options+2],0xFD |
279 | and byte[mm.Options+2],0xFD |
263 | @@: or byte[mm.Options+3],0x02 |
280 | @@: or byte[mm.Options+3],0x02 |
264 | test [options],OPTS_AUTOBRACES |
281 | test [options],OPTS_AUTOBRACES |
265 | jnz @f |
282 | jnz @f |
266 | and byte[mm.Options+3],0xFD |
283 | and byte[mm.Options+3],0xFD |
267 | @@: or byte[mm.Options+4],0x02 |
284 | @@: or byte[mm.Options+4],0x02 |
268 | test [options],OPTS_AUTOINDENT |
285 | test [options],OPTS_AUTOINDENT |
269 | jnz @f |
286 | jnz @f |
270 | and byte[mm.Options+4],0xFD |
287 | and byte[mm.Options+4],0xFD |
271 | @@: or byte[mm.Options+6],0x02 |
288 | @@: or byte[mm.Options+6],0x02 |
272 | test [options],OPTS_OPTIMSAVE |
289 | test [options],OPTS_OPTIMSAVE |
273 | jnz @f |
290 | jnz @f |
274 | and byte[mm.Options+6],0xFD |
291 | and byte[mm.Options+6],0xFD |
275 | @@: or byte[mm.Options+8],0x02 |
292 | @@: or byte[mm.Options+8],0x02 |
276 | test [options],OPTS_LINENUMS |
293 | test [options],OPTS_LINENUMS |
277 | jnz @f |
294 | jnz @f |
278 | and byte[mm.Options+8],0xFD |
295 | and byte[mm.Options+8],0xFD |
279 | @@: ret |
296 | @@: ret |
280 | |
297 | 281 | pi_sel dd ? |
|
298 | pi_sel dd ? |
282 | pi_cur dd ? |
299 | pi_cur dd ? |
283 | p_pos dd ? |
300 | p_pos dd ? |
284 | popup_active db 0 |
301 | popup_active db 0 |
- |