Subversion Repositories Kolibri OS

Rev

Rev 178 | Rev 280 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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